数字频率计的VHDL设计.doc

上传人:数据九部 文档编号:10316058 上传时间:2021-05-08 格式:DOC 页数:12 大小:217.50KB
返回 下载 相关 举报
数字频率计的VHDL设计.doc_第1页
第1页 / 共12页
数字频率计的VHDL设计.doc_第2页
第2页 / 共12页
数字频率计的VHDL设计.doc_第3页
第3页 / 共12页
数字频率计的VHDL设计.doc_第4页
第4页 / 共12页
数字频率计的VHDL设计.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数字频率计的VHDL设计.doc》由会员分享,可在线阅读,更多相关《数字频率计的VHDL设计.doc(12页珍藏版)》请在三一文库上搜索。

1、电子设计自动化(EDA)技术课程设计报告书课程设计题目、内容、要求设计题目数字频率计的VHDL设计设计要求用PLD器件EP1K10TC100-3及7段动态显示数码管(一只用于量程显示)设计一只数字频率计,要求:(1)测频范围0999999MHz;(2)能测量方波信号;(3)结果用十进制显示;设计过程设计方案:借用实验板上标准时钟发生电路,为计数闸门控制电路提供一个标准4MHz信号。计数器闸门控制电路fen就是产生两个控制信号,即4位十进制计数器允许计数信号、锁存信号。锁存电路可以让LED数码管在信号来临之前保持计数值不变。计数器复位电路可以让频率计恢复到计数初始态。LED数码管驱动电路为LED

2、数码管提供驱动电压。在程序设计中我们采用了自顶向下(top_down)的设计方法,使得程序设计的过程更为简单,在设计出各模块后,我们用了各顶层模块将各个底层模块合在一起,我们用的是原件例化来实现的,在例化完成后只需要调用顶层模块就可以让数字频率计可用了,设计完成后用波形仿真来验证程序设计的正确性。成绩评定指导教师评语设计等级目 录1 课程设计题目、内容与要求 1.1 设计内容1.2 具体要求2 系统设计 2.1 设计思路2.2 系统原理与设计说明3 系统实现 4 系统仿真 5硬件验证(操作)说明6总结 7 参考书目 1 课程设计题目、内容与要求1.1课程设计的题目:数字频率计设计1.2课程设计

3、内容:(1)设计一个能测量方波信号的频率计;(2)测量范围是0-999999Hz;(3)结果用十进制数显示。2 系统设计2.1设计思路:2.1.1 数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器.它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。本数字频率计采用自顶向下的设计思想,通过闸门提供的1s闸门时间对被测信号进行计数及测出的被测信号的频率,测出的频率再通过译码器译码后输出给显示器显示。根据系统设计的要求,数字频率计的电路原理框图如下:4位十进制计数器锁存电路译码电路计数器闸门控制电路片选电路数据选择电路LED数码显示待测输入信号4MHZ时钟4MHZ时钟图1 数字频

4、率计电路原理框图2.2 系统原理与设计说明系统各个模块的功能如下:221标准时钟发生电路模块借用实验板上标准时钟发生电路,为计数闸门控制电路提供一个标准8Hz信号。222 计数器闸门控制电路模块计数器闸门控制电路就是产生三个控制信号,即计数器复位信号、4位十进制计数器允许计数信号、锁存信号。2.2.3锁存电路模块锁存电路就是为了让LED数码管在信号来临之前保持计数值不变。2.2.4计数器复位电路模块计数器复位电路是让频率计恢复到计数初始态。2.2.5 LED数码管驱动电路模块LED数码管驱动电路就是为LED数码管提供驱动电压。 3系统实现此部分先讲各个模块再讲模块联调的实现。3.1各部分模块的

5、源程序 模块 FEN 见图 1.1 ,通过对 4MHz 时钟进行分频以获得 0.5 Hz 时钟,为核心模块 CORNA 提供 1 的闸门时间。library ieee; use ieee.std_logic_1164.all; entity fen is port(clk:in std_logic; q:out std_logic); end fen; architecture fen_arc of fen is begin process(clk) variable cnt: integer range 0 to 3999999; variable x:std_logic; begin if

6、 clkevent and clk=1then if cnt3999999 then cnt:=cnt+1; else cnt:=0; x:=not x; end if; end if; q=x; end process; end fen_arc; 模块 SEL见图1.2,该模块产生数码管的片选信号。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity selx is port(clk:in std_logic; sel:inout std_logic_vector(2 downto

7、 0); end selx; architecture sel_arc of sexl is begin process(clk) variable cnt:std_logic_vector(2 downto 0); begin if clkevent and clk=1then cnt:=cnt+1; end if; sel=cnt; end process; end sel_arc; 核心模块 CORNA见图1.3,该模块是整个程序的核心,它能在 1 的闸门时间里完成对被测信号频率计数的功能,并通过选择输出数据实现自动换档的功能。library ieee; use ieee.std_log

8、ic_1164.all; use ieee.std_logic_unsigned.all; entity corna is port(clr,sig,door:in std_logic; alm:out std_logic; q3,q2,q1,q0,dang:out std_logic_vector(3 downto 0); end corna; architecture corn_arc of corna is begin process(door,sig) variable c0,c1,c2,c3,c4,c5,c6:std_logic_vector(3 downto 0); variabl

9、e x:std_logic; begin if sigevent and sig=1then if door=1then if c01001then c0:=c0+1; else c0:=0000; if c11001then c1:=c1+1; else c1:=0000; if c21001then c2:=c2+1; else c2:=0000; if c31001then c3:=c3+1; else c3:=0000; if c41001then c4:=c4+1; else c4:=0000; if c51001then c5:=c5+1; else c5:=0000; if c6

10、1001then c6:=c6+1; else c6:=0000; alm=1; end if; end if; end if; end if; end if; end if; end if; else if clr=0then alm=0; end if; c6:=0000; c5:=0000; c4:=0000; c3:=0000; c2:=0000; c1:=0000; c0:=0000; end if; if c6/=0000then q3=c6; q2=c5; q1=c4; q0=c3; dang=0100; elsif c5/=0000then q3=c5; q2=c4; q1=c

11、3; q0=c2; dang=0011; elsif c4/=0000then q3=c4; q2=c3; q1=c2; q0=c1; dang=0010; elsif c3/=0000then q3=c3; q2=c2; q1=c1; q0=c0; dang=0001; end if; end if; end process; end corn_arc; 模块 LOCK见图1.4,该模块实现锁存器的功能,在信号L的下降沿到来时将信号A4、A3、A2、A1锁存。library ieee; use ieee.std_logic_1164.all; entity lock is port(l:in

12、 std_logic; a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0); q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0); end lock; architecture lock_arc of lock is begin process(l) variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0); begin if levent and l=0then t4:=a4; t3:=a3; t2:=a2; t1:=a1; t0:=a0; end if; q

13、4=t4; q3=t3; q2=t2; q1=t1; q0qqqqqqqqqqqqqqqqqclk,q=qq);u2:selx PORT MAP(clk=clk,sel=sel);u3:corna PORT MAP(clr=clr,sig=sig,door=qq,alm=alm,q3=qq3,q2=qq2,q1=qq1,q0=qq0,dang=qqdang);u4:lock PORT MAP(l=qq,a4=qq3,a3=qq3,a2=qq2,a1=qq1,a0=qqdang,q4=tt4,q3=tt3,q2=tt2,q1=tt1,q0=tt0); u5:ch PORT MAP(sel=sel

14、,a3=tt4,a2=tt3,a1=tt2,a0=tt1,dang=tt0,q=ww);u6:disp PORT MAP(d=ww,q=q);END sd;本部分讲述的是用图形的方法来实现模块联调,在Mux plusII中现将编译好的各模块生成为图形(Filecreat Default Symbol),再打开新建一个图形编辑器(FileNewGraphic Editor file)进行图形拼凑编译就可以了,最后的图形如下图: 4系统仿真整个系统 的仿真波形如下:测试信号是频率为5kHz脉冲时的仿真波形图第一次仿真中的换档情况测试信号是频率为25kHz脉冲时的仿真波形图测试信号是频率为250kH

15、z脉冲时的仿真波形测试信号是周期为6ms脉冲时的仿真波形图5硬件验证说明本设计可采用EDA2000实验箱(主芯片为EP1K10TC100-3)进行硬件下载验证.将下载好程序的主芯片根据事先定义好的管脚连好线,clk端口用实验箱的输出为4MHz的标准时基信号,sig端口接入被测的信号,clr端口连接一个电平开关,将电平开关-置高电平,输出端接好LED显示器就可以观察被测信号的频率了。6总结通过本次EDA数字频率计的设计,让我对数字系统的整个设计流程有了更清楚的人认识,也让我认识到任何一个系统的设计都不是我所想象的那么容易,记得在这次数字频率计的设计过程中,本来所的程序都可以借鉴,甚至可以照抄,可

16、是事实上,但我们把程序拿去编译、仿真时,发现所有的程序都或多或少的错误等,同时,它还我发现了平时学习中的问题,如在进行顶层设计时,要用到元件例化语句,但平时学习时却只是一晃而过,这是才发现它的重要这次EDA课程设计可以说是酸甜苦辣样样皆在心中,但总的来说是苦多于甜,不仅使我学到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查

17、下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开始计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比较合适的输入数值最终观察到完整的仿真结果。其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只

18、有选择了合适当前电路所适合的器件,编译才能得到完满成功。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 总之,这次课程设计让我受益匪浅。7参考书目1PLD与数字系统设计李辉 西安电子科技大学出版社 20052集成电路设计VHDL教程赵俊超 等著 北京:希望电子出版社2002 3VHDL数字系统设计与高层次综合林敏 方颖立著北京:电子工业出版社 20024VHDL程序设计曾繁泰 陈美金著北京: 清华大学出版社 20015VHDL 实用教程潘松 王国栋著 成都:电子科技大学出版社 20016数字电路逻辑设计王毓银著 北京:高等教育出版社 2001

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1