毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

VHDL基于FPGA的数字频率计设计+源代码+仿真图(5)

时间:2016-12-21 11:49来源:毕业论文
4.4 计数模块 计数器模块是用8个含有清零端和进位端模为10的计数器级联而成的。通过(freq.vhd)实现组件例化,本设计的计数器特别的地方在于有一个使


4.4 计数模块
计数器模块是用8个含有清零端和进位端模为10的计数器级联而成的。通过(freq.vhd)实现组件例化,本设计的计数器特别的地方在于有一个使能端ENA,用来控制计数器。在高电平到来时计数允许,低电平到来时计数则停止。计数器的作用是对被测信号的高电平计数,计数模块有使能和清零等端口,有利于对计数器进行控制。
计数器CNT10的封装图如图11,其中CLR为复位接TESTCTL的CLR_CNT端,ENA接TESTCTL的TSTEN端,CQ[3..0]接锁存器的DOUT[31..0]端。
 
图11 CNT10的封装图
    计数器CNT10的时序仿真如图12所示。
 
图12 CNT10的时序仿真图
此模块是包含使能端的10进制计数。当使能端信号的高电平到来时计数器才可以正常工作,每个时钟的上升沿到来时计数器加1,由于该模块要实现的是10进制计数,所以当计数器计数到10时则计数器自动清零,同时产生一个进位信号,此进位信号是一个脉冲信号,当计数从10变为1时,脉冲信号马上变为低电平。同时该计数器也带有清零信号,当清零信号是高电平时,计数器将清零。
4.5 锁存模块
锁存器是必需的,不可或缺的。在测量模块测量完成后,在LOAD信号的上升沿到来时测量值将被锁存到寄存器中,然后转移到显示模块。锁存器的作用是数据保持,它会把数据保存至下次的触发或复位时[8]。它主要是由主从触发器组成的,它用来存储数据并进行数据交换,可以让数据稳定并保持不变化,直至下一个数据到来并将其替换。
图13为锁存器REG32B的封装图,LOAD接控制测频产生器TESTCTL的LOAD,DOUT[31..0]接显示模块的in端,而DIN[31..0]接计数器CNT10的CQ[3..0]。
 
图13 REG32B的封装图
32位锁存器REG32B的仿真如图14所示。
 
图14 REG32B的仿真图
锁存器模块的程序简单,在锁存信号LOAD的上升沿到来时,锁存器将测量的值锁存在寄存器中,然后转移到显示模块。从仿真图14中明显看出,锁存输出并不是在LOAD的上升沿到来时就进行的,而是有一个短暂的延时,这是由于硬件引起的。
4.6 显示模块
4.6.1 BCD7段译码器
7段数码管用于数码管显示,显示十进制频率数据的信息[9]。每个数码管显示0到9。图15为BCD的封装图。
 
图15 BCD的封装图
BCD工作时序如图16所示。
译码器的作用是为了将二进制转换成十进制数显示。
 
图16 BCD工作时序图
4.6.2 键盘档位选择模块设计
键盘根据S2-S5输入的选择信号,输出KEY1和KEY2两个信号表示4个档位选择[10],封装图如图17所示。
 
图17 键盘档位选择封装图
其仿真如图18所示。
 
图18 键盘档位选择仿真图
4.7 顶层设计
由频率计的系统工作原理可知,cnt是为了产生测频所用的各种控制信号,testctl的计数允许信号testen是为了产生一个1s的标准周期信号,来对频率计的各个计数器的ENA端进行控制。当testen的高电平到来时开始计数、低电到来时则停止计数。reg32b是锁存器,在信号LOAD的上升沿到来时,马上将计数器计数的数据锁存到reg32b中,并且从reg32b的输出端输出到译码器,译码器将二进制数转换成十进制数输出。用锁存器是为了可以稳定地显示数据,不会因为清零信号而使LCD不断的闪烁[11]。
频率计的主体电路的顶层设计原理图如图19所示。
 
图19 顶层设计图
编译仿真成功后的结果如图20所示。
 
图20 顶层设计仿真图
从上图可以看到,测量数据为499,这是由于硬件电路延迟造成丢失1个周期的脉冲计数,原因是闸门信号与待测频率信号之间硬件电路延迟不同。 VHDL基于FPGA的数字频率计设计+源代码+仿真图(5):http://www.youerw.com/tongxin/lunwen_1391.html
------分隔线----------------------------
推荐内容