资源描述:
《简易数字频率计的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、HUBEINORMALUNIVERSITY电工电子实验报告课程名称EDA技术基础实验名称综合实验总结选题性质设计学号姓名30杨炜专业名称电子信息科学与技术所在院系物理与电子科学学院填表时间2008.06.20简易数字频率计的设计一、任务解析被测信号通过门控电路送到计数器中,再从计数器中传送到显示数据缓冲buffer中,最后通过数码管显示出来。信号的传输过程就是这样。但是,我们要通过数码管显示频率,就需要对输入的信号进行控制,归根到底是对输入的时间进行控制,需要在1s内对输入的信号进行计数,因此,1hz精密时钟的设置非常重
2、要,它既要控制门控电路来限制被测信号的输入时间,还要对计数器进行及时的清零,同时,还得对buffer里的数据进行更新。在实验中,就是通过1hz精密时钟和门控电路来实现对被测信号的控制的。本实验中门控电路是用与非门来实现的,如下图:门控电路门控电路使计数器的工作状态与buffer的工作状态恰好相反,即当计数器计数时,buffer不工作,计数器不向buffer中输入数据,也就是,当clks输入为0时,通过与非门向计数器输入就是1,计数器计数,但是向buffer中输入的就是0,buffer就不工作了,从而实现了对计数器和buf
3、fer进行分时控制,即能实现数据的输入和清零,也能实现数据的更新。在1s内,也就是在1hz精密时钟的控制下,计数器是对输入的被测信号进行计数,1s内计的数值就是被测信号的频率。1s后计数器停止计数,buffer开始工作,计数器中的数据传到buffer中,再通过数码管扫描显示出来,数码管显示的值即为被测信号的频率。二、方案论证把抽象的原理框图改写成直观易懂的实验原理图如下:三、实验步骤在实际设计过程中,采用的是分模块来设计的,最后把各个模块连接成实验原理图。下面介绍各个模块。1、1hz精密时钟的设计模块图如下:程序如下:m
4、oduleyihz(clk24M,clko);inputclk24M;outputclko;parameterN=;parametern=24;reg[n:0]cnt;regclko;always@(posedgeclk24M)beginif(cnt==N)begincnt=0;clko=1;endelsebegincnt=cnt+1;clko=0;endendendmodule由于实际的实验箱上没有1hz的频率发生器,只有24Mhz的频率,所以要把24Mhz的分频,使产生1hz的信号。1hz就是周期为1s的控制输入信号
5、。2、计数器的设计模块如下:程序如下:modulejishu(clk,rest,a,b,c,d,e,f,g,h);inputclk,rest;output[3:0]a,b,c,d,e,f,g,h;reg[3:0]a,b,c,d,e,f,g,h;always@(posedgeclkornegedgerest)beginif(!rest)begina=0;b=0;c=0;d=0;e=0;f=0;g=0;h=0;endelsebegina=a+1;if(a==10)begina=0;b=b+1;c=c;d=d;e=e;f=f;
6、g=g;h=h;endelsebeginb=b;c=c;d=d;e=e;f=f;g=g;h=h;endif(b==10)beginb=0;c=c+1;d=d;e=e;f=f;g=g;h=h;endelsebeginc=c;d=d;e=e;f=f;g=g;h=h;endif(c==10)beginc=0;d=d+1;e=e;f=f;g=g;h=h;endelsebegind=d;e=e;f=f;g=g;h=h;endif(d==10)begind=0;e=e+1;f=f;g=g;h=h;endelsebegine=e;f=
7、f;g=g;h=h;endif(e==10)begine=0;f=f+1;g=g;h=h;endelsebeginf=f;g=g;h=h;endif(f==10)beginf=0;g=g+1;h=h;endelsebeging=g;h=h;endif(g==10)beging=0;h=h+1;endelseh=h;if(h==10)begina=0;b=0;c=0;d=0;e=0;f=0;g=0;h=0;endendendendmodule计数器是本次实验的关键所在,它的主要功能是:在1hz精密时钟和门控电路的控制下,在
8、1s的时间内,对输入信号进行计数,1s后,由于门控电路的存在,计数器停止计数。8个数码管采用8位A,B,C,D,E,F,G,H来计数输出。Clk、rest是计数的时钟信号,但是当rest为0时,计数器停止计数。3、显示数据缓冲buffer的设计模块如下:程序如下:modulebuffer(a,b,c,d,e,f,g,