我的课程设计频率计论文_第1页
我的课程设计频率计论文_第2页
我的课程设计频率计论文_第3页
我的课程设计频率计论文_第4页
我的课程设计频率计论文_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、广州大学松田学院2009届本科生毕业设计目 录摘要关键词AbstractKeywords第1章 绪论11.1EDA技术的产生背景11.2采用EDA技术频率计的优势11.3频率计的设计要求21.4频率计的精度与误差要求2第2章 EDA技术设计环境32.1VHDL简介32.2CPLD设计流程32.3Quartus II介绍42.3.1Quartus II的功能52.3.2Quartus II的设计过程5第3章 频率计的设计方案53.1频率计的设计方法53.1.1信号说明53.1.2主要结构63.1.3频率计实现的功能63.1.4频率计量程63.2测频原理63.3动态扫描原理73.4设计功能模块7第

2、4章 频率计的软件设计与仿真分析84.1计数模块功能及程序84.2锁存模块功能及程序104.3显示模块功能及程序124.4分频模块功能及程序144.5控制模块功能及程序164.6各模块仿真波形图及仿真分析194.6.1计数器模块仿真194.6.2锁存模块仿真204.6.3显示模块仿真214.6.4分频模块仿真224.6.5控制模块仿真234.7系统原理图及仿真244.7.1频率计系统原理图244.7.2系统仿真25第5章 频率计硬件设计275.1EPM240开发板介绍275.1.1EPM240T100C5芯片介绍:275.1.2有源晶体简介285.1.3数码管简介285.1.4JTAG接口电路

3、295.1.5供电电路295.2系统硬件连接图305.3PCB的设计305.4下载调试31第6章 结束语34参考文献35致谢36 广州大学松田学院2009届本科生毕业设计摘 要基于EDA技术设计的频率计,依赖功能强大的计算机,通过软件编程,改变EDA芯片的硬件结构和工作方式以实现不同的硬件功能,打破了传统电子电路设计方法,它代替了原有的许许多多外围电路,使电子电路设计不单减少了开发成本和开发周期,而且更加灵活方便。本设计采用硬件描述语言VHDL对频率计系统进行设计,在EDA软件平台quartus II上编写程序并且通过编译仿真后,再将程序下载到CPLD芯片中实现。最后通过使用protel 99

4、se制作出硬件电路板效果图。从实验结果上看,采用EDA技术设计的电子电路,可以弥补传统硬件电子电路设计中的不足。使硬件设计像软件设计一样方便,还可以在硬件设计中通过软件平台实现仿真实验。在EDA软件平台quartusII上设计数字频率计,使编译仿真的仿真波形更加清晰,测试点读数精确,参数调节方便。因此软件仿真设计可以节省设计资源,减少设计步骤,缩短设计周期,体现出EDA技术的主要优势。关键词: EDA技术; 硬件描述语言VHDL; 频率计; quartusIIABSTRACT:Based on the frequency of EDA technology, the dependence on

5、 powerful computers, software programming, hardware chips EDA change the structure and working methods in order to achieve different hardware features, breaking the traditional methods of electronic circuit design, it replaced the original Xu many more than the external circuit, electronic circuit d

6、esign not only reduced development costs and development cycles, more flexible and convenient.The design uses a hardware description language VHDL on the frequency of system design, EDA software platform in the quartus II programming and emulation through the compiler, the program then downloaded to

7、 the CPLD chip to achieve. Protel 99se last through the use of circuit board hardware to produce the effect of Fig. The experimental results from the point of view, the use of EDA techniques of electronic circuit design, can make up for the traditional hardware design of electronic circuits deficien

8、cies. Hardware design as easy as the software design can also be adopted in the hardware design simulation software platform. QuartusII in EDA software platform to design digital frequency meter, so that the compiler of the simulation waveform simulation more clear, accurate readings of test points

9、and parameters to facilitate adjustment. Therefore the design of software simulation design can save resources and reduce design steps and shorten the design cycle, reflecting the main advantages of EDA technology.Keywords: EDA technology; hardware description language VHDL; frequency meter; quartus

10、II37广州大学松田学院2009届本科生毕业设计第1章 绪论1.1EDA技术的产生背景 上世纪末,在信息技术和电子技术的高速发展下,推动现代电子产品渗透社会各领域,并有力地推动了社会生产力的发展和社会信息化程度提高。 现代电子设计技术的核心是EDA(Electronic Design Automation电子设计自动化)技术。就是以计算机为辅助工具,使设计者只需要利用EDA软件平台和硬件描述语言就可以完成电子系统的设计,文本选用的开发工具为Altera公司的quartusII和VHDL语言。 在这样的背景下,传统的电子电路的设计方法发生了革命性的突破。在现代高新电子产品的设计和生产中,微电子技

11、术和现代电子设计技术相互促进、相互推动又相互制约。微电子技术代表了物理层硬件电路实现的发展,现代电子设计技术则反映了现代先进的电子理论、电子技术、仿真技术、设计工艺和设计技术与最新的计算机软件技术有机的融合和升华。EDA技术应用是这二者的结合,是这两个技术领域共同的结合体。1.2采用EDA技术频率计的优势 频率计是电子技术中常用到的一种电子测量仪器,传统所用的频率计大都是采用单元电路设计的,设计过程复杂且时间长,但这次我用EDA技术设计频率计,在设计意义上实现一些突破。 传统手工技术设计的频率计电路复杂、设计周期长、成本高。采用EDA技术就能够克服这一点,它可以把各种模块程序下载在EDA芯片上

12、,输入不同的程序就可以实现不同的功能,使修改设计如同修改软件一样方便,节省了大量的外围电路,并提高了设计效率。 所以我用EDA技术设计的频率计能够大大缩小体积,提高稳定性,减少成本。容易对其内部功能作进一步的修改、维护。1.3频率计的设计要求 设计一个数字频率计。要求让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后通过控制器再用显示译码器,把锁存的结果用LED数码显示管显示出来。该频率计共有五个单元模块即分频模块、控制模块、计数模块、锁存器模块和显示模块。该设计中主要针对于其中的计数模块、锁存器模块和显示模块三两个单元模块进

13、行设计,并且与另一个设计中的分频模块、控制模块综合起来构成一个完整的频率计。1、用VHDL(或者AHDL语言)对其进行编程,实现 闸门控制信号、计数电路、锁存电路、显示电路等。2、被测输入信号的频率范围自动切换量程,控制小数点显示位置,并以十进制形式显示。3、整个系统设计方案通过Quartus软件仿真,力争做到硬件调试和软硬件综合测试。1.4频率计的精度与误差要求直接测频法可以测出单位时间内脉冲的个数即频率,但是对于较低频率的信号其检测误差会大大增大,例如1.9Hz的信号,在通过1秒的闸门时间内其0.9会被淹没。尽管如此,当测量频率较高时,这类误差可以忽略。但为了设计简便,因此本设计选用了这个

14、容易实现的测频方法。第2章 EDA技术设计环境 EDA技术采用多种设计输入方式,内部有强大的库,在电子设计的各个阶段、各个层次都可以通过计算机模拟仿真验证。为设计人员提供了优越的设计环境。2.1VHDL简介VHDL是VHSIC Hardware Description Language的缩写,其中VHSIC是Very High Speed Integrated Circuit 的缩写。VHDL的中文全名是:超高速集成电路硬件描述语言。VHDL是美国国防部在70年代末和80年代初提出的VHSIC(Very High Speed Integrated Circuit)计划的产物。VHDL于1987

15、年由IEEE1076标准所确认,1993年IEEE1076升级为IEEE1164,1996年基于IEEE10761993的仿真和综合工具问世。1997年发布IEEE1076.1即同时能够描述数字和模拟电路的VHDL语言标准(VHDL-AMS,AMS - Analog and Mixed Signal )。VHDL既可以被计算机阅读,又可以被人阅读,它支持硬件的设计、验证、综合和测试,并且支持硬件设计数据的交换、维护、修改和硬件的实现。VHDL因其强大的语言结构,多层次的描述功能,良好的移植性以及快速的ASIC转换能力,获得了广泛的应用。VHDL在描述数字系统时,可以使用前后一致的语意和语法,跨

16、越多个描述层次和多个领域进行混合描述,VHDL已经成为不同计算机辅助设计工具的标准语言。2.2CPLD设计流程完整地了解利用EDA技术进行设计开发的流程有利于正确地选择和使用EDA软件,优化设计项目,提高设计效率。一个完整的、典型的EDA设计流程也是EDA工具软件本身的组成结构。其设计流程包括:1.设计输入 状态图输入方法就是根据电路的控制条件和不同的转换方式,用绘图的方法,在EDA工具的状态图编辑器上绘制出状态图,然后由EDA编译器和综合器将此状态变化流程图形编译综合成电路网表。 波形图输入方法则是将待设计的电路看成是一个黑盒子,只需告诉EDA工具该黑盒电子电路的输入和输出时序波形图,EDA

17、工具即能据此完成黑盒子电路的设计。 原理图输入方法即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图编辑绘制完成后,原理图编辑器将对输入的图形文件进行排错,之后再将其编译成适用于逻辑综合的网表文件。 HDL文本输入方法就是将使用了某种硬件描述语言(HDL)的电路设计文本,如VHDL或Verilog的源程序,进行编辑输入。2.综合 整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。3.适配适配器也称为结构综合器,它的功能是将由综合器产生的

18、网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式的文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于原综合器指定的目标器件系列。4.时序仿真与功能仿真仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计,排除错误。5.编程下载把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD进行下载,以便进行硬件调试和验证(Hardware Debugging)。6.硬件测试最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一的测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。2.3Quar

19、tusII介绍Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。2.3.1 Quartus II的功能1.支持的器件:支持 Altera 最新的器件系列以及大部分老器件系列。2.设计输入: QuartusII支持的设计输入方式主要有5种:图形输入、设计框图输入、AHDL、VHDL和Verilog HDL。3.设计编译: 逻辑综合及自动适配;错误自动定位。4

20、.设计校验: 时序分析;功能仿真;时序仿真;波形分析/模拟器;生成一些标准文件为其他EDA工具使用。5.器件编程(Programming)和配置(Cofiguration)。2.3.2 QuartusII的设计过程1.设计输入 用户使用QuartusII提供的图形编辑器和文本编辑器实现图形、HDL的输入,也可输入网表文件。2.项目编译完成对设计的处理。QuartusII提供了一个完全集成的编译器(Compiler)。它可直接完成从网表提取到最后编程文件的生成。在编译过程中生成的一系列标准文件可进行时序模拟,适配等。若在编译的某个环节出错,编译器会停止编译,并告诉错误的原因及位置。3.项目校验

21、完成对设计的功能时序仿真、时序分析,判断输入输出间的延迟。4.项目编程将你的设计下载/配置到你所选择的器件中去。第3章 频率计的设计方案3.1频率计的设计方法基于以上EDA技术的优点,我们用EDA的设计方法来设计频率计,其原理框图如下:图3-1频率计结构方框图3.1.1信号说明 fin:输入待测频率信号;最高可测频率为9999kHZ; (说明:计数器只能对方波信号进行计数。)clk0:输入时钟信号;clk1:经分频后的时钟信号; clk2:经分频后的扫描信号; clr:清零信号; en:计数使能信号; load:输出锁存信号;q6q0:计数输出信号;d6d0:锁存器输入信号;led:显示输出,

22、四个十进制数和小数点;3.1.2主要结构:它主要由5个模块组成,分别是: 分频模块、控制模块、显示模块、锁存模块、计数模块。3.1.3频率计实现的功能:1、 测频范围在0Hz10MHZ。2、小数点位置随量程变换自动移位。3、分频模块、控制模块、锁存模块、计数器模块、显示模块的功能。3.1.4频率计量程:序号 频率范围1 0.000KHZ9.999KHZ2 10.00KHZ99.99KHZ3 100.0KHZ999.9KHZ4 1000.KHZ9999.KHZ3.2测频原理 数字式频率计的基本原理:使用一个频率稳定度高的频率源作为基准时钟,来对比测量其他信号的频率。通常情况下计算单位时间内待测信

23、号的脉冲个数。单位时间可设置为大于或小于一秒。闸门时间越长,频率值越准确,但闸门时间越长,每次测量频率的间隔也就越长。闸门时间越短,测量的频率值刷新越快,但将影响到测量的频率精度。这里所用的测量方法叫直接测频法,它的的测量原理是:由于频率是单位时间内信号发生周期变化的次数,使得我们可以在给定的单位时间1S内(称为闸门)对被测信号的脉冲数计数,得到的脉冲个数就是被测信号的频率,如图3-2所示。1S基准闸门信号被测信号实际检出信号1S图3-2直接测频法3.3动态扫描原理当采用直接驱动方式时,驱动一个数码管需要八个电平信号,如果系统用来显示结果的数码管较多,应考虑数字系统输出信号占用EPM240芯片

24、管脚的问题,因为CPLD芯片的管脚总数是有限的,所以必须设法减少占用EPM240芯片的管脚的数量。解决的方法是采用动态扫描显示,如图3-3所示,将所有数码管(4个)的相应字段并联在一起,由EPM240的输出信号a、b、c、d、e、f、g、dian直接驱动相应字段,由片选信号决定选中的是哪个数码管。图3-3 动态扫描原理3.4设计功能模块根据题意,本设计可以大概划分出系统需要的几个功能模块。1计数器:测频原理的介绍中可以看出,测频的本质就是计数,所以计数器也是系统中不可缺少的模块。2锁存器:由于计数器输出的计数值会不断变化,使最终输出到数码管显示的数值也不停的变化,解决方法是:用锁存器电路在闸门

25、时间内的计数过程中其8-4-2-1码不传送给译码器译码显示,而在闸门时间到达后将结果再传送给译码器译码显示。3显示模块:为了节省硬件开支,用动态显示方法,即对各数码管进行循环扫描。4分频模块:在系统中输入的固定频率往往超出自己需要的范围,这里需要做一个分频器来分频出各种自己需要的频率。分频器把固定频率50mhz分出两个扫描频率就是利用计数功能把频率计算到一定数值就输出一次翻转信号。5控制模块:控制模块把输入的基准模块作为标准,产生出控制锁存和计数器的信号。并且输出通过其内部的数值到显示模块。第4章 频率计的软件设计与仿真分析利用QuartusII的编程环境,编写计数模块、锁存模块、显示模块三部

26、分程序。另外还有其它两个模块,分频模块、控制模块。4.1计数模块功能及程序计数器为模9999999七位十进制加法计数器,当clr为高电平时,计数器清零;当clr为低电平,并且en为高电平时,允许计数,输出四位二进制值q6q0。程序所生成的计数模块框图如图4-1所示:图4-1 计数器模块框图计数器模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count7 is port(clr,fsin,en:in std_logic; -清零,被测信号,使能信号输入 q6,q5,q4,q

27、3,q2,q1,q0:out std_logic_vector(3 downto 0); -七位输出end count7;architecture a of count7 isbegin process(en,fsin,clr) -七位十进制计数 variable c0,c1,c2,c3,c4,c5,c6:std_logic_vector(3 downto 0); begin if fsin'event and fsin='1'then if en='1'then if c0<"1001"then c0:=c0+1; else

28、c0:="0000" if c1<"1001"then c1:=c1+1; else c1:="0000" if c2<"1001"then c2:=c2+1; else c2:="0000" if c3<"1001"then c3:=c3+1; else c3:="0000" if c4<"1001"then c4:=c4+1; else c4:="0000" if c5<"

29、1001"then c5:=c5+1; else c5:="0000" if c6<"1001"then c6:=c6+1; else c6:="0000" end if; end if; end if; end if; end if; end if; end if; end if; end if;if clr='1'then -当clr为1时,清零 c6:="0000" c5:="0000" c4:="0000" c3:="0000

30、" c2:="0000" c1:="0000" c0:="0000" end if;q6<=c6;q5<=c5;q4<=c4;q3<=c3;q2<=c2;q1<=c1;q0<=c0;end process;end a;4.2锁存模块功能及程序在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。锁存器是在计数结束后,利用触发器的上升沿把最新的频率测量值保存起来,然后数码管将最终的频率读数在七段显示译码上显示输出。程序所生成的锁存模块框图如图4-2所示:图4-

31、2 锁存模块框图如图4-2所示,d6-d0是频率输入端口,连接的是计数模块的q6-q0,lock是锁存输入信号在锁存时钟信号上升沿时进行锁存。锁存模块程序:library ieee;use ieee.std_logic_1164.all;entity lock5 is -锁存模块 port(lock:in std_logic; d6,d5,d4,d3,d2,d1,d0:in std_logic_vector(3 downto 0); -锁存输入信号 q6,q5,q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0); -锁存输出信号end lock5;a

32、rchitecture a of lock5 isbegin process(lock) variable t6,t5,t4,t3,t2,t1,t0:std_logic_vector(3 downto 0); -锁存信号内部变量begin if lock'event and lock='1' then -在基准时钟上升沿进行锁存 t6:=d6; t5:=d5; t4:=d4; t3:=d3; t2:=d2; t1:=d1; t0:=d0;end if; -否则,当锁存信号lock为0时,锁存输出信号 q6<=t6; q5<=t5; q4<=t4; q3

33、<=t3; q2<=t2; q1<=t1; q0<=t0; end process;end a;4.3显示模块功能及程序CPLD的引脚资源总是有限的。因此对于多个数码管显示,可以采用扫描方式来实现动态显示。实现方法是将频率计的4个数码管并联起来,用片选信号依次点亮,进行循环显示,即一个数码管显示之后另一个数码管马上显示,利用人眼的暂留特性,可以看到多个数码管同时显示的效果。程序所生成的显示模块框图如图4-3所示:图4-3 显示模块框图由图4-3可以看出,xuan3.0是动态扫描模块的位选端,dout6.0,dot是输出端。此处只用到四个数码管进行动态扫描。显示模块程序:

34、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity saomiao isport(clk2:in std_logic; q4,q3,q2,q1,dian:in std_logic_vector(3 downto 0);-高四位和小数点输入 xuan:out std_logic_vector(3 downto 0); -模四计数器 Dout:out std_logic_vector(6 downto 0); -7段译码输出 dot:out std_logic); -小数点输出 end sa

35、omiao;architecture behav of saomiao is Signal xuan2:std_logic_vector(2 downto 0); Signal Dout0:std_logic_vector(3 downto 0);beginp1:process(clk2,xuan2) -模四计数器,数码管选位信号 begin if clk2'event and clk2='1' then If xuan2>="100" then xuan2<="001" else xuan2<=xuan2+1;

36、 end if; end if;End process p1;p2:process(xuan2,q4,q3,q2,q1,dian,clk2) beginIf clk2'event and clk2='1' then Case xuan2 is when "001"=>dout0<=q1;dot<=dian(0);xuan<="1110" -选择数码管1时,放q1和小数点进去 when "010"=>dout0<=q2;dot<=dian(1);xuan<=&quo

37、t;1101"-选择数码管2时,放q2和小数点进去 when "011"=>dout0<=q3;dot<=dian(2);xuan<="1011"-选择数码管3时,放q3和小数点进去 when "100"=>dout0<=q4;dot<=dian(3);xuan<="0111"-选择数码管4时,放q4和小数点进去 when others =>dout0<="1111"dot<='0' -当其他情况时,放1

38、111和小数点0进去 End case;End if;End process p2;P3:process (dout0)begin case dout0 iswhen"0000"=>dout<="1000000"-当信号dout0为0000时译码输出1000000到doutwhen"0001"=>dout<="1111001"-当信号dout0为0001时译码输出1111001到doutwhen"0010"=>dout<="0100100"

39、-当信号dout0为0010时译码输出0100100到doutwhen"0011"=>dout<="0110000"-当信号dout0为0011时译码输出0110000到doutwhen"0100"=>dout<="0011001"-当信号dout0为0100时译码输出0011001到doutwhen"0101"=>dout<="0010010"-当信号dout0为0101时译码输出0010010到doutwhen"0110&qu

40、ot;=>dout<="0000010"-当信号dout0为0110时译码输出0000010到doutwhen"0111"=>dout<="1111000"-当信号dout0为0111时译码输出1111000到doutwhen"1000"=>dout<="0000000"-当信号dout0为1000时译码输出0000000到doutwhen"1001"=>dout<="0010000"-当信号dout0为10

41、01时译码输出0010000到doutwhen others =>dout<="1111111"-当信号dout0为其他情况时译码输出1111111到doutend case;end process p3;End architecture behav ;4.4分频模块功能及程序从晶振时钟50MHz分出系统所需的几个时基信号。以下clk1是对输入时钟信号进行2分频,即每计到24999999个上升沿,输出信号翻转一次。clk2是对输入时钟信号进行10000分频,即每计到499个上升沿,输出信号翻转一次。根据系统需要,可以修改分频系数得到所需频率。clk1是作为系统基

42、准时钟,clk2是作为显示扫描信号。程序所生成的分频模块框图如图4-4所示。图4-4 分频模块框图分频模块程序:library ieee;use ieee.std_logic_1164.all;entity fdiv isport(clk0:in std_logic; -输入系统时钟 clk1:out std_logic; -输出1hz时钟信号 clk2:out std_logic); -输出显示扫描时钟信号 end fdiv;architecture a of fdiv isbegin p1:process(clk0)variable cnt:integer range 0 to 24999

43、999; -分频系数为24999999variable ff:std_logic;beginif clk0'event and clk0='1' thenif cnt<24999999 thencnt:=cnt+1;elsecnt:=0;ff:=not ff; -反向end if;end if;clk1<=ff;end process p1;p2:process(clk0) variable cnn:integer range 0 to 499; -分频系数为499variable dd:std_logic;beginif clk0'event an

44、d clk0='1' thenif cnn<499 thencnn:=cnn+1;elsecnn:=0;dd:=not dd; -反向end if;end if;clk2<=dd;end process p2;end a;4.5控制模块功能及程序每次测量时,用由基准信号clk1产生的闸门信号en启动计数器,对输入脉冲信号计数,闸门信号结束即将计数结果送入锁存器,然后计数器清零,准备下一次计数。它控制着清零信号、计数使能信号以及锁存信号。当en高电平时,允许计数;当en低电平时,停止计数。当clk1低电平且lock为高电平时清零。程序所生成的控制模块框图如图4-5所示

45、。图4-5 控制模块框图控制模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control is port(clk1:in std_logic; -输入1hz时钟信号 q6,q5,q4,q3,q2,q1,q0:in std_logic_vector(3 downto 0); -输入七位十进制计数结果 clr,en,lock:out std_logic; -清零信号,使能信号,锁存信号输出 d3,d2,d1,d0,dian:out std_logic_vector(3 dow

46、nto 0); -高位输出,小数点输出end control;architecture a of control isSignal testen:std_logic;Signal clear:std_logic;Signal bcd3,bcd2,bcd1,bcd0,dian0:std_logic_vector(3 downto 0);signal lock0:std_logic;beginP1: process(clk1,testen)BeginIf clk1'event and clk1='1' then testen<=not testen; -对值为1hz的

47、clk1时钟2分频End if;en<=testen;End process p1;P2:process(clk1,testen,clear) BeginIf clk1='0' and testen='0' then clear<='1' -当clk1和testen都为0时clear为1Else clear<='0'End if;clr<=clear;End process p2;P3:process(testen,lock0) -当testen为1时,锁存信号为0BeginIf testen='1

48、' then lock0<='0'else lock0<='1' -当testen为0时,锁存信号为1End if;lock<=lock0;End process p3;P4:process(clk1,bcd3,bcd2,bcd1,bcd0,dian0) begin if rising_edge(clk1) then if testen='0' then if q6>"0000" then bcd3<=q6; bcd2<=q5; bcd1<=q4; bcd0<=q3; d

49、ian0<="1110" elsif q5>"0000" then bcd3<=q5; bcd2<=q4; bcd1<=q3; bcd0<=q2; dian0<="1101" elsif q4>"0000" then bcd3<=q4; bcd2<=q3; bcd1<=q2; bcd0<=q1; dian0<="1011" else bcd3<=q3; bcd2<=q2; bcd1<=q1; bcd0

50、<=q0; dian0<="0111" end if; end if;end if;d3<=bcd3;d2<=bcd2;d1<=bcd1;d0<=bcd0;dian<=dian0;end process p4;End a; 4.6各模块仿真波形图及仿真分析4.6.1计数器模块仿真运用quartus2软件对计数模块编译仿真,仿真波形如图4-6所示。图4-6 计数器模块仿真波形功能说明:当clr=0 en=1时,输入一个频率信号到fsin后。q0,q1,q2,q3,q4,q5,q6是输出的计数值。当clr=1时计数器清零。仿真分析:从图

51、4-6的仿真波形可以看出,有计数使能信号1并且清零信号为0之后计数器在计数,并且产生进位。由于q0和q1计数时间短。要把时间轴放大才能够看到其变化的数值。最后的q5和q6由于我设置的时间范围比较小,所以没有计数值显示出来。另外当clr清零信号为1的时候不管使能信号en为什么值,就会出现计数器清零,像中间那个部分所示。从这个图显示的结果可以看出仿真结果正确。4.6.2锁存模块仿真运用quartus2软件对锁存模块编译仿真,仿真波形如图4-7所示。图4-7 锁存模块仿真波形功能说明:当lock=0时,不触发动作。当lock=1时锁存信号并且输出。仿真分析:我在图4-7的仿真中把输入值设置为d0=5

52、,d1=6,d2=1,d3=0,d4=5,d5=8,d6=4。当lock为0的时候没有锁存,直到lock从0跳到1的上升沿期间把输入锁存,并且输出。结果为q0=5,q1=6,q2=1,q3=0,q4=5,q5=8,q6=4。从图上看出仿真结果与设计要求符合,仿真正确。4.6.3显示模块仿真运用quartus2软件对显示模块编译仿真,仿真波形如图4-8所示。图4-8 显示模块仿真波形功能说明:当clk有时钟信号时,选位计数器开始工作。当每选中一位数码管时,把对应的位数值输出,同时输出对应位数上的小数点信号和选位信号。仿真分析:当clk有输入扫描时钟信号时,为工作状态。此时输入由控制器提供的四位10进制值q1q4,q1=4,q2=8,q3=2,q4=1,则输出译码后的七段码。电路中的数码管和三极管组成共阳极显示电路,所以选位信号和驱动数码管信号也要为低电平。控制器输入四位数值4、8、2、1后经过译码为0011001、0000000、0100100、1111001。在这里会暂时显示成25、0、36、121。但是如果在数码管上就会出现4、8、2、1。另外这里输入的小数点信号为1011,表示选中的是第三位数码管,所以dot输出在36上,即将显示的8上。xuan代表的是选为信号,它会按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论