《基于CPLD的多功能数字时钟(共25页).doc》由会员分享,可在线阅读,更多相关《基于CPLD的多功能数字时钟(共25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上前 言我们已经进入了数字化和信息化的时代,其特点是各种数字产品的广泛应用。现代数字产品在性能提高、复杂度增大的同时,其更新换代的步伐也越来越快,实现这种进步的因素在于生产制造技术和电子设计技术的进步。CPLD器件和EDA技术的出现,改变了这种传统的设计思路,使人们可以立足于CPLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件内部逻辑和管脚,将原来由电路板设计完成的工作大部分放在芯片的设计中进行。这样不仅可以通过芯片设计实现各种逻辑功能,而且由于管脚定义的灵活性,减轻了原理图和印制板设计的工作量和难度,增加了设计的自由度,提高了效率。同时这种设计减少了
2、所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。目 录一、 设计内容和要求1. 设计一个数字钟,具有计时,校时,闹钟和整点报时的功能。基本要求:1) 计时功能采用24小时方式,显示小时、分钟和秒;2) 采用双键调整法,MODE和SET。3) MODE按键用于模式选择,包括时钟数码管模块显示。计时模块数码管显示,包括计时、秒校时、分校时和小时校时;闹钟模块数码管显示,包括闹钟校时和校分。4) SET作为校时脉冲;5) 结果用6个数码管显示和一个蜂咛器;6) 用VHDL语言编程实现系统功能;7) 在Quartus II环境中编译、仿真通过,并得到正确的波形;8) 在实验系统上下载
3、成功并有正确的结果;9) 完成相应的实训报告。二、 实验环境1. 软件环境QuartusQuartus软件包是MAX+plus的升级版本,Altera公司的第四代开发软件,该软件提供了一个完整高效的设计环境,非常适应具体的设计需要。Quartus提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。Quartus软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。2. 硬件环境基于CYCLONE II系列 EP2C35F484I8芯片的实验箱。三、 系统设计方案的确
4、定1. 结构框图闹钟模块计时模块校时模块显示模块报时模块扬声器图1 数字钟结构框图2. 总体思路根据设计要求,计时结果用6个数码管分别显示小时、分钟和秒,用扬声器响铃表示闹钟以及整点报时。校时和闹钟校时采用双键MODE和SET,前者选择时钟模式,后者作为校时脉冲。第一次按下MODE键为校时模式,SET键校时;第二次按下MODE键为校分模式,SET键校分;第三次按下MODE键为校秒模式,SET键校秒;第四次按下MODE键为闹钟校时模式且数码管显示闹钟模式,SET键闹钟校时;第五次按下MODE键为闹钟校分模式,SET键闹钟校分;第六次按下MODE键为又回到时钟显示模式,SET键无效;参考数字钟的各
5、个模式图接口如下图。1) 总体电路图2) 校时模块 专心-专注-专业校时模块用于时间校正。输入端口有6个:EN: 接高电平VCCCLK1HZ:数字钟时钟输入,用于计时;MODE:按下MODE键选择时钟模式,包括计时、秒校时、分校时和小时校时四种;SET:校时脉冲输入,用于校准时间;S_ENOUT :秒计数器的进位信号;F_ENOUT: 分计数器的进位信号。输出端口有3个:CLK: 单次数字时钟输出;F_CE: 使能输出;H_CE: 使能输出; 图3 校时模块模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIG
6、NED.ALL;ENTITY JIAOSHI IS PORT( EN,CLK1HZ,SET,S_ENOUT,F_ENOUT : IN STD_LOGIC ;MODE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);CLK,S_CE,F_CE,H_CE : out std_logic);END JIAOSHI;ARCHITECTURE behave OF JIAOSHI ISBEGINPROCESS (CLK1HZ,MODE,SET,S_ENOUT,F_ENOUT,EN)BEGINIF MODE = 000 THENCLK = CLK1HZ;F_CE = S_ENOUT;H_
7、CE = F_ENOUT;S_CE = EN;ELSIF MODE = 001 THENCLK = SET;S_CE =0;F_CE = 0;H_CE = EN;ELSIF MODE = 010 THENCLK = SET;F_CE = EN;S_CE = 0;H_CE = 0;ELSIF MODE = 011 THENCLK = SET;F_CE =0;S_CE = EN;H_CE = 0;ELSIF MODE = 100 THENCLK = CLK1HZ;F_CE = S_ENOUT;H_CE = F_ENOUT;S_CE = EN;ELSIF MODE = 101 THENCLK = C
8、LK1HZ;F_CE = S_ENOUT;H_CE = F_ENOUT;S_CE = EN;ELSIF MODE = 110 THENCLK = CLK1HZ;F_CE = S_ENOUT;H_CE = F_ENOUT;S_CE = EN;END IF;END PROCESS;END;3) 时钟模块由时模块,分模块,秒模块组成,用于正常时间计数。输入端口有6个:CLK:数字钟时钟输入,用于计时;EN:使能输入,为1时允许计数输出端口有8个:SH3.0、FH3.0、FL3.0、MH3.0、ML3.0、SL3.0:译码输出,连接至6个七段数码管,用于显示正常计时时间或校准时间。F_ENOUT: 分
9、模块的进位输出;S_ENOUT: 秒模块的进位输出。 图4 时钟模块模块程序CNT60 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60 IS PORT(en,clk : IN STD_LOGIC; qh,ql : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);cot : out std_logic);END CNT60;ARCHITECTURE behave OF CNT60 ISBEGINPROCESS(clk,en) BEGIN IF (cl
10、kEVENT AND clk= 1) THENIF en = 1 THENIF ql = 9 thenql = 0000;IF (qh = 5) THENqh= 0000;ELSEqh = qh + 1;END IF;ELSEql = ql + 1;END IF;END IF;end if;IF qh = 5 and ql = 9 AND en = 1 THENcot = 1;ELSE cot = 0;END IF;END PROCESS;END behave;CNT24LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UN
11、SIGNED.ALL;ENTITY CNT24 IS PORT( en,clk : IN STD_LOGIC ; qh,ql : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT24;ARCHITECTURE behave OF CNT24 ISBEGINPROCESS(clk,en) BEGIN IF (clkEVENT AND clk= 1) THENIF en = 1 THENIF ql = 9 or (qh = 2 and ql = 3) thenql = 0000;IF (qh = 2) THENqh= 0000;ELSEqh = qh + 1;
12、END IF;ELSEql = ql + 1;END IF;END IF;end if;END PROCESS;END behave;4) 闹钟模块当计数器模块的时、分与闹钟计数器模块的时、分一一对应时,闹钟模块发出信号,使扬声器发出声音,持续一分钟。输入端口有10个:MODE:按下MODE键选择时钟模式,包括闹钟校时、分校时和数码管输出显示选择;SET:校时脉冲输入,用于设置闹钟时间。FG3.0,FD3.0: 接入分计数器模块的译码输出;SG3.0,SD3.0: 接入时计数器模块的译码输出;FFG3.0,FFD3.0: 接入闹钟分计数器模块的译码输出;SSG3.0,SSD3.0: 接入闹钟时
13、计数器模块的译码输出;输出端口有8个:SH3.0,SL3.0,FH3.0,FL3.0:译码输出,连接至4个七段数码管,用于显示正常计时时间或校准时间;EN1,EN2: 使能输出,用于闹钟调节时控制分与时计数;DS: 闹钟信号输出 ,接入扬声器;CLK: 时钟信号输出;图5 闹钟模块模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NAOZHONG IS PORT(SET : IN STD_LOGIC;MODE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
14、FG,FD,SG,SD,SFD,SFG,SSG,SSD : IN STD_LOGIC_VECTOR(3 DOWNTO 0);SH,SL,FH,FL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);EN1,EN2 : BUFFER STD_LOGIC;NS,CLK: OUT STD_LOGIC);END NAOZHONG;ARCHITECTURE behave OF NAOZHONG ISBEGINPROCESS(MODE,FG,FD,SG,SD,SFD,SFG,SSG,SSD,EN1,EN2)BEGINIF MODE = 000 THENEN1 = 0;EN2 = 0;SH
15、 = SG;SL = SD;FH = FG;FL = FD;ELSIF MODE = 001 THENEN1 = 0;EN2 = 0;SH = SG;SL = SD;FH = FG;FL = FD;ELSIF MODE = 010 THENEN1 = 0;EN2 = 0;SH = SG;SL = SD;FH = FG;FL = FD;ELSIF MODE = 011 THENEN1 = 0;EN2 = 0;SH = SG;SL = SD;FH = FG;FL = FD;ELSIF MODE = 100 THENEN1 = 1;EN2 = 0;CLK = SET;SH = SSG;SL = SS
16、D;FH = SFG;FL = SFD;ELSIF MODE = 101 THENEN1 = 0;EN2 = 1;CLK = SET;SH = SSG;SL = SSD;FH = SFG;FL = SFD;ELSIF MODE = 110 THENEN1 = 0;EN2 = 0;CLK = 0;SH = SG;SL = SD;FH = FG;FL = FD;END IF;IF (SFD = FD AND SFG = FG AND SSG = SG AND SSD = SD) THENNS = 0;ELSENS = 1;END IF;END PROCESS;END;5) 闹钟计数器模块闹钟计数器
17、模块用来存储闹钟时间,输入端口有4个:CLK:数字钟时钟输入,用于计时;EN:使能输入,为1时允许计数输出端口有4个:CNT24: QH3.0、QL3.0为闹钟校时译码输出,连接至闹钟模块,用于比较正常计时时;CNT601: QH3.0、QL3.0为闹钟校分译码输出,连接至闹钟模块,用于比较正常计时分。 图6 闹钟计数器模块模块程序CNT24LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT24 IS PORT( en,clk : IN STD_LOGIC ; qh,ql : B
18、UFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT24;ARCHITECTURE behave OF CNT24 ISBEGINPROCESS(clk,en) BEGIN IF (clkEVENT AND clk= 1) THENIF en = 1 THENIF ql = 9 or (qh = 2 and ql = 3) thenql = 0000;IF (qh = 2) THENqh= 0000;ELSEqh = qh + 1;END IF;ELSEql = ql + 1;END IF;END IF;end if;END PROCESS;END behave
19、;CNT601LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT601 IS PORT( en,clk : IN STD_LOGIC ; qh,ql : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT601;ARCHITECTURE behave OF CNT601 ISBEGINPROCESS(clk,en)BEGINIF (clkEVENT AND clk= 1) THENIF en = 1 THENIF ql = 9 thenql =
20、 0000;IF (qh = 5) THENqh= 0000;ELSEqh = qh + 1;END IF;ELSEql = ql + 1;END IF;END IF;end if;END PROCESS;END;6) 报时模块报时模块用于整点报时,当59分52秒开始到00分00秒,扬声器发出间隔性声音,每响铃一秒暂停一秒。输入端口有7个:CLK、SH、3.0、SL3.0 :目前未使用(当需要百天整点报时,而深夜不报时可以添加使用);FH3.0、FL3.0、MH3.0、ML3.0:用于接入时间模块分和秒计数器的输出;输出端口有1个:D: 报时信号输出 ,接入扬声器。 图7 整点报时模块7) M
21、ODE按键模块MODE按键同时控制闹钟模块和校时模块输入端口有1个:MODE :模式选择输入,链接按键按键。A2.0: 模式选择信号输出,链接到校时模块和闹钟模块上的MODE2.0. 图8 MODE按键模块模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ANJIAN IS PORT( MODE : IN STD_LOGIC;A : BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);END ANJIAN;ARCHITECTURE behave OF ANJ
22、IAN ISBEGINPROCESS (MODE)BEGINIF MODEEVENT AND MODE = 1 THENA = A + 1;END IF;IF A = 6 THENA = 000;END IF;END PROCESS;END;四、 仿真与引脚锁定1. 仿真当设计文件被编译好,并在波形编辑器中将输入波形编辑完毕后,就可以进行行为仿真了,通过仿真可以检验设计的逻辑关系是否准确.2. 引脚锁定引脚锁定采用试验箱模式7接法,试验箱模式7电路图如下图所示,MODE用按键4,SET用键1,时间显示分别用数码管8、7、5、2、1,整点报时和闹钟用扬声器。试验箱GW48CK/PK2/PK3/P
23、K4系统万能接插口与结构图信号/与芯片引脚对照如下图所示本次采用芯片为GW2C35 EP2C35FBGA484I8 CycloneII结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484I8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号
24、PIO023311438AB158521PIO1234214410AB149622PIO22353311AB1310724PIO32364412AB1212826PIO42375713AA20131027PIO52386814AA19171128PIO62397915AA18181229PIO7240102430L19191331PIO81112531J14201433PIO92322633H15211534PIO103332734H14221715PIO114342835G16231816PIO126353037F15262035PIO137363139F14272136PIO1483732
25、40F13282337PIO1512384041L18292439PIO1613394143L17302540PIO1714404244K22312642PIO1815414345K21322743PIO1916424446K18332844PIO2017474547K17363045结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484I8 CycloneIIWAK30/50EP1K30/50TQC1
26、44 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号PIO2118484748J22373146PIO2219494856J21383248PIO2320505157J20393350PIO2421515258J19413551PIO2541525359J18423652PIO26128676792E116576113PIO27132686994E96777114PIO28133697095E86878115PIO29134707196E76979116PIO30135717297D117080
27、117PIO31136727399D97282119PIO321377374101D87383120PIO331387475102D77884122PIO341397576103C97985123PIO351407679104H78086123结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484I8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S20
28、0 SPARTANGWXS200XC3S200 SPARTANPIO361417780105Y78187125PIO371587881106Y138289126PIO381598386107U208390128PIO391608487108K208692130PIO401618592110C138793131PIO411629693112C78895132PIO421639794113H38996133PIO431649896114U39097135PIO441659997115P39198137PIO4516610399116F49299138PIO46167105100117C109510
29、0139PIO47168106101118C1696102140PIO48169107103127G2097103141PIO49173108104128R2098104143PIO60226131129201AB161371302PIO61225132132203AB171381313PIO62224133133205AB181401324PIO63223134134206AB191411355PIO64222139135207AB201421377PIO65219140136208AB71431409PIO662181411373AB814414110PIO672171421394AB11
30、7111PIO68180122126145A10119129161PIO69181121125144A9118123156结构图上的信号名GWAC6EP1C6/12Q240 CycloneGWAC3EP1C3TC144CycloneGWA2C5EP2C5TC144CycloneIIGWA2C8EP2C8QC208CycloneIIGW2C35EP2C35FBGA484I8 CycloneIIWAK30/50EP1K30/50TQC144 ACEX GWXS200XC3S200 SPARTANGWXS200XC3S200 SPARTAN引脚号引脚号引脚号引脚号引脚号引脚号引脚号引脚号PIO701
31、82120122143A8117122155PIO71183119121142A7116119154PIO72184114120141A6114118152PIO73185113119139A5113116150PIO74186112118138A4112113149PIO75187111115137A3111112148PIO762161431415AB911212PIO772151441426AB1014413PIO78188110114135B5110108147PIO79195109113134Y10109107146SPEAKER174129112133Y1699105144CLOC
32、K0289391(CLK4)23L1126124184CLOCK21531789(CLK6)132M154125203CLOCK51521617(CLK0)131M2256127204CLOCK9299290(CLK5)130B12124128205引脚锁定图如下图所示图10 引脚锁定图锁定好引脚后下载到实验箱,进行测试。小 结本次课程设计是我到目前为止觉得受益匪浅也是收获最大的一次实习,设计是我们将来必需具备的技能。而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。从通过理论设计,到仿真软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。整个过程都需要
33、我充分利用所学的知识进行思考、借鉴。可以说,本次课程设计是针对前面所学的知识进行的一次比较综合的检验。总的来说,这次课程设计虽然很累,但却是苦中有乐,非常充实。在这次实习中,正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。 因此我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础,所以跑图书馆和上网查资料成为了我每天的必修课。 本次课程设计不仅培养了我们的科学严谨的学习态度,使我们认识到不管做任何事都要付出一定的努力,才会有大的收获。相信这次课程设计过后,我们的理论水平和实践动手能力都会有一个质的飞跃,也为今后的实践课程及毕业设计打下了坚实的基础。要做好本次的课程设计,熟练地掌握课本上的理论知识是前提。这样才能对试验中出现的问题进行一定的分析和解决。参考文献【1】 王芳 。 CPLD/FPGA技术应用。 北京: 电子工业出版社,2011。【2】 潘松, 赵敏笑。 EDA技术及其应用。 北京: 电子工业出版社,2007。【3】 Xilinx Inc。 Data Book 2001。 Xilinx, 2001。