Verilog-数字频率计- 副本(3)

2019-08-29 22:52

数字频率计

if((cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001)&&(cnt0==4'b1001))begin cnt0<=4'b0000; cnt1<=4'b0000; cnt2<=4'b0000; cnt3<=4'b0000; cnt4<=4'b0001+cnt4; cnt5<=cnt5; cnt6<=cnt6; end else begin

if((cnt2==4'b1001)&&(cnt1==4'b1001)&&(cnt0==4'b1001)) begin cnt0<=4'b0000; cnt1<=4'b0000; cnt2<=4'b0000; cnt3<=4'b0001+cnt3; cnt4<=cnt4; cnt5<=cnt5; cnt6<=cnt6;

end else begin if((cnt1==4'b1001)&&(cnt0==4'b1001)) begin cnt0<=4'b0000; cnt1<=4'b0000; cnt2<=4'b0001+cnt2; cnt3<=cnt3; cnt4<=cnt4; cnt5<=cnt5; cnt6<=cnt6; end else begin if((cnt0==4'b1001)) begin cnt0<=4'b0000; cnt1<=4'b0001+cnt1; cnt2<=cnt2; cnt3<=cnt3; cnt4<=cnt4; cnt5<=cnt5; cnt6<=cnt6; end else begin

cnt0<=4'b0001+cnt0; cnt1<=cnt1; cnt2<=cnt2; cnt3<=cnt3; cnt4<=cnt4; cnt5<=cnt5; cnt6<=cnt6; end end end end end end end else begin if(counter6==2'b01) begin cnt0<=4'b0000; cnt1<=4'b0000; cnt2<=4'b0000; cnt3<=4'b0000; cnt4<=4'b0000; cnt5<=4'b0000; cnt6<=4'b0000; end else begin counter6<=counter6+1; cnte0<=cnt0; cnte1<=cnt1; cnte2<=cnt2;cnte3<=cnt3; cnte4<=cnt4; cnte5<=cnt5; cnte6<=cnt6; end end end end endmodule

频率计数器的仿真工作时序如图所示:

图 3-7 频率计数器的仿真结果图

4.4 锁存器

如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。其生成的功能模块如图所示:

11

数字频率计

图 3-7 锁存器模块

这模块实现了对七位计数结果的锁存功能。程序很简单如下所示: module latch(reset,clk_1hz,cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6, cn0,cn1,cn2,cn3,cn4,cn5,cn6); input reset,clk_1hz;

input [3:0] cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6; output reg [3:0] cn0,cn1,cn2,cn3,cn4,cn5,cn6; always @(posedge clk_1hz or negedge reset) begin if(!reset) begin cn0<=4'b0000; cn1<=4'b0000; cn2<=4'b0000; cn3<=4'b0000;

cn4<=4'b0000; cn5<=4'b0000; cn6<=4'b0000; end else begin cn0<=cnte0; cn1<=cnte1; cn2<=cnte2; cn3<=cnte3; cn4<=cnte4; cn5<=cnte5; cn6<=cnte6; end end endmodule

4.5 扫描显示控制译码系统

本模块在扫描信号的scan_for的控制下,对多路选择器进行扫描,实现对实现对六位已经锁存的计数结果的扫描输出,由于人眼的视觉暂留效应,每支数码管只需大于25Hz的扫描频率即可实现动态扫描,所以我们用1KHz的扫描信号足以。其生成的功能模块如图所示:

12

数字频率计

图 3-7 频率计数器的仿真结果图

本模块还实现了高位的无意义的消隐,即高位若值为零且无意义时,相应的数码管将不会显示。输出信号over通过最高位cnt6是否有值来判断结果是否溢出,如果溢出则over输出结果为低 ,led_khz为单位标志,如果led_khz 为有效时,显示结果的单位为KHz ,dot实现了小数点的显示。其源程序较多,可以附录中查看,此模块的仿真结果如下所示:

图 3-7 频率计数器的仿真结果图

第四章 顶层电路及总体仿真

4.1 顶层电路

顶层电路如下图所示:

13

数字频率计

图 4-1顶层电路图

4.2 总体仿真结果

为了验证我们的设计是否正确,我们用ModelSim对以上设计进行了仿真,

仿真精度达到ps级,基准时钟clk用20883ns,结果如下所示,在1Hz到10000Hz中仿真结果与理论值相等,在输入为100000Hz时出现了3Hz的误差,当输入被测信号为1000000Hz时,出现了26Hz的误差。

仿真结果波形如下图所示:

图 4-2被测信号为10 Hz的仿真结果

图 4-3测信号为100 Hz的仿真结果

图 4-3 被测信号为1000 Hz的仿真结果

10 000 Hz:

图 4-4 被测信号为10000 Hz的仿真结果

100 000 Hz:

14

数字频率计

图 4-5 被测信号为100000 Hz的仿真结果

1000 000 Hz:

图 4-6 被测信号为1000000 Hz的仿真结果

4.3 测试结果

在成功下载并运行后,为评估该设计系统的实际测量效果,做了一次对比实验,选用频率可调的函数发生器,同时用示波器做同步的跟踪。测得的数据较为精确,最低频率可以测到10Hz,当输入信号不大于10KHz时,显示结果跟函数发生器以及示波器的显示全吻合,当输入信号频率达到100KHz时,测得的结果和显波器的显示出现了3Hz的差值,当输入信号频率达到1000KHz时,测得的结果和显波器的显示出现了27Hz的差值,由于所使用的函数发生器最大只能产生41MHz的信号,所以我们最高只测到41MHz。

15

数字频率计

16


Verilog-数字频率计- 副本(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:说明书(无管网)-HFC227

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: