ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1.13MB ,
资源ID:4214341      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4214341.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于硬件描述语言VHDL的电子钟设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于硬件描述语言VHDL的电子钟设计.docx

1、基于硬件描述语言VHDL的电子钟设计基于硬件描述语言VHDL的电子钟设计 目 录1 引言 12 相关知识介绍 12.1 VHDL介绍 22.2 自顶向下设计方法 32.3 Quartus 开发平台 32.4 CPLD简介 43 电子钟系统设计方案 43.1 电子钟系统设计要求 43.2 系统设计方案概述及工作原理 44 电子钟顶层设计 54.1 顶层设计分析 54.2 顶层电路图 65 各模块电路的设计 65.1 正常计数时间功能模块 65.1.1 分频组件设计 75.1.2 60进制计数器设计 75.1.3 24进制计数器设计 85.2 定时器设定于计时功能模块 95.2.1 定时器组件设计

2、思路及原理图 95.2.2 定时器仿真波形 105.3 闹钟模块设计 115.3.1 闹钟组件的设计思路及原理图 115.3.2 仿真波形 115.4 输出选择与数码转换模块设计 125.4.1 秒/分查表组件设计 125.4.2 小时查表组件设计 135.5 扫描多路输出模块 145.5.1 bin2led 组件设计 145.5.2 scan4 组件设计 155.5.3 scan2 组件设计 166 各模块硬件实现结果 176.1 正常计数模块的硬件实现结果 186.2 定时模块的硬件实现结果 196.3 闹钟模块硬件实现结果 207 小结 20参考文献: 20附录:部分模块代码 211 引

3、言 随着电子技术的飞速发展,各种电子设备及数字系统的复杂度、集成度越来越高,现代电子产品性能进一步提高,产品更新换代的节奏越来越快,要求产品开发周期短、开发成本低、保密性和可修改及可扩展性好,因此对集成电路的设计方法不断提出了新的要求,因此EDA技术应运而生。所谓EDA(Electronic Design Automation)技术,是依赖目前功能已十分强大的计算机为工具,代替人完成数字系统设计、逻辑综合、布局布线和仿真工作的技术。目前,EDA技术已经成为支撑现代电子设计的通用平台,并逐步向支持系统级设计的方向发展。只有以硬件描述语言和逻辑综合为基础的自顶向下的设计方法才能满足日趋复杂的数字系

4、统设计要求。硬件描述语言有很多种,本文应用具有强大的电路描述和建模能力的VHDL语言进行电子钟系统设计,为以后深入学习和应用电子系统现代设计方法打好基础,并具有工程实用性。2 相关知识介绍本文所设计的电子钟系统是运行在Quartus环境下的一个小型的数字系统。我采用了自顶向下的设计方法,应用功能强大的硬件描述语言VHDL完成系统的设计仿真。下面就本设计所用到的技术作一下简单的介绍。2.1 VHDL介绍VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,是在ADA语言的基础上发展起来的硬件描述语言。VH

5、DL诞生于1983年,1987年12月,VHDL被接纳为标准硬件描述语言,即IEEE1076标准。经过不断更改和改善,1993年,VHDL重新修订并增加了一些功能,即IEEE 1076-93标准。目前在电子工程领域,作为IEEE的工业标准硬件描述语言,VHDL已成为事实上的通用硬件描述语言。电路设计的描述层次可分为系统级、算法级、寄存器传输级、门级和晶体管级,VHDL的建模范围可以从最抽象的系统级一直到门级,从多个层次对电路进行模拟仿真。它除了具有硬件特征的语句外,其语言形式和描述风格以及句法和一般的计算机高级语言相当类似,然而它又有同软件语言完全不同的性质。以下是一个VHDL的实例:LIBR

6、ARY IEEE; -IEEE库使用说明语句USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS -实体说明部分 PORT( a,b:IN STD_LOGIC; s:IN STD_LOGIC; y:OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE mux21a OF mux21 IS -结构体说明部分 BEGIN PROCESS(a,b,s) BEGIN IF s=0 THEN y=a; ELSE y=b; END IF; END PROCESS;END ARCHITECTURE mux21a;这个程序是一个简单的2选

7、1多路选择器的VHDL完整描述。它体现出了VHDL程序的一般结构:使用库(Use)定义区实体(Entity)定义区结构(Architecture)定义区。其中Use定义区描述的是这个程序使用的定义库,类似于C语言的头文件包括;Entity 定义区描述的电子的外部结构,就是指元件的输入和输出接口,它用以定义一个芯片的管脚状态;Architecture定义区里面是这个程序的关键部分,包括算法,功能,硬件的行为等都是在Architecture区里面描述的。一个完整的VHDL程序是对一个功能元件从外部和内部两个方面来进行描述,由于元件本身具有层次性,因此它既可以作为完成某一功能的逻辑电路单元而独立存在

8、,也可以作为一个部件,和其他功能元件一起构成更复杂的功能元件或数字系统,因此其单元的概念很清晰,可以灵活地应用于自顶向下的数字系统设计流程。2.2 自顶向下设计方法本设计采用自顶向下的设计方法来完成电子钟系统。所谓自顶向下的设计方法,是指在设计过程中,从数字系统的最高层次出发,进行仿真验证,再将系统划分成各个子模块。然后再对各个子模块进行仿真验证,合格之后经EDA开发平台由计算机自动综合成门级电路,进行门级仿真验证。自顶向下的方法强调在每个层次进行仿真验证,以保证系统性能指标的实现,以便于在早期发现和纠正设计中出现的错误。自顶向下设计方法有一些突出的优点:(1)适应于复杂和大规模的数字系统的开

9、发,便于层次式、结构化的设计思想。(2)各个子系统可以同时并发,缩短设计周期。(3)对于设计的系统进行层层分解,且在每一层次进行仿真验证,设计错误可以在早期发现,提高了设计的正确性。(4)逻辑综合之前的设计工作与具体的实现工艺、器件等无关,因此,设计的可移植性良好。2.3 Quartus 开发平台Quartus II是Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的全部功能。Quartus II可以产生并识别EDIF网表文件、VHDL网表文件,为其他 EDA 工具提供了方便的接口;可以在Quartus II集成环境中自动运行其他 EDA 工具。Quartus II

10、 软件的开发流程可概括为以下几步:设计输入、设计编译、设计时序分析、设计仿真和器件编程,具有FPGA和CPLD芯片设计的所有阶段的解决方案。(1)设计输入 Quartus II软件在File菜单中提供“New Project Wizard.”向导,引导设计者完成项目的创建。当设计者需要向项目中添加新的VHDL文件时,可以通过“New”选项选择添加。(2)设计编译 Quartus II编译器完成的功能有:检查设计错误、对逻辑进行综合、提取定时信息、在指定的Altera系列器件中进行适配分割,产生的输出文件将用于设计仿真、定时分析及器件编程。(3)设计定时分析 单击Project菜单下的“Timi

11、ng Settings.”选项,可以方便地完成时间参数的设定。Quartus II软件的时序分析功能在编译过程结束之后自动运行,并在编译报告的Timing Analyses文件夹中显示。(4)设计仿真 Quartus II软件允许设计者使用基于文本的向量文件(.vec)作为仿真器的激励,也可以在Quartus II软件的波形编辑器中产生向量波形文件(.vwf)作为仿真器的激励。(5)器件编程 设计者可以将配置数据通过MasterBlaster或ByteBlasterMV通信电缆下载到器件当中,通过被动串行(Passive Serial)配置模式或JTAG模式对器件进行配置编程,还可以在JTAG

12、模式下给多个器件进行编程。2.4 CPLD简介CPLD 是Complex Programmable Logic Device的缩写,即复杂可编程逻辑器件,内部结构为“与或阵列”。该结构来自于典型的 PAL 、GAL 器件的结构。任意一个组合逻辑都可以用“与或”表达式来描述,所以该“与或阵列”结构能实现大量的组合逻辑功能。CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。CPLD具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先

13、进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品不可缺少的组成部分。3 电子钟系统设计方案3.1 电子钟系统设计要求(1)能够对秒、分、小时进行计时,每日按24小时计时制;(2)能够作为计时器使用;(3)能够设定闹钟;3.2 系统设计方案概述及工作原理根据系统设计要求,系统设计采用自顶向下设计方法,由正常计时模块、定时器模块、闹钟模块、数码转换模块、扫描多路输出模

14、块组成。(1)首先按下复位开关rst进行复位清零操作,电子钟从新计时开始。(2)为了便于时钟计数,需要1hz的时钟信号。而实验箱上提供给系统的频率大于1hz,这里取22.1184MHZ,所以要对频率进行分频,用来实现系统输入信号产生一个1hz的时钟信号。(3)为了设定闹钟,本文设计了一个目标时间调整程序。将alarm的开关转成on,ok键是off时,6个数字即显示00:00:00,以等待输入。当按下调秒键sec_tune时,秒针将从0持续增加到59后,再返回0,任何时刻弹出按键即显示当时的值,调分键与调时键的原理与此相同。当ok键是on时,则停止设定,显示时间便到正常计时。(4)计时器的原理与

15、闹钟程序有相似之处。将stop的开关转成on,ok键是off时,6个数字即显示00:00:00,以等待输入。当按下调秒键sec_tune时,秒针将从0持续增加到59后,再返回0,任何时刻弹出按键即显示当时的值,调分键与调时键的原理与此相同。当ok键是on时,则停止设定,显示时间为所设定的计时起始时间,并开始进行计时,直到计时器显示00:00:00为止。(5)为了节省6个七段显示器显示所需的电流消耗,本文利用视觉暂留原理来让七段显示器轮流来显示。4 电子钟顶层设计4.1 顶层设计分析 对于电子钟的设计,这里将采用自顶向下的设计方法进行设计,因此首先需要进行电子钟的顶层设计。本节将首先介绍电子钟的

16、系统结构和模块划分,然后设计出顶层VHDL设计程序。 根据前边叙述的电子钟的设计要求、工作原理和设计方案,这里给出设计系统结构框图和外部管脚图分别如图4.1和图4.2所示。图4.1 系统结构框图图4.2 系统外部管脚图 由电子钟的外部管脚图可知,系统的输入输出信号包括:(1)复位开关信号rst:输入信号; (2)外部输入的时钟信号clk:输入信号;(3)闹钟触发信号alarm:输入信号;(4)定时器信号stop:输入信号;(5)定时器计时开始信号ok:输入信号;(6)秒/分/时调整信号sec_tune,min_tune,hour_tune:输入信号;(7)闹钟/定时器标志信号led_alarm

17、,led_stop:输出信号;(8)LED七段译码管的输出信号seg40.6,seg20.6:输出信号。由图4.1知,系统划分了五个模块,划分的这五个模块,每个模块都包含若干个组件,因此首先建立一个程序包把所有的组件包含在一起,以便于主程序模块的调用,然后再对每个组件进行编程设计。4.2 顶层电路图 顶层电路图见附页。5 各模块电路的设计5.1 正常计数时间功能模块 系统必须维持一个持续不断计数的时钟,从时间00:00:00到23:59:59循环不断。首先将22.1184MHZ的系统输入脉冲除以22118400得到1HZ的基本秒输入,然后除以60得到分数,再除以60得到小时数,再除以24得一个

18、满日指针,这些功能的实现要用到三种组件:分频组件,60进制计时组件,24进制计时组件。5.1.1 分频组件设计本设计采用的是CPLD芯片EP1K100QC208-3,内部晶振为22.1184MHz,但是数码显示管位扫描信号和其他模块的工作频率是1Hz。所以要用分频组件来对输入时钟进行22118400分频。下面图5.1是生成的分频组件元器件图形。接口:clk时钟输入,输入信号22.1184MHzf1hz1Hz输出信号图5.1分频组件器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.2图5.2 分频组件仿真波形图由图5.2知,输入信号的周期是80ns,输出信号的周期是176947211

19、8ns,1769472118除以80约等于22118400,证明分频是正确的。5.1.2 60进制计数器设计为了让计算过程容易阅读,个位数信号one(09)与十位数信号ten(05)先以整数形式出现,计算完成后再转换成位矢量形式(信号ones和tens),便于以后转换成七段LED显示码。虽然十进制仅需2位的位矢量,但为统一以后的七段显示器输出显示的需要,这里是以4位的位矢量表示的。if_then语句与适当的条件进位适合时钟计时,十进制的进位归零必须配合个位数的进位归零,而个位数的进位归零则不必配合十进制的进位归零,所以在if_then 语句中,十进制的计数动作应放在内层。秒数的计数以1Hz的输

20、入为触发信号,分数的计数以秒数的进位输出full_sec作为触发。下面图5.3是60进制计数器器件图形。接口: carry:1hz时钟信号或者是秒的进位信号 rst:复位信号 times:输出十进制的秒数或分数 full:进位信号图5.3 60进制计数器器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.4图5.4 60进制计数器仿真波形图由图5.4知,每来一个carry上升沿,计数器就加1,当计数器当到达第60个上升沿时,full=1,times由59归零,仿真符合60进制计数器的要求。5.1.3 24进制计数器设计 24进制计数器的结构和原理与60进制计数器相类似,只是将除以60

21、改为除以24,并在接收60分进位指针carry时,检查是否同时为23小时,再决定进位与否。因此个为数信号one与十位数信号ten 先以整数形式出现,计算完成后再转换成位矢量形式,便于以后转成了LED显示码。虽然十进制仅需2位的位矢量,但为统一以后的七段显示器输出显示的需要,这里是以4位的位矢量表示的。个位数的进位归零在十进制为2时,必须在one等于3时进位,同时送出进位指针full=1,1小时后将指针归零。下面图5.5是生成的24进制计数器器件图形。接口:carry:1hz时钟信号或者是分的进位信号 rst:复位信号 times:输出十进制的小时数 full:进位信号图5.5 24进制计数器器

22、件图在Quartus软件中进行仿真后,得到仿真时序图如图5.6图5.6 24进制计数器仿真波形由上图5.6知,carry信号的周期是1ms,当到达第24个上升沿时,full=1,times归零。仿真符合24进制计数器的要求。5.2 定时器设定于计时功能模块在此模块中,先利用定时器组件设定定时器的计时时间,并执行计时动作,取得计时中止指针,然后由计时中止指针标示出计时中止状态led_stop=1。5.2.1 定时器组件设计思路及原理图将stop的开关转成on,ok键是off时,6个数字即显示00:00:00,以等待输入。当按下调秒键sec_tune时,秒针将从0持续增加到59后,再返回0,任何时

23、刻弹出按键即显示当时的值,调分键与调时键的原理与此相同。当ok键是on时,则停止设定,显示时间为所设定的计时起始时间,并开始进行计时,直到计时器显示00:00:00为止。接口:rst:复位信号hz1:系统时钟1hz stop:输入停止信号 ok:计时是否开始 sec_tune:按下以调秒 min_tune:按下以调分 hour_tune:按下以调时 stop_sec:定时秒数 stop_min:定时分数 stop_hour:定时小时数 index:定时器输出停止信号 disp:显示信号图5.7定时组件器件图5.2.2 定时器仿真波形在Quartus软件中进行仿真后,得到仿真时序图如图5.8图5

24、.8定时器仿真波形由图5.8知,当ok=1时,确定定时时间为5秒,然后时间递减,减到零后完成定时。此时index=1,定时结束。5.3 闹钟模块设计在此模块中,先利用alarm_set组件确定闹钟的设定时刻,然后确认指针开关ok处于ok处于on(1)时,开始进行目前正常时间与闹钟设定时间的对比动作,对比完成即设定alarm_index为1,然后再进一步标示出闹钟设定状态led_alarm=1。5.3.1 闹钟组件的设计思路及原理图闹钟的功能就是设定特定的时间然后与正常时间对比,时间相同特定的等就会亮。这个组件的功能是调整秒分时以确定闹钟时间,并配合alarm,ok两键来确定动作。接口: rst

25、:复位信号hz1:系统时钟1hz alarm:输入闹钟信号 ok:闹钟是否开始 sec_tune:按下以调秒 min_tune:按下以调分 hour_tune:按下以调时 sec:闹钟的秒数 min:闹钟的分数 hour:闹钟的小时数图5.9闹钟组件器件图5.3.2 仿真波形在Quartus软件中进行仿真后,得到仿真时序图如图5.10。图5.10 闹钟模块仿真波形 由图5.10,当按下alarm键,即alarm=1时,可以进行调时分秒,然后当ok=1时,闹钟设定结束。5.4 输出选择与数码转换模块设计 通常6个时分秒数字所显示的是正常的计时闹钟,但在闹钟与定时器时间设定过程中,必须显示正在设定

26、的闹铃时间或定时器计时时间。另外,在定时器计时过程中,为了观察进行时间,必须显示正在计时的剩余时间。本模块的功能就是进行输出选择,并进行数码转换来完成将输出时间由整数形式转成BCD形式的工作。本模块用到了秒/分查表组件和小时查表组件。5.4.1 秒/分查表组件设计 在此设计中,为了计算方便,前面的都是以整数来处理时间,但在电路中,数值均以二进制的形式存储,所以需要设计一个查表程序来将秒数或分数的0到59共60个整数转换成二进制编码的十进制(BCD)表示法,以便将来转换成七段显示器格式输出。 下面图5.11是生成的秒/分查表器件图形。 接口: interg:输入0到59的整数信号 one:输出个

27、位的BCD码 ten:输出十位的BCD码图5.11秒/分查表组件器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.12图5.12 秒/分查表组件仿真波形由图知,十进制转化成二进制,one代表十进制的个位,ten代表十进制的十位。例如18是00011000。仿真结果证明程序可行。5.4.2 小时查表组件设计 小时查表组件的思路与秒/分组件相似,只是将小时数0到23共24个整数转换成二进制编码表示。 下面图5.13是小时查表器件图 接口:interg:输入0到23的整数信号 one:输出个位的BCD码 ten:输出十位的BCD码图5.13 小时查表组件器件图在Quartus软件中进行仿

28、真后,得到仿真时序图如图5.14 图5.14小时查表组件仿真波形图由图知,十进制转化成二进制,one代表十进制的个位,ten代表十进制的十位。例如5是00000101。仿真结果证明程序可行。5.5 扫描多路输出模块 为了节省IC的输出引脚及耗电量,可以将4组数字输出或2组数字输出作为多路输出;另外使用四合一型七段显示器与视觉暂留效应可降低显示耗电量。首先将6个数字通过bin2led组件将BCD码转换成七段显示器码,然后分别将分秒的4个数字通过scan4组件扫描输出,而将小时数的2个数字通过scan2组件扫描输出,最后完成整个电子钟的功能。5.5.1 bin2led 组件设计 在一般电路中,数值

29、均以二进制的形式存储与计算,但是要将其输出值七段译码管显示时,则必须提供一个电路模块专门将二进制转换成十进制输出使用。此处我们以查表方式来设计转换电路,使用并行语句with_select,列出0到9等10中对照数值情况。若为10及其以上的数字,则显示错误信息“E”。本设计用的实验平台的七段译码管是共阴极的。 下面图5.15是bin2led的器件图。 接口:bin:0到9的二进制表示形式,输入信号 led:七段译码管显示管对应显示的数值图5.15 bin2led组件器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.16图5.16 bin2led组件仿真波形图由上图分析,输入的是0到9

30、的二进制表示形式,输出的是七段显示译码,本设计的七段显示器是共阴极的,所以,如输入时6的二进制0110,输出是1101101。仿真证明程序是可行的。5.5.2 scan4 组件设计 在本组件中,sel线选择控制输出4组数字a,b,c,d,轮流输出至多路输出mux_out;同时,电源控制信号pa,pb,pc,pd也同步配合多路输出。 下面图5.17是scan4器件图。 接口:rst:复位信号 clk:外部时钟信号 a,b,c,d:分秒的各位数的七段译码 pa,pb,pc,pd:驱动信号图5.17 scan4组件器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.18图5.18 scan

31、4仿真波形图从上图可知,clk每来一个上升沿,输出muxout就输出a,b,c,d中的一组,同时对应pa,pb,pc,pd分别等于1,如clk来第一个上升沿,输出muxout是a组,同时pa=1。符合多路输出的原理,此组件的程序可行。5.5.3 scan2 组件设计 本组件与scan4组件相似,sel线选择控制输出2组数字a,b,轮流输出至多路输出mux_out;同时,电源控制信号pa,pb也同步配合多路输出。 接口:rst:复位信号 clk:外部时钟信号 a,b:小时的各位数的七段译码 pa,pb:驱动信号图5.19 scan2器件图在Quartus软件中进行仿真后,得到仿真时序图如图5.20图5.20 scan2 仿真

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1