内容发布更新时间 : 2024/12/27 21:01:54星期一 下面是文章的全部内容请认真阅读。
实验六 数字频率计的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页的设计有何不同?