广州大学学生实验报告实验室:电子信息楼317EDA2017年9月18日学院机电学院年级、专业、班电信151姓名苏伟强学号1507400051实验课程名称可编程逻辑器件及硬件描述语言成绩实验项目名称实验2含异步清零的同步时钟使能控制的加法计数器指导老师秦剑一实验目的a)学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术;二实验原理图是一含计数使能、异步复位的4位加法计数器,例2-1是其VHDL描述。图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3:0]是4位数据输入端。当ENA为‘1’时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为‘0’时保持上一次的输出。三实验设备a)FPGA实验箱,CycloneIIIEP3C40Q24C08四实验内容和结果a)编程根据实验原理编程VHDL,rst是异步清信号,高电平有效;clk是锁存信号;CQ[3:0]是计数输出端,COUT是进位输出。上升沿计数,在计数到1111的时候进位(这里判断CQI的所有位为1时进位,表示计数到top值),清零,继续计数,将进位数据锁存在COUT端,不断更新。可以看到在进程中,首先判断rst信号是否为1,为1的话进行置位,优先级最高而且不受时钟信号控制(放在以时钟边沿测试表述clock’eventandclock=’1’为条件语句的if语句以外),是异步置位。b)波形仿真新建波形仿真文件,文件名和实体名称保持一致,可以看到,使能信号为1,在时钟信号的上升沿计数加一,如果有置位信号,则产生异步置位(置位最优先),计数到1111top值,进位并且自动清零,符合设计。c)引脚锁定和硬件调试进入assignmen-assignmentedit,category选择location,alt+1调出nodefinder,调出信号进行引脚绑定,引脚绑定的时候注意查看芯片引脚手册。如图为引脚锁定。选实验电路模式5,用键8(PIO7)控制RST;用键7(PIO6)控制ENA;计数溢出COUT接发光管D8(PIO15);OUTY是计数输出接数码1(PIO19-PIO16,低位靠右);时钟CLK接clock2(引脚号为54),通过跳线选择4Hz信号.下载到开发板中,可以看到,数码管在跳变,从0跳变到F,按键8可以进行置位,实验中如果接时钟信号频率过高,则没办法观察到明显的数码管显示。d)RTL图观察Tool-netlistviewers-RTLviewer观察RTL图。分析:由图可见4位假发计数器由两大部分组成。第一是完成加一操作的存组合逻辑电路加法器。它右端输出的数始终比左端的数多1000,则输出为1001。第二是4位边沿触发方式锁存器。这是一个纯时序电路,计数信号CLK实际上是其锁存的信号。另外,在输出端还有一个反馈通道,它一方面将锁存器中的数据向外输出,一方面将此信号反馈回加一器,以作为下一次累加的基数。同时也发现输出接一个4位与门实现进位输出1。e)思考题i.是否可以不定义信号CQI,而直接用输出端口信号完成加法运算,即:CQ=CQ+1?为什么?答:不能,因为CQ定义为out型数据,意思就是说CQ只能用于输出,然而,题目中给出的假设,CQ=CQ+1,在,=符号的两端都出现了CQ,表明CQ应当具有输入和输出两种端口模式特性,同时它的输入特性应该是具有反馈方式,即赋值符号“=”右边的CQ来自左边的CQ的反馈,显然如果要这样的话,CQ的度端口模式为Buffer更为吻合。但是,表面上buffer具有双向端口inout的功能,但实际上其输入功能是不完整的,它只能将自己的输出的信号反馈回来,这并不意味着他具有输入功能。由于CQ1是内部信号,不必像端口信号那样需要定义他们的端口模式,即CQ1的数据流动方向是不受限制的。因此可以在CQ1=CQ1+1(这里的+是重载的运算符)中用信号CQ1来完成累加的任务,然后累加的结果用语句CQ=CQ1向端口Q输出。五实验分析总结a)在VHDL表述的时序模块中有这样的规律,一般的,凡是独立于时钟的异步控制信号都放在以时钟边沿测试表述clock’eventandclock=’1’为条件语句的if语句以外,如异步复位信号,凡是依赖于时钟有效性的同步控制信号则放在边沿测试表述以内,如时钟使能信号。b)实验中如果时钟信号接高频率信号,则很难观察到计数的数码管显示,需要把技术的时钟频率降下来,才能看到很明显的数码管跳变。c)详细的过程描述,实验过程中已经有详细给出。