万历的设计与实现.doc

上传人:laozhun 文档编号:4147049 上传时间:2023-04-07 格式:DOC 页数:46 大小:524.50KB
返回 下载 相关 举报
万历的设计与实现.doc_第1页
第1页 / 共46页
万历的设计与实现.doc_第2页
第2页 / 共46页
万历的设计与实现.doc_第3页
第3页 / 共46页
万历的设计与实现.doc_第4页
第4页 / 共46页
万历的设计与实现.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《万历的设计与实现.doc》由会员分享,可在线阅读,更多相关《万历的设计与实现.doc(46页珍藏版)》请在三一办公上搜索。

1、学校代码 10126 学号 01161030 分 类 号 TP 密级 公开 本科毕业论文(设计)万年历的设计与实现学院、系 鄂尔多斯学院电子信息工程系 专业名称 自 动 化 年 级 2011 级 学生姓名 张 文 博 指导教师 王 俊 林 2013年 6月 8 日万年历的设计与实现摘要本设计为一个多功能的万年历,具有年、月、日、时、分、秒计数显示功能,以24小时循环计数,具有校对功能。本设计采用EDA技术,以硬件描述语言verilog HDL和VHDL为系统逻辑描述手段设计文件,在Quartus II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于KH-310开发工具的

2、万年历。系统主芯片采用EP1C12Q240C8,由主程序和BCD模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统通过控制能够完成年、月、日和时、分、秒的分别显示,由按键输入进行数字钟的校时、切换、扫描功能。关键字:VHDL Verilog HDL EDA 万年历 目录1绪论.1 1.1选题背景.1 1.2课题相关技术的发展.1 1.3课题研究的必要性.2 1.4课题研究的内容.32 EDA技术.4 2.1 EDA概述.4 2.2什么是EDA.4 2.3 EDA的特点.53 FPGA简介.7 3.1 FPGA概述.7 3.2 FPGA开发编程原理.7 3.3FPGA基本结构

3、.8 3.4 FPGA系统设计流程.104万年历设计方案.14 4.1万年历的原理.14 4.2 实验程序.14 4.3 实验连接.34 4.4 实验仿真与实现.365实验结论与研究展望.38 5.1实验结论.38 5.2研究展望.38致谢.39参考文献.401绪论1.1选题背景20世纪末,数字电子技术飞速发展,有力的推动了社会生产力的发展和社会信息化的提高。在其推动下,数字技术的应用已经渗透到人类生活的各个方面。从计算机到手机,从数字电话到数字电视,从家用电器到军用设备,从工业自动化到航天技术,都尽可能的采用了数字电子技术。而现代电子设计技术的核心是EDA技术。 本设计采用的VHDL和Ver

4、ilog HDL是两种应用最为广泛硬件描述语言。前者具有很强大的功能,覆盖面广,描述能力强,支持门级电路的描述,也支持以寄存器、存储器、总线及其运算单元等构成的寄存器传输级电路的描述,还支持以行为算法和结构的混合描述为对象的系统级电路的描述。后者可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析。而采用Verilog HDL进行电路设计的最大优点就是设计与工艺无关性。本设计将从EDA中FPGA嵌入式应用开发技术与数字钟技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计万年历的设计与实现的必要性。1.2课题相

5、关技术的发展当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。美国Altera公司的可编程逻辑器件采用全新的结构和先进的技术,加上MaxplusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主

6、要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。1.3课题研究的必要性如今的时代是科技是第一生产力的时期。因此,新产品、新技术层出不穷,电子技术的发展更是日新月异。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的钟表给人们带来了极大的方便。近些年,随着科技

7、的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能,样式新颖已经成为数字钟的发展潮流。1.4 课题研究的内容本设计主要研究基于FPGA的数字钟,要求时间以24小时为一个周期,显示年、月、日、时、分、秒,可以对年、月、日、时、分及秒进行单独校对,使其校正到标准时间。因此,研究数字钟及扩大其应用,有着非常现实的意义。2 EDA技术2.1 EDA概述EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。 “EDA是电子设计自动化(Electronic Design Auto

8、mation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的1。”2.2 什么是EDA20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字

9、系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成设计文件,自动地完成逻辑编译、化简、分割、综合、优化、仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(Application Specific Integrated Circuit)芯片中,实现既定的电子电路设计功能。EDA技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现,极大地提高了设计效率,缩

10、短了设计周期,节省了设计成本。 今天,EDA技术已经成为电子设计的重要工具,无论是设计芯片还是设计系统,如果没有EDA工具的支持,都将难以完成的。EDA工具已经成为现代电路设计师的重要武器,正在发挥着越来越重要的作用。 2.3 EDA的特点(1) 高层综合和优化。为了能更好地支持自顶向下的设计方法,现代的EDA工具能够在系统进行综合和优化,这样就缩短了设计的周期,提高了设计效率。(2)采用硬件描述语言进行设计。采用硬件描述语言进行电路与系统的描述是当前EDA技术的另一个特征。与传统的原理图设计方法相比,HDL语言更适合描述规模大的数字系统,它能够使设计者在比较抽象的层次上对所设计系统的结构和逻

11、辑功能进行描述。采用HDL语言设计的突出优点是:语言的公开性和利用性;设计与工艺的无关性;宽范围的描述能力;便于组织大规模系统的设计;便于设计的复用,交流,保存和修改等。目前最常用的硬件描述语言有VHDL和Verilog HDL,它们都已经成为IEEE标准。(3)开放性和标准化。现代EDA工具普遍采用标准化和开放性框架结构,任何一个EDA系统只要建立了一个符合标准的开放式框架结构,就可以接纳其他厂商的EDA工具仪器进行设计工作。这样就可以实现各种EDA工具的优化组合,并集成在一个易于管理的统一环境下,实现资源共享。3 FPGA简介3.1 FPGA概述“FPGA(FieldProgrammabl

12、e Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。2”3.2FPGA开发编程原理 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻

13、辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。“FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程2。”3.3 FPGA基本结构FPGA具有掩膜可编程门阵列的通

14、用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Block)、输入/输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)。“可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编

15、程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路3。”(1) CLB是FPGA的主要组成部分。它主要由逻辑函数发生器、触发器、数据选择器等电路组成。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个函数发生器结合起来,可

16、实现多达9变量的逻辑函数。CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。 “CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出4。”另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。(2) 输入

17、/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器

18、,另一条是先存入输出通路D触发器,再送至输出缓冲器。IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。(3) 可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。3.4FPGA系统设计流程一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOP

19、DOWN(自顶向下)的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图2-2所示。图3.1FPGA系统设计流程设计准备设计输入原理图硬件描述语言 波形图设计处理优化、综合、适配、分割布局、布线设计完成器件编程功能仿真时序仿真器件测试 流程说明:1.工程师按照“自顶向下”的设计方法进行系统划分。2.输入verilog HDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(

20、框图、状态图等),这种输入方式具有直观、容易理解的优点。3.将以上的设计输入编译成标准的verilog HDL文件。4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。5.利用综合器对verilog HDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。6.利用产生的网络表文件进行适配前的时序仿真,仿真过程

21、不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改verilog HDL源代码或选择不同速度和品质的器件,直至满足设计要求。最后将适配器

22、产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。4 万年历总体设计方案4.1 万年历原理 设计原理如图4.1所示:基准时钟置数按键控制按键显示动态显示译码计数器 图4.1 设计原理图计数器在正常情况下是对1HZ的频率计数,在调整时间状况下是对需要调整的时间模块进行计数;控制按键用来选择是正常计数还是调整时间并决定调整时、分、秒;置数按键按下时,表示相应的调整块要加一,如要对小时调整时,显示时间的LED管将闪烁且当置数按键按下时,相应的小时显示要加一。动态显示模块是对计数器的计数进行译码,送到LED显示。4.2 实验程序(1) Clock模块Library ieee;u

23、se ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Clock is port( mode, set, clr, clk ,k:in std_logic; seg7, segctr :out std_logic_vector(7 downto 0) );end entity;ARCHITECTURE arch OF Clock ISsignal state: std_logic_vector(1 downto 0);signal Hour, Min, Sec,Year,Mon,Day,d: std_logic_ve

24、ctor(5 downto 0);signal BCDH, BCDM, BCDS,BCDN,BCDY,BCDR: std_logic_vector(7 downto 0);signal segDat: std_logic_vector(3 downto 0);signal blink: std_logic_vector(2 downto 0);signal set_reg, blink_clk: std_logic; component BCD port(DataIn : in std_logic_vector(5 downto 0); BCDOut : out std_logic_vecto

25、r(7 downto 0) ); end component;BEGIN process(mode) begin if (clr=1) then state=00; else if (modeevent and mode=1) then state blink blinkblink_clk, others=0); when 10 = blinkblink_clk, others=0); when 11 = blinkblink_clk, others=0); end case; end process; process(Mon, Year,d)begin case Mon is when 00

26、0001 = d case Year is when 010000 = d d d d d d d d d d d d d d d d d d d d d d d d=011110; end case;end process;process(clk)variable blink_cnt: std_logic_vector(13 downto 0);begin if (clr=1) then blink_clk0); else if (clkevent and clk=1) then if (blink_cnt=11000011010011) then blink_cnt:=(others=0)

27、; blink_clk=not blink_clk; else blink_cnt:=blink_cnt+1; end if; end if; end if; end process;process(clk, state)variable clk_cnt: std_logic_vector(16 downto 0);begin if (clr=1) then Hour=000000; Min=000000; Sec=000000; Year=000000; Mon=000000; Day0);set_reg if (clk_cnt=11000011010011111) then clk_cnt

28、:=(others=0); if (Sec=59) then Sec0); if (Min=59) then Min0); if (Hour=23) then Hour0); if (Day=d) then Day=000001; if (Mon=12) thenMon=000001;if (Year=63) thenYear=000001; else Year=Year+1; end if; else Mon=Mon+1; end if; else Day=Day+1; end if; else Hour=Hour+1; end if; else Min=Min+1; end if; els

29、e Sec if(k=1)then if (set=1) then if set_reg=0 then set_reg=1; if (Year=63) then Year=000001; else Year=Year+1; end if; end if; else set_reg=0; end if; else if (set=1) then if set_reg=0 then set_reg=1; if (Hour=23) then Hour0); else Hour=Hour+1; end if; end if; else set_reg if(k=1)then if (set=1) then if set_reg=0 then set_reg=1; if (Mon=12) then Mon=000001; else Mon=Mon+1; end if; end if; else set_reg=0; end if; else if (set=1) then if set_reg=0 then set_reg=1; if (Min=59) then Min0); else Min=Min+1; end if; end if; else set_reg if(k=1)then if (set=1) then if set_reg=0 then set_reg=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号