基于FPGA的数字钟控制器设计_第1页
基于FPGA的数字钟控制器设计_第2页
基于FPGA的数字钟控制器设计_第3页
基于FPGA的数字钟控制器设计_第4页
基于FPGA的数字钟控制器设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、四川理工学院毕业设计论文 基于FPGA的数字钟控制器设计学 生:史凯学 号:10021050117专 业:电子信息科学与技术班 级: 2010.1指导教师:徐金龙 四川理工学院自动化与电子信息学院二O一四年六月四川理工学院毕业设计论文基于FPGA的数字钟控制器设计摘要:本设计采用EDA技术,利用硬件描述语言VHDL为系统逻辑描述手段设计电路,以Quartus II 软件为设计平台,进行基于FPGA的数字时钟电路的方案设计、程序设计输入、编译和仿真。该时钟由分频模块、键盘输入模块、控制模块、计时模块、译码显示模块、闹铃模块以及报时模块组成。在可编程逻辑器件FPGA上实现电路设计,该时钟使用千分频

2、产生1HZ的时钟源,具有时、分、秒计数显示功能,以24小时循环计时并且具有清零、调节小时、分钟、整点报时和闹铃功能。本设计的电路简单,但功能齐全, FPGA的设计改动非常方便,只用改变程序设计出相应的内部模块就可以实现一些基本门电路的功能。根据需要可以增添日历、温度显示等功能,所以本设计具有很强的升级前景。关键词:数字时钟;EDA;VHDL;FPGA;可编程逻辑器件Design of digital clock controller based on FPGASHI Kai(Sichuan University of Science and Engineering, Zigong, China

3、, 643000)Abstract: This design uses EDA technology, using hardware description language VHDL description of the means for the system logic design file to Quartus II design software platform for FPGA-based design digital clock circuits, program design entry, compilation and simulation operation, the

4、clock by the control module, the timing module, data decoding module, display and timekeeping module on FPGA programmable logic device testing system to achieve the functional design requirements, the design of a multi-functional digital clock, using thousands divider 1HZ clock source, with hours, m

5、inutes, seconds count display features a 24-hour cycle time and has cleared, adjust the hours, minutes, hourly chime and alarm function. The design of the circuit is simple, but fully functional, FPGA design changes is very convenient, just by changing the appropriate internal procedures designed to

6、 achieve functional modules can be some basic gates. According to need can add a calendar, temperature display and other functions, so the design has a strong outlook upgrade.Keywords: Digital clock; EDA; VHDL; FPGA; programmable logic device目录摘要IAbstractII第1章 引言11.1 课题研究的意义11.2 方案的比较21.3 设计方案的概述31.

7、4 毕业设计任务3第2章 EDA技术简介42.1 EDA技术的发展42.2 FPGA概述52.2.1 什么是可编程逻辑器件62.2.2 工作原理62.2.3 FPGA基本结构62.2.4 FPGA系统设计流程82.3 QuartusII设计平台102.3.1 软件开发环境及基本流程102.3.2 具体设计流程12第3章 数字钟的整体设计方案153.1 数字钟的构成153.2 数字钟的工作原理16第4章 电路程序设计与仿真174.1 分频模块电路设计与仿真174.1.1 分频模块的程序设计174.1.2 分频模块的仿真184.2 键盘控制设计与仿真194.2.1 键盘接口电路原理194.2.2

8、按键消抖模块的程序设计204.2.3 按键消抖模块的仿真224.2.4 键扫描模块的程序设计224.2.5 键扫描模块的仿真254.2.6 码转换模块的程序设计264.2.7 码转换模块的仿真284.2.8 按键连接模块的程序设计284.2.9 按键连接模块的仿真304.3 计数模块设计与仿真314.3.1 秒(分)计数模块的程序设计314.3.2 秒(分)模块的仿真324.3.3 小时计数模块程序设计334.3.4 小时计数模块的仿真354.4 闹钟模块设计与仿真364.4.1 闹钟模块的程序设计364.4.2 闹钟模块的仿真374.5 整点报时模块设计与仿真384.5.1 整点报时模块的程

9、序设计384.5.2 整点报时模块的仿真394.6 动态扫描显示模块设计与仿真394.6.1 动态扫描显示模块的程序设计394.6.2 动态扫描显示模块的仿真42第5章 总结435.1 实验结论435.2 研究展望44致谢45参考文献4649第1章 引言1.1 课题研究的意义人们很早以前便有了时间的概念,并发明了一系列技术装置,三千多年前,我国祖先最早发明了用土和石片刻制成的“土圭”和“日规”两种计时器,成为世界上最早发明计时器的国家之一,可见时钟的重要性,现在更是一个注重时间的社会,所以研究数字时钟能够给人们带来极大的便利,对时钟的数字化研究有利于人们更准确的了解时间,更有条不紊的完成工作,

10、智能化数字时钟的研究对丰富人们的生活具有重要意义。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。时间的宝贵是个亘古不变的真理,然而工作的忙碌性和繁杂性很容易让人忘记当前的时间或是工作中不能及时方便地知晓时间。交通上,火车汽车要准时到达,航班要准时起飞;在日常生活中,学校要求上学准时,公司召开的会议要求参加准时,重要约会要求到达准时;在工业生产中,许多工作环节都规定了精准的时间、间隔以及次序。所以说,随时准确地知道时间并且利用时间是学习、工作、生活的必要要求。FPGA

11、是一种集成电路芯片,它将各种功能集成到一块硅片上并且内含完善的微型计算机系统。FPGA的优点有集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等,所以本设计讨论的电子时钟系统就是利用FPGA制成。电子时钟与机械时钟相比具有很多优越性。首先,其主要特点是直观性,电子时钟可以通过数字显示反映出当前的时间。其次在使用寿命方面,因为电子钟不是机械驱动,所以使用寿命更长。然后在准确度方面,由于应用了电子集成电路和石英晶体振荡器,数字时钟的精准度远远超过了老式石英钟的石英机芯驱动。最后,电子时钟还能大大扩展老式钟表的功能,在准确显示时间得基础上,还可借助FPGA实现诸如闹铃、定时、自动报警等

12、功能。电子时钟的意义不仅仅在于反应时间本身,这个时间系统还可以当做一个单位模块应用于其他设备中,比如定时广播、定时开关烤箱、定时关闭路灯,以及其他各种定时电气的自动启用等设备,都是内嵌了电子时钟而实现其时间功能的。因此,研究电字时钟及其拓展电路的应用,将会对以后研究其他自动化设备产生积极意义。随着现场可编程门阵列(FPGA)的出现,电子系统向集成化,大规模和高速度等方向发展的趋势更加明显,FPGA是特殊的ASIC芯片,ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器,FPGA与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及

13、可实时在线检测等优点,故利用FPGA这一新技术手段俩研究电子钟具有重要意义。1-81.2 方案的比较时钟的实现具体有三种方法。一是通过单纯的数字电路来实现;二是使用单片机来控制实现;三是使用可编程逻辑器件(CPLD/FPGA)来实现。由于纯数字电路实现不仅造价很高、设计麻烦,且后期的调试与验证会有很多连线与布局的问题,此方法已经很不实用了,所以放弃此方法;而第二种和第三种方法均是采用一个主控芯片来控制时钟电路,再外接不同的模块来实现完整的功能,需进一步说明两种方法的不同。1单片机单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储

14、器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。2可编程逻辑器件可编程逻辑器件PLD(Programmable Logic Device) :PLD是做为一种通用集成电路生产的,他的逻辑功能按照用户对器件编程来搞定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。这样就可以由设计人员自行编程而把一个数字系统“集成”在一片PLD上,而不必去请芯片制造厂商设计和制作专用的集成电路芯片了。相比较而言,单片机一般用于操作控制,PLD一般用于组合逻辑,功能各不相同

15、,但PLD功能比普通的单片机更强、速度更快、价格也越来越便宜。并且PLD更加高端一些,灵活性更强,近来发展很快,之后的电子技术发展PLD的应用将会非常广泛。选择PLD进行设计会对以后的专业发展有很大的帮助,所以选择第三种方法即采用可编程逻辑器件进行设计。1.3 设计方案的概述本方案以FPGA芯片为核心,将外接时钟信号送至FPGA作为时钟基准信号和动态扫描信号。在芯片内部分别设计出数字钟的各个模块,如分频模块、计时模块、闹钟模块、整点报时模块和动态扫描模块等。将各位信号送出至数码管显示。本方案的电路比较简单,只用外接一个稳压电源为主控芯片和数码管供电,再接一个晶振和一个数码管即可。本设计的电路简

16、单,但功能齐全,可以设置闹钟、时间校对和整点报时,FPGA的设计改动非常方便,只用改变程序设计出相应的内部模块就可以实现一些基本门电路的功能。根据需要可以增添日历、温度显示等功能,所以本设计具有很强的升级前景。9-141.4 毕业设计任务本设计主要研究基于FPGA的数字钟,要求时间以24小时为一个周期,显示时、分、秒。具有校时、设闹钟及整点报时的功能,可以对时、分、秒进行单独校对,使其校正到标准时间。第2章 EDA技术简介20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编

17、程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强

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

19、使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的

20、整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。EDA技术的概念EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB

21、版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。设计方法:(1) 前端设计(系统建模RTL 级描述)后端设计(FPGAASIC)系统建模。(2) IP复用。(3) 前端设计。(4) 系统描述:建立系统的数学模型。(5) 功能描述:描述系统的行为或各子模块之间的数据流图。(6) 逻辑设计:将系统功能结构化,通常以文本、原理图、逻辑图、布

22、尔表达式来表示设计结果。(7) 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性及时序特性。2.2 FPGA概述FPGA(Field Programmable Gate Array)现场可编程逻辑门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC) 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和

23、更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本。2.2.1 什么是可编程逻辑器件在数字电子系统领域,存在三种基本的器件类型:存储器、微处理器和逻辑器件。存储器用来存储随机信息,如数据表或数据库的内容。微处理器执行软件指令来完成范围广泛的任务,如运行字处理程序或视频游戏。逻辑器件提供特定的功能,包括器件与器件间的接口、数据通信、信号处理、数据显示、定时和控制操作、以及系统运行所需要的所有其它功能。逻辑器件又分为固定逻辑和可编程逻辑,固定逻辑是器件复杂性不同,从设计、原型到最终生产,当应用发生变化时就要从头设计,可编程逻辑器件较固定的优点就在于当应用

24、发生变化和器件工作不合适时不用从头设计,直接从新编写逻辑器件后就可以了,这样就节省了前期的开发费用和周期。2.2.2 工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找

25、表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程15-17。2.2.3 FPGA基本结构FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB-Configurable Logic Bl

26、ock)、输入/输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、

27、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变量的逻辑函数。可编程开关矩CLBCLBCLBCLBCLBCLBBCLBCLBCLBCLB矩CLBCLBCLB块CLBCLBBCLBCLBCLBCLBCLBCLB输入输出模块互连资源图2-1 CLB基本结构CLB中有许多

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

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

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

31、计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图2-2所示系统划分编译器代码级功能仿真综合器适配前时序仿真适配器CPLD/FPGA实现适配后仿真模型适配后时序仿真适配报告ASIC实现VHDL代码或图形方式输入仿真综合器件编程文件图2-2 CPLD/FPGA系统设计流程流程说明:1.工程师按照“自顶向下”的设计方法进行系统划分。2.输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直

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

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

34、3 QuartusII设计平台2.3.1 软件开发环境及基本流程本设计所用软件主要是QuartusII,在此对它做一些介绍。QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera公司的QuartusII 开发工具人机界面友好、易于使用、性能优良,并自带编译、仿真功能。QuartusII软件完全支持VHDL设计流程,其内部嵌有VHDL逻辑综合器。QuartusII 也可以利用第三方的综合工具,如FPGA Compile

35、r II,并能直接调用这些工具。同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具。此外,QuartusII与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA技术。QuartusII包括模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或者打开其它相关窗口

36、。图2-3上排所示的是QuartusII编译设计主控界面,它显示了QuartusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。图2-3下排的流程框图是与上面的QuartusII设计流程相对照的标准的EDA开发流程。图2-3 Quartus II 设计流程在设计输入之后,QuartusII的编译器将给出设计输入的错误报告。QuartusII拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进行编译后,可对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真检测无误后,便可将下

37、载信息通过QuartusII提供的编程器下载入目标器件中了。QuartusII图形用户界面的基本设计流程如下:1.使用New Project Wizard(File菜单)建立新工程并指定目标器件或器件系列。2.使用Text Editor(文本编辑器)建立 Verilog HDL、VHDL或Altera硬件描述语言(AHDL)设计。可以使用Block Editor(原理图编辑器)建立流程图或原理图。流程图中可以包含代表其它设计文件的符号;还可以使用MegaWizard Plug-In Manager生成宏功能模块和IP内核的自定义变量,在设计中将它们实例化。3.(可选)使用 Assignment

38、 Editor、Settings 对话框(Assignments 菜单)、Floorplan Editor或LogicLock功能指定初始设计的约束条件。4.(可选)使用SOPC Builder或DSP Builder建立系统级设计。5.(可选)使用Software Builder为Excalibur器件处理器或Nios嵌入式处理器建立软件和编程文件。6.使用Analysis & Synthesis对设计进行综合。7.(可选)使用仿真器对设计执行功能仿真。8.使用Fitter对设计执行布局布线。在对源代码进行少量更改之后,还可以使用增量布局布线。9.使用Timing Analyzer对

39、设计进行时序分析。10.使用仿真器对设计进行时序仿真。 11.(可选)使用物理综合、时序底层布局图、LogicLock功能、Settings对话框和 Assignment Editor进行设计优化,实现时序关闭。12.使用Assembler为设计建立编程文件。 13.使用编程文件、Programmer 和Altera硬件编程器对器件进行编程;或将编程文件转换为其它文件格式以供嵌入式处理器等其它系统使用。14.(可选)使用SignalTap II Logic Analyzer、SignalProbe功能或Chip Editor对设计进行调试。15.(可选)使用Chip Editor、Resour

40、ce Property Editor和Change Manager进行工程更改管理。2.3.2 具体设计流程1.建立工作库文件夹和编辑设计文件首先建立工作库目录,以便存储工程项目设计文件。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库。一般来说,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。2.创建工程使用New Project Wizard可以为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称,还可以指定要在工程中使用的设计文件、其它源文件、用户库和

41、EDA工具,以及目标器件系列和具体器件等。3.编译前设置在对工程进行编译处理前,必须做好必要的设置。步骤如下:a.选择FPGA目标芯片b.选择配置器件的工作方式c.选择配置器件和编程方式d.选择输出设置e.选择目标器件闲置引脚的状态4.全程编译QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。在这一过程中,将设计项目适配到FPGA目标器中,同时产生多种用途的输出文件。编译器首先检查出工程设计文件中可能的错误信息,供设计者排除。然后产生一个结构化的以网表文件表达的电路原理图文件。图2-4 全编译成功后出现信息提示

42、如果编译成功,可以见到如图2-4所示的工程管理窗口左上角显示了工程(例如工程div)的层次结构和其中结构模块耗用的逻辑宏单元数;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等;最下栏是编译处理信息;中栏式编译报告项目选择菜单,单击其中各项可以详细了解编译与分析结果。 5.时序仿真工程编译通过后,必须建立VWF文件对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。18-21 第3章 数字钟的整体设计方案3.1 数字钟的构成数字钟实际上是一个对标准频率( 1Hz)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电

43、路上加一个校时电路,同时标准的1Hz时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图3-1所示为数字钟的一般结构框图。主要包括时问基准电路、计数器电路、控制电路、译码和显示电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。输入调试和设闹秒计数六十进制分计数六十进制时计数二十四进制动态扫描显示晶振分频整点报时六位数码管图3-1 数字钟的结构框图控制开关有五个,分别为复位开关(用于系统复位清零)、设闹与时钟切换开关(用于设置闹钟和时钟的切换)、调秒开关(用于调整闹钟或时钟的秒位)、调分开关(用于调整闹钟或时钟的分钟位)、调时开关(用于调整闹钟或时钟的小时位

44、)。晶振为1KHz石英晶体振荡器,产生稳定的频率为1KHz的时钟信号,接至芯片内的分频模块,分成1Hz信号,1KHz信号接至动态扫描模块作为扫描信号,1Hz信号接至秒计数模块作为时钟基准信号。动态扫描模块输出时、分、秒的显示信号和位选信号接至六位数码管,作为动态扫描显示信号。扫描的频率由分频电路从外接晶振分频得到,且六位数码管的电源有外接稳压电源提供。3.2 数字钟的工作原理晶体振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器分别输出标准秒脉冲(1Hz)。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻l”的规律计数。计满后各计数器清零

45、,重新计数。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校小时、校分或校秒。在控制信号中除了一般的校时信号外,还有时钟清零信号、设闹与计时显示的切换信号。控制信号由矩阵按键输入并加有按键去抖电路。时基电路可以由石英晶体振荡电路构成,如果晶振频率为1KHz,经过10000分频就可以得到秒脉冲信号。显示由六位七段数码管构成,通过动态扫描译码显示,可节省I/O资源。第4章 电路程序设计与仿真4.1 分频模块电路设计与仿真晶体振荡器是构成数字式时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定。石英晶体的选频特性非常好,只有某频率点的

46、信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的R、C元件的数值无关。因此,这种振荡电路输出的是准确度极高的信号。然后再利用分频电路,将其输出信号转变为秒信号和扫描信号,其组成框图如图4-1所示。晶振分频电路图4-1 秒信号产生电路框图4.1.1 分频模块的程序设计本系统使用的晶体振荡器电路给数字钟提供了一个频率稳定准确的1KHz的方波信号,其输出至分频电路。分频电路的逻辑框图如图4-2所示:图4-2 分频逻辑框图分频电路的程序如下:LIBRARY IEEE; -库说明USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGI

47、C_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin IS PORT (clk1k:in std_logic; -分频输入 ft:out std_logic); -分频输出END fenpin;ARCHITECTURE a OF fenpin ISSIGNAL fm:STD_LOGIC;BEGINPROCESS(clk1k) -分频进程VARIABLE num:integer range 0 to 500;BEGINIF clk1k'event AND clk1k='1' THEN -时钟上升沿有效 IF n

48、um<500 THEN -对晶振进行1HZ分频 num:=num+1; ELSE num:=1; fm<=not fm; END IF ;END IF;ft<=fm;END PROCESS;END a;1KHz晶振的信号接至去抖模块和动态扫描模块作为扫描信号;此分频电路输出频率为1Hz的信号,输出至秒计数模块作为时钟计时的秒基准信号。当然秒信号必须非常精确,否则时钟会出现较大的误差,所以必须对秒信号进行测试,直至符合要求。4.1.2 分频模块的仿真仿真结果如图4-3示:(1)输入clkln: 1KHz晶振产生的稳定频率 输出 ft: 为分频产生的1Hz频率率(2)由仿真波形可

49、看出分频模块产生了一个1S的信号,即1HZ频率,满足程序要求图4-3 分频电路仿真波形4.2 键盘控制设计与仿真4.2.1 键盘接口电路原理图4-4 键盘接口电路校时控制模块在本系统中也就是键盘接口电路部分。下面先介绍键盘接口电路的工作原理,如图4-4本系统采用的就是这种行列式键盘接口,相对个按键的键盘接口来说节省了I/O接口。行线通过一个电阻被上拉到+5V电压。行线与按键的一个引脚相连,列线与按键的另一个引脚相连。平时列线被置成低电平,没有按键被按下的时候,行线保持高电平,而有按键被按下的时候,行线被拉成低电平,这时候控制器就知道有按键被按下,但只能判断出在哪一行,不能判断出在哪一列,因此接

50、下来就要进行键盘扫描,以确定具体是哪个按键被按下。键盘扫描的过程事将列线逐列置成低电平,然后读取行线状态,直到行线中出现低电平,可知这时哪一列是低电平,然后将行线与列线的状态装入键码寄存器,进行按键译码,得到按下的按键的相应编码,这样就完成了按键扫描的过程。当然,一个完整的按键扫描过程还需要配合相应的键盘去抖手段才能正确的识别按键,不会发生重键和错误判断等情况。4.2.2 按键消抖模块的程序设计按键消抖的逻辑框图如图4-5所示:图4-5 按键消抖逻辑框图本模块用于当有按键按下时,采用软件消抖的办法去除按键抖动。模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读

51、行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按键按下的信号。该模块有一个时钟输入端口,输入时钟信号是分频出来的1KHZ的时钟;有一个输入端口与行线相连,用于输入行线状态;一个输出端口,用于输出有按键按下的信号。这段程序是实现按键消抖,在这里实现的比较简单,原理是当有按键按下的时候,temp1会变成低电平,这时把sig2 变成高电平,如果此时counter不为“1111”时,内部计数器计数,从“0000”直到“1111”,当计数到“1111”时,key_pre输出高电平,同时计数器清零。由于计数脉冲为1KHZ,故从有按键按下到输入信号产生大概需要15ms。如果有按键抖动的话,t

52、em1会在“0”和“1”之间变动多次,但是计数过程不会停止,原因是计数由sig2的电平决定,而sig2一旦变成高电平,再要变成低电平,需要计数完成即counter等于“1111”时。所以计数过程不会受抖动影响。一旦计数完成,抖动已经过去,不会发生重键现象了,这样就去除了抖动。该电路的VHDL程序如下:LIBRARY IEEE; -库说明USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY qudou ISPORT(clk1:IN STD_LOGIC; -系统

53、时钟 row:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -延时时间 key_pre:OUT STD_LOGIC); -按键标志位END QUDOU;ARCHITECTURE behav OF qudou IS SIGNAL sig1,counter:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL tmp1,sig2:STD_LOGIC;BEGIN sig1<=row; tmp1<=sig1(0)and sig1(1)and sig1(2)and sig1(3); key_pre<=counter(0)and counter(1

54、)and counter(2)and counter(3);PROCESS(clk1) -启动进程BEGIN IF(clk1'event and clk1='1')THEN -上升沿有效 IF(tmp1='0')THEN IF(sig2='0')THEN sig2<='1' END IF; END IF;IF(sig2='1')THEN -延时消抖 IF(counter="1111")THEN sig2<='0' counter<="0000" ELSE counter<=counter+'1' END IF; END IF;END IF;END PROCESS;END behav;4.2.3 按键消抖模块的仿真去抖模块的仿真波形图如图4-6示图4-6 按键消抖逻辑仿真波形(1)输入 clk1:为1KHZ的时钟信号 row:为计时模块,设定时间输出 key_pre:判断是否有键按下(2)当计时达到15ms时,输出产生高电平,表示有键按下,能够实现按键消抖功能。4.2.4 键扫描模块的程序设

温馨提示

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

评论

0/150

提交评论