图3 32位锁存器波形仿真
图4 32位锁存器模块图
(同上)
3、32位计数器
图5 32位计数器波形仿真
图6 32位计数器模块图
(同上)
4、8位16进制的频率计顶层文件
图7 总电路波形仿真
图8 总电路图 (同上)
<二>实验结果及分析:
测频控制信号clk可以由一个外部的脉冲信号发生器输入1Hz的标准信号来产生。8个数码管以16进制形式显示测频输出;待测频率输入Fin由外电路输入。测频控制信号发生器FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。
<三>电路的仿真 :
5、4位10进制计数器
6、8位10进制频率计的顶层文件
<四>实验结果及分析:
在这个实验中,输入信号clk1hz为10Hz,而待测信号fsin为50Hz,所以输出dout为5。证明待测信号fsin频率是输入信号clk1hz频率的5倍,所以,实验结果满足实验要求。
五、硬件调试及结果:
1、测频控制电路
关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号clk取为1Hz,2分频后即可查声一个脉宽为1秒的时钟test-en,一此作为计数闸门信号。当test-en为高电平时,允许计数;当test-en由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次test-en上升沿到哦来之前产生零信号clear,将计数器清零,为下次计数作准备。 2、32位锁存器
当test-en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器 译码并在数码管显示。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样。 3、 计数器 计数器以待测信号作为时钟,清零信号clear到来时,异步清零;test-en为高电平时开始计数。计数是以十进制数显示,本文设计了一个简单的10kHz以内信号的频率机计,如果需要测试较高的频率信号,则将dout的输出位数增加,当然锁存器的位数也要增加 。 4、8位16进制频率计
输入端1Hz测频控制信号clk1hz由clock2输入(用跳线选1Hz),待测频率输入fin由clock0输入,频率选择为256Hz。输出端dout与8个8段显示管相连,且8个数码管以16进制形式显示测频输出。
结果: 在一段时间8个显示管为‘00000000’后,第一位开始计数,当到达15后,进入第二位,最后停在‘00000100’,及10进制的‘256’。 5、8位10进制频率计
输入端1Hz测频控制信号clk1hz由clock2输入(用跳线选1Hz),待测频率输入fin由clock0输入,频率选择为256Hz。输出端dout与8个8段显示管相连,且8个数码管以16进制形式显示测频输出。
结果: 在一段时间8个显示管为‘00000000’后,第一位开始计数,当到达9后,进入第二位,最后停在‘00000256’。
六、设计体会
本次实验是设计一个8位十六进制频率计,设计主要用到了多种芯片,程序也比较长、比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。这是本学期这门课程的最后一个实验,也是最后一个综合性实验,是对这门课程的一个全面总结和检测。
通过本次实验,我更加系统和全面的了解了模块化的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了32位锁存器的使用和中断处理器程序的编程方法。试验中,让我对源程序有了更好的认知与分析,而且对VHDL语言又增加了熟练运用程度。在VHDL语音程序中,运用了元件实体声明、信号量的声明、进程的运用、循环语句的多种用法和元件例化语句等,不仅检验了我们对实验软件工具QuartusⅡ的熟悉与掌握应用,而且考验我们能否熟练的对程序进行编写,对输入波形的编译,对程序的仿真。
相关推荐: