EDA实习报告数字频率计的设计与制作6位.doc

上传人:啊飒飒 文档编号:10293622 上传时间:2021-05-06 格式:DOC 页数:14 大小:373KB
返回 下载 相关 举报
EDA实习报告数字频率计的设计与制作6位.doc_第1页
第1页 / 共14页
EDA实习报告数字频率计的设计与制作6位.doc_第2页
第2页 / 共14页
EDA实习报告数字频率计的设计与制作6位.doc_第3页
第3页 / 共14页
EDA实习报告数字频率计的设计与制作6位.doc_第4页
第4页 / 共14页
EDA实习报告数字频率计的设计与制作6位.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《EDA实习报告数字频率计的设计与制作6位.doc》由会员分享,可在线阅读,更多相关《EDA实习报告数字频率计的设计与制作6位.doc(14页珍藏版)》请在三一文库上搜索。

1、 EDA实习报告设计课题: 基于FPGA的数字频率计的 设计与制作 专业班级: 信息73/74 学生姓名:3237405王星星3237410刘乐 3237329戴光明 指导教师: 黄桂林 李林 设计时间: 2009.12.7-2009.12.11 一、设计要求:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更加重要。通过运用VHDL语言,实现6位数字频率计,并利用Quartus II集成开发环境进行编辑、综合、波形仿真,并下载到FPGA器件中,并经实际电路测试证明系统性能可靠。要求:1、 设计一个能测量方波信号的频率的频率计。

2、2、 测量的频率范围是0999999Hz。3、 结果用十进制数显示。二、系统方案论证与模块划分:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到

3、不同的测量精度;间接测频法适用于低频信号的频率测量,本设计中使用的就是直接测频法,即用计数器在计算1S内输入信号周期的个数。 数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。具体设计方法:本实验通过频率控制模块,将时钟信号clk 两分频后分别取反赋给锁存使能和计数使能端,这样计数完成后就能实现数据的锁存。当计数使能和时钟信号同时出现低电平的时候,计数复位信号有效,将计数

4、器清零,从新开始计数。通过十进制计数器模块实现对输入信号周期的计数。通过锁存模块实现对计数器结果的锁存,并将其送入译码模块。通过译码模块实现对计数结果的译码,让其直观地显示于数码管上。通过系统模块实现对各模块功能的整合,实现整个系统的功能。三、系统单元电路设计及工作原理1.频率控制模块频率控制信号的输入信号是1HZ,将时钟信号clk 两分频后分别取反赋给锁存使能lock和计数使能端ena,这样计数完成后就能实现数据的锁存。当计数使能和时钟信号同时出现低电平的时候,计数复位信号clr有效,将计数器清零,从新开始计数。2.十进制计数器模块 十进制计数器模块实现对输入信号周期的计数,clk是被测信号

5、输入端,ena是计数允许信号端,clr是清零信号端。Cq 是计数结果输出端,cout是进位输出端。当ena信号有效,清零clr信号无效时,计数器进行对clk输入信号周期的计数。3.锁存模块 锁存模块实现对计数器结果的锁存,并将其送入译码模块。clk是锁存允许信号,当clk有效时,锁存模块便将输入信号cq的值送给输出信号led。4.译码模块 译码模块实现对计数结果的译码,让其直观地显示于数码管上。这便是典型的8段译码器。qin是输入信号,qout是输出信号,连接于数码管。5.系统模块系统模块实现对各模块功能的整合,实现整个系统的功能。f_in为测试信号,mclk为输入时钟,carry_out为溢

6、出信号,test_clk_out为内部分频输出的10000HZ信号,方便自测该程序,wei为六个数码管的位选,dula为数码管的段选。在这个模块的设计中,用到了以上介绍的各个模块,它实现的对是整个系统的控制。四、设计电路的仿真波形图1.频率控制模块仿真波形图2.十进制计数器模块仿真波形图3.锁存模块仿真波形图4.译码模块波形仿真图五、对自行设计的产品总结与评价采用常规电路设计数字频率计,所用的器件较多、连线比较复杂,而且存在延时较大、测量误差较大、可靠性低的缺点。采用复杂可编程逻辑器件,以EDA工具为开发手段、运用VHDL语言编程进行数字频率计的设计,将在使系统大大简化的同时,提高仪器整体的性

7、能和可靠性。我们设计的用FPGA实现的6位数字频率计测频系统,能够用数码显示被测信号的频率。我们采用VHDL语言编程,用Quartus II集成开发环境进行波形仿真、编译,并下载到FPGA中。FPGA的功耗低、速度快。经测试,该系统性能可靠、测量精确。不过本系统还有以下几点缺陷:1)不能自适应量程,实现自动转换功能。2)测量的频率范围有限。六、实习心得与体会王星星(3237405):时间过得很快,一个星期的实习很快就过去啦,虽然我以前把VHDL语言学过一遍了,但是这次实习中还是碰到了一些问题,通过向老师寻求帮助或者到网上查找相关的资料来一点点的去解决所遇到的问题,从中感觉自己对VHDL语言的理

8、解又进了一步!对硬件描述语言和纯软件语言如C语言之间的差别又有了更深一层次的了解!不过自我感觉想要对VHDL语言有很熟练的掌握的话,还需要多多的练习才行的!另外VHDL的系统描述能力虽强,不过编写程序的人也要对底层的电路有一定的了解,才能更加得心应手的使用VHDL语言编写出高效、简洁、准确的代码。本来感觉已经入门的我经过这一个星期的实习对这种硬件描述语言的掌握也得到了强化!这一周让我收获颇丰呀!刘乐(3237410): 虽然实习的时间只有短短的一周,但是我觉得这一周的辛苦也是值得的,现在想起来都觉得有点不可思议。因为就这短短的五天,我已经对FPGA入门了。经过学习,我发现硬件描述语言(VHDL

9、)其实很简单,原来以为要好几个月才能学会的语言,没想到看了两三天的书就能够勉强编程,更让人惊喜的是,VHDL的书写习惯跟C语言基本上是一样的,所以我看书的时候并没有记太多的东西。只是当我们编程时,发现VHDL跟C语言还是有本质区别的,毕竟VHDL是描述语言,一切都要以硬件为主。即便这样,我们组的三个人也只花了两天多一点的时间,就完成了频率计的设计,当然这还要利益于VHDL的简易。不管怎么说,实习已经结束了,FPGA算是勉强入门了,以后的造化就要看我们自己的努力了,总之我觉得这一周真的没有白过。戴光明(3237329): 这次EDA试验我学会了VHDL语言的基本语法规范,了解了Quartus软件

10、的使用方法,学会了用硬件测试的基本技能,在学习过程中也遇到各种各样的问题,下面就总结出来,作为以后的学习的经验: 1. 语法规则不熟悉,VHDL语法规则在刚刚接触的时候确实有各种各样的疏漏,写源代码的时候会不小心遗漏一两个字母或者标点符号,有时候把半角改成全角,这都会导致编译出错。2. 图形化界面顶层设计,如设计时输出端口dout【0.3】为四输出端口,定义是应该用.,不能用:,另外连线时候可能是一端口连到多端口,或者多端口连到一端口,这时候应该注意连线的根数。七、参考文献1.程源,祝洪峰.基于FPGA的数字频率计的设计与制作J.电子制作,2008,(01):34362. 王凤英. 基于FPG

11、A的数字频率计设计与仿真J.科技资讯,2008,(33):193.潘松,黄继业.EDA技术实用教程(第三版)M.北京:科学出版社,2008.4 陈尚志,胡荣强, 胡合松.基于FPGA自适应数字频率计的设计J.中国测试计术2007,(02):141144.5 王戎丞,陈可中,明鑫.基于VHDL的数字频率计的设计与实现J.现代电子技术,2005,(15):102104.附件:程序清单-plj.vhd-顶层文件(系统模块)-f_in 为测试信号,mclk为输入时钟,carry_out为溢出信号,test_clk_out为内部分频输出的10000HZ信号,为方便自测该程序,wei为六个数码管的位选,d

12、ula为数码管的段选-我的开发板主时钟为50MHZ-测量范围: 1Hz999999Hz-频率超过999999Hz时,溢出指示灯亮,可以作为扩大测量范围的接口library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity plj is port( f_in,mclk : in std_logic; carry_out,test_clk_out : out std_logic; wei: out std_logic_vector(5 downto 0); dula : out std_logic_vec

13、tor(7 downto 0) ); end plj;architecture behav of plj is signal dula_temp1,dula_temp2,dula_temp3,dula_temp4,dula_temp5,dula_temp6 : std_logic_vector(7 downto 0); signal led1,led2,led3,led4,led5,led6 : std_logic_vector(3 downto 0); signal clk,clk_div1 : std_logic; signal wei_temp : std_logic_vector(5

14、downto 0); component cnt10-例化语句 port(clk,clr,ena : in std_logic; cq : out std_logic_vector(3 downto 0); cout : out std_logic);end component;component ctl port( clk : in std_logic; ena : out std_logic; clr : out std_logic; lock : out std_logic );end component;component reg4 port( clk : in std_logic;

15、cq : in std_logic_vector(3 downto 0); led : out std_logic_vector(3 downto 0) );end component;component decodeport(qin : in std_logic_vector(3 downto 0); qout : out std_logic_vector(7 downto 0);end component; signal cout1,cout2,cout3,cout4,cout5 : std_logic; signal clr1,ena1,lock1 : std_logic; signal

16、 cq1,cq2,cq3,cq4,cq5,cq6 : std_logic_vector(3 downto 0);begin u1 : cnt10 port map(clk=f_in, clr=clr1,ena=ena1, cq=cq1,cout=cout1); u2 : cnt10 port map(clk=cout1,clr=clr1,ena=ena1, cq=cq2,cout=cout2); u3 : cnt10 port map(clk=cout2,clr=clr1,ena=ena1, cq=cq3,cout=cout3); u4 : cnt10 port map(clk=cout3,c

17、lr=clr1,ena=ena1, cq=cq4,cout=cout4); u5 : cnt10 port map(clk=cout4,clr=clr1,ena=ena1, cq=cq5,cout=cout5); u6 : cnt10 port map(clk=cout5,clr=clr1,ena=ena1, cq=cq6,cout=carry_out); u7 : ctl port map(clk=clk, clr=clr1,ena=ena1,lock=lock1); u8 : reg4 port map(clk=lock1,cq=cq1, led=led1); u9 : reg4 port

18、 map(clk=lock1,cq=cq2, led=led2); u10 : reg4 port map(clk=lock1,cq=cq3, led=led3); u11 : reg4 port map(clk=lock1,cq=cq4, led=led4); u12 : reg4 port map(clk=lock1,cq=cq5, led=led5); u13 : reg4 port map(clk=lock1,cq=cq6, led=led6); u19:decode port map(qin = led1,qout=dula_temp1); u14:decode port map(q

19、in = led2,qout=dula_temp2); u15:decode port map(qin = led3,qout=dula_temp3); u16:decode port map(qin = led4,qout=dula_temp4); u17:decode port map(qin = led5,qout=dula_temp5); u18:decode port map(qin = led6,qout=dula_temp6); test_clk_out=clk_div1; wei=wei_temp; process(mclk)-分频:从50MHZ分出1HZ基准信号 处理后可以产

20、生用于测频所需的计数允许、锁存数据和清零三个控制信号。variable cnt1 : integer range 0 to 2500;variable cnt2 : integer range 0 to 10000;beginif mclkevent and mclk=1 thenif cnt1=2500 thencnt1:=0;clk_div1 = not clk_div1;-扫描信号if cnt2=10000 thencnt2:=0;clk wei_temp = 111110;dula wei_temp = 111101;dula wei_temp = 111011;dula wei_te

21、mp = 110111;dula wei_temp = 101111;dula wei_temp = 011111;dulaNULL;end case;end process;end;-ctl.vhd-频率控制模块-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ctl is-计数允许、锁存数据和清零三个控制信号 port( clk : in std_logic; ena : out std_logic; clr : out std_logic; lock : out std_log

22、ic );end ctl;architecture behav of ctl is signal div2clk : std_logic; begin process(clk) begin if clkevent and clk=1 then div2clk=not div2clk; end if; end process; process(clk,div2clk) begin if clk=0 and div2clk=0 then clr=1; else clr=0; end if; end process; lock=not div2clk; ena0); elsif clkevent a

23、nd clk=1 then if ena=1 then if cqi0); end if; end if;end if;if cqi=9 then cout=1; else cout=0;end if; cq=cqi;end process;end behav;-reg4.vhd-锁存模块-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg4 is-锁存器port( clk : in std_logic; cq : in std_logic_vector(3 downto 0);

24、 led : out std_logic_vector(3 downto 0) );end reg4;architecture one of reg4 isbegin process(clk,cq) begin if clkevent and clk=1 then led=cq; end if; end process;end;-decode.vhd-译码模块-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decode is

25、-BCD译码port(qin : in std_logic_vector(3 downto 0); qout : out std_logic_vector(7 downto 0);end decode;architecture behave of decode isbegin with qin selectqout=11000000when 0000,11111001when 0001,10100100when 0010,10110000when 0011,10011001when 0100,10010010when 0101,10000010when 0110,11111000when 01

26、11,10000000when 1000,10010000when 1001,NULLwhen others;end behave;电气工程系EDA实习成绩评定表专业: 电子信息科学与技术 班级: 信息73/74班 课题名称基于VHDL的秒表设计与制作设计任务与要求在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更加重要。通过运用VHDL语言,实现6位数字频率计,并利用Quartus II集成开发环境进行编辑、综合、波形仿真,并下载到FPGA器件中,并经实际电路测试证明系统性能可靠。要求:1.设计一个能测量方波信号的频率的频率计。2.测量的频率范围是0999999Hz。3.结果用十进制数显示。课程小组评定评定成绩:学号:3237405 姓名:王星星学号:3237410 姓名:刘乐 学号:3237329 姓名:戴光明 指导教师: 课程负责人:时间: 年 月 日

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

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


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