食堂里撑着

好久没来--谈课程设计

2
阅读(2408)

        自从考了科二还没过之后,第九周(本周)我彻底陷入了混沌的状态.大概是之前练车把精力耗光了吧.(其实就是冬天来了懒癌发作).

        打着双十一快来了的旗号逛了两天淘宝,左右踌躇迟迟难以下定决心.深感钱包太瘪,自己日益增长的物质需求和落后的生产力之间的矛盾突出.今后要努力学习科学文化知识,为了买东西不用考虑价格而奋斗!

/////////----------------------------------正文-----------------------------------------------------///////////

        九,十周乃课程设计周.课题是时序比较器.时序比较器是数据处理器的一个部分,它能将输入的8421BCD码存储并进行比较,最终以十进制数显示其大小。时序比较器的功能是,用同一组输入端口分两次送入两组数据,经过比较显示出数值大的一组数据值。

        该系统的设计难点有两个.一.系统的控制器要求使用GAL16V8.器件本身很老旧,硬件资源不多; 二.整个系统都是在面!包!板!上完成的. 这一周大部分时间我都在量长度,剥!导!!线!!!生无可恋!!!!

        我们的gal16V8器件来自ATMEL.依据网上的教程,用PROTEL99开发,然而我总是找不到菜单PLD. 后来改用atmel的wincupl软件.官网即可下载,提供长期序列号可以免费使用.win8.1下运行正常.如软件名称,开发使用cuplhdl语言.基本用法参见http://www.qsl.net/bh1phl/CUPL_for_GAL16V8.html.

        尝试将led写入gal中遇到了问题

        

Name        Controller;

Partno      1;

Revision    1;

Date        2016-10-27;

Designer    ZYH;

Company     NUPT;

Assembly    NULL;

Location    NULL;

Device      g16v8;


/** Inputs  **/

Pin [1,11] = [CLK,!E0];

Pin 2 = EE; 

Pin 3 = GG; 

Pin 4 = LL; 

Pin 5 =CNT8 ; 

Pin 6 = AJ;

PIN 7 = RST;   

 

/** Outputs **/

Pin 12 = LED1;

Pin 13 = LED2;

Pin 14 = A0;//Q0

Pin 15 = A1;//Q1

Pin 16 = A2;//Q2

Pin 17 = A3;//Q3

A0=T0;

A1=T1;

A2=T2;

A3=T3;

LED1=A1#(A3&(!CNT8)&CLK&(EE#GG)); 

LED2=A2#(A3&(!CNT8)&CLK&(EE#LL)); 

T0=A3&CNT8&(EE#GG#LL)&(!RST);

T1=((A1&!AJ)#A0)&(!RST);

T2=((A2&!AJ)#(A1&AJ))&(!RST);

T3=((A2&AJ)#(A3&(!CNT8)&(EE#GG#LL)))&(!RST);


需要引入中间变量T0..T3 不然,则无法将led1,led2放入gal.  ?????原因不明白,此处存疑.

///-----------------------------------------------------------------------------------------///


继续更我的课程设计.

上周末的时候,为了验证自己的设计是否万无一失,于是在FPGA中使用原理图模式将课设的电路搭了一遍,gal部分用verilog写的简单状态机替代.

课设并行.JPG

部分截图如上所示,系统本身不复杂,状态机也就是检测到按键脉冲,状态跳转.

于是上周天,我在宿舍一晚上把线全部连好.课设.jpg

完成图如上所示. 

然而,周一到实验室下载cupl代码烧进去,状态跳转完全不对. T1 - T2-   空.   gal中用到的四个触发器全是0,鬼知道跳到哪里去了啊???

..............................漫长的调测后,并没发现问题....................

..............................碰到这种情况的不止我一个....................

.............................试着proteus仿真........................................

..............................proteus仿真总是失败...............................

.............................据网上说是spice模型的问题....................

............................时间有限.......................................................

.............................决定copy上届的电路和代码....................

............................那都是一届届前辈不断改进的成果啊......

............................拆自己的电路,无脑连线ing........................

!!!!!!!!!!!!!!!!!!!!!!机缘巧合老师说可以用FPGA实现............

............................可以不用面包板了oyeah!!!!!!!!!!!!!!!!!!!!!

...........................不过要求是串行输入数据.............................

...........................这一点不难好吗?............................................

..........................比连面包板简单多了好吗?............................


...........................于是.................................................................


blob.png


本系统与原系统的改变:

  1. 并行改为串行输入.  一个按键选择1/0 ,一个按键确认.

  2. 输入一个数字,smg即可显示.

  3. 改掉原系统不合题目要求的部分.如led的闪烁方式

  4. 一块fpga开发板搞定,不用连线了~~~