杨超宇 大学毕业论文_基于CPLD的数字钟设计_第1页
杨超宇 大学毕业论文_基于CPLD的数字钟设计_第2页
杨超宇 大学毕业论文_基于CPLD的数字钟设计_第3页
杨超宇 大学毕业论文_基于CPLD的数字钟设计_第4页
杨超宇 大学毕业论文_基于CPLD的数字钟设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、南京大学金陵学院毕 业 论 文(设 计)姓名:杨超宇学 号:2010020400041系 部:信息科学与工程学院专 业:通信工程题 目:基于CPLD的数字钟设计指导老师孙海洋助教/硕士提交日期2014年5月2号 摘 要本论文课题为基于CPLD的数字钟设计,设计要求实现时、分、秒以及年月日的显示,时钟以24小时制循环计数;并且可以通过按键调整时间。本实验以Verilog HDL来进行程序设计,软件环境为Quartus II,程序设计方法自顶向下,由多个模块一起组成了一个基于CPLD开发板的数字钟。本实验所用CPLD开发板主芯片采用MAX II系列的EPM240T100C5N,由分频模块、选择模块

2、、计数模块、键盘控制模块、以及译码显示模块组成。仿真和编译程序后,在CPLD开发板上下载验证,本系统由按键的输入来进行数字钟上时间日期的校对功能,能够完成时、分、秒和年月日的分别显示。关键词: 数字钟;硬件描述语言;Verilog HDL;CPLD;键盘接口ABSTRACTThis design is a digital clock based on CPLD development, with seconds minutes hours and year month day. count display to a 24 hour cycle count,which has proofed t

3、he timekeeping function and some other functions. The design use Verilog HDL hardware-description language descripts logic means for the system design documents. Tools environment is Quartus II, use top-down design to build a CPLD-based digital clock with other modules together .This CPLD developmen

4、t boards main system chips is EPM240T100C5N, it makes up of the rate-devide module, choose module, data decoding module, time module,and display module.Compile the design and simulation procedures before the programmable logic device to download verification, the system completes the seconds,minutes

5、,hours,years,months and days respectively, keys are used to modify this digital clock. Keywords:digital clock; hardware description language; Verilog HDL; CPLD; keyboard interface.目录摘 要 iABSTRACT ii第一章 绪论 31.1 选题背景 31.1.1 课题相关技术的发展 31.1.2 课题研究的重要性 41.2 课题研究的内容 4第二章 CPLD器件理论 62.1 CPLD简介 62.2 CPLD基本结构

6、 62.3 CPLD系统设计流程 62.4 CPLD开发编程原理 8第三章 数字钟总体设计方案 93.1 数字钟的构成 93.2 数字钟的工作原理 9第四章 单元电路设计 114.1 分频模块电路 114.2 校时控制模块电路 124.2.1 按键接口电路原理 124.2.2 按键接口的Verilog HDL描述 134.3 计数模块设计与实现 144.3.1 秒计数模块 144.3.2 分计数模块 154.3.3 时计数模块 154.3.4年月日计数模块 164.4 动态扫描及显示电路模块 174.4.1 动态扫描模块 174.4.2 显示模块 19第五章 实验结论与研究展望 205.1 实

7、验结论 205.2 研究展望 21致谢 22参考文献 23附录 各模块详细代码 24第一章 绪论伴随着科学技术的进步,信息技术也进入了一个飞速发展的阶段,当今社会是信息技术大量使用的社会,而且商品能力也一天比一天强大,制造技术一天比一天复杂,更新的速度一天比一天快。信息电子产品飞速发展则离不开微电子行业工艺制造水准飞速提高和电子商品开发设计技术飞速发展的有力支撑。电子产品开发设计的先进计数代表就是电气自动化,即EDA(Electronic Design Automatic技术。本实验使用Verilog HDL硬件描述语言1,该语言具有全方面,多功能的特点,有着非常强的描述能力,能够通过系统行为

8、级、寄存器传输级和逻辑门级三个层级的使用来进行设计;也支持对结构、数据流、行为三种形式的混合描述。这种硬件描述语言有着广泛的覆盖面和超强的抽象能力,所以在实际应用中被使用的愈加广泛。带有逻辑处理功能的加速处理器ASIC,是一种专用的集成系统电路。ASIC芯片CPLD与其他的芯片相比较其特殊性在于它较短的开发周期、较低的生产成本、相对先进的开发工具、过硬的质量以及可以随时在线检测等特点。按键是控制过程中是经常被使用的I/O交换接口,当经过设置的按键被按下时,系统完成该按键被设置的相应功能。所以按键输入信号所能实现的作用是和程序的设计紧密联系在一起。按键的物理结构有所不同,所以需使用不同的逻辑编码

9、。但是不论使用的编码是何形式,都会被转换成与输出效果对应的输入值,以实现输入输出的转换。电子化时钟给我们生活的方方面面都造成了非常大的改变,这些改变与对这些改变的更多需求也在丰富与扩展着钟表现有的功能。数字钟被运用于生活生产中的方方面面,报警器的自动触发、电路的开关与切换、自动控制通断的动力设备,以及各种各样的应用。因此,学习数字钟、扩展研究出更多的应用,是一个非常现实与重要的课题。1.1 选题背景本节从数字钟发展的实际情况与CPLD嵌入式应用开发技术2出发,通过本课题的需求,以及对数字钟发展现状的学习,来进行基于CPLD芯片系统设计数字钟的研究,以此来学习电子产品的设计技术。1.1.1 课题

10、相关技术的发展当今社会的电子产品3已经发展出了更多的功能,更小的体积,更低的功耗,相对传统电子产品,其显著提高在于大量运用大(超大)规模可编程逻辑器件,从而性能得到提高,体积得以缩小,同时,在降低产品功耗的同时大量使用现代化技术,提升了产品的竞争力和自动化程度,减短了开发周期。EDA4集诸多最新科技之所长而开发形成的一门新技术。采用全新的结构和先进的技术的美国Altera公司开发的可编程逻辑器件和Quartus II开发环境,强强联合,其较高的性能与非常短的开发周期为电子产品的设计与开发提供了巨大的便利。大规模可编程逻辑器件例如CPLD、FPGA芯片是EDA技术设计的主要载体5,它以硬件描述语

11、言为系统逻辑描述方式,主要工具为计算机上的软件开发系统和大规模可编程逻辑器件,通过相关软件,电子系统到硬件系统的逻辑编译通过软件的方式设计并自动完成逻辑分割、逻辑化简、逻辑映射、编程下载的工作。最终形成集成电子系统。本设计中Verilog HDL语言和CPLD器件相结合,由数码管动态显示时间。已有数字钟的设计有诸多的实现方式,使用CPLD开发板则有其他硬件不具备的特点,它简单易学,便利快速,还具有较高的设计与实验成功率。使用CPLD开发板来进行数字钟设计,充分发挥了CPLD器件的诸多优良特点,使用户使用十分便捷。所以,本课题设计使用CPLD可编程逻辑器件来进行。1.1.2 课题研究的重要性当今

12、社会中,新产品、新科技使人目不暇接,电子技术的发展也是层出不穷。我们可以自信的说,电子技术应用的地方遍布生活各个方面,我们的日常生活、工作以及我们的世界正被电子技术不断地改变。如今的时代,时间对我们越来越宝贵,现代生活节奏如此快,人们经常忘记了时间,而在某些重要场合或面对一些重要事情却忘记时间时,损失将会无法估量。基于这些无需争议的事实,我们必然需要一个准确稳定可靠的数字钟来提醒忙碌的我们。所以数字化钟表可以说是时代的产物。近年来,科技进步、社会发展、人们物质生活水平提高,使我们对数字钟的功能有了更加多样化的需求,不再停留在传统钟表那些单一的功能上。数字钟的发展在功能和外观上都发生着巨大的改变

13、6。1.2 课题研究的内容本课题是基于CPLD的数字时钟,设计要求是时间以24小时制为单位,动态显示时、分、秒以及年、月、日。可以对时间进行调整校对,能够对时、分、年、月、日进行单独的校对,使其符合标准时间。时间的校对由2个按键进行控制,分别为切换校对位置按键和增加数值按键。为了保证计时的稳定及准确,由晶体振荡器提供稳定的时钟。第二章 CPLD器件理论2.1 CPLD简介CPLD7器件是从PAL和GAL器件发展出来的器件,相对其他器件来说规模大,结构复杂,类属大规模集成电路范围。该数字集成电路可由程序员根据各自需要来自行构造逻辑功能。其基本设计方法是使用集成开发软件,用原理图、硬件描述语言等方

14、法,通过编译仿真生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计要求的数字系统。2.2 CPLD基本结构CPLD 其全称为Complex Programmable Logic Device,中文翻译为复杂可编程逻辑器件。它也属于大规模集成电路LSI (Large Scale Integrated Circuit里的专用集成电路ASIC (Application Specific Integrated Circuit。适合控制密集型数字型数字系统设计,其时延控制方便。CPLD是目前集成电路中发展最快的器件之一。 CPLD中的PLD即programmable logic devic

15、e,译为可编程逻辑器件,是一个可以产生任意逻辑输出的通用型数字逻辑电路器件。PLD有很高的集成度,足以满足设计一般的数字系统的需要,与门、或门、非门是PLD最基本的构成。 CPLD的结构是基于乘积项(Product-term)的,现在以Xilinx公司的XC9500XL系列芯片为例介绍CPLD的基本结构,如图2.2.1所示,其他型号CPLD的结构与此非常类似。CPLD可分为3部分:功能模块(Function Block)、快速互连矩阵(FastCONNECT Switch Matrix)和I/O控制模块。每个功能模块包括可编程与阵列、乘积项。2.3 CPLD系统设计流程通常一个大型的设计使用层

16、次化的描述方法8,把整个设计器件分成实现不同功能的模块,定义好各个模块之间的接口之后,进而细分去具体实现,此为自顶向下的方法。目前这种层次的设计方法已经得到了广泛的认可和使用。顶层设计仅需要定义整个系统的行为特征,不需要和具体的实现工艺相适应。因此,顶层模块设计可以合理使用综合优化工具将高层次描述转化成具体的网络表,使设计的转化变得简便。CPLD系统的整个设计流程如下所述:1.工程师采用“自顶向下”的方法来设计划分系统。2.使用Verilog HDL硬件描述语言来编写代码,使用Verilog或是VHDL来进行电路设计是使用最为广泛的方式,这种方式具有简单直接、易于理解的优点。另外,图形输入方式

17、有时也被使用。3.在软件中将代码编译成标准的Verilog HDL文件,根据提示检查修改语法错误。4.进行功能仿真,这一步的目的是为了检查功能设计的正确与否。在综合各模块前对代码进行仿真,能够缩短重复设计的次数和时间。当研究规模不大的时候可以省略这一步骤。5.生成网络表,利用网络表进行时序仿真,仿真得到的结果与具体器件的特性无关,因此在规模不大的设计中此步骤可略去。6.针对具体的目标器件及主芯片,将综合后的网络表文件利用适配器进行逻辑分割、逻辑优化、底层器件配置和布局布线等过程。7.第6步的配置过程完成后软件会产生几个特定文件,有适配报告、仿真模型和器件编程文件。此时得到的仿真模型中已经加入了

18、器件的特性。进行适配后的时序仿真是可以看出真实器件上会出现的情况如时延特性等,所以此时的仿真结果能比较正确的表现实际芯片的工作状态。如果仿真结果不符合设计要求,可以修改Verilog源代码或选择其他的器件,知道满足设计要求。本设计器件只有一种,所以,我们使用的是修改源代码的方式。这也是CPLD器件编程的优越之处。在经过上面的一系列过程之后,我们把适配器产生的文件通过下载电缆下载到CPLD开发板中。本设计使用usb-blaster来进行下载。2.4 CPLD开发编程原理影响硬件设计的原因非常多,预算成本、性能指标、开发周期等因素将会共同决定最佳方案,系统框图的设计,芯片的选择,设计PCB并最终生

19、产出样板。CPLD设计可分为两大块:硬件描述语言和软件设计工具。Verilog HDL和VHDL这两种硬件描述语言是当前CPLD设计中使用最为广泛的两种;软件主要是由Altera和Xilinx两大公司开发的综合EDA软件,目前被广泛使用的是QuartusII、MAX+plusII、Foundation、ISE等。设计输入方式主要分为以下两种:硬件描述语言输入方式和图形输入方式。硬件描述语言输入方式可以同时描述底层和顶层的设计,但是也存在无法达到较高速度的问题,也可能无法有效利用芯片。这种方法与程序员的逻辑思路和设计水准有很大关系。图形输入的方式下分三种形式,即电路原理图、状态机、以及波形描述。

20、第三章 数字钟总体设计方案3.1 数字钟的构成从数字钟的实质上来看9,不难发现所谓数字钟事实上是对1Hz标准频率进行分频并且计数的计数电路。由于启动电路时的时间初始值基本上不会与标准时间一致,所以增加一个时间调整电路就变得十分重要。同时,标准的1Hz频率信号必须精确且稳定,否则其误差积累到分、时将会是极大的误差。通常使用石英晶体振荡器10电路来产生1Hz标准频率。下图3.1告诉我们数字钟的基本结构框图。包含分频电路、校时电路、计数电路、译码显示驱动电路。这些电路模块中,校时电路功能灵活,另外,想要添加完善数字钟的功能可以通过增加电路模块来实现。数码管显示图3.1 数字钟的基本组成框图3.2 数

21、字钟的工作原理晶体振荡器产生的5MHz脉冲信号被用为数字钟的时间基准信号,分频器对其进行分频,随即输出标准1Hz脉冲信号。秒计数达到59后变为0时进位信号被触发,分计数器得到使能信号开始计数,当分计数器递加计数到59变为0时向时计数器传递进位使能信号,时计数器计数到24时变为0,以24小时制计数。如此循环达到循环显示时间的功能。计数出现误差或是和标准时间有偏差的时候,通过校时电路时、分、年、月、日进行校对。控制信号有两种,除了一般的校时信号之外还有切换显示年月日和时分秒的信号、切换校对位的信号。3个按键分别输入三种控制信号。时基电路由晶体振荡器产生,本CPLD开发板上晶体振荡产生的频率为50M

22、Hz,通过分频器分频之后得到1Hz标准脉冲信号。七段译码器完成译码的过程,数码管来显示数字。下图3.2为整个数字钟的模块图:图3.2 数字钟顶层模块图在本次设计中,晶体振荡器模块产生的50MHz信号作为分频器的输入信号以及其下各模块的系统时钟;分频器产生的三个信号分别输入给秒模块作为使能信号,输入给key_solve模块作为按键扫描信号,输入给scan模块作为数码管扫描信号。Choose模块输出的key1,key2,key3,key4,key5信号分别和其后的分、时、日、月、年计数模块中的key端口对应,输入校对使能信号。秒、分、时、日、月计数模块产生的cout进位信号则和下一级计数模块的cp

23、使能端对应,各计数模块输出的时间计数信号输入到scan模块进行统一编码输出,hex信号完成对数码管的片选,a3.0输出具体的用于数码管显示的编码。第四章 单元电路设计4.1 分频模块电路本数字钟的基础是晶振产生的高频脉冲,晶体振荡器振荡出的信号是否稳定以及输出频率准确与否决定着数字钟计时的准确性。石英晶体只能让某一特定频率的信号通过它,有着良好的选频特性。而且,振荡产生的信号频率与电路板上的的电阻、电容等一些器件的特性无关。石英晶体振荡电路输出的信号准确度极高。本设计需要1Hz的秒信号,因此利用分频模块将输出的信号分频使之成为1Hz秒钟信号。分频模块的组成如下图4.1所示。图4.1 秒信号产生

24、电路框图开发板自带的晶体振荡器电路给本数字钟电路提供一个稳定的50MHz的方波,并且输入到分频电路。分频电路的逻框图如下图4.2所示。图4.2 分频电路模块本电路对晶振脉冲信号进行分频。分频以后输出1Hz标准秒信号clk1、1KHz用于动态扫描显示模块信号clk1k和100Hz的按键扫描信号clk100。该分频模块的仿真如图4.3所示,为了便于观察减小分频系数,仿真结果显示同样适合实物开发板。图4.3 分频模块仿真图4.2 校时控制模块电路4.2.1 按键接口电路原理键盘接口电路部分在本课题中起到了切换显示和校时控制的功能。如下图4.4 4.5所示的是按键接口电路的原理。本课题采用的是所用开发

25、板上现有的按键接口,如图所示,分成按键电路和拨码开关电路,按键电路中,当输出信号为高电平时表示有按键被按下;4位拨码开关电路中,开关被推上去时,输出低电平。根据输出的电平高低以及相对应的按键译码电路就能对显示的时间日期进行校对以及切换显示时间与日期。 图4.4 按键电路 图4.5 拨码开关电路4.2.2 按键接口的Verilog HDL描述1.键码转换模块键码转换电路的框图如下所示。本模块完成的是按键扫码到按键编码的转化过程。 图4.6 键码转换逻辑框图该模块中有键盘方案解决以及键盘选择两个模块,键盘方案解决模块中,clk是由分频器分出的100Hz的扫描信号,输出的信号输入到choose模块中

26、进行译码选择所要校对的时间。key1key5分别对应修改分、时、日、月和年。Choose模块仿真图如下图4.7所示。图4.7 choose模块仿真图4.3 计数模块设计与实现4.3.1 秒计数模块计数模块就是实现对有效电平进行计数的电路,秒计数模块电路逻辑图如下图所示11。图4.8 秒计数模块框图cp输入的是秒钟使能信号,高电平时触发,信号来自分频器输出的1Hz信号;CLK输入的是系统时钟信号,同时起全局时钟的作用;s03.0输出的是秒的个位,s13.0输出的是秒的十位;cout输出进位使能信号,当秒位计到59时输出高电平使能信号,触发下一级分计数模块,其它时刻输出低电平。由于本模块中没有设计

27、对秒信号的校对功能,所以也没有相应的校对使能输入。秒钟计数的仿真波形图如下图4.9所示,仿真图符合设计的目的。图4.9 秒时钟模块仿真波形4.3.2 分计数模块分计数模块逻辑框图如下图4.10所示。图4.10 分计数模块逻辑框图该模块功能实现方式与秒模块相似,clk是全局时钟;cp是由上一级秒模块输出的进位信号;m03.0输出的是分位低位信号;m13.0输出的是分位高位信号;key是由键码选择电路输出key1传输的使能信号,当key1为高电平时,分位显示增加1,同时也对进位信号有效。该分计数模块仿真如下图4.11所示。图4.11 分计数模块仿真图4.3.3 时计数模块时计数模块与分计数实现方式

28、基本相同。输入信号具体含义和分计数模块中类似,下面显示时计数逻辑图。图4.12 时计数模块逻辑框图时计数模块仿真结果如下图4.13所示。图4,.13 时计数模块仿真图4.3.4年月日计数模块日、月、年三个计数模块实现原理与前文所述时、分、秒的模块大同小异,区别在于代码中对于循环的周期不同,同时日计数模块需要使用条件选择语句根据月份的变化来设置动态的循环周期。同时,也由上一级键盘选择译码模块输出的信号来进行具体日期的校对。下图4.14为日月年三个模块的逻辑框图。图4.14 年月日三个模块的逻辑框图年月日三个计数模块的仿真如下图4.15所示.图4.15-1年计数模块仿真图图4.15-2月计数模块仿

29、真图图4.15-3日计数模块仿真图4.4 动态扫描及显示电路模块4.4.1 动态扫描模块前面各计数器输出的信号以8421BCD的形式编码,动态扫描电路12将之转换成数码管显示所需要的逻辑值,然后输出数码管的片选信号和确定数码管显示的位选信号。显示时某块LED单独工作,显示块之间的显示间隔非常短,这样做的好处在于能够让每个LED显示出对应自己的信号。由于每位显示时间间隔非常小,小于人眼所能察觉的范围,即人眼的视觉暂留的现象,在人眼中观察到的就会是各LED块同时显示的形式。通常LED块之间的显示时间间隔为1ms10ms之间。动态扫描框图如下图4.18所示。此模块中的clk输入的是频率为1000Hz

30、的时钟扫描信号,由分频器分频输出;依据频率可以推断出每位显示的时间为1ms,本课题中需要扫描的数码管有8个,因此显示的间隔为8ms。set端输入的是切换信号,低电平时数码管显示年月日;输出为高电平时显示时分秒;其他输入端口接到计数器输出的信号;a3.0端口输出动态扫描得到的信号;hex7.0端口输出数码管的片选信号。本模块的逻辑框图见下图。图4.16 动态扫描逻辑框图该模块仿真图如下图4.17所示。图4.17 动态扫描模块仿真图4.4.2 显示模块显示模块实现的是将扫描模块产生的8421BCD信号转换成数码管显示所需的高低电平,由数码管显示数字。该模块的模块图如下所示。图4.18 显示模块逻辑

31、框图第五章 实验结论与研究展望5.1 实验结论将编译完成的程序下载到CPLD开发板上运行调试后,最终得到的成果与计划实现的成果基本相同,时、分、秒能够正确显示并且能通过控制按键进行校对。在此次数字钟开发设计中,我对有关数电模电的具体知识和应用有了更加深入的学习。通过这次课题学习使用Quartus II软件来进行顶层原理图的绘制,初步学会使用Verilog来进行电路设计和描述,程序的仿真等工作。另外,能够根据得到的仿真结果分析代码中存在的问题,然后对程序进行修改和完善。在本课题研究过程中,我先在电脑软件中进行仿真,然后在实际硬件上进行调试。这样做有效避免了错误程序可能对开发板造成的损害。但是仿真

32、和实际硬件上出现的现象可能不尽相同,这是因为无法面面俱到的考虑到实际硬件上各电路模块之间的具体衔接。另外器件本身的延时等问题也不能忽略,种种问题导致现实中下载到硬件上后会出现一些问题,因此仿真和实际电路运行还是有所不同,需要两者结合来仔细调试。本次的数字钟实现侧重点是按键模块、校时模块与各个模块之间的编程衔接,虽然本课题对按键接口和各个模块的代码已经成功编写,并正常显示且能进行校时,但是各模块之间的衔接与完善还有不少有待优化。经过这次的实验课题,我学习并且增强了设计电路的能力,也更加透彻的理解了数字钟的实现原理。在本数字钟实际硬件调试过程中遇到一些问题,具体讨论如下:1.当运行硬件所需的相关文

33、件下载到开发板上并且通电后,发现8位数码管显示的是日、时、分、秒和年、月之间相互切换,而不是设计的年月日、时分秒切换显示,通过修改译码显示模块得以修正。2.当日显示到达当月最后一天并向月进位时,日显示由30(31、28、29)变为00,不符合实际日计数的情况,通过修改日计数模块得以修正。3.在校对时间与日期时,设计要求是一个数一个数递增,但是实际调整时有时候会出现跳过中间数字显示的情况,例如从11直接增加到13而跳过了十二,这个问题是因为按键去抖动做的不好,但是由于开发板寄存器大小有限,没有足够的空间增加按键消抖模块,由于硬件资源的限制这里不做讨论。5.2 研究展望本课题设计由按键对年月日时分

34、进行调整校对,其功能有些繁琐,在实际生活使用时存在一些不便。因此提出修改计划,用一个按键来控制数码管的片选不便,切换要修改的数码管,原来只有一个按键控制计数的增加修改成由两个按键来实现加减计数。这样的设计虽然增加了一个按键,但是为实际应用提供了很大的便利。本课题是采用Verilog HDL硬件描述语言和CPLD芯片结合进行的数字钟的设计,其中可以体现EDA技术的发展使硬件设计软件化成为了可能,也为之提供很大的便利。以前复杂的电路设计变的简单易上手,且要修改和完善也时分便利,随着未来科学技术的发展,数字钟这一科技必然会随着时代的发展而不断进步,被开发出更便利更全面的功能来辅助人们的生活工作。 致

35、谢在论文完成之际,我首先要向指导老师孙海洋老师表示最诚挚的谢意。孙海洋老师认真负责的工作态度,严谨的治学精神,深厚的理论水平和丰富的实践经验使我获益良多。不管在理论还是在实践上,孙海洋老师都给予了我很大的帮助。理论上,孙老师耐心讲解电路原理图的绘制,Verilog HDL硬件描述语言的使用方法以及元器件的性能;在实际作业中,从程序的设计到最终各模块的调试,老师都帮助了我许多,使我得到很大的提高,这是我在这次课题中得到的宝贵财富之一。并且,这次课题研究的经验对我以后的学习和工作都会有巨大的帮助,再次感谢孙老师耐心的辅导。在这次毕业课题中,我的专业知识水平也取得很大的进步。这些进步独自一人不可能达

36、成,离不开老师和同学们的帮助。在这里我向曾经帮助和关心我的老师以及同学们致以诚挚的感谢。由于本人学识有限,加上时间仓促,本论文中难免会有错误和待改进之处,真诚欢迎各位师长、同学提出宝贵意见。我定会虚心接受,努力修正。参考文献1 王开军,姜宇柏,面向CPLD/FPGA的VHDL设计,机械工业出版社,2006,28-65。2 廖日坤,CPLD/FPGA嵌入式应用开发技术白金手册,中国电力出版社,2003,212-218。3 赵保经,中国集成电路大全,国防工业出版社,1985。4 谭会生,张昌凡,EDA技术及应用,西安电子科技大学出版社,2002。5 谢自美,电子线路设计、实验、测试,华中理工大学出

37、版社,2003。6 刘君,常明,秦娟,基于硬件描述语言(VHDL)的数字时钟设计,天津理工大学学报,2007,第23卷 第4期,40-417 张庆双,电子元器件的选用与检测,机械工业出版社,2003。8 高吉祥,电子技术基础实验与课程设计,电子工业出版社,2002。9 李可,数字钟电路及应用M,北京:电子工业出版社,1996。10 康华光,电子技术基础,高等教育出版社,200211康华先,电子技术基础(数字部分第四版M.北京:高等教育出版社, 2000. 213-224。 12 吕思忠,数子电路实验与课程设计,哈尔滨工业大学出版社,2001。附录 各模块详细代码1.分频模块module fen

38、pin(clk,clk1k,clk1,clk100;input clk;output reg clk1k;output clk1;output reg clk100;reg 14:0cnt;always (posedge clkif (cnt>=25000begincnt<=1; clk1k<=!clk1k; endelse cnt<=cnt+1;/assign clk1k=(cnt=5?1:0;reg 2:0cnt2;always (posedge clk1kif(cnt2>=5 begin cnt2<=1; clk100<=!clk100; end

39、 else cnt2<=cnt2+1;/assign clk100=(cnt2=2?1:0;reg 5:0cnt3;reg clk1;always (posedge clk100if(cnt3>=50begincnt3<=1; clk1<=!clk1; end else cnt3<=cnt3+1;endmodule 2.校时控制模块(1).按键解决module key_solve(clk_sys,clk,key,out;input clk,clk_sys;input 1:0key;output 1:0 out;reg 1:0d;always (posedge cl

40、kd<=key;wire en1;assign en1=d0 &(!key0;assign out0=d1 &(!key1;reg en2;always (posedge clk_sysen2<=en1;assign out1=(!en2&en1;Endmodule(2).键码转换模块module choose(k,out,out1,out2,out3,out4,out5;input 1:0k;output 3:0out;output out1,out2,out3,out4,out5;reg 5:0out;initialout<=6'b0000

41、01;always (posedge k0out<=out4:0,out5;assign out1=(out1?k1:1'b0;assign out2=(out2?k1:1'b0;assign out3=(out3?k1:1'b0;assign out4=(out4?k1:1'b0;assign out5=(out5?k1:1'b0;endmodule 3.秒计数模块module s(clk,cp,s0,s1,cout;input clk,cp;output reg3:0s0,s1;output cout;initial begin s0<=

42、2;s1<=1;end /*miao*/always (posedge cpbeginif(s0=9s0<=0;else s0<=s0+1;if(s0=9if (s1=5s1<=0;else s1<=s1+1;end wire en;assign en=(s0=9 && s1=5?1:0;reg m;always (posedge clkm<=en;assign cout= m && (!en;endmodule 4.分计数模块module min(clk,cp,key,s0,s1,cout;input key;input c

43、lk,cp;output reg3:0s0,s1;output cout;initial begin s0<=2;s1<=1;end /*miao*/always (posedge clkif(cp | keybeginif(s0=9s0<=0;else s0<=s0+1;if(s0=9if (s1=5s1<=0;else s1<=s1+1;end wire en;assign en=(s0=9 && s1=5?1:0;reg m;always (posedge clkm<=en;assign cout= m && (!

44、en;endmodule 5.时计数模块module hour(clk,cp,key,s0,s1,cout;input key;input clk,cp;output reg3:0s0,s1;output cout;initial begin s0<=2;s1<=1;end /*miao*/always (posedge clkif(cp | keybeginif (s0=3 && s1=2begins0<=0;s1<=0; end else beginif(s0=9s0<=0;else s0<=s0+1;if(s0=9if (s1=5s1&

45、lt;=0;else s1<=s1+1;end end wire en;assign en=(s0=3 && s1=2?1:0;reg m;always (posedge clkm<=en;assign cout= m && (!en;endmodule 6.日计数模块module ri(clk,cp,key,s0,s1,cout,p;input key;input clk,cp;output reg3:0s0,s1;output cout;input 5:0p;initial begin s0<=2;s1<=1;end /*miao*/

46、always (posedge clkif(cp | keybeginif (s0=p3:0 && s1=p5:4begins0<=1;s1<=0; end else beginif(s0=9s0<=0;else s0<=s0+1;if(s0=9if (s1=5s1<=0;else s1<=s1+1;end end wire en;assign en=(s0=p3:0 && s1=p5:4?1:0;reg m;always (posedge clkm<=en;assign cout= m && (!en;

47、endmodule 7.月计数模块module yue(clk,cp,key,s0,s1,cout,p,p_in;input key;input clk,cp;output reg3:0s0;output reg s1;output cout;output reg 5:0p;input p_in; /1=>28 0=>29initial begin s0<=2;s1<=1;end /*miao*/always (posedge clkif(cp | keybeginif (s0=2 && s1=1begins0<=1;s1<=0; end e

48、lse beginif(s0=9s0<=0;else s0<=s0+1;if(s0=9s1<=1;end end wire en;assign en=(s0=2 && s1=1?1:0;reg m;always (posedge clkm<=en;assign cout= m && (!en;always (*if(s1=0 && (s0=1 |s0=3 | s0=5 |s0=7 |s0=8p<=8'h31;else if(s1=1 && (s0=0 | s0=2p<=8'h31

49、;else if(s1=0 && s0=2 && p_in=1p<=8'h29;else if(s1=0 && s0=2 && p_in=0p<=8'h28;else p<=8'h30;endmodule 8.年计数模块module nian(clk,cp,key,s0,s1,p;input key;input clk,cp;output reg3:0s0,s1;output p;initial begin s0<=2;s1<=1;end /*miao*/reg 1:0cnt;

50、always (posedge clkif(cp | keybegincnt<=cnt+1;if(s0=9s0<=0;else s0<=s0+1;if(s0=9if (s1=5s1<=0;else s1<=s1+1;end assign p=(cnt=0?1:0;endmodule 9.动态扫描模块module scan(clk,set,s0,s1,m0,m1,h0,h1,r0,r1,yue0,yue1,y0,y1,hex,a,out,light;input clk;input 3:0s0,s1,m0,m1,h0,h1,r0,r1,yue0;input yue1;input 3:0

温馨提示

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

评论

0/150

提交评论