




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘 要(1)Abstract(2)绪论(3)第1章 基本概念简介(4)1.1 EDA技术和FPGA/CPLD简介(4)1.2 VHDL的简介(4)1.3 Quartus II的简介(5)第2章 系统设计(6)2.1 设计思想(6)2.2 设计原理图(7)2.3 设计流程图(8)第3章 模块分析(9)3.1 计数器模块分析(9)3.1.1 秒和分计数器模块(9)3.1.2 时计数器模块(10)3.1.3 日计数器模块(12)3.1.4 月计数器模块(16)3.1.5 年计数器模块(19)3.2 校时模块(22)3.3 显示及显示方式切换模块(24)3.4 顶层原理图(26)第4章 引脚设定与验证(29)4.1 引脚设定(29)4.2 下载验证(31)总结(33)参考文献(34)致谢(35)摘 要 随着EDA(电子设计自动化)技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动化控制及计算机应用领域的重要性日益突出。EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合(布局布线)、逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路、即用所谓的硬件描述语言来描述硬件电路。 本设计是基于VHDL语言的万年历。在设计中,首先介绍了万年历的设计思路,且在Quartus II开发环境中编译和仿真所设计各个模块的程序,并逐一调试程序使各模块达到设计目的。其次,利用各元器件生成顶层文件,进行系统仿真。最后,对顶层原理图进行引脚设定,并下载到试验箱验证,证明系统的可行性。关键字:VHDL 万年历 Quartus II Abstract With the development of EDA (electronic design automation) technology and expansion of application fields ,the importance of EDA technology in electronic information, communication, auto control, and computer applications is becoming increasingly prominent. EDA technology is the core of the modern electronic design techniques, which rely on powerful computers . In EDA tools software platform, computer automatically completes logic simplification,logical partitions, logic synthesis , logic optimization ,logical simulation and other functions until the electronic circuit system achieves the stated performance. However, the realization of these function bases on the description of the system using the hardware description language HDL (Hardware Description language) . One of the key technologies of the EDA is to use formal methods to describe digital systems hardware circuit, which uses the so-called hardware description language to describe the hardware circuit.The design is the calendar based on VHDL language. Firstly, in which ,I introduce ideas about designing the calendar. In addition, I compile and simulate the program of different modules in the Quartus II development environment and debug one by one to make different modules meet objectives of the design. Secondly, I take advantage of all components,which is created according to program to generate top-level file . Finally, I make pin settings and download to the test chamber to prove the feasibility of the system. Key words: VHDL calendar Quartus II绪论 EDA技术以计算机为工具,而设计者只需在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动完成逻辑编译、化简、分割、综合、布局、布线和仿真,直至对于特定目标芯片的适配编译,逻辑映射和编程下载等工作。其中,EDA的关键技术之一是用形式化方法来描述数字系统的硬件电路,即用硬件描述语言来描述硬件电路。 本设计是基于VHDL语言的万年历,故名思议,需要用VHDL语言描述万年历的硬件电路。就万年历的功能而言,首先,其不仅要计算时间,且需要计算日期,尤其需要正确的判断每月的天数。在其中,比较困难的是如何正确的计算2月份的天数,因为闰年的2月份有29天,但平年的2月份只有28天。由此,引出一个新的问题:在系统中除计算年份外,还需判断其是否为闰年。其次,系统还要将时间显示,显示方式分为时分秒、年月日这两种显示方式。最后,为增加系统的实用性,本设计还增加校时功能,主要实现当计时出现误差时进行校正的功能。在本设计中,通过程序使系统有7种不同的工作状态,分别为正常计时、校分、校时、校日、校月、校年低位、校年高位。除此,为了显示目前所处的工作状态,用6个指示灯的亮灭来表示,6个灯都不亮时表示正常计时,其余每个灯的亮灭依次表示6种不同的工作状态。在系统设计中,先用VHDL语言实现各个模块的功能,然后用原理图方式生成顶层文件,使设计思路清晰。最后,对顶层原理图进行引脚设定,并进行下载验证,证明系统的可行性。第1章 基本概念简介1.1 EDA技术和FPGA/CPLD简介 EDA技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description language)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割,逻辑综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。EDA技术使得设计者的工作几乎仅限于利用软件的方式,即利用硬件描述语言HDL和EDA软件来完成对系统硬件功能的实现。 CPLD(Complex Programmable Logic Device),即复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路。它是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现数字系统的设计。 FPGA(FieldProgramable Gate Array) ,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 它们的特点是直接面向用户,具有极强的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,成本低,上市时间短,工作可靠性好等。FPGA和CPLD的应用是EDA技术有机融合硬件电子设计技术、SOC和ASIC设计,以及对自动设计与自动实现最典型的诠释。1.2 VHDL的简介 硬件描述语言发展至今已有几十年的历史,并已成功地应用到系统的仿真,验证和设计综合等方面。到20世纪80年代后期,已出现上百种硬件描述语言,它们对设计自动化起了促进和推动作用。但是,它们大多针对特定设计领域,没有统一的标准,从而使一般用户难以使用。广大用户期盼一种面向设计的多层次,宽领域且得到一致认同的标准硬件语言。80年代后期有美国国防部开发的VHDL语言(VHSIC Hardware Description Language)恰好满足上述要求,并在1987年12月由IEEE标准化VHDL(定为IEEE std 1076-1987标准,1993年进一步修订,被定为ANSI/IEEE std 1076-1993标准)。VHDL语言的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。据1991年有关统计资料表明,VHDL语言已被广大设计爱好者所接受,据称已有90%的设计者使用或即将使用VHDL语言设计数字系统。另外,众多CAD厂商也纷纷使自己新开发的电子设计软件与VHDL语言兼容。由此可见,使用VHDL语言来设计数字系统是电子设计技术的大势所趋。 VHDL的一个突出优点是移植性强。因为它是一种标准语言,故它的设计描述可以被不同的工具所支持。它可以从一个模拟工具移植到另一个模拟工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台去执行。同时,这意味着许多设计不必个个都从头再来,只要在更高层次上把已有的模块利用起来,就可以达到事半功倍的效果。此外,VHDL本身的生命期长。因为VHDL的硬件描述与工艺技术无关,不会因为工艺变化而使描述过时。而与工艺技术有关的参数可通过VHDL提供的属性加以描述,当生产工艺改变时,只需修改相应程序中的属性参数即可。 1.3 Quartus II的简介Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux和Unix上使用,除了可以使用Tcl脚本完成设计流程外,还提供了完善的用户图形界面设计方式。它具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。除此,对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统和支持Altera的片上可编程系统(SOPC)开发。总之,Quartus II集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。第2章 系统设计2.1 设计思想 本设计是基于VHDL语言的万年历设计。在设计中,采用模块化的设计思想实现万年历的设计。根据万年历的预定功能,将万年历分为计时模块、显示及显示方式切换模块,校时模块。 计时模块又包含了秒、分、时、日、月、年模块。其中,秒和分都采用60进制计数器,时采用24进制计数器,月采用12进制计数器,年高位和年低位都采用100进制计数器(高位计数器可不需要进位输出)。在所有计数器进制设定方面,比较特别的是日计数器进制的设定,因为它有四种不同的情况,若为大月(1、3、5、7、8、10、12)则为31进制计数器,若为小月(4、6、9、11),则为30进制计数器,若为闰年的2月,则为29进制计数器,若为平年的2月份,则为28进制的计数器。因此,在年计数器中,需要判断其是否为闰年,并将此信号引入月计时器中,配合月份输出判断信号,再将此判断信号引入日计数器模块。根据设计要求,判断信号需分为4中,分别代表大月,小月,平年的2月,闰年的2月。此外,每个计数器(除年高位计数器)都应该有进位输出端,每个计数器都有显示输出端,低位计数器的进位输出要作为高位计数器的脉冲输入,比如秒计数器的进位输出作为分计数器的脉冲输入,而分计数器的进位输出作为时计数器的脉冲输入,以此类推。 计时功能仅仅是万年历的基本功能,若要实现校时功能,则必须包含校时模块,本设计中校时模块主要通过两个按键来实现。校时模块使系统具有7种工作方式,分别为正常计时、校分、校时、校日、校月、校年低位、年高位的工作方式。在设计中,通过按键K1来选择工作方式,若按一下按键,则进入校分的工作方式,且在校分时秒计数器不正常工作,即秒的进位输出不作为分的输入。若再按一次按键则进入校时的工作方式,在进入校时工作方式时,秒计数器和分计数器正常工作,以此类推,按K1按键6次后则进入校年高位的工作方式,在进入校年高位工作方式时,秒计数器、分计数器、日计数器和月计数器均正常工作,避免在校对年高位时影响其他时间位的正确性。若在进入校年高位的工作方式时,再按K1键,则再次进入正常计时。此外,利用LED灯1至LED灯6作为显示工作方式的指示灯,如,正常计时时LED灯1至LED灯6都不亮,进入校分的工作方式时,LED灯1亮,其余都不亮,以此类推,进入校年高位的工作方式时,LED灯6亮,其余都不亮,而通过这些LED灯,可以方便地观察到目前系统所处的工作方式。此外,通过按键K2来改变各个计数器的值,当检测到按下K2按键时,对应的计数器则加1。例如,目前系统处于2013年4月20日18点57分23秒时,而真正的时间为19时整,则可以先按K1按键1下,进入校分的工作方式,则再按K2按键3下,使分计数器加3,再按下K2键,进入校时工作方式,再按下K2即可实现。最后,万年历不仅要正确计时,而且要显示时间,而本设计中显示方式有两种,一种是时分秒的显示方式,另一种则是年月日的显示方式,因此,设计中需增加显示及显示方式切换模块。在设计中,显示方式的轮流切换通过按键K3来实现,若按偶数次K3,则显示方式为时分秒;若按奇数次K3,则显示方式为年月日。此外,利用LED灯8作为显示方式的指示灯,当处于时分秒的显示方式时,LED灯8不亮,否则LED灯8亮。2.2 设计原理图 万年历的设计原理图如图2.1所示:7段数码管7段数码管7段数码管7段数码管7段数码管7段数码管7段数码管7段数码管 译码驱动 日/秒十位计数器日/秒个位计数器月/分个位计数器月/分十位计数器年/时个位计数器年/时十位计数器年百位计数器年千位计数器校时模块,显示方式切换模块k1,k2,k3 1Hz图2.1 万年历设计原理图 万年历由计时模块,显示及显示方式切换模块,校时模块组成。计时模块由秒、分、时、日、月、年计数器实现。显示方式切换功能由K3实现,校时功能由K1、K2实现。显示功能由数码管和译码器组实现,译码器的输入端为D、C、B、A,各个计数器的输出作为译码器的输入,7段译码器有7个输出端,分别接到数码管的7个显示输入端:a、b、c、d、e、f和g,从而使数码管显示相应的数字,进而实现显示功能。2.3 设计流程图 万年历的设计流程图如图2.2所示:开始 秒计时时分秒显示年计时月计时日计时时计时分计时 YK3按偶数次校时模块N年月日显示Y闰年N图2.2 设计流程图 程序下载后,上电各个计数器开始计时,并将进位输出作为后一计数器的时钟触发输入,实现各计数器之间的连接。K1、K2为校时控制输入端,检测到K1上升沿,使系统进入不同的工作状态,通过检测K2上升沿的到来,使相应的计数器的值增加1,从而实现校时功能。此外,通过K3来控制显示方式,按偶数次K3,显示方式为时分秒,按奇数次为年月日。第3章 模块分析 3.1 计数器模块分析3.1.1 秒和分计数器模块 秒和分计数器模块都为60进制计数器,源程序如下: LIBRARY IEEE USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt_60m IS PORT(clk:IN STD_LOGIC; q1,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c:OUT STD_LOGIC); END ENTITY cnt_60m; ARCHITECTURE rt_1 OF cnt_60m IS SIGNAL q11,q22:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk)BEGIN IF clkEVENT AND clk=1 THEN q11=q11+1;IF q11=9 AND q22/=5 THEN q11=0000;q22=q22+1;END IF;IF q22=5 AND q11=9 THEN q22=0000;q11=0000;c=1;ELSE c=0;END IF; END IF; END PROCESS;q1=q11;q2=q22;END ARCHITECTURE rt_1; 秒计数器的波形仿真如图3.1所示: 图3.1 秒计数器仿真图 如图3.1所示,当秒计数器计数至59时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时秒计数器再次从0开始计数,故设计正确。3.1.2 时计数器模块 时计数器模块为24进制计数器,源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt_24 IS PORT(clk:IN STD_LOGIC; q1,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c:OUT STD_LOGIC); END ENTITY cnt_24; ARCHITECTURE rt_1 OF cnt_24 IS SIGNAL q11,q22:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN q11=q11+1; IF q11=9 THEN q11=0000;q22=q22+1; END IF; IF q22=2 AND q11=3 THEN q22=0000;q11=0000;c=1; ELSE c=0; END IF; END IF; END PROCESS; q1=q11;q2=q22; END ARCHITECTURE rt_1; 时计数器的波形仿真如图3.2所示: 图3.2 时计数器仿真图 如图3.3所示,当时计数器计数至23时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同是时计数器再次从0开始计数,故设计正确。3.1.3 日计数器模块日计数器模块是比较特别的,因为它的进制设定有四种不同的情况,若该月为大月(1、3、5、7、8、10、12)日计数器计数至31时才产生进位信号。若为该月小月(4、6、9、11),日计数器计数至30时就产生进位信号。若该月为闰年的2月,日计数器计数至29时就产生进位信号。若该月为平年的2月份,日计数器计数至28时就产生进位信号。所以,在日计数器中需要输入判断信号,该判断信号可用2位2进制表示,若判断信号为00,则日计数器为31进制计数器;若判断信号为01,则日计数器为30进制计数器;若判断信号为10,则日计数器为28进制计数器;若判断信号为11,则日计数器为29进制计数器。该判断信号panduan可从月计数器的判断信号的输出pan引入。日计数器的源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY day IS PORT(panduan:IN STD_LOGIC_VECTOR(1 DOWNTO 0); clk :IN STD_LOGIC; q1 :OUT STD_LOGIC_VECTOR (3 DOWNTO 0); q2 :OUT STD_LOGIC_VECTOR (3 DOWNTO 0); c :OUT STD_LOGIC); END ENTITY day; ARCHITECTURE rt_1 OF day IS SIGNAL q3,q4:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL pan:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN PROCESS(clk,panduan) BEGIN IF clkEVENT AND clk=1 THEN q3=q3+1; IF q3=9 THEN q4=q4+1;q3=0000; END IF; panIF q3=0001 AND q4=0011 THEN q3=0001;q4=0000;c=1; ELSE cIF q3=0000 AND q4=0011THEN q3=0001;q4=0000;c=1; ELSE cIF q3=1000 AND q4=0010THEN q3=0001;q4=0000;c=1; ELSE cIF q3=1001 AND q4=0010THEN q3=0001;q4=0000;c=1; ELSE cNULL; END CASE; END IF; q1=q3;q2=q4; END PROCESS; END ARCHITECTURE rt_1 ; 日计数器的波形仿真如图3.3至图3.6所示: 1)当判断信号panduan为00时,日计数器的波形仿真如图3.3所示: 图3.3 判断信号panduan为00时日计数器的仿真图 如图3.3所示,当输入信号panduan为00时,日计数器计数至31时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。 2)当输入信号panduan为01时,日计数器的波形仿真如图3.4所示: 图3.4 判断信号panduan为01时日计数器的仿真图 如图3.4所示,当输入的panduan为01时,日计数器计数至30时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。 3)当输入信号panduan为10时,日计数器的波形仿真如图3.5所示: 图3.5 判断信号panduan为10时日计数器的仿真图 如图3.5所示,当输入的panduan为10时,日计数器计数至28时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。 4)当输入信号panduan为11时,日计数器的波形仿真如图3.6所示: 图3.6 判断信号panduan为11时日计数器的仿真图 如图3.6所示,当输入的panduan为11时,日计数器计数至29时,等待至clk信号下一个脉冲上升沿到来时,进位输出c产生一个输出脉冲,同时日计数器再次从1开始计数,故设计正确。3.1.4 月计数器模块月计数器为12进制计数器,但需要为日计数器的进制提供判断信号,所以该模块需要有判断信号的输出。此外,由于闰年的2月和平年的2月,判断信号输出不同,所以该模块需要从年计数模块引入闰年的判断信号。最终,其必须达到如下设计要求:若月份是大月,则该信号pan输出00,若月份是小月,则该信号pan输出01,若月份是平年的2月,则该信号pan输出10,若月份是闰年的2月,则该信号pan输出11。月计数器的源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt_12 IS port(clk :IN STD_LOGIC; run :IN STD_LOGIC; c:OUT STD_LOGIC; pan :OUT STD_LOGIC_VECTOR(1 DOWNTO 0); q1,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY cnt_12; ARCHITECTURE rt_1 OF cnt_12 IS SIGNAL qq1,qq2: STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL q3: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN qq1=qq1+1; IF qq1=9 THEN qq2=qq2+1;qq1=0000; END IF; IF qq2=1 AND qq1=2 THEN qq1=0001;qq2=0000;c=1; ELSE c=0; END IF; END IF; q3panIF run=1 THEN pan=11; ELSE panpanpanpanpanpanpanpanpanpanpanNULL; END CASE; q1=qq1;q2=qq2; END PROCESS; END ARCHITECTURE rt_1; 月计数器的波形仿真如图3.7至图3.8所示: 1)当输入信号run为1时,即表示该年份为闰年,月计数器的波形仿真如图3.7所示: 图3.7 闰年时月计数器的仿真图 如图3.7所示,当输入信号run为高电平,即表示闰年时,在2月份,输出判断信号pan为11;在大月,输出判断信号pan为00;在小月,输出判断信号pan为01;与日计数器的进制判断要求一致,故设计正确。 2)当输入信号run为0时,即表示该年份为平年,月计数器的波形仿真如图3.8所示: 图3.8 平年时月计数器的仿真图 如图3.8所示,当输入信号run为低电平,即表示平年时,在2月份,输出判断信号pan为10;在大月,输出判断信号pan为00;在小月,输出判断信号pan为01;与日计数器的进制判断要求一致,故设计正确。3.1.5 年计数器模块1) 年低位计数器 年低位计数器为100进制计数器,同时在年低位计数器中需要判断该年是否为闰年。除此,低位计数器不仅要有触发输入,也要有进位输出,作为年高位计数器的触发输入。 年低位计数器源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY year_1 IS PORT(clk:IN STD_LOGIC; y1,y2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); run,c:OUT STD_LOGIC); END ENTITY year_1; ARCHITECTURE rt_1 OF year_1 IS SIGNAL q1,q2,q3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN q1=q1+1; IF q1=9 THEN q1=0000;q2=q2+1; END IF; IF q2=9 AND q1=9 THEN q2=0000;q1=0000;c=1; ELSE c=0; END IF; END IF; END PROCESS; PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN q3=q3+1; IF q3=3 THEN q3=0000;run=1; ELSE run =0; END IF; END IF; y1=q1;y2=q2; END PROCESS; END ARCHITECTURE rt_1; 年低位计数器的波形仿真如图3.9所示: 图3.9 年低位计数器的仿真图 如图3.9所示,当年低位计数器计数至99时,等待至clk信号的下一个脉冲上升沿到来时,进位输出信号c产生一个脉冲输出,同时年低位计数器重新从0开始计数。此外,从图中可以观察到每过4年,信号run都会输出一个脉冲,故设计正确。2) 年高位计数器年高位计数器是100进制计数器,因为本设计是万年历,所以年高位计数器不用进位输出。此外,因为100的倍数必定是4的倍数,当年份的低位能被4整除,不管高位是什么数字,该年份一定是闰年,所以在年高位计数器中无需判断其是否为闰年。年高位计数器源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY year_2 IS PORT(clk:IN STD_LOGIC; y3,y4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY year_2; ARCHITECTURE rt_1 OF year_2 IS SIGNAL q1,q2,q3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN q1=q1+1; IF q1=9 THEN q1=0000;q2=q2+1; END IF; IF q2=9 AND q1=9 THEN q2=0000;q1=0000; END IF; END IF; y3=q1;y4=q2; END PROCESS; END ARCHITECTURE rt_1; 年高位计数器的波形仿真如图3.10所示: 图3.10 年高位计数器的仿真图 如图3.10所示,当年高位计数器计数至99时,等待至clk信号的下一个脉冲上升沿到来时,计数器重新从0开始计数,故设计正确。3.2 校时模块校时模块的主要功能是校对时间,而校时功能通过按键K1、K2来实现。当不按K1按键时,计数器正常计时,而当按下K1按键时,根据所按的次数不同进入不同的工作模式,利用K2改变对应计数器的值,每按下K2,对应计数器的值加1。校时模块源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164. ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jiaoshi IS PORT(mo,fo,so,ro,yo,n1o:IN STD_LOGIC; -调时模块的输入信号 k1,k2:IN STD_LOGIC; -调时模块的控制,调时信号输入 fi,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省临城县2025年上半年事业单位公开遴选试题含答案分析
- 河北省涞源县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省黄骅市2025年上半年事业单位公开遴选试题含答案分析
- 2025版企业资源规划(ERP)系统开发签约合同模板
- 2025年度综合交通枢纽场地承包经营及配套设施建设合同
- 2025版艺术品交易担保合同模板
- 2025版商品房预售协议合同电子签约操作指南
- 2025房地产测绘服务标准合同模板(含三维建模)
- 2025版婴幼儿奶粉市场推广与品牌合作合同样本
- 2025年校园食堂经营权转让合同协议书
- 五星班组建设评价标准(班组)
- 和政秧歌的发展历史、表演形式及音乐特点,舞蹈论文
- GB/T 30790.5-2014色漆和清漆防护涂料体系对钢结构的防腐蚀保护第5部分:防护涂料体系
- (新教材) 教科版小学四年级科学上册:教学计划及进度表
- GB/T 10228-2015干式电力变压器技术参数和要求
- 村集体经济组织会计实务 课件
- 速写静物(课堂PPT)
- 膝关节体格检查专家讲座
- 花生膜下滴灌技术
- 宫颈环扎护理查房
- 隧道断面施工放样测量记录表
评论
0/150
提交评论