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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于CPLD的数字频率计.docx

1、基于CPLD的数字频率计第1章 设计总体思路,基本原理和框图1.1 设计总体思路数字频率计是数字电路中的一个典型应用,这里我们采用ALTERA公司的EP1C3T144C8作为控制核心,利用VHDL语言进行编程,硬件下载烧制实现。将所有集成器件集成到一块芯片上,体积大大减小的同时还大大提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活,调试方便。1.2 基本原理频率计的基本原理是利用一个稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s都可以。测得的

2、频率时间间隔与闸门时间的取值成正比,在这里取的闸门时间为1s。其实频率就是1s中之内测得的周期个数,这里我们可以以时钟信号的频率作为基准来分频,即时钟信号是多大的频率我们就进行多少分频,这样被测信号就是1s钟读出来的周期个数,也就是可以进行直接读数。数字频率计的关键组成部分包括分频器,计数器、锁存器、片选电路,译码驱动电路和显示电路.1.3 总体框图第2章 单元电路设计 2.1 分频模块设计 在分频模块中,我们选择的是10分频。分频器在总电路中有两个作用。由总图框图中不难看出分频器有两个输出,一个给计数器,一个给锁存器。时钟信号经过分频电路形成了10分频后的门信号。另一个给锁存器作锁存信号,当

3、信号为低电平时就锁存计数器中的数。模块图如下: 图2.1 分频模块2.2 片选信号模块 片选信号在整个模块中有两个作用,其中一个输出是给译码器用于选择四位数据哪个数据输出。另一个输出是给片选,用于选中哪个LED灯点亮。这里我们有8个LED灯,片选信号给出给出信号再经过片选选择哪个高电平,哪个灯就点亮,反之不亮。片选信号的模块图如下:图2.2 片选信号模块2.3 计数器模块计数器模块主要负责的是计数,当被测信号来一个上升沿,计数器就加一,当个位数满了就向十位进一,以此类推。计数器的输出送给锁存器锁存,当clr为低电平时计数器就清零。当door信号为高电平时才开始计数。计数器模块图如下:图2.3

4、计数模块2.4 锁存器模块 锁存器主要是将计数器送过来的数据锁存起来再送给显示器进行显示,锁存器的主要作用是防止送过来的信号直接送给显示器出现的闪烁现象,当来一个下降沿锁存器就将数据锁存。锁存模块图如下: 图2.4 锁存器模块2.5 译码信号模块 该模块主要的对锁存器送过来的数据进行选择分个输给译码器译码,再进行显示。这样再结合片选信号送过来的脉冲就可以实现共用8段显示管的LED灯显示不同的数字。译码信号的模块如下: 图2.5 译码信号模块2.6 片选模块 该模块主要的送过来的片选信号进行处理,处理后的输出就是选择哪个数码管点亮,由8位2进制数组成,哪位为1,哪个数码管就点亮,否则不点亮。片选

5、模块图如下: 图2.6 片选模块2.7 译码模块 译码模块主要是将送过来的译码信号进行译码,译码信号由4位二进制数组成,译码输出由7位二进制数组成(用来点亮LED灯的7段数码管分别显示0-9的数字)。译码模块图如下: 图2.7 译码模块第3章 设计仿真图 3.1 分频电路仿真打开quartus II后,建立工程文件,然后输入程序,保存后编译。编译无错误既可以生成电路图。其仿真图如下: 图3.1 分频仿真图3.2 片选信号仿真 设置End time为50ms时钟周期为15us,其仿真图如下:图3.2 片选信号仿真图 3.3 计数器模块的仿真 设置clr为1,door为1,end time为50m

6、s,sig周期为1us其仿真图如下: 图3.3 计数器仿真图 3.4 锁存器模块仿真设置输入,就可以输出,输出和输入一样,只是有点延时,其仿真图如下: 图3.4 锁存器仿真图3.5 译码信号模块仿真 其仿真电路图如下: 图3.5 译码信号仿真图3.6 片选模块仿真 设置输入从0-7,则输人为0时输出第一个为1,输入为1输出第二个为1,以此类推,其仿真图如下:图3.6 片选仿真图 3.7 译码器模块仿真其仿真图如下:图3.7 译码器仿真图 3.8 总电路图的仿真 总电路调用其他7个模块,设置clk周期为15us,被测信号sig周期为1us,其仿真图如下:图3.8 总电路图的仿真 图3.8为总的电

7、路图,图中alm为进位输出,clk为时钟信号,设为15us。Clr为清零信号,点电平清零,高电平计数。Q为显示输出端。Sel为片选,sig为被测信号,设为1us。图中显示结果为 0111111 1101101 0000110 为150.本电路为10分频。结果应为15*10=150,所以测量结果正确。3.9 软件调试与硬件调试 (1)软件调试 仿真时,打开软件Quartus II,建立工程文件,然后输入程序。保存后,编译,无误后及可以仿真了。进入仿真界面后,先点击edit菜单,设置 end time ,一般设为50ms,由于软件的缘故,end time不要设的太小,否则延时会很大出现错乱.时钟,

8、被测信号分别设置为15us和1us。对总电路图仿真的时候也出现了一个问题,一开始我们怎么也仿真不出来,后来上网一查才知道总图仿真的end time设小了,而且时钟周期和被测信号的周期也设小了。改正后,仿真顺利的出来了。(2) 硬件调试 硬件调试就是将软件编译好了没有错误之后,进行引脚锁定,再进行接线,其中我也出现了一个小的失误,怎么也不能将程序下载到芯片中,然后请教老师之后才知道是芯片选错了,更正后,点击pin planner锁定引脚,接好线之后就点击programmer下载程序到芯片。在点击start运行后就看到了实验的结果。与理论的稍微有一点点的偏差,考虑时延的影响,结果算是正确的。引脚锁

9、定图如下:图3.9 引脚锁定图第4章 编程下载4.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 isbegin process(clk) variable cnt:integer range 0 to 9; variable x:std_logic; begin if clkevent and clk=1 then if cnt9 then cnt:=cnt+1;

10、 else cnt:=0; x:=not x; end if; end if; q=x; end process;end fen_arc;4.2 片选信号模块的程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel is port(clk:in std_logic; q:out std_logic_vector(2 downto 0); end sel;architecture sel_arc of sel isbegin process(clk) variable cnt:st

11、d_logic_vector(2 downto 0); begin if clkevent and clk=1 then cnt:=cnt+1; end if; q=cnt; end process;end sel_arc;4.3 计数器模块的程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jishu isport(clr,sig,door:in std_logic; alm:out std_logic; q3,q2,q1,q0,dang:out std_logic_vector

12、(3 downto 0);end jishu;architecture jishu_arc of jishu isbeginprocess(door,sig)variable c3,c2,c1,c0:std_logic_vector(3 downto 0);variable x:std_logic;begin if sigevent and sig=1 then if clr=0 then alm=0; c3:=0000; c2:=0000; c1:=0000; c0:=0000; elsif door=0 then c3:=0000; c2:=0000; c1:=0000; c0:=0000

13、; elsif door=1 then if c01001 then c0:=c0+1; else c0:=0000; if c11001 then c1:=c1+1; else c1:=0000; if c21001 then c2:=c2+1; else c2:=0000; if c31001 then c3:=c3+1; else c3:=0000; alm=1; end if; end if; end if; end if; end if; if c3/=0000 then q3=c3; q2=c2; q1=c1; q0=c0; dang=0100; elsif c2/=0000 th

14、en q3=0000; q2=c2; q1=c1; q0=c0; dang=0011; elsif c1/=0000 then q3=0000; q2=0000; q1=c1; q0=c0; dang=0010; else q3=0000; q2=0000; q1=0000; q0=c0; dang=0001; end if; end if; end process; end jishu_arc;4.4 锁存器模块的程序library ieee;use ieee.std_logic_1164.all;entity lock is port(l:in std_logic; a4,a3,a2,a1

15、,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=0 then t4:=a4; t3:=a3; t2:=a2; t1:=a1; t0:=a0; end if; q4=t4; q3=t3; q2=t2; q1

16、=t1; q0qqqqqqqqqqqqqqqqqqqqqqqqqqclr,sig=sig,door=t11,alm=alm,q3=t1,q2=t2,q1=t3,q0=t4,dang=t5); u2: fen port map (clk=clk,q=t11); u3: lock port map (l=t11,a4=t1,a3=t2,a2=t3,a1=t4,a0=t5,q4=t6,q3=t7,q2=t8,q1=t9,q0=t10); u4: sel port map (clk=clk,q=t20); u5: ymsig port map (sel=t20,a3=t6,a2=t7,a1=t8,a0

17、=t9,dang=t10,q=t12); u6: ym port map (d=t12,q=q); u7: px port map (d=t20,q=se);end architecture art;第5章 总结与体会短短两周的课程设计结束了,回顾这两周我的努力,我觉得我还是收获蛮大的,通过这两周的课程设计,我对CPLD有了更深的认识,对VHDL有了更深入的了解,CPLD就是复杂的可编程逻辑器件,其实就是做硬件的。这次我接到的课题是做一个频率计,刚开始时觉得没什么难度,因为我们上EDA课的时候也做过类似的实验,那次我们做的是一个时钟,也是要做硬件,不过那次是老师给了我们程序,只需要自己编译,运

18、行,再锁定引脚做硬件就行了。所以做起来没什么太大的难度,其实那次也只是教会我们怎样使用Quartus这个软件。然而这次却不同,软件,仿真,硬件全部自己动手。一开始觉得毫无头绪,但经过网上资料的查找及其阅读EDA这本书,我开始有点头绪了,其实频率计也就是测1s内的周期个数,在实践的过程中我也遇到了各种问题,比如仿真出不来,end time设小了,时钟周期设小了,建立工程的时候芯片选错了,程序出问题等等,但是我通过上网提问,及询问老师这些问题也得到了顺利的解决。现在我对Quartus这个软件也是有了更深入的了解。对硬件也是有了一定的了解。对EDA中VHDL这门语言也是有了深刻的理解。现在要我编个不

19、是很大的程序我想我也是没什么问题了。 通过这两周的学习,我学到了很多,毕竟自己也做出了一点东西,蛮有成就感的,其实我也知道这只是冰山一角,要想真正的弄通EDA,今后的学习道路还很漫长,我想我也会深深的记住这次课设给我的经验与教训,在今后的学习中一定要多思考,多实践,那样我才会真正有所成就。最后衷心感谢陈老师在这两周对我的细心指导。附录顶层原理图:参考文献1. 康华光主编.电子技术基础(数字部分),高等教育出版社。2. 阎石主编. 电子技术基础(数字部分),清华大学出版社。3. 陈大钦主编,电子技术基础实验,高等教育出版社。4. 彭介华主编,电子技术课程设计指导,高等教育出版社。5. 张 原编著,可编程逻辑器件设计及应用,机械工业出版社。6. 荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。7. 刘洪喜,陆颖编著. VHDL电路设计实用教程 清华大学出版社

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

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