资源描述:
《实验六_数字频率计的Verilog_HDL语言实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、五邑大学实验报告实验课程名称数字频率计的VerilogHDL语言实现院系名称:信息工程学院专业名称:通信工程(物联网工程)实验项目名称:EDA实验班级:110711学号:11071107报告人:冯剑波实验六数字频率计的VerilogHDL语言实现一、实验目的:1、掌握较复杂数字电路或系统的纯VerilogHDL实现方法;2、体会纯VerilogHDL语言输入设计与原理图输入设计的差别。二、实验原理:数字频率计是用来测量输入信号的频率并显示测量结果的系统。一般基准时钟的高电平的持续时间为,若在这内被测信号的周期数为则被测信号的频率就是,选择不同的,可以得到不同的测量精度。一般越大
2、,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。三、设计任务与要求:1、设计一个6位频率计,测量范围从1Hz到999999Hz,测量结果用6个数码管显示,基准时钟频率为1Hz;2、只显示测量结果,中间计数过程不显示;结果更新时间2秒一次;3、频率计只设一个复位键,按下该键(reset=0)系统复位,释放该键(reset=1)系统工作,测量并显示结果。4、显示用静态方式;5、用VerilogHDL实现上述要求的频率计。四、设计源程序及注释与仿真结果设计源程序:modulepinlvji(oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5,clk_
3、50M,clk_1Hz,reset,signal_out);inputclk_50M,reset;//50MHz时钟输入、复位output[6:0]oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5;//数码管0-5,分别显示个、十、百、千、万、十万位的数字outputregclk_1Hz;outputregsignal_out;regsignal_in;reg[29:0]cnt;reg[29:0]cnt1;regcount_en;//计数允许,count_en=1时计数,下降沿到来时锁存regload;reg[3:0]ge,shi,bai,qian,wan
4、,shiwan;regcout1,cout2,cout3,cout4,cout5;reg[3:0]q0,q1,q2,q3,q4,q5;wireclr;always@(posedgeclk_50M)//改变Hz的范围,自己设定的频率1Hz-999999Hzbegincnt1=cnt1+1;if(cnt1<=25_000_0)beginsignal_out=0;signal_in=0;endelseif(cnt1==50_000_0)cnt1=0;elsebeginsignal_out=1;signal_in=0;endendalways@(posedgeclk_50M)//50M
5、分频产生1Hz时钟begincnt=cnt+1;if(cnt<=25_000_000)clk_1Hz=0;elseif(cnt==50_000_000)cnt=0;elseclk_1Hz=1;end/*被测信号signal_in作为个位的输入,,signal_in上升沿到来时ge位+1;进位输出是cout1,作为十位的输入*/always@(posedgesignal_outorposedgeresetorposedgeclr)beginif(reset)ge=0;elseif(clr)ge=0;elsebeginif(count_en)beginif(ge==9)beging
6、e=0;cout1=1;endelsebeginge=ge+1;cout1=0;endendendend/*cout1作为十位的输入,cout1上升沿到来时shi位+1;进位输出是cout2,作为百位的输入*/always@(posedgecout1orposedgeresetorposedgeclr)beginif(reset)shi=0;elseif(clr)shi=0;elsebeginif(count_en)beginif(shi==9)beginshi=0;cout2=1;endelsebeginshi=shi+1;cout2=0;endendendend/*cout
7、2作为百位的输入,cout2上升沿到来时bai位+1;进位输出是cout3,作为千位的输入*/always@(posedgecout2orposedgeresetorposedgeclr)beginif(reset)bai=0;elseif(clr)bai=0;elsebeginif(count_en)beginif(bai==9)beginbai=0;cout3=1;endelsebeginbai=bai+1;cout3=0;endendendend/*cout3作为千位的输入,cout3