实验六_数字频率计的Verilog_HDL语言实现.docVIP

  • 108
  • 0
  • 约6.65千字
  • 约 7页
  • 2017-01-30 发布于重庆
  • 举报

实验六_数字频率计的Verilog_HDL语言实现.doc

实验六_数字频率计的Verilog_HDL语言实现

五邑大学实验报告 实验课程名称 数字频率计的Verilog HDL语言实现 院系名称: 信息工程学院 专业名称: 通信工程(物联网工程) 实验项目名称: EDA实验 班级 : 110711 学号: 报告人: 冯剑波 实验六 数字频率计的Verilog HDL语言实现 一、实验目的: 1、掌握较复杂数字电路或系统的纯Verilog HDL实现方法; 2、体会纯Verilog HDL语言输入设计与原理图输入设计的差别。 二、实验原理: 数字频率计是用来测量输入信号的频率并显示测量结果的系统。一般基准时钟的高电平的持续时间为,若在这内被测信号的周期数为则被测信号的频率就是,选择不同的,可以得到不同的测量精度。一般越大,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。 三、设计任务与要求: 1、设计一个6位频率计,测量范围从1Hz到99 99 99Hz,测量结果用6个数码管显示,基准时钟频率为1Hz; 2、只显示测量结果,中间计数过程不显示;结果更新时间2秒一次; 3、频率计只设一个复位键,按下该键(reset=0)系统复位,释放该键(reset=1)系统工作,测量并显示结果。 4、显示用静态方式; 5、用Verilog HDL实现上述要求的频率计。 四、设计源程序及注释与仿真结果 设计源程序: module pinlvji(oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5,clk_50M,clk_1Hz,reset,signal_out); input clk_50M,reset; //50MHz时钟输入、复位 output[6:0] oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5; //数码管0-5,分别显示个、十、百、千、万、十万位的数字 output reg clk_1Hz; output reg signal_out; reg signal_in; reg[29:0] cnt; reg[29:0] cnt1; reg count_en; //计数允许,count_en=1时计数,下降沿到来时锁存 reg load; reg[3:0] ge,shi,bai,qian,wan,shiwan; reg cout1,cout2,cout3,cout4,cout5; reg[3:0] q0,q1,q2,q3,q4,q5; wire clr; always @(posedge clk_50M) //改变Hz的范围,自己设定的频率1Hz-999999Hz begin cnt1=cnt1+1; if(cnt1=25_000_0) begin signal_out=0;signal_in=0;end else if(cnt1==50_000_0) cnt1=0; else begin signal_out=1;signal_in=0;end end always @(posedge clk_50M) //50M分频产生1Hz时钟 begin cnt=cnt+1; if(cnt=25_000_000) clk_1Hz=0; else if(cnt==50_000_000) cnt=0; else clk_1Hz=1; end /*被测信号signal_in作为个位的输入,,signal_in上升沿到来时ge位+1;进位输出是cout1,作为十位的输入*/ always @(posedge signal_out or posedge reset or posedge clr) begin if(reset) ge=0; else if(clr) ge=0; else begin if(count_en) begin if(ge==9) begin ge=0;cout1=1;end else begin ge=ge+1;cout1=0;end end end end /*cout1作为十位的输入,cout1上升沿到来时shi位+1;进位输出是cout2,作为百位的输入*/ always @(posedge cout1 or posedge reset or posedge clr) begin if(reset) shi=0; else if(clr)

文档评论(0)

1亿VIP精品文档

相关文档