f1,f10,f100为被选时基信号输入端,通过选择端s来控制哪一个时基型号被选择输出:当s(2:0)为100时,f1的输入时基信号被选中,被赋值给输出端口fref输出,此时dp1(2)有效,其余的无效,点亮对应连接的小数点;当s(2:0)为010时,f10时基信号被选中,被赋值给输出端口fref输出,此时dp1(1)有效,其余的无效,点亮对应连接的小数点;最后当s(2:0)为001时,f100时基信号被选中,被赋值给输出端口fref输出,此时dp1(0)有效,其余的无效,点亮对应)连接的小数点。由此写出闸门选择的VHDL程序(见程序附录2),仿真模块如图所示:
到此完成了对闸门选择模块的设计和仿真。
3.门控电路:
①
功能:控制整个频率计各模块进行时序工作的控制装置,它对输入的
标准时钟信号进行变换,产生我们所需要的三个信号闸门信号gate,锁存信号latch以及清零信号reset。
②
实现:测量过程中,产生的上个闸门信号有着先后顺序。根据我们的
测量需要,可以得出三个信号的先后为:gate、latch、reset。同时为了规避冒险,我们需要将三个信号的上升沿错开,由此采用图1所示原理进行编写VHDL程序(见程序附录3);
同时对模块进行仿真,仿真模块如图所示:
到此完成了对门控电路模块的设计和仿真。
4.计数器:
①
功能:在门控电路的
gate的控制下对输入的信号进行计数,即完成
f=N/T公式中的N的测量。
②
实现:采用数字电路所学的十进制计数器,并对计数器采用级联的方
法扩展为6位十进制计数器。由此编写其VHDL程序(见程序附录4),同时对模块进行仿真,仿真模块如图所示:
到此完成了对计数器模块的设计和仿真。
5.锁存器:
①
功能:对计数器送来的六位计数结果和溢出信号ove_out进行锁存,保实现:采用数字电路所学的D锁存器的思想,编写能够同时对六位技
证显示数码管的数字不会跳动,方便读取数据。
②
术界和溢出信号进行锁存的VHDL程序(见程序附录5),编写好之后进行仿真测试,仿真模块如图所示:
到此完成了对锁存器模块的设计和仿真。
6.扫面显示:
①
功能:对锁存器送来的数据进行动态扫描(即位选)、将六位计数结果实现:通过用一个频率1KHz的信号来扫描一个多路选择器,实现对六位已经锁
分别翻译成七段数码管所能识别的数据(即段选)。
②
存的计数结果的扫描输出,由于1KHz相对了人眼的暂留效应已经很高了,所以显示结果不
会让人感觉到闪烁。这样就可以用一个译码器来实现对六个4位二进制数的译码。译码结果再连接到一个多路选择器的输入端,同样由1KHz的信号来同步扫描选通。实现最终结果的数字显示。六位十进制数的BCD码经7段译码输出,显示十进制数。并根据档位信号确定小数点显示的位置以实现档位的显示,最后的输出全部通过下载前的固定引脚连接到LED显示管上。由此编写VHDL程序(见程序附录6),编写好之后进行仿真测试,仿真模块 如图所示:
到此完成了所有模块的设计和仿真,接下来就是对所有模块的汇总连接,编写top顶层文件。完成最终的设计和仿真。
7.top顶层文件
① ②
功能:将所有的模块的功能进行连接,完成频率计的设计。 实现:将每个模块点击
ISE软件右下角窗口中的“View HDL Instantiation
Template”将生成的文件拷贝到新建的top文件对应位置,并对中间的连接线进行定义,最后完成top文件的编写。仿真模块如图所示: