版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 摘 要 100Hz频率计数器主要功能是在一定时间内对频率的计算,本篇论文主要介绍了频率计数器的实现:系统以MAX+PULSLL II为开发环境,通过VHDL语言作为硬件描述语言实现对电路结构的描述。在VHDL语言中采用了一系列的语句,例如:元件例化,if 语句 case when语句等。并对程序中的输入输出端口进行了解释,给出实现代码和仿真波形。 关键词: 100Hz; 频率计;MAX+PULSLL II; VHDL; 元件例化; 仿真 前 言 VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集
2、成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成
3、具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。 数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。 本文用VHDL在CPLD器件上实现一种2b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。 目 录摘要
4、1 前言 2目录 3第一章 设计目的 5 5 5第二章 设计方案 6第三章 产生子模块 7 7 7 3.3 仿真及波形图 8第四章 计数模块 9 4.1计数模块分析 9 4.2计数模块源代码 9 11第五章 显示模块 11 5.1 七段数码管的描述 12 5.2 八进制计数器count8的描述 12 5.3 七段显示译码电路的描述 13 15 16 17第六章 顶层文件 17 6.1 顶层文件设计源程序 17 18 结语 19 参考文献 20致谢 21 附件 22 第一章 设计目的1.1 设计要求1.2 设计意义 a.进一步学习VHDL硬件描述语言的编程方法和步骤。 c.熟悉并掌握元件例化语句
5、的使用方法 d.熟悉数字式频率的基本工作原理。 f.熟悉掌握MAX+PLUS软件的基本使用方法。第二章 设计方案 在这个100赫兹频率计的设计中一共分为3大模块:产生子模块、计数模块、显示模块。当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果 产生子模块是为此100赫兹频率计提供1Hz的时钟脉冲信号
6、,为了实现严格的同步,在这个模块中采用了同步计数电路。计数模块是实现从0到99的计数。显示模块是将计数模块程序中产生的数值通过2个七段数码管表达出来,使大家对此频率计有一个更直观的认识。此100赫兹频率计的设计中,这3个大的模块是核心部分,这个3个大的模块会在后面的分析设计中给出详细的介绍。 频率计的工作原理是通过在一定时间内对外部信号进行计数,计算计数值对时间的比值,从而得到输入信号的频率,通过二个数码管作为频率值的输出。对系统进行分析后,确定采用模块设计,基本框架图如CLK 计数系统显示系统图1 第三章 产生子模块3.1 分频模块 分频模块的功能是将输入的外部信号clk进行分频,分频成计数
7、器所需要的计数信号, 使计数器在计数信号有效的时间对外部信号进行计数。根据频率计测量的范围,确定了分频至1Hz,从而得到频率值. 图2555定时器(如图2)是一种模拟电路与数字电路相结合的中规模集成电路,它在信号产生、整形、延时(定时)、控制等方面获得了广泛的应用。虽说555定时器应用领域十分广泛,但其电路结构归纳起来有三种基本形式,即多谐振荡器、单稳态触发器、施密特触发器由于双极型555和CMOS型555的制作工艺和流程不同,生产出的555集成电路的性能指标是有差异的。 CMOS型555的功耗仅为双极型的几十分之一,静态电流仅为300uA左右,为微功耗电路。CMOS型555的输出脉冲的上升沿
8、和下降沿比双极型的要陡,转换时间短。CMOS型555的在传输过度时间里产生的尖峰电流小,仅为23mA,而双极型555的尖峰电流高达300400mA。3.2分频程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div1000 ISPORT(clk:IN STD_LOGIC; clk_div:out STD_LOGIC);END clk_div1000;ARCHITECTURE rt1 OF clk_div1000 ISSIGNAL q_tmp:integer range
9、 0 to 999;BEGINprocess(clk)beginIF(clkevent and clk=1)then if(q_tmp=999)then q_tmp=0; else q_tmp=q_tmp+1; end if;end if;end process;process(clk)beginIF(clkevent and clk=1)then if(q_tmp=999)then clk_div=1; else clk_div=0; end if;end if;end process;end rt1;在程序3.2中我们将外部信号clk进行10次分频输入信号为clk,输出信号为clk_div
10、. 3.3 仿真及波形图图3图4图4 第四章 计数模块4.1计数模块分析经分析可知,此频率计计数模块分为2个子模块,即个位显示模块、十位显示模块。详细分析如下:计数模块的个位可以用1个十进制计数器表示。计数模块的十位可以用1个十进制计数器表示。频率计的计数模块主要来实现频率计数器内部的计数功能,计数器的内部计数信号clk和频率计数器的使能信号enable. 频率计数器的计数模块的输出信号就是个位sec,十位sec10电路图如下: 图5十进制计数器,它的输入端口主要包括使能端口enable计数输入端口clk, 输出端口主要包括计数输出端口q和进位输出端口cout.4.2计数模块的程序如下:LIB
11、RARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count10 ISPORT( enable:IN STD_LOGIC; clk:IN STD_LOGIC; cout:out STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count10;ARCHITECTURE rt1 OF count10 ISSIGNAL q_tmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINprocess(clk)beginIF(clke
12、vent and clk=1)then if(enable=1)then if(q_tmp=1001)then q_tmp=0000; else q_tmp=q_tmp+1; end if; end if;end if;q=q_tmp;end process;cout=1when q_tmp=1001and enable=1 else0;-cout=1when q_tmp=1001 else0;end rt1;,程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY time_counter ISPORT( enable:IN STD_LOGI
13、C; clk0:IN STD_LOGIC; sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END time_counter;ARCHITECTURE rt1 OF time_counter ISCOMPONENT count10PORT( enable:IN STD_LOGIC; clk:IN STD_LOGIC; cout:out STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end COMPONENT;SIGNAL co1,co2:STD
14、_LOGIC;BEGINU1:count10 PORT MAP(enable,clk0,co1,sec);U2:count10 PORT MAP(co1,clk0,co2,sec10);end rt1;图6图7第五章 显示模块有了计数模块还不能满足设计的要求,任何一个设计都是需要一定的硬件设备来表达。否则,只有一个理论的程序是不足以来证明一个设计的完整性。在参考一些资料和根据实验提供的条件,我在这个设计中采用2个七段数码管来对这个频率计进行实际的表达。频率计数器要将计数的结果显示出来,就必需设计一个计数显示模块来完成该显示功能.频频计数器的显示模块的输入信号主要来自于频频计数器计数模块的计数信
15、息,它的输出信号是choose和segment,以用来驱动计数显示的8个LED七段显示数码管,在输出信号中,为了节省资源,我们采用循环点亮LED七段显示数码管的方法来显示频率计数器的计数输出.我们通过信号choose(7downto0)来进行8个LED七段显示数码管的选择,从而将输出信号segment(6downto0)送到相应的LED七段显示数码管上以完成频率计数的显示.计数显示模块的结构框图如图8所示: 图8从图4以看出,计数显示模块可由三个部分组成:八进制计数器,计数位选择电路,七段显示译码电路.下面描述一下计数显示模块的工作过程:在外部计数信号clk的作用下,八进制计数器的输出从000
16、到111按顺序循环变化,输出信号为sel.信号sel 作为计数位选择电路的选择信号,用来选择对应位的数据并将其转换为四位位矢量.最后将计数位选择电路的输出信号q送到七段显示译码电路的输入端口,将其转化成用来点燃LED七段显示数码管的segment信号.5.1 七段数码管的描述我们所使用实验箱中的8个七段数码管有这样一个特点,8个数码管中每一个数码管中相同的段都是连在一根线上的。如图所示: 图9故只要有一个数码管的一段亮,则8个数码管中相同的段都会亮。则,在选用了数码管后就我们需要考虑一个问题了,就是如何在每个数码管上正确的显示程序中每一位要显示的数据呢?也就是如何将前面的计数模块中要显示的数字
17、准确的表达在数码管上。在这里就运用了人体生理学的一个结论,人的眼睛能分辨的时间是1/16秒,即频率为25Hz左右。有了这个结论后,我们就可以解决正确显示的问题了,应用动态扫描的方法,只要我们在显示模块中所使用的频率大于25Hz就可以让每个数码管正确的显示程序中所要求的数字了。因此,在显示模块中首先要设计一个分频器,实验提供的脉冲是1KHz,我们只要设计的分频器所分出来的频率大于25Hz即可,在此我选择一个8分频器。8分频器的输入信号为clk,输出信号为sel(2 DOWNTO 0).5.2 八进制计数器count8的描述我们来描述下三个子电路,然后再描述显示模块的总体功能.先来讨论下八进制计数
18、器count8,这个八进制计数器除了没有使能端enable和进位输出端口cout之外,它的描述结构与前面描述的计数器的结构完全相同,用VHDL描述如下: 8分频器模块设计程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count8 ISPORT( clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END count8;ARCHITECTURE rt1 OF count8 ISSIGNAL sel_tmp:STD_
19、LOGIC_VECTOR(2 DOWNTO 0);BEGINprocess(clk)beginIF(clkevent and clk=1)then if(sel_tmp=111)then sel_tmp0); else sel_tmp=sel_tmp+1; end if;end if;selsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentqqqchoosechoosechoosechoosechoosechoosechoosechoosechoose=XXXXXXXX;-END CASE;
20、-END PROCESS;-END rt1; 对计数器的显示模块的四个子电路描述以后,我们就可以进行计数器的总体功能描述了.在计数器显示模块的VHDL描述中,我们引用元件的形式来调用上面描述过的四个子电路,秒表显示模块的VHDL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY display ISPORT( clk:IN STD_LOGIC; sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:OUT STD_LOGIC_VECTO
21、R(2 DOWNTO 0); -choose:out STD_LOGIC_VECTOR(7 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END display;ARCHITECTURE rt1 OF display ISCOMPONENT count8PORT(clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END COMPONENT;-COMPONENT choose_decoder-PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);- c
22、hoose:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-END COMPONENT;COMPONENT time_choosePORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0); sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT seg7PORT(q:IN STD_LOGIC_VECTOR(3 DOWNTO 0); segm
23、ent:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;SIGNAL sel_tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL segment_tmp:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU0:count8 PORT MAP(clk,sel_tmp);sel=sel_tmp;U2:time_choose PORT MAP(sel_tmp,sec10,sec,q);U3:seg7 PORT MAP(q,segmen
24、t_tmp);segment=segment_tmp;END rt1;图11图12第六章 顶层文件前三节就是整个设计的3个核心模块,当这3个模块设计完成后,100赫兹的频率计的设计就接近尾声了。剩下的工作也就好做了,我们就想连模拟电路中元件一样,将这3个模块对应的端口连接起来进行调试即可。整个设计我们都是用的VHDL硬件描述语言来完成的,所以到了最后也不例外,对于最后的级连同运用元件例化的格式来“组装”整个设计。6.1 顶层文件设计程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTI
25、TY clock ISPORT( clk:IN STD_LOGIC; enable:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END clock;ARCHITECTURE rt1 OF clock ISCOMPONENT clk_div1000PORT(clk:IN STD_LOGIC; clk_div:out STD_LOGIC);end component;component time_counterPORT( enable:IN STD_LOGI
26、C; clk0:IN STD_LOGIC; sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component; component displayPORT( clk:IN STD_LOGIC; sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:out STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6
27、DOWNTO 0);end component; signal sec10: STD_LOGIC_VECTOR(3 DOWNTO 0); signal sec: STD_LOGIC_VECTOR(3 DOWNTO 0); signal clk0:STD_LOGIC;beginu0:clk_div1000 PORT MAP(clk,clk0);u1:time_counter PORT MAP(enable,clk0,sec10,sec);u2:display PORT MAP(clk,sec10,sec,sel,segment);end rt1; 图13图14结束语这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后学习中激励我继续进步。在设计中,使我看到了什么能,也看到了自己什么不能。虽然能够清晰的把整个电路原理看懂,但是在某些细节方面还不是很明白。这就说明了,对于整体方案我能够做出正确的判断,但是遇到细节就轻视了,所以最后在实验箱上看现象的时候出现显示乱码的问题。再就是,基本功还不是很扎实,表面上看似什么都懂,但是碰到了实质性的问题就出毛病,会卡住,做不出来。这很严重的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度林业科研树木种植与成果转化合同2篇
- 二零二四年泰州房地产项目融资租赁合同3篇
- 二零二四年度销售团队销售策略研讨会议合同3篇
- 二零二四隐名股东股权投资收益保障与服务合同3篇
- 二零二五年度临床试验合同中的临床试验患者隐私保护措施2篇
- 2025年度智能物流服务购销合同demo1
- 二零二五版试用期劳动合同中员工创新激励与保护3篇
- 2025年度户外高炮广告安装与户外广告法规遵守合同
- 2025服装购销合同的范本
- 2025年上海市优惠价房买卖合同参考样本(2篇)
- 高速公路巡逻车司机劳动合同
- 2025中国大唐集团内蒙古分公司招聘高频重点提升(共500题)附带答案详解
- 充血性心力衰竭课件
- GB 4793-2024测量、控制和实验室用电气设备安全技术规范
- 挖掘机售后保养及维修服务协议(2024版)
- 2023-2024年度数字经济与驱动发展公需科目答案(第5套)
- 职业分类表格
- 广东省深圳高级中学2023-2024学年八年级下学期期中考试物理试卷
- 电网建设项目施工项目部环境保护和水土保持标准化管理手册(变电工程分册)
- 口腔门诊部设置可行性研究报告
- 体检科运营可行性报告
评论
0/150
提交评论