VCCParameterValueKEY_WIDTH5TFFdebouncePRNKEYOUT[5..1]Qclkkey_in[key_width-1..0]key_out[key_width-1..0]Q[16]TCLRNinst3KEY[5..1]INPUTVCCinst1PIN_143PIN_124PIN_123PIN_122PIN_121KEYOUT[1]CNT16up counterKEYOUT[2]A[7..4]CNT16up counterclockinst6q[3..0]clockinst7A[3..0]q[3..0]CNT16KEYOUT[3]CNT16KEYOUT[4]B[7..4]up counterup counterclockinst8VCCTFFq[3..0]clockinst9B[3..0]q[3..0]PRNKEYOUT[5]cinNOTOUTPUTTQinst11Led_CinPIN_50CNT16CLRNinst22Q[16]up counterclockScan_Cnt[3..0]DIV400HzCLK40MINPUTVCCq[3..0]C[7..0]inst10PIN_53PIN_54PIN_55PIN_176up counterclockmodulus 120000Q[16..0]PIN_28q[16..0]inst2GNDPIN_47PIN_48No_use_Led[6..1]ADD8cinA[7..0]cindataa[7..0]datab[7..0]PIN_214AA+BBcoutinst24Scan_Cnt[2..0]SCANLEDNOTOUTPUTVCCOUTPUTresult[7..0]Sum[7..0]PIN_213PIN_216PIN_49Led_CoutB[7..0]PIN_164PIN_163PIN_166PIN_165PIN_168PIN_167PIN_170PIN_169PIN_215PIN_161PIN_162PIN_159inst12OUTPUTDig[7..0]PIN_160DECODE7A[7..0],B[7..0],C[7..0],Sum[7..0]SEL[2..0]DIN[31..0]DIG[7..0]DSEL[3..0]OUTPUTDIN[3..0]DOUT[7..0]Seg[7..0]inst13inst14图6.6 8位加法器顶层文件原理图
说明:
T触发器模块名为“TFF”。每1个时钟触发,输出结果翻转一次。
消抖后的按键信号的节点取名为KEYOUT[5..1],共5位,对应Key5~Key1,KEYOUT[5..1]取名为KEYOUT[4..0]亦可,只要锁定管脚正确即可。当然5个CNT16的输入也要相应改变。
图6.6上的标号为inst10的CNT16模块是一个16进制计数器,我们取其输出的低3位,就是一个8进制计数器,送入扫描显示的选通信号,这样不需再编写8进制的计数器模块。
节点cin经过取反后,送LED显示,使cin高电平时LED亮,观察更为直观。 No_use_Led[6..1]为未使用的LED,让它们全灭,同样为了便于观察。
43
网络标号“A[7..0],B[7..0],C[7..0],Sum[7..0]”的含义为DIN[31..24]=A[7..0],DIN[23..16]=B[7..0],DIN[15..8]=C[7..0] (C[7..0]=0),DIN[7..0]=A[7..0],注意这种格式。当然也可以使用其他网标形式。 4、 编译、锁定管脚、再编译
指定ADDER8原理图文件为顶层文件。
为了方便锁定管脚,我们先进行编译,发现错误进行纠正,直至成功为止。 锁定管脚(管脚表)
再编译,把管脚锁定的信息编译到下载文件中去。 5、 下载
连接电源,进行下载
观察结果是否正确。这里使用的是两个加数和结果均采用的是16进制。
观察下载配置后,数码管1~4显示的两个加数是否是从0开始的?若不是,找出原因并修改。
四. 实验总结
本实验尽量使用了QuartusII软件的兆功能模块,减少了使用者大量的编写硬件描述语言的时间,这也是Altera公司的目标。对于使用者来说,掌握一定的编写硬件描述语言的能力是必须的,然而使用已有的模块进行设计,也是重要的技能之一。
我们使用了以前实验用到的模块或HDL文件完成了8位加法器的设计。在进行设计时,总体的设计思路是最重要的。设计思路只能在平时的电路设计训练中逐步提高,所以平时点点滴滴的积累对以后的学习和工作尤其重要。
44