基于FPGA的数字时钟设计毕业设计论文

合集下载

【优秀WORD论文】基于FPGA的全功能万年历电子钟的设计

【优秀WORD论文】基于FPGA的全功能万年历电子钟的设计

基于FPGA的全功能万年历电子钟的设计提要本文主要介绍了基于FPGA的万年历电子钟的设计方案,从而介绍了可编程逻辑器件的发展及应用。

基于FPGA的电子钟的设计与实现介绍了基于FPGA芯片的系统设计,并对系统的软硬件构成、FPGA内部逻辑设计工作原理等进行了详细说明。

论文第一部分对FPGA进行概述,讲述了可编程逻辑器件的发展与应用及论文题目的意义、目的和内容编排;第二部分:叙述了系统设计方案,介绍了FPGA应用的特点和电子钟的方案概述及实现语言和调试平台MAX+plusⅡ开发工具;第三部分:叙述了基于FPGA的电子钟系统的设计的硬件设计和软件设计;第四部分:对系统实现的外围电路进行概述。

第五部分:再次说明本设计的系统方案和得到的结论。

目录第一章序论 (1)1.1研究目的和意义: (1)1.2可编程逻辑器件的发展与应用: (1)1.2.1可编程逻辑单元CLB (3)1.2.2输入/输出模块IOB (3)1.2.3可编程内部连线PI (4)1.2.4 FPGA芯片的特点 (4)1.3FPGA国内外的发展状况及应用 (5)1.4本课题所能实现的功能: (8)第二章总体方案的设计 (9)2.1万年历电子钟的设计原理: (9)2.2FPGA的设计方法 (11)2.2.1 FPGA的器件设计流程 (11)2.2.2 MAX+plusⅡ开发工具 (13)2.2.3 VHDL语言 (17)2.3系统设计方案 (18)第三章系统的硬件设计与实现 (19)3.1功能模块设计 (19)3.2系统功能实现 (21)3.2.1底层元件设计 (22)3.2.2顶层元件设计 (32)3.3芯片的选择 (41)第四章设计应用电路 (45)4.1整体电路 (45)4.2电源电路 (46)4.3键盘部分 (49)4.4主动配置电路 (53)第五章总结 (61)5.1概述: (61)5.2设计方案: (62)参考文献 (64)致谢 (67)摘要 (I)ABSTRACT (II)第一章序论1.1研究目的和意义:通过对FPGA的了解,我们要应用FPGA来设计全功能万年历的设计,主要实现电子钟的所有功能,万年历是一种应用非常广泛的日常计时工具,具有时分秒计时功能,还有日历、年历功能,涉及计数、显示、参数输入技术,能够实时显示年、月、日和时间,并具有校准和闹铃等功能。

基于FPGA的数字时钟的设计1

基于FPGA的数字时钟的设计1

基于FPGA的数字时钟的设计之阿布丰王创作课题:基于FPGA的数字时钟的设计学院:电气信息工程学院专业:丈量控制与仪器班级: 08测控(2)班姓名:潘志东学号: 08314239合作者姓名:颜志林2010 年 12 月 12 日综述近年来随着数字技术的迅速发展,各种中、年夜规模集成电路在数字系统、控制系统、信号处置等方面都获得了广泛的应用.这就迫切要求理工科年夜学生熟悉和掌握经常使用中、年夜规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等经常使用仪器使用方法等基本电路的基本实验技能外,还必需培养年夜学生工程设计和组织实验能力.本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步伐,检查和排除故障、分析和处置实验结果及撰写实验陈说的能力.综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、装置、调试等环节,运用所学知识进行工程设计、提高实验技能的实践.数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能.本次设计我查阅了年夜量的文献资料,学到了很多关于数字电路方面的知识,而且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解.1、课题要求1.1课程设计的性质与任务本课程是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程.目的在于培养学生的理论联系实际,分析和解决问题的能力.通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面获得进一步的训练,加强学生的实践能力.学生通过设计、仿真、调试、撰写设计陈说等过程,培养学生的入手能力和严谨的工作作风.1.2课程设计的基本技术要求1)根据课题要求,复习巩固数字电路有关专业基础知识;2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想;3) 掌握QUARTUS-2软件的使用方法;4) 熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析;5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握条理化设计方法;6) 掌握多功能数字钟的工作原理,学会分歧进制计数器及时钟控制电路的设计方法;7) 能根据设计要求对设计电路进行仿真和测试;8) 掌握将所设计软件下载到FPGA芯片的下载步伐等等.9) 将硬件与软件连接起来,调试电路的功能.1.3课程设计的功能要求基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示.附加功能:1)能利用硬件部份按键实现“校时”“校分”“清零”功能;2)能利用蜂鸣器做整点报时:当计时达到59’59’’时开始报时,鸣叫时间1秒钟;3)按时闹铃:本设计中设置的是在七点时进行闹钟功能,鸣叫过程中,能够进行中断闹铃工作.自己工作:负责软件的编程与波形的仿真分析.2、方案设计与分析1.1设计方案1、时钟功能,具有显示时、分、秒的功能;2、具有整点报时功能,在整点时使用蜂鸣器进行报时,具有闹钟功能,鸣叫过程中,具有中断闹铃功能.1.2设计要点数字钟一般是由振荡器、分频器、计数器、译码器、显示器等几部份组成.这些都是数字电路中应用最广泛的基本电路,本设计分模块设计实现各部份功能,采纳软件编程控制FPGA芯片内部发生振动周期为1s的脉冲.并将信号送入计数器进行计算,并把累加的结果以“时”、“分”、“秒”的数字显示出来.“秒”的显示由两级计数器和译码器组成的六十进制计数电路实现;“分”的显示电路“秒”相同,“时”的显示由两级计数器和译码器组成的二十四进制电路来实现.所有计时结果由六位数码管显示.1.3工作原理数字电子钟由振荡器、分频器计数器、译码显示、报时等电路组成.振荡器发生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲.秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器依照“24翻1”规律计数.计满后各计数器清零,重新计数.计数器的输出分别经译码器送数码管显示,计时呈现误差时,可以用校时电路“校时”“校分”“清零”.秒脉冲可以通过分频电路获得.通过报时设计模块可以实现整点报时及按时闹铃,译码显示由七段译码器完成,显示由数码管构成,采纳的是静态显示方式.数码管静态显示:静态扫描电路将计数器输出的8421BGD码转换为数码管需要的逻辑状态,而且输出数码管的片选信号和为选信号.所谓静态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后再显示下一位的数据.只要保证每一位显示的时间间隔不要太年夜,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象.一般每一位的显示时间为1~10ms.3、单位电路的设计,仿真与分析(1)分频模块(fenpin)1)法式:library ieee;use ieee.std_logic_1164.all;entity fenpin isport(clk6:in std_logic;q1000,q5,q1:out std_logic);end fenpin;architecture ccc_arc of fenpin issignal x:std_logic;beginprocess(clk6)variable cnt:integer range 0 to 24999;beginif clk6'event and clk6='1' thenif cnt<24999 thencnt:=cnt+1;cnt:=0;x<=not x;end if;end if;end process;q1000<=x;process(x)variable cnt2:integer range 0 to 999; variable y:std_logic;beginif x'event and x='1' thenif cnt2<999 thencnt2:=cnt2+1;q1<='0';elsecnt2:=0;q1<='1';end if;end if;if x'event and x='1' theny:=not y;q5<=y;end process;end ccc_arc;2)仿真波形:3)仿真结果分析:发生用于计时,扫描输入,扫描显示,以及蜂鸣器所需的各个频率的信号.(2)秒模块(second)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport (clk1,en1:in std_logic;qa:out std_logic_vector(3 downto 0);co1:out std_logic;qb:out std_logic_vector(3 downto 0));end second;architecture cc of second issignal cout2,cout1:std_logic_vector(3 downto 0);signal mm: std_logic;beginprocess(clk1,en1)beginif en1='1' thencout2<="0000";cout1<="0000";elsif (clk1'event and clk1='1')thenif (cout2=1 and cout1=8) then cout2<=cout2;cout1<=cout1+1;mm<='1';elsif (cout2=1 and cout1=9) then cout2<="0000";cout1<="0000";mm<='0';else if (cout1=9) then cout2<=cout2+1;cout1<="0000";mm<='0';else cout2<=cout2;cout1<=cout1+1;mm<='0';end if;end if;end if;end process;co1<=mm;qa<=cout2;qb<=cout1;end cc;2)仿真波形:3)仿真结果分析:该模块实际是一个六十进制计数器,而六十秒为一分钟,故用此模块可以作为秒部份设计,通过观察可知,仿真波形是正确可行的.(3)分模块(minute)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport (clk2,en2:in std_logic;qc:out std_logic_vector(3 downto 0);co2:out std_logic;qd:out std_logic_vector(3 downto 0));end minute;architecture bb of minute issignal cout2,cout1:std_logic_vector(3 downto 0);signal cc:std_logic;beginprocess(clk2,en2)beginif en2='1' thenif (clk2'event and clk2='1')thenif (cout2=1 and cout1=8) thencout2<=cout2;cout1<=cout1+1;cc<='1';elsif (cout2=1 and cout1=9) then cout2<="0000";cout1<="0000";cc<='0';else if (cout1=9) then cout2<=cout2+1;cout1<="0000";cc<='0';else cout2<=cout2;cout1<=cout1+1;cc<='0';end if;end if;end if;end if;end process;co2<=cc;qc<=cout2;qd<=cout1;end bb2)仿真波形:3)仿真结果分析:此模块实际也是一个六十进制的计数器模块,六十分钟即为一个小时,用此模块就胜利解决了分设计模块这个难题.从仿真波形可知,该设计时正确的.(4)时模块(hour)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport (clk3,en3:in std_logic;qe:out std_logic_vector(3 downto 0);qf:out std_logic_vector(3 downto 0));end hour;architecture aa of hour issignal cout2,cout1:std_logic_vector(3 downto 0);beginprocess(clk3,en3)beginif en3='1' thenif (clk3'event and clk3='1')thenif (cout2=4 and cout1=0) then cout2<="0000";cout1<="0000"; else if (cout1=9) then cout2<=cout2+1;cout1<="0000";else cout2<=cout2;cout1<=cout1+1;end if;end if;end if;end if;end process;qe<=cout2;qf<=cout1;end aa;2)仿真波形:3)仿真结果分析:这是一个24计数器,用来暗示24小时,通过波形可知,法式设计正确,正常计时是每次清零后从00:00:00开始计时的,若要从预置时间开始,可以通过“校时”“校分”“清零”三个按键调整时间.(5)数码显示驱动模块1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hhh isport(n1,n2,n3,n4,n5,n6:in std_logic_vector(3 downto 0);a:in std_logic_vector(2 downto 0);qqq:out std_logic_vector(3 downto 0));end hhh;architecture dd of hhh isbeginwith a selectqqq<=n1 when "000",n2 when "001",n3 when "010",n4 when "011",n5 when "100",n6 when "101","0000" when others;end dd;2)仿真波形:3)仿真结果分析:其实这是一个选择器,从波形图可以很容易看出来.它是用来选择需要显示的数字,比如秒的十位,就会选择n1到译码显示器显示出来,具备驱动数码管的作用!(6)片选模块(sell)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ggg isport(m:in std_logic_vector(2 downto 0);b:out std_logic_vector(5 downto 0));end ggg;architecture ee of ggg isbeginwith m selectb<="100000" when "000","010000" when "001","001000" when "010","000100" when "011","000010" when "100","000001" when "101","000000" when others;end ee;2)仿真波形:3)仿真结果分析:设置时间时将所需的数据传给显示模块,当设置闹铃时将数据传给闹钟和显示模块.(7)译码显示模块(display)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decoder isport(x:in std_logic_vector(3 downto 0);y:out std_logic_vector(6 downto 0));end decoder;architecture one of decoder isbeginwith x selecty<="1111110" when "0000","0110000" when "0001","1101101" when "0010","1111001" when "0011","0110011" when "0100","1011011" when "0101","1011111" when "0110","1110000" when "0111","1111111" when "1000","1111011" when "1001","0000000" when others;end one;2)仿真波形:3)仿真结果分析:此模块是用来显示时间的,采纳静态显示方式.(8)报时模块(alart)1) 法式:library ieee;use ieee.std_logic_1164.all;entity sst isport(h1,h0,m1,m0,s1,s0:in std_logic_vector(3 downto 0);clk4:in std_logic;q500:out std_logic);end sst;architecture sss of sst isbeginprocess(clk4,m1,m0,s1,s0)beginif (clk4'event and clk4='1') thenif ((h1="0000" and h0="0111" and m1="0000" and m0="0000")or (m1="0101" and m0="1001" and s1="0101" and s0="1001"))thenq500<='1';elseq500<='0';end if;end if;end process;end sss;2) 仿真波形:3)仿真结果分析:通过观察波形可知,那时钟时间与整点或闹铃预设时间相同时,给出一个脉冲信号,使蜂鸣器鸣叫,实现整点报时和按时闹铃功能.(9)六进制计数器模块(cnt6)1)法式:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport (clk5:in std_logic;n:out std_logic_vector(2 downto 0)); end cnt6;architecture behav of cnt6 issignal q1:std_logic_vector(2 downto 0);beginprocess(clk5)beginif clk5'event and clk5='1' thenif q1<5 then q1<=q1+1;else q1<=(others=>'0');end if;end if;end process;n<=q1;end behav;2)仿真波形:4)仿真结果分析:很明显可以看出这是一个简单的六进制计数器.它与3-6译码器配合作用发生片选信号.(10)两输入与模块(and2a)1)法式:library ieee;use ieee.std_logic_1164.all;entity anda isport (a1,b1:in std_logic;y:out std_logic);end anda;architecture an of anda isbeginy<=a1 and b1;end an;2)仿真波形:3) 仿真结果分析:经观察波形,法式正确.该与门的两个输入端分别为秒模块和分模块的进位输出信号,当它们均为高电平时,时模块使能端即为高电平,时模块工作.(11)两输入或模块(or2a)1)法式:library ieee;use ieee.std_logic_1164.all;entity or_1 isport (a1,b1:in std_logic;y:out std_logic);end or_1;architecture oo of or_1 isbeginy<=a1 or b1;end oo;2)仿真波形:3) 仿真结果分析:在整个数字钟法式设计中,两处用到两输入或门.一处是分模块,或门两输入分别是秒模块的进位输出信号和外部校分信号,任一一个信号为高电平,分模块使能端就为高电平,分模块工作.另一处是在时模块的使能端,它受分模块进位输出和外部校时信号输入的控制,只要其一位高电平,时模块都将工作.4、顶层电路设计及仿真结果与分析1)法式:library ieee;use ieee.std_logic_1164.all;entity digital_clock isport(clk,sa,sb,sc:in std_logic;q1:out std_logic;r:out std_logic_vector(5 downto 0);q0:out std_logic_vector(6 downto 0)); end digital_clock;architecture main of digital_clock iscomponent andaport(a1,b1:in std_logic;y:out std_logic);end component;component or_1port(a1,b1:in std_logic;y:out std_logic);end component;component fenpinport(clk6:in std_logic;q1000,q1,q5:out std_logic);end component;component hourport (clk3,en3:in std_logic;qe:out std_logic_vector(3 downto 0); qf:out std_logic_vector(3 downto 0)); end component;component minuteport (clk2,en2:in std_logic;qc:out std_logic_vector(3 downto 0);co2:out std_logic;qd:out std_logic_vector(3 downto 0));end component;component secondport (clk1,en1:in std_logic;qa:out std_logic_vector(3 downto 0);co1:out std_logic;qb:out std_logic_vector(3 downto 0));end component;component sst isport(h1,h0,m1,m0,s1,s0:in std_logic_vector(3 downto 0); clk4:in std_logic;q500:out std_logic);end component;component hhhport(n1,n2,n3,n4,n5,n6:in std_logic_vector(3 downto 0); a:in std_logic_vector(2 downto 0);qqq:out std_logic_vector(3 downto 0));end component;component gggport(m:in std_logic_vector(2 downto 0);b:out std_logic_vector(5 downto 0));end component;component cnt6 isport (clk5:in std_logic;n:out std_logic_vector(2 downto 0));end component;component decoderport(x:in std_logic_vector(3 downto 0);y:out std_logic_vector(6 downto 0));end component;signal a,b,c,h, i,j,z:std_logic;signal k,l,e,f,u,v,t:std_logic_vector(3 downto 0); signal s: std_logic_vector(2 downto 0);beginu1:fenpin port map(clk6=>clk,q1=>h,q1000=>z);u2:second port map(clk1=>h,en1=>sc,qa=>k,qb=>l,co1=>I); u0:or_1 port map(a1=>i,b1=>sb,y=>a);u3:minute port map(clk2=>h,en2=>a,qc=>e,qd=>f,co2=>j); u30:anda port map(a1=>i,b1=>j,y=>b);u31:or_1 port map(a1=>b,b1=>sa,y=>c);u4:hour port map(clk3=>h,en3=>c,qe=>u,qf=>v);u5:sst port map(h1=>u,h0=>v,m1=>e,m0=>f,s1=>k,s0=>l,clk4=>h,q500=>q1); u6:hhh port map(n1=>k,n2=>l,n3=>e,n4=>f,n5=>u,n6=>v,qqq=>t,a=>s);u7:ggg port map(b=>r,m=>s);u8:cnt6 port map(n=>s,clk5=>z);u9:decoder port map(x=>t,y=>q0);end architecture main;2)仿真波形:3)仿真结果分析:本次试验给出的频率是50MHZ,用QUARTUS-2软件把数字钟的全部工作过程记录下来不容易,故这幅图只是其工作的一小部份.将法式下载到FPGA芯片中,并与硬件部份对应连接好,可以验证到我们所预期的所有功能,故可知该顶层文件是正确的,每一个模块的功能也都是正确的,模块之间的连接也都是正确的.在软件调试仿真过程中,我们以参考资料上的法式为模板,依据个人的需要添加修改各个功能模块,尽管有模板作为参考,仿真过程中还是出了很多的问题,例如在做数码管静态显示中,我们采纳了NPN型9013晶体三极管作为数码管的接地驱动,这里的片选信号应该是高电平有效,我们原法式是低电平,经过屡次的和其他组的学习交流中,找到了这个毛病.解决分频问题中,我们也在分频模块中做了修改,获得我们所需要的频率.5、硬件电路设计与装置电路(1)依照电路功能设计好硬件部份装置图(电路装置图详见末页图b);(2)焊接前应先排好线,再焊接电路,注意不能飞线,可正反穿线焊接;(3)焊接过程中注意各引脚的功能,不能接错;(4)焊接完后需要仔细检查后方能通电,电源电压为5V.所需元器件清单6、硬件电路装置与调试1)借助杜邦线将芯片与所焊接硬件电路根据之前锁定好的引脚一一连接好,在本设计中,各引脚锁定情况是:clk:17,q0[0]~q0[6]分别对应芯片引脚:65,63,59,57,53,51,47 ;r[0]~r[5]分别对应芯片引脚:42,40,31,28,26,24,;sa,sb,sc 分别对应芯片引脚: 80,86,92; q1对应芯片引脚: 44,q0[0]~ q0[6]对应数码管的a,b,c,d,e,f,g;r指片选信号的六个输出;sa、sb、sc对应校时电路的“校时”“校分”“清零”三个按键;q1指报时电路输出,当其为高电平时,蜂鸣器鸣叫;增加一个插针用来与蜂鸣器相连,用来实现中断闹铃的功能.2)硬件与软件两部份正确连接之后,接上5伏的电源,仔细观看数码管的显示情况,在验证功能的过程中,其实不是一帆风顺的,经过很屡次的修改和改进,最后才获得满意的功效.7、调试结果调试结果:芯片与硬件电路连接好通电后,六个数码管可以正常显示时、分、秒;硬件部份电路板上的3个按键也分别能实现“清零”“校分”“校时”功能;将时间调至59分59秒时蜂鸣器开始鸣叫,鸣叫时间为1秒钟,即实现了整点报时功能;将时间调至七点时蜂鸣器开始鸣叫,鸣叫时,我们也可以进行中断闹铃举措.8、收获与体会经过这次的数字电路课程设计,我个人获得了很多的收获,一方面加深了我对课本理论的认识,另一方面也提高了实验把持能力.现在我总结了以下的体会和经验.这次的课程设计跟我们以前做的分歧,因为我觉得这次我是真真正正的自己亲自去完成.所以是我觉得这次实验最贵重,最深刻的.就是设计的过程全是我们学生自己入手来完成的,这样,我们就必需要弄懂一个电路的原理.在这里我深深体会到哲学上理论对实践的指导作用:弄懂实验原理,而且体会到了实验的把持能力是靠自己亲自入手,亲自开动脑筋,亲自去请教他人才华获得提高的.我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充沛的准备,若是做了也不知道是个什么实验,那么做了也是白做.实验总是与课本知识相关的,有了课本的知识,我们才华编写出自己需要的法式,实现自己预期的功能.我们做实验不要一成不变和墨守陈规,应该有改良立异的精神.实际上,在弄懂了实验原理的基础上,我们的时间是充沛的,做实验应该是游刃有余的,如果说立异对我们来说是件难事,那改良总是有可能的.数字时钟年夜体看上去很简单,但其中的可变的处所还是有很多的,譬如说整点报时功能,报时继续的时间长短就是一个可变的处所.在实验的过程中我们要培养自己的自力分析问题,和解决问题的能力.在编程过程中,我们也遇到了很多的问题,就之前提到的静态扫描驱动问题,如果一味的去遵循资料上的法式的话,那整个设计将会失败,只有不竭的学习研究,才华解决问题.这次的课程设计,我的收获很多,就我自己来说,不单对理论知识有了更加深的理解,对实际的把持和也有了质的飞跃.经过这次的实验,我们整体对各个方面都获得了很多的提高,团队的合作意识也增强了很多.9、课题扩展对数字时钟的设计,在按时闹钟的环节,我们可以掺入睡眠延时功能,利用N进制计数器,在闹铃鸣叫时,通过按键给计数器一个脉冲,使计数器进入计时状态,具体的延时时长由计数器的进制决定.参考资料:付家才 .《EDA工程实践技术》.化学工业出书社.2004年12月陈忠平 .《基于Quartus II的FPGA/CPLD设计与实践》.北京电子工业出书社.2010年4月。

基于fpga的数字钟电路设计

基于fpga的数字钟电路设计

基于fpga的数字钟电路设计
随着电子技术和航空电子技术的发展,高精度的电子时钟发挥着越来越重要的作用。

面对众多的时间选择方式,FPGA技术为企业提供了新的解决方案。

本文旨在设计一种基于FPGA技术的数字时钟电路,以满足工业系统时间测量和管理的需求。

数字时钟电路的设计主要分为三个方面:晶振、时钟频率调整以及I/O管脚分配。

首先,选用封装形式为HC49-S的晶振器,其主要特征包括频率精度低至±50ppm、温度范围
宽至−10℃至+70℃、工作温度可升至105℃以及动态特性良好等。

其次,进行时钟频率
调节用FPGA。

FPGA的时钟频率调节模块采用MMC和VCO技术实现时钟频率抢断,可对晶
振的稳定频率进行调节,从而获得高精度的时钟信号。

最后,通过FPGA的I/O管脚分配
完成时钟信号输出,从而将数字信号变换为时间信号,实现时间数据的采集和处理。

基于FPGA技术的数字时钟电路可以有效地满足工业系统实时时间测量和管理的需求,实现工业系统时间计量技术的发展。

该电路具有稳定高效、体积小、功耗低以及现场可实
现调整参数等优缺点,在工业领域具有很高的应用前景。

基于FPGA的数字电子时钟设计与实现.

基于FPGA的数字电子时钟设计与实现.

课程设计 (论文说明书题目:基于 FPGA 的数字电子时钟设计院 (系 :信息与通信学院专学生姓名:学号:0900240115指导教师:职2012 年 12 月 25 日一、所用设备与器材1.1仪器设备使用仪器设备有 FPGA DE2-70开发板、 PC 机、信号发生器。

图 1 FPGA DE2-70开发板图二.系统方案2.1 设计思想利用数字电子技术、 EDA 设计方法、 FPGA 等技术,设计、仿真并实现一个基于 FPGA 的数字电子时钟基本功能, 其基本组成框图如图 1所示,振荡器采用ALTERA 的 DE2-70实验板的 50MHz 输出,分频器将 50MHz 的方波进行分频进而得到 1Hz 的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。

扩展功能设计为倒计时功能,从 59分 55秒至 59分 59秒,每秒亮一盏灯报时。

2.1.1课题背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高, 同时也使现代电子产品性能更进一步, 产品更新换代的节奏也越来越快。

20世纪 80年代末,出现了 FPGA(Field Progrommable Gate Array, CAE 和 CAD 技术的应用更为广泛,它们在 PCB 设计的原理图输入,自动布局布线及 PCB 分析, 以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。

硬件描述语言是 EDA 技术的重要组成部分, VHDL 是作为电子设计主流硬件的描述语言。

本论文就是应用 VHDL 语言来实现秒表的电路设计。

VHDL 语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。

基于FPGA的多功能数字时钟设计

基于FPGA的多功能数字时钟设计
The main systemis madeupof thefrequency divisionmodule, controland adjustmodule, time module,scan and displaydecoding module, broadcast module.Thisdesigncompletesall the function with few key, and the transformamong all the state is very convenience.
7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。
8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。
1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。

基于FPGA的多功能数字时钟设计

基于FPGA的多功能数字时钟设计

本设计为一个多功能数字时钟,可以进行时、分、秒24小时循环计时与显示,并能通过按键实现时间修改、整点报时、闹铃提醒功能。
设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段进行设计,在ise工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。
系统主要有由分频模块、计时模块、控制调整模块、扫描显示模块、报时模块等组成。用较少按键实现了各项预期功能,能方便完成各个状态之间的转换。
The use of EDA design technology, hardware-description language VHDL description logic means for the system design documents, inisetools environment, a top-down design, by the various modules together build a FPGA-based digital clock.
1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。
Keywords:digital clock,VHDL,FPGA,alarm

基于FPGA的数字时钟的设计1.(精选)

基于FPGA的数字时钟的设计1.(精选)

基于FPGA的数字时钟的设计课题:基于FPGA的数字时钟的设计学院:电气信息工程学院专业:测量控制与仪器班级: 08测控(2)班**:***学号: ********合作者姓名:颜志林2010 年12 月12 日综述近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。

这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。

本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障、分析和处理实验结果及撰写实验报告的能力。

综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。

数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。

本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解。

1、课题要求1.1课程设计的性质与任务本课程是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程。

目的在于培养学生的理论联系实际,分析和解决问题的能力。

通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面得到进一步的训练,加强学生的实践能力。

学生通过设计、仿真、调试、撰写设计报告等过程,培养学生的动手能力和严谨的工作作风。

1.2课程设计的基本技术要求1)根据课题要求,复习巩固数字电路有关专业基础知识;2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想;3) 掌握QUARTUS-2软件的使用方法;4) 熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析;5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法;6) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法;7) 能根据设计要求对设计电路进行仿真和测试;8) 掌握将所设计软件下载到FPGA芯片的下载步骤等等。

基于FPGA的数字时钟设计

基于FPGA的数字时钟设计
第2 8卷
20 年 08
第 5 期
9月
核 电子学 与探测 技术
Nu l rE eto i ce lcrnc a s& Deet nTeh oo y tci c n l o g
V0 . 8 No 5 12 .
S p 2 0 e. 08
基 于 F G 的数 字 时钟 设 计 P A
管理器 D M 的性能特点及设计要点作一简要 C
介绍 , 给出应用设计具体实例及逻辑仿真波形
图。
缺点是精度不高 、 使用不方便 , 尤其高速时钟在
P B板布线会产 生较 大的畸变。随着 大规模 C
可编 程逻辑 器件 F GA 或 C L P P D技术 的发 展 . 世界上 几大 可编 程逻辑 器件 厂家 都推 出 了新 型
中图分类号 : TN76 8 文献标 识码 : A 文章编号 : O 5—9 4 2 0 ) 50 8—5 2 80 3 (O 8 O—9 20
在较 复 杂应 用 电子 系统 中 , 常会 在 一个 经 系统 或一 块 电路 板 中用 到多 种 频率 、 同相位 不 或 固定 相 位 差 的高 速 多 相 时 钟 , 如 , 精 度 例 高
CLKDV
PS N CDEC I PS N E CLKF X
所有输 出时钟才是稳定可靠的。
S A US 7 O : C 输出的状态标 志信 T T [ :] D M - 号 。当 S A U [ ] , T T S 0 一1 表示相位移动溢 出;
C LKF l O X 8
RS T D S EN S
C LK27 O CL K2X CLK2 l O X 8
L C E D M 输 出 的标 志 信 号, O K D: C 当 D CM 的锁 相 环 成 功 实 现 锁 相 后 , OC D输 L KE
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要之阿布丰王创作本设计为一个多功能的数字时钟,具有时、分、秒计数显示功能,以24小时循环计数;具有校对功能. 本设计采纳EDA技术,以硬件描述语言Verilog HDL为系统逻辑描述语言设计文件,在QUARTUSII工具软件环境下,采纳自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟.系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及组成.经编译和仿真所设计的法式,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,按键进行校准,整点报时,闹钟功能.关键词:数字时钟,硬件描述语言,Verilog HDL,FPGAAbstractThe design for a multi-functional digital clock, with hours, minutes and seconds count display to a 24-hour cycle count; have proof functions function. The use of EDA design technology, hardware-description language VHDL description logic means for the system design documents, in QUAETUSII tools environment, a top-down design, by the various modules together build a FPGA-based digital clock. The main system make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling the design and simulation procedures, the programmable logic device to download verification, the system can complete the hours, minutes and seconds respectively, using keys to cleared , to calibrating time. And on time alarm and clock for digital clock.Keywords:digital clock,hardware description language,Verilog HDL,FPGA目录第一章绪论1.1.选题意义与研究现状在这个时间就是金钱的年代里,数字电子钟已成为人们生活中的必需品.目前应用的数字钟不单可以实现对年、月、日、时、分、秒的数字显示,还能实现对电子钟所在地址的温度显示和智能闹钟功能,广泛应用于车站、医院、机场、码头、茅厕等公共场所的时间显示.随着现场可编程门阵列( field program-mable gate array ,FPGA) 的呈现,电子系统向集成化、年夜规模和高速度等方向发展的趋势更加明显, 作为可编程的集成度较高的ASIC,可在芯片级实现任意数字逻辑电路,从而可以简化硬件电路,提高系统工作速度,缩短产物研发周期.故利用 FPGA这一新的技术手段来研究电子钟有重要的现实意义.设计采纳FPGA现场可编程技术,运用自顶向下的设计思想设计电子钟.防止了硬件电路的焊接与调试,而且由于FPGA的 I /O 端口丰富,内部逻辑可随意更改,使得数字电子钟的实现较为方便.本课题使用Cyclone EP1C6Q240的FPGA器件,完成实现一个可以计时的数字时钟.该系统具有显示时、分、秒,智能闹钟,按键实现校准时钟,整点报时等功能.满足人们获得精确时间以及时间提醒的需求,方便人们生活.1.2.国内外研究及趋势随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多.二十一世纪的今天,最具代表性的计时产物就是电子时钟,它是近代世界钟表业界的第三次革命.第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产物就是带有摆或摆轮游丝的机械钟或表.第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级.第三次革命就是单片机数码计时技术的应用,使计时产物的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期的显示功能,它更符合消费者的生活需求!因此,电子时钟的呈现带来了钟表计时业界跨跃性的进步.我国生产的电子时钟有很多种,总体上来说以研究多功能电子时钟为主,使电子时钟除原有的显示时间基本功能外,还具有闹铃,报警等功能.商家生产的电子时钟更从质量,价格,实用上考虑,不竭的改进电子时钟的设计,使其更加的具有市场.1.3.论文结构第一章详细论述了近些年来,数字化时钟系统研究领域的静态及整个数字化时钟系统的发展状况,同时分析了所面临的问题与解决方案,从而提出了本论文的研究任务.第二章从研究任务着手,选择符合设计要求的经常使用芯片及其它元器件,详细论述了各接口电路的设计与连接,以模块化的形式,整合数字化时钟硬件的设计从小到年夜,从局部到整体,循序渐进,最终实现一个功能齐全的数字化时钟系统.第三章根据系统设计要求,着手对数字化时钟系统软件进行功能的实现,将各功能模块有机结合,实现时钟走时,实现闹铃、整点报时附加功能.第四章依照设计思路,在联机调试过程中,对时钟系统的缺乏和缺点进行分析,将调试过程作重点的记录.第五章对全文的总结,对本系统功能实现以及制作过程中需要注意的方面,及整个系统软件编写中所吸取的经验教训进行论述,同时,也对整个研究应用进行展望.第二章编程软件及语言介绍2.1Quarters II编程环境介绍运行环境设计采纳quartus II软件实现,因此针对软件需要用到的一些功能在这里进行描述.Quartus II软件界面简单易把持,如下图2.1:图2.1Quartus II软件界面图2.1.1菜单栏1)【File】菜单Quartus II的【 File】菜单除具有文件管理的功能外,还有许多其他选项图2.2Quartus II菜单栏图(1)【New 】选项:新建工程或文件,其下还有子菜单【New Quartus II Project】选项:新建工程.【Design File】选项:新建设计文件,经常使用的有:AHDL文本文件、VHDL文本文件、Verilog HDL文本文件、原理图文件等.【Vector Waveform Five】选项:矢量波形文件.(2)【Open】选项:翻开一个文件.(3)【New Project Wizard 】选项:创立新工程.点击后弹出对话框.单击对话框最上第一栏右侧的“…”按钮,找到文件夹已存盘的文件,再单击翻开按钮,既呈现如图所示的设置情况.对话框中第一行暗示工程所在的工作库文件夹,第二行暗示此项工程的工程名,第三行暗示顶层文件的实体名,一般与工程名相同.图2.3Quartus II新建工程图(4)【creat /update】选项:生成元件符号.可以将设计的电路封装成一个元件符号,供以后在原理图编纂器下进行条理设计时调用.2)【View】菜单:进行全屏显示或对窗口进行切换,包括条理窗口、状态窗口、消息窗口等.图2.4Quartus II菜单栏全屏切换图3)【Assignments】菜单(1)【Device】选项:为以后设计选择器件.(2)【Pin】选项:为以后条理树的一个或多个逻辑功能块分配芯片引脚或芯片内的位置.(3)【Timing Ananlysis Setting】选项:为以后设计的 tpd、tco、tsu、fmax 等时间参数设按时序要求.(4)【EDA tool setting】选项:EDA 设置工具.使用此工具可以对工程进行综合、仿真、时序分析,等等.EDA 设置工具属于第三方工具.(5)【Setting】选项:设置控制.可以使用它对工程、文件、参数等进行修改,还可以设置编译器、仿真器、时序分析、功耗分析等.(6)【assignment editor】选项:任务编纂器.(7)【pin planner 】选项:可以使用它将所设计电路的 I/O 引脚合理的分配到已设定器件的引脚上.图2.5Quartus II菜单栏设定引脚下拉图4)【processing】菜单【processing】菜单的功能是对所设计的电路进行编译和检查设计的正确性. (1)【Stop process】选项:停止编译设计项目.(2)【Start Compilation】选项:开始完全编译过程,这里包括分析与综合、适配、装配文件、按时分析、网表文件提取等过程.(3)【analyze current file】选项:分析以后的设计文件,主要是对以后设计文件的语法、语序进行检查.(4)【compilation report】选项:适配信息陈说,通过它可以检查详细的适配信息,包括设置和适配结果等.(5)【start simulation】选项:开始功能仿真.(6)【simulation report】选项:生胜利能仿真陈说.(7)【compiler tool】选项:它是一个编译工具,可以有选择对项目中的各个文件进行分别编译.(8)【simulation tool】选项:对编译过电路进行功能仿真和时序仿真. (9)【classic timing analyzer tool】选项:classic时序仿真工具.(10)【powerplay power analyzer tool】选项:PowerPlay 功耗分析工具.图2.6Quartus II菜单栏运行下拉图5)【tools】菜单【tools 】菜单的功能是(1)【run EDA simulation tool 】选项:运行EDA仿真工具,EDA是第三方仿真工具.(2)【run EDA timing analyzer tool 】选项:运行EDA时序分析工具,EDA 是第三方仿真工具.(3)【Programmer 】选项:翻开编程器窗口,以便对Altera 的器件进行下载编程.图2.7Quartus II仿真菜单下拉图2.1.2工具栏工具栏紧邻菜单栏下方,它其实是各菜单功能的快捷按钮组合区.2.8Quartus II菜单栏图图2.9Quartus II菜单栏按键功能图2.1.3功能仿真流程1、新建仿真文件图2.10Quartus II菜单栏新建文件夹图2、功能方正把持在菜单上点processing在下拉菜单中,如下图:图2.11Quartus II菜单栏processing下拉图2.2Verilog HDL语言介2.2.1什么是verilog HDL语言Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种笼统设计条理的数字系统建模.被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间.数字系统能够按条理描述,并可在相同描述中显式地进行时序建模.Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包括响应监控和设计验证方面的时延和波形发生机制.所有这些都使用同一种建模语言.另外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行.Verilog HDL语言不单界说了语法,而且对每个语法结构都界说了清晰的模拟、仿真语义.因此,用这种语言编写的模型能够使用Ve rilog仿真器进行验证.语言从C编程语言中继承了多种把持符和结构.Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解.可是,Verilog HDL语言的核心子集非常易于学习和使用,这对年夜大都建模应用来说已经足够.固然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述.2.2.2主要功能下面列出的是Verilog硬件描述语言的主要能力:●基本逻辑门,例如and、or和nan d等都内置在语言中.●用户界说原语(UP)创立的灵活性.用户界说的原语既可以是组合逻辑原语,也可以是时序逻辑原语.●开关级基本结构模型,例如pmos和nmos等也被内置在语言中.●提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查.●可采纳三种分歧方式或混合方式对设计建模.这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模.●Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型.线网类型暗示构件间的物理连线,而寄存器类型暗示笼统的数据存储元件.●能够描述条理设计,可使用模块实例结构描述任何条理.●设计的规模可以是任意的;语言分歧毛病设计的规模(年夜小)施加任何限制.●Verilog HDL不再是某些公司的专有语言而是IEEE标准.●人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言.●Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展.PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合.●设计能够在多个条理上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级.●能够使用内置开关级原语在开关级对设计完整建模.●同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定.●Verilog HDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示.这些值也能够用于与期望值比力,在不匹配的情况下,打印陈说消息.●在行为级描述中,Verilog HDL不单能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述.●能够使用门和模块实例化语句在结构级进行结构描述.●如图显示了Verilog HDL的混合方式建模能力,即在一个设计中每个模块均可以在分歧设计条理上建模.●Verilog HDL还具有内置逻辑函数,例如&(按位与)和|(按位或).●对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用.●可以显式地对并发和按时进行建模.●提供强有力的文件读写能力.●语言在特定情况下是非确定性的,即在分歧的模拟器上模型可以发生分歧的结果;例如,事件队列上的事件顺序在标准中没有界说.图2.12混合设计条理图第三章数字化时钟系统硬件设计3.1系统核心板电路分析本系统采纳的开发平台标配的核心板是QuickSOPC,可以实现EDA、SOP 和DSP的实验及研发.本系统采纳QuickSOPC标准配置为Altera公司的EP1C6Q240C8芯片.(1)核心板的硬件资源核心板采纳4层板精心设计,采纳120针接口.QuickSOPC核心板的硬件原图3.1QuickSOPC硬件方块图(2)FPGA电路核心板QuickSOPC上所用的FPGA为Altera公司Cyclone系列的EP1C6Q240.EP1C6Q240包括有5980个逻辑单位和92Kbit的片上RAM.EP1C6Q240有185个用户I/O口,封装为240-Pin PQFP.核心板EP1C6Q240器件特性如表2-1.表3-1核心EP1C6Q240器件特性:特性核心板EP1C6Q240器件逻辑单位(LE)5980M4K RAM 块20RAM总量(bit)92160PLL(个) 2185最年夜用户I/O数(个)1167216配置二进制文件(.rbf)年夜小(bit)可选串行主动配置器件EPCS1/ EPCS4/ EPCS16(3)配置电路Cyclone FPGA的配置方式包括:主动配置模式、主动配置模式以及JTAG配置模式.本系统采纳的是JTAG配置模式下载配置数据到FPGA.通过JTAG结果,利用Quartus II软件可以直接对FPGA进行独自的硬件重新配置.Quartus II软件在编译时会自动生成用于JTAG配置的.sof文件.Cyclone FPGA设计成的JTAG指令比其他任何器件把持模式的优先级都高,因此JTAG配置可随时进行而不用等候其他配置模式完成.JTAG模式使用4个专门的信号引脚:TDI、TDO、TMS以及TCK.JTAG的3个输入脚TDI、TMS 和TCK具有内部弱上拉,上拉电阻年夜约为25kΩ.在JGTA进行配置的时候,所有用户I/O扣都为高阻态.(4)时钟电路FPGA内部没振荡电路,使用有源晶振是比力理想的选择.EP1C6Q240C8的输入的时钟频率范围为15.625~387MHz,经过内部的PLL电路后可输出15.625~275MHz的系统时钟.当输入时钟频率较低时,可以使用FPGA的内部PLL 调整FPGA所需的系统时钟,使系统运行速度更快.核心板包括一个48MHz的有源晶振作为系统的时钟源.如图2-2所示.为了获得一个稳定、精确的时钟频率,有源晶振的供电电源经过了LC滤波.本系统硬件整体设计框图如图2-3所示:图3.2数字时钟系统硬件电路总体框图3.2系统主板电路分析3.2.1时钟模块电路FPGA内部没振荡电路,使用有源晶振是比力理想的选择.EP1C6Q240C8的输入的时钟频率范围为15.625~387MHz,经过内部的PLL电路后可输出15.625~275MHz的系统时钟.当输入时钟频率较低时,可以使用FPGA的内部PLL 调整FPGA所需的系统时钟,使系统运行速度更快.核心板包括一个50MHz的有源晶振作为系统的时钟源.为了获得一个稳定、精确的时钟频率,有源晶振的供电电源经过了LC滤波.图3.3系统时钟电路图3.2.2显示电路由于本设计需要显示时间信息包括:时、分、秒,显所以采纳主板上七段数码管显示电路与系统连接实现显示模块的功能.主板上七段数码管显示电路如图2-4 所示,RP4和 RP6 是段码上的限流电阻,位码由于电流较年夜,采纳了三极管驱动.图3.4七段数码管显示电路图数码管 LED显示是工程项目中使用较广的一种输出显示器件.罕见的数管有共阴和共阳 2 种.共阴数码管是将 8 个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将 8 个发光二极管的阳极连接在一起作为公共端.公共端常被称作位码,而将其他的 8 位称作段码.如图 2-5所示为共阳数码管及其电路,数码管有 8 个段分别为:h、g、f、e、d、c、b 和a(h 为小数点) ,只要公共端为高电平“1” ,某个段输出低电平“0”则相应的段就亮.图3.5七段数码管显示电路图从电路可以看出,数码管是共阳的,当位码驱动信号为 0时,对应的数码管才华把持;当段码驱动信号为 0 时,对应的段码点亮.3.2.3键盘控制电路键盘控制电路要实现时钟系统调时的功能和闹铃开关的功能.本设计采纳主板上的自力键盘来实现这两个功能.当键盘被按下是为“0”,未被按下是为“1”.电路连接图如图2-6所示.电路中为了防止FPGA的I/O设为输出且为高电平在按键下直接对地短路,电阻RP9、RP10对此都能起到呵护作用.图3.6 键盘电路图3.2.4蜂鸣电路设计如图2-7所示,蜂鸣器使用 PNP三极管进行驱动控制,蜂鸣器使用的是交流蜂鸣器.当在BEEP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声.因此可以利用一个PWM 来控制BEEP,通过改变PWM 的频率来获得分歧的声响,也可以用来播放音乐.若把 JP7断开,Q4 截止,蜂鸣器停止蜂鸣.图3.7蜂鸣电路图第四章数字化时钟系统软件设计4.1整体方案介绍4.1.1整体设计描述设计中的数字时钟,带有按键校准,定点报时,数码管显示等功能.因此数字时钟所包括的模块可分为,分频模块,按键模块,计时校准模块,闹钟模块,LED显示模块,模块之间的关系下图:图4.1整体模块框图针对框图流程,设定出各个模块的需求:1、分频电路:针对计时器模块与闹钟设定模块的需求,可以知道分频模块需要生成一个1Hz的频率信号,确保计时模块可以正常计数.2、计时器模块:计数模块的作用是收到分频模块1Hz频率的信号线,能进行正确计时,而且可以通过按键进行时间的修改,且当整点时,给蜂鸣器发生使能信号,进行整点报时,播放音乐.3、闹钟设定模块:可根据按键的设定闹钟的时间,当计时模块的时间与闹钟设定模块的时间相等的时候,给蜂鸣器一个使能信号,蜂鸣器闹铃..4、蜂鸣器模块:根据计时模块,闹钟模块给出的使能信号,判定蜂鸣器是整点报时,还是闹钟响铃.整点报时会播放音乐,闹钟时嘀嘀嘀报警.5、LED显示模块:根据实际的需求显示计时模块的时间,还是闹钟设定模块的时间,8个七段码LED数码管,进行扫描方式显示数据.4.1.2整体信号界说对整个模块进行信号界说.接口及寄存器界说module clock(clk,key,dig,seg,beep);// 模块名 clockinput clk; // 输入时钟input [4:0] key; //输入按键,key[3:0]分别为秒,分钟,小时的增加按键.Key[4]为闹钟设置按键,key[5]为校准设置按键.output [7:0] dig; // 数码管选择输出引脚 aoutput [7:0] seg; // 数码管段输出引脚output beep; //蜂鸣器输出端reg [7:0] seg_r = 8'h0; //界说数码管输出寄存器reg [7:0] dig_r; //界说数码管选择输出寄存器reg [3:0] disp_dat; // 界说显示数据寄存器reg [8:0] count1; //界说计数寄存器reg [14:0] count; //界说计数中间寄存器reg [23:0] hour = 24'h235956; // 界说现在时刻寄存器reg [23:0] clktime = 24'h000000; //界说设定闹钟reg [1:0] keyen = 2'b11; // 界说标识表记标帜位reg [4:0] dout1 = 5'b11111;reg [4:0] dout2 = 5'b11111;reg [4:0] dout3 = 5'b11111; // 寄存器wire [4:0] key_done; // 按键消抖输出reg [15:0] beep_count = 16'h0; //蜂鸣器寄存器reg [15:0] beep_count_end = 16'hffff; //蜂鸣器截止寄存器reg clktime_en = 1'b1; //闹钟使能寄存器reg sec ; //1秒时钟reg clk1; //1ms时钟reg beep_r; //寄存器wire beepen; //闹钟使能信号4.1.3模块框图通过quartus II的creat symble for current file功能生成框图如下:图4.2生成的符号图分频模块实现,计数电路所需时钟信号为1HZ,而系统时钟为48MHZ,所以要对系统时钟进行分频以来满足电路的需要.4.2分频模块实现4.2.1分频模块描述对分频模块,关键是生成个1Hz的时钟信号.考虑到仿真的需要,模块中间生成1个1kHz的时钟信号.1Hz的信号的发生用来发生时钟的秒脉冲,框图如下图4.2:图4.3分频模块图4.2.2分频模块设计本系统法式设计时钟的准确与否主要取决于秒脉冲的精确度.为了保证计时准确,我们对系统时钟48MHz进行了48000分频生成1kHz信号clk1,在通过1kHz信号,生成1Hz信号clk.//1ms信号发生部份always @(posedge clk) // 界说 clock 上升沿触发begincount = count + 1'b1;if(count == 15'd24000) //0.5mS到了吗?begincount = 15'd0; //计数器清零clk1 = ~clk1; //置位秒标识表记标帜endend//秒信号发生部份always @(posedge clk1) // 界说 clock 上升沿触发begincount1 = count1 + 1'b1;if(count1 == 9'd500) //0.5S到了吗?begincount1 = 9'd0; //计数器清零sec = ~sec; //置位秒标识表记标帜endEnd4.2.3分频模块仿真通过设置功能仿真,检查代码的正确性5仿真结果图4.4分频模块波形仿真图右上图可以知道,计数寄存器count累加到23999时,重新酿成0,共计数了24000个值.触发clk1跳变,使得count1加一,count1累加到499的时候,下一个数据为0,共技术500个值.所以,sec信号的频率为1Hz,满足设计要求.5.1计时模块实现5.1.1计时模块描述与实现计时模块是采纳16进制来实现的,将hour[23,0]界说为其时分秒,其中hour[3,0]为其秒钟上的个位数值,hour[4,7]为其秒钟上的十位数值,以此类推分钟、时钟的个位和十位.当clk脉冲过来时,秒个位hour[3,0]便开始加1,当加到9时,秒十位加1,与此同时秒个位清零,继续加1.当秒十位hour[7,4]为5秒个位为9时(即59秒),分个位hour[11,8]加1,与此同时秒个位和秒十位都清零.以此类推,当分十位hour[15,12]为5和分个位为9时(即59分),时个位加1,与此同时分个位hour[19,16]和分十位都清零.那时分十位[23,20]为2和分个位为4,全部清零,开始重新计时.从功能上讲分别为模60计数器,模60计数器和模24计数器.//时间计算及校准部份always @(negedge sec)//计时处置beginhour[3:0] = hour[3:0] + 1'b1;//秒加 1if(hour[3:0] >= 4'ha)//加到10,复位beginhour[3:0] = 4'h0;hour[7:4] = hour[7:4] + 1'b1;// 秒的十位加一if(hour[7:4] >= 4'h6)//加到6,复位beginhour[7:4] = 4'h0;hour[11:8] = hour[11:8] + 1'b1;//分个位加一if(hour[11:8] >= 4'ha)//加到10,复位beginhour[11:8] = 4'h0;hour[15:12] = hour[15:12] + 1'b1;//分十位加一if(hour[15:12] >= 4'h6)//加到6,复位beginhour[15:12] = 4'h0;hour[19:16] = hour[19:16] + 1'b1;//时个位加一if(hour[19:16] >= 4'ha)//加到10,复位beginhour[19:16] = 4'h0;hour[23:20] = hour[23:20] + 1'b1;//时十位加一endif(hour[23:16] >= 8'h24)//加到24,复位hour[23:16] = 8'h0;endendendendendend5.1.2计时模块仿真对计时模块进行仿真,记录仿真波形图4.5计时模块仿真图由上图可见,当sec信号下降沿跳变时,hour寄出去会加1,也就相当于跳了一秒钟时间.当hour的时间为235959是,下一个计数器的值为000000,hour寄存器归零,相当于三更0点的时刻.仿真的结果达到预期,通过.5.2按键处置模块实现5.2.1按键处置模块描述框图如下图4.4:图4.6按键控制功能图模块讲计时部份和时间调整部份整合到一起,正常态的时候,时间正常运行,当key[5]被按下时,进入时间校准,可以通过key[2:0]三个键,分别对秒,分,时进行加1把持,从而进行时间校准.当key[3]被按下时,进入闹钟设定,可以通过key[2:0]三个键,分别对秒,分,时进行加1把持,从而进行闹钟的设定.图4.7按键模块仿真图通过按键key进行仿真控制,可以发现clktime会随着按键的按下,分别有时钟,分钟秒钟加1,仿真结果满足设计要求.5.2.2按键去抖处置模块设计按键模块实现去抖处置,及乒乓按键设计,确保后面的计时模块与闹钟模块的功能实现.assign key_done = key|dout3; // 按键消抖输出always @(posedge count1[5]) //按键去噪声begindout1 <= key;dout2 <= dout1;dout3 <= dout2; //连续赋值endalways @(negedge key_done[4])beginkeyen[1] = ~keyen[1]; //校准按键转换乒乓按键endalways @(negedge key_done[3])beginkeyen[0] = ~keyen[0]; //按时按键转换乒乓按键End5.2.3按键模块去抖仿真对按键去颤动仿真,同样才用功能仿真方式,这里不再重复设置与把持,如同上面的分频模块进行设置并进行仿真.Key寄存器为输入按键,初始化电路为高电平,当有按键按下去的时候,酿成低电平.因此改变key的值,观察仿真结果是否正确.功能仿真,记录仿真结果,如下图:图4.8按键模块仿真图通过上图可以知道,key_done会随着key的变动而发生相应的变动,并有消除噪声的作用,功能仿真正确,达到设计目的.5.3闹钟模块实现5.3.1闹钟模块设计本设计中,判断闹铃时间到,是通过判按时钟系统实时时间的时钟与分钟是否分别即是设定的闹铃时间的时钟、分钟、秒钟.那时间(hour[23:0])即是设定的闹钟时间(clktime[23:0])时,闹钟触发时,播放嘀嘀嘀报警声,闹钟会响10秒的时间(clktime[23:0]+10 >=hour[23:0]).正常情况下,闹铃时间到会进行为时1分钟的蜂鸣报时,可以通过按下闹钟按键key[3]使其停止.当闹铃设置为整点是,会先进行整点报时,然后进入闹铃.图4.9闹钟控制键功能图5.3.2闹钟设定模块仿真图4.10闹钟模块仿真图通过按键key进行仿真控制,可以发现clktime会随着按键的按下,分别有时钟,分钟秒钟加1,仿真结果满足设计要求.5.4蜂鸣器模块实现5.4.1蜂鸣器模块描述蜂鸣器模块负责整点报时,和闹铃的时候进行作声的作用.整点报时的时候,播放音乐,10秒音乐播报完后停止整点报时.闹钟触发时,播放嘀嘀嘀报警声.当闹铃设置为整点是,会先进行整点报时,然后进入闹铃.当闹钟设定键被按下,响起的蜂鸣声会被屏蔽.模块框图如下图4.9:5.4.2蜂鸣器模块实现//蜂鸣器的计数按时器always@(posedge clk)。

相关文档
最新文档