实验六 数字频率计的Verilog HDL语言实现 下载本文

实验六 数字频率计的Verilog HDL语言实现

一、实验目的:

1、掌握较复杂数字电路或系统的纯Verilog HDL实现方法; 2、体会纯Verilog HDL语言输入设计与原理图输入设计的差别。

二、实验原理:

数字频率计是用来测量输入信号的频率并显示测量结果的系统。数字频率计的原理示意图如图3-1所示。一般基准时钟的高电平的持续时间为T0?1s,若在这T0内被测信号的周期数为N则被测信号的频率就是N,选择不同的T0,可以得到不同的测量精度。一般T0越大,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。

三、设计任务与要求:

1、设计一个6位频率计,测量范围从1Hz到99 99 99Hz,测量结果用6个数码管显示,基准时钟频率为1Hz;

2、只显示测量结果,中间计数过程不显示;结果更新时间2秒一次; 3、频率计只设一个复位键,按下该键(reset=0)系统复位,释放该键(reset=1)系统工作,测量并显示结果。

4、显示用静态方式;

5、用Verilog HDL实现上述要求的频率计。

四、设计提示:

1、用Verilog HDL输入设计与用原理图输入设计相比,当设计的系统比较复杂时,前者有更大的优越性,且设计越复杂,前者的优点越突出;

2、本设计可用8个always块来实现,8个块的基本功能如下: ① always@(posedge clock_1Hz) // 把1Hz基准时钟分频;

② always@(posedge signal_in) // 当count_en=1时对输入信号signal-in计数(个位);

③ always@ (……) // 对signal_in计数(十位);

④ always@ (……) // 对signal_in计数(百位); ⑤ always@ (……) // 对signal_in计数(千位); ⑥ always@ (……) // 对signal_in计数(万位); ⑦ always@ (……) // 对signal_in计数(十万位); ⑧ always@ (……) // 在count_en下沿锁存计数结果。

3、本设计的难点在于8个敏感变量表的选择和相互配合;第2个模块也是

难点,根据count_en信号确定什么时候计数器开始计数,什么时候计数器清零。

五、实验报告要求:

1、给出设计源程序并注释; 2、给出仿真结果; 3、心得体会。

六、思考题:

1、本设计的测量结果在6个数码管上显示,若采用静态显示的方式,每位显示需4根输出线,共需24根据输出线;若用动态扫描方式,只需6+7=13根线。什么叫动态扫描显示方式?你能写出动态扫描输出显示的程序吗? 2、本设计与教材《数字系统设计与Verilog HDL语言》第203页的设计有何不同?