VHDL课程设计

2018-10-18 16:45

可编程逻辑器件及应用课程设计

题 目:姓 名:学 号:班 级:同组人员:指导教师:完成日期:

数字电子钟设计与实现 11111 111111111 111111111 1111 1111 111111111 目录

一、 设计目的 二、 设计内容 三、 设计原理 四、 设计方法

4.1分频器(输入1024Hz频率,输出1Hz和512Hz信号)

4.2六十进制计数器 4.3二十四进制计数器

4.4整点报时模块(数据选择器) 4.5校时校分模块 4.6完整数字钟

4.7开发平台及硬件显示结果 五、 课程设计总结

一、 设计目的

1. 熟练的运用数字系统的设计方法进行数字系统设计 2. 掌握较复杂的数字系统设计

3. 掌握原理图设计方法和VHDL语言设计方法

二、 设计内容

分别用原理图和VHDL语言设计

1. 显示时、分、秒的数字钟,显示格式如下:

具有清零、校时、校分、整点报时等功能

三、 设计原理

该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。

四、设计方法

4.1 分频器(输入1024Hz频率,输出1Hz和512Hz信号)

数字钟系统中需要1Hz、512Hz、1024Hz三种脉冲信号。1Hz信号用于计数的秒信号,也用于校时、校分的信号,1024Hz和512Hz用于整点报时。由于系统板上提供1024Hz信号,用分频器可得到这些信号。

1) 原理图设计

原理图设计时,可用三个16进制计数器74161串接后得到1Hz、512Hz两种脉冲信号。

分频器原理图:

分频器仿真波形:

由仿真波形可以看出,输入为1024Hz(实验仿真时没有精确计算周期)信号,512Hz的输出端频率变为输入的一半,1Hz输出端频率变为输入的1/1024,可知所设计分频器具有将1024Hz信号分频得到512Hz和1Hz信号的功能。

2) VHDL语言设计

VHDL语言设计分频器是,可做一个10位二进制计数器,其中输出的512Hz=out(0),1Hz=out(9)。 分频器VHDL语言:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY fenpin is PORT( clk: IN STD_LOGIC; out1: OUT STD_LOGIC; out512: OUT STD_LOGIC); END fenpin;

ARCHITECTURE a OF fenpin IS

SIGNAL count: STD_LOGIC_VECTOR(9 DOWNTO 0); BEGIN PROCESS(clk) BEGIN if(clk'event AND clk='0') then count <= count + 1; end if; END PROCESS; out512 <= count(0); out1 <= count(9); END a;

4.2 六十进制计数器

1) 原理图设计

74160分别设计一个带清零功能的10进制计数器和6进制计数器,然后串联起来就是六十进制计数器。 60进制计数器原理图如下:

60进制计数器仿真波形:

由仿真波形可看出,在计数脉冲作用下,输出端高四位[q60H3,q60H2,q60H1,q60H0]的bcd码在0~5之间循环,而低四位[q60L3,q60L2,q60L1,q60L0]在0~9之间循环,这样完成了0~59的计数功能。

2) VHDL语言设计

VHDL语言设计时,整体设计一个带清零功能的60进制计数器的BCD码计数器。输出低四位为outbcd[3..0],高四位为outbce[7..0]。

60进制计数器VHDL语言:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY bcd60 is PORT( clk: IN STD_LOGIC; reset: IN STD_LOGIC; c: OUT STD_LOGIC; daout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END bcd60;

ARCHITECTURE a OF bcd60 IS

SIGNAL count: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(clk,reset) BEGIN if(reset = '1') then count <= \; elsif (clk'event AND clk='1') then if(count < \) then if(count(3 downto 0)=\)then count <= count+7; else count <= count + 1; c <= '0'; end if; else count <= \; c <= '1'; end if; end if; END PROCESS; daout <= count; END a;

4.3 二十四进制计数器

1) 原理图设计

原理图设计时,用74160设计一个带清零功能的24进制BCD码计数器。

[q24H3,q24H2,q24H1,q24H0] 为输出的高四位,其在0000~0010即0~2之间循环, [q24L3, q24L2,q24L1,q24L0]为输入的低四位,其在0000~1001即在0~9之间循环。后一个74160在计数脉冲作用下计数,

当到9后,再一个脉冲便产生进位信号,RCO端产生一个脉冲送到前一个74160使之加一。当前一个74160为2,后有一个74160为3时产生清零信号,使两个计数器同时清零。这样便完成24进制计数。

24进制计数器原理图:

24进制计数器仿真波形

2) VHDL语言设计

VHDL语言设计时,,整体设计一个带清零功能的24进制BCD码计数器。

24进制BCD码VHDL语言代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY bcd24 is PORT( clk: IN STD_LOGIC; reset: IN STD_LOGIC; c: OUT STD_LOGIC; daout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END bcd24;

ARCHITECTURE a OF bcd24 IS

SIGNAL count: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(clk,reset) BEGIN if(reset = '1') then count <= \; elsif (clk'event AND clk='1') then if(count(3 downto 0)=\) then if(count < \) then count <= count+7; else count <= \; end if; elsif (count < \) then count <= count + 1; c<= '0'; else count <= \; c<= '1'; end if; end if;

END PROCESS; daout <= count; END a;

4.4整点报时模块(数据选择器) 1)原理图

整点报时是数字钟最基本功能电路之一。要求在离整点10s时进行报时,即当时间在59:51、59:53、59:55、59:57时以低音512Hz信号持续1s发出整点报时的预警声,在59:59时以高音1024Hz信号持续1s发出整点报时声。

当59:5X时,小时输出的八位数是01011001,分的八位数是0101XXXX。将其中高电平对应得管脚接到与非门,当计数器到达59:5X时与非门的输出为0,将4选1数据选择器打开。将秒信号的个位sLa、sLd分别接到4选1数据选择器地址端A、B。如图:

从真值表看出: mLd mLc mLb 0 0 0 0 0 0 0 0 1 mLa 0 1 0 显示十进制数 0 1 2 mLd mLa组合 00 01 00 0 0 1 1 3 01 0 1 0 0 4 00 0 1 0 1 5 01 0 1 1 0 6 00 0 1 1 1 7 01 1 0 0 0 8 00 1 0 0 1 9 01 当59:51、59:53、59:55、59:57时,mLa、mLd为01,从上图看出选中2C1端口,喇叭发出512Hz低音信号。

当59:59是,mLa、mLd为11.从上图看出选中端口2C3,喇叭发出1024Hz高音信号。

2)VHDL语言代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY baoshi is PORT( clock: IN STD_LOGIC; clk1024,clk512:IN STD_LOGIC; tm,tc:IN STD_LOGIC_VECTOR(7 DOWNTO 0); speaker:OUT STD_LOGIC ); END baoshi;

ARCHITECTURE a OF baoshi IS BEGIN PROCESS(tm,tc,clock) begin if(tm = \(7 downto 4)=\(0)='1')then if(tc(3 downto 0) = \)then speaker <= clk1024; else speaker <= clk512; end if; else speaker <= '0'; end if; END PROCESS; END a;

4.5校时校分模块

校时校分电路中用到2选1电路进行信号选择。 原理图:

仿真波形:

VHDL语言代码:

LIBRARY 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 mux21;

ARCHITECTURE one OF mux21 IS BEGIN

PROCESS(a,b,s) BEGIN if(s='0') then y<=a; else y<=b; end if; END PROCESS; END one;

2选1数据选择器顶层文件

2选1电路接在前级向后间进位信号之间。2选1电路输入信号一个是前级向后级

的进位信号,另一个是1Hz信号。当SEL信号等于1时选择A端信号,输入下级时钟端的信号为1Hz信号,实现校时、校分;当SEL信号等于0时选择B端信号,输入下级时钟端的信号为正常的进位信号,实现正常计时。

4.6完整数字钟 1)原理图设计

2)仿真图

VHDL语言顶层文件:

总体仿真:

从仿真图可以看出,所设计时钟具备校时、校分、清零、整点报时的功能,符合课程设计要求。

4.7开发平台及硬件显示结果 开发平台:

GW48-CK EDA 实验开发系统 编号 00067058 带MAX+PLUSII 软件PC机

硬件显示结果:

五、课程设计总结

本次可编程逻辑电路课程设计在设计系统以及画原理图和编写程序过程当中,由于对可编程逻辑电路不太熟悉以及对MAX+PLUSII软件的运用也很生疏,我们遇到了很多问题,并且对遇到的问题也只能在网上搜索或请教老师,但是最终在和队友的协作下我们顺利完成了课程设计任务,总的来说并不顺利。

本次课程设计任务——数字电子钟设计与实现,是将本学期VHDL硬件描述语言与数字逻辑电路设计和上学期所学的数字电路中所学的知识运用的实践中去,提高了自己理论与实践相结合能力,使我进一步掌握本专业的各项知识,为以后的专业学习打下良好的基础。

在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的。 最后,感谢老师在我们做课程设计过程当中的耐心指导和辛勤付出,也感谢队友的悉心帮助。


VHDL课程设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011.07 浙江自考旅游市场学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: