ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:164.16KB ,
资源ID:6936924      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6936924.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(四位十进制频率计EDA.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

四位十进制频率计EDA.docx

1、四位十进制频率计EDA四位十进制频率计设 计 报 告一、 题目分析1、设计原理 根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1S的输入信号脉冲计数允许的信号;1S计数结束后,计数值被锁入锁存器,计数器清零,为下一测评计数周期做好准备。测频控制信号可以由一个独立的发生器来产生。2、设计要求: FTCTRL的计数使能信号CNT_EN能产生一个1S脉宽的周期信号,并对频率计中的16位计数器couter16D的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上升沿将计数器在前一秒钟

2、的计数值锁进锁存器REG16D中,并由外部的十进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。锁存信号后,必须有一清零信号RST_CNT对计数器进行清零,为下一秒的技术操作做准备。3、实现功能 当输入一个待测频率时,在测频信号的控制下,可以通过外部的7段译码器显示出其频率值。二、 设计方案1、 顶层实体描述 图1:四位十进制频率计顶层实体 图2:测频控制电路实体 图3: 16位计数器实体 图4: 16位锁存器实体 图5:十进制加法计数器实体2、 模块划分 设计一个四位十进制频率计,首先需要一个测频控制电路来产生一个脉宽为1S的输入信号脉冲计数

3、允许的信号;然后需要一个16位计数器进行计数,由于我们设计的是四位的十进制的频率计,所以还需要用4个十进制的加法计数器来构成所需要的计数器;在技计数完成之后还需要一个锁存器将计数值进行锁存,从而使显示的数值稳定。3、 模块描述(1)四位十进制频率计顶层 该模块即为我们最终所要实现的模块,即给定一个频率后,我们可以在外部显示上看到待测频率的频率值。(2)测频控制电路 该模块用于产生产生一个脉宽为1S的输入信号脉冲计数允许的信号,以便于后面模块的使用。(3)16位计数器 该模块用于在1S脉宽的周期信号内对待测频率的周期进行计数,从而得到待测频率的频率值。(4)16位锁存器 该模块用于将计数器产生的

4、最终的计数值进行锁存,从而使显示的数值稳定。(5)十进制加法计数器 该模块用于产生设计所要求的十进制的计数器,从而构造成我们所需要的计数器。4、 顶层电路图 16位计数器由四个十进制的加法计数器组成三、 方案实现1、 各模块仿真及描述(1)测频控制电路的仿真 在CLKK时钟的控制下,计数使能信号CNT_EN能产生一个一定脉宽的周期信号(后面用于产生1S脉宽的周期信号),在停止计数期间,一个锁存信号LOAD的上升沿将计数器在前一秒钟的计数值锁进锁存器REG16D中。清零信号RST_CNT对计数器进行清零,为下一秒的技术操作做准备。(2)16位计数器的仿真 从波形图中可以看出,当清零信号CLR置0

5、,计数使能信号置1时,计数器以十进制的方式对所给的周期信号的周期进行计数。(3)16位锁存器的仿真 从波形图中可以看出,当LK置1时,锁存器对所给的数值进行锁存,并且使输出的锁存的数值保持不变,这将在后面的外部显示时使数值保持稳定。(4)十进制加法计数器的仿真 从波形图中可以看出,当使能端ENA置1,清零端置0时,计数器对给定的时钟的周期进行计数,计数值从0000-1001进行循环,这就满足了我们所需要的十进制的计数器。2、 顶层电路仿真及描述 在进行仿真时,我设置的CLK1HZ的时钟周期是1s(频率为1HZ),FSIN的时钟周期为10ms(频率为100HZ),从波形图中可以看出,输出的计数值

6、确实是100,验证是正确的。四、硬件测试及说明我选择了实验电路模式0,测频控制信号CLK1HZ由clock2输入,待测频率FSIN由clock0输入(可用电路帽选择所需要的频率),4个数码管(数码4-1:PIO31-PIO16)显示测频的输出。测试结果如下:测频控制频率待测频率数码管显示结果1HZ64HZ641HZ1024HZ10241HZ16384HZ63841HZ65536HZ55391HZ7500000HZ9940从测试的结果可以看出:(1)我所设计的四位十进制频率计对于四位的待测频率可以准确的显示出来;(2)但对于超过四位的待测频率只能将前面超出的溢出,只保留最后四位;(3)待测频率的

7、位数越多,越往后数码管显示结果的误差就越大。五、 结论本实验设计的是四位十进制频率计,利用测频控制电路、16位锁存器、16位计数器和十进制的计数加法器几个模块完成了我所要的设计。实现的功能是:在测频控制电路给的1HZ的测频信号下,计数器对待测频率的周期进行计数,再由锁存器锁存,最终通过外部的数码管将待测频率的频率数值显示出来。通过本次设计实验我也学到了很多东西,刚开始时选定题目后不知道如何下手,通过翻书、上网查资料找到了一些相关知识才开始做实验。在实验的进行中也出现了很多问题,比如说编译出现了很多错误,经过我仔细的排查和修改后,最终使得编译完全正确了,这让我有一点成就感,同时也使我对此充满了兴

8、趣,做得就更加认真了,努力把很多没弄懂的问题都想清楚了,做完本次设计实验后真的收获颇丰!六、课程总结通过在系统编程技术这门课的学习,我真的学到了很多东西。理论知识主要是学习了FPGA/CPLD、EDA的设计平台、VHDL语言等。在理论学习之后,我们通过实验锻炼了自己的实践能力,同时在实验的过程中也加深了我们对课本上理论知识的理解。记得刚开始学习这门课时,觉得还是比较有压力的,老师说我们要多了解EDA方面一些比较前沿的知识,第一节课听着老师提到的各个设计公司,比如说:Lattice、Xilinx、Altera公司等相关方面的专业名词,其实那时心里是有点激动的,觉得自己正在接触着前沿的知识。在后面

9、的理论知识的学习中觉得是痛并快乐着,痛的是各方面的知识比较多,比如说在学习VHDL语言的变量、常量、信号时,要注意很多的细节知识,当然快乐的就是自己学到了知识,丰富了自己所知道的知识范围。在实验课上,我们学会了如何用电路原理图或者VHDL语言实现一个设计,通过在实验过程中遇到的各种问题来提高自己对Quartus ii 6.0软件的应用能力。以及在最后的设计实验中更是让我知道一个设计人员的专业素养的要求也很高,要有一定的理论知识、清晰地头脑、较强的分析能力。我认识到自己离一个设计人员的标准很有很多距离,但我会不断努力下去,努力让自己接近于一个设计人员的水平。 在最后,谢谢同学在学习的过程中给我的

10、帮助以及老师给予的指导!七、 附录(源程序,加中文注释)1、频率计顶层文件LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all;ENTITY freqtest ISPORT (CLK1HZ:IN STD_LOGIC; -测频控制信号 FSIN:IN STD_LOGIC; -待测频率 D:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-输出计数值END entity freqtest;ARCHITECTURE fd1 OF freqtest ISCOMPONENT couter16D ISPORT (FIN:IN STD_LOGIC; -时钟信

11、号 ENABL:IN STD_LOGIC; -计数使能信号 CLR:IN STD_LOGIC; -清零信号 DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-计数结果END COMPONENT;COMPONENT FTCTRL ISPORT (CLKK:IN STD_LOGIC; -测频控制信号(选取1HZ) CNT_EN:out STD_LOGIC; -计数器时钟使能 RST_CNT:OUT STD_LOGIC; -计数器清零 LOAD:out STD_LOGIC); -输出锁存信号END COMPONENT;COMPONENT REG16D ISPORT (L

12、K:IN STD_LOGIC; -控制端,置1时锁存输出 DIN:in STD_LOGIC_VECTOR(15 downto 0); -输入的计数值 DOUT:OUT STD_LOGIC_VECTOR(15 downto 0);-输出的计数值END COMPONENT;SIGNAL x,y,z:STD_LOGIC; -定义信号x,y,zSIGNAL e:STD_LOGIC_VECTOR(15 DOWNTO 0); -定义16位的信号eBEGIN -下面就是有原先设计的模块构 成顶层文件u1:couter16D PORT MAP(FIN=FSIN,ENABL=x,CLR=y,DOUT=e);u2

13、:FTCTRL PORT MAP(CLKK=CLK1HZ,CNT_EN=x,RST_CNT=y,LOAD=z);u3:REG16D PORT MAP(DIN=e,LK=z,DOUT=D);END ARCHITECTURE fd1;2、测频控制电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY FTCTRL IS PORT(CLKK:IN STD_LOGIC; -测频控制信号(验证时取1HZ) CNT_EN:OUT STD_LOGIC; -计数器时钟使能 RST_CNT:OUT STD

14、_LOGIC; -计数器清零 LOAD:OUT STD_LOGIC); -输出锁存信号END FTCTRL;ARCHITECTURE behav OF FTCTRL IS SIGNAL Div2CLK:STD_LOGIC;BEGIN PROCESS(CLKK) BEGIN IF CLKKEVENT AND CLKK=1 THEN -1HZ时钟2分频 Div2CLK=NOT Div2CLK; END IF; END PROCESS; PROCESS(CLKK,Div2CLK) BEGIN IF CLKK=0 AND Div2CLK=0 THEN RST_CNT=1; -产生计数器清零信号 ELS

15、E RST_CNT=0; END IF; END PROCESS; LOAD=NOT Div2CLK; CNT_EN=Div2CLK;END behav;3、16位锁存器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all;ENTITY REG16D ISPORT (LK:IN STD_LOGIC; -控制端,置1时锁存输出 DIN:in STD_LOGIC_VECTOR(15 downto 0);-输入的计数值 DOUT:OUT STD_LOGIC_VECTOR(15 downto 0);-输出的计数值END ENTITY REG16D;ARCHITECTURE

16、 fd1 OF REG16D ISBEGINprocess(LK,DIN)beginif (LKEVENT and LK = 1 ) then DOUTFIN,ENA=ENABL,RST=CLR,OUTY=DOUT(3 downto 0),COUT=x);u2:CNT10 PORT MAP(FX=x,ENA=ENABL,RST=CLR,OUTY=DOUT(7 downto 4),COUT=y);u3:CNT10 PORT MAP(FX=y,ENA=ENABL,RST=CLR,OUTY=DOUT(11 downto 8),COUT=z);u4:CNT10 PORT MAP(FX=z,ENA=EN

17、ABL,RST=CLR,OUTY=DOUT(15 downto 12);END ARCHITECTURE fd1;5、十进制加法计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY CNT10 ISPORT (RST:IN STD_LOGIC; -清零端 FX::IN STD_LOGIC; -时钟信号 ENA:IN STD_LOGIC; -使能端 OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-输出计数结果 COUT:OUT STD_LOGIC); -输

18、出信号用于进位END ENTITY CNT10;ARCHITECTURE behav OF CNT10 ISBEGINprocess(RST,ENA,FX)variable CQI :STD_LOGIC_VECTOR(3 downto 0);-定义变量CQIbeginif (RST = 1) then CQI:=(others =0); elsif(FXEVENT and FX = 1) then -在时钟信号FX的上升沿 if ENA=1 then -使能端为1,让信号从0-9进行计数 if CQI9 then CQI:= CQI+1; COUT0);COUT0);-使能端置0输出为0 END IF;end if;OUTY= CQI;end process;END behav; 友情提示:本资料代表个人观点,如有帮助请下载,谢谢您的浏览!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1