基于xilinx仿真 数字电子时钟的VHDL设计

基于xilinx仿真 数字电子时钟的VHDL设计
基于xilinx仿真 数字电子时钟的VHDL设计

VHDL语言设计数字时钟

实验性质:综合性实验级别:

开课单位:信息与通信工程学院通信工程系学时:4学时

一、实验目的:

1、学习用VHDL语言实现比较大型的电路的方法。

2、继续巩固cpld技术层次化设计方法。

二、实验器材:

计算机、Quartus II软件或xilinx ISE

三、实验内容:

设计一数字时钟,要求具有时、分、秒、计数显示功能,以24小时循环计时;具有清零,调节小时,分钟功能;具有整点报时功能。

四、实验步骤:

1、根据电路特点,用层次设计的概念,将此任务分成若干模块,规定每一模块的功能和各模块之间的接口。让几个学生分作和调试其中之一,然后再将各模块合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。

2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。

3、模块说明:

各种进制的计数及时钟控制模块(10进制、6进制、24进制)

扫描分时显示,译码模块

各模块都用VHDL语言编写

实现电子钟原理图

各模块程序

秒模块:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity second is

Port ( clk : in STD_LOGIC;

reset : in STD_LOGIC;

semin : in STD_LOGIC;

enmin : out STD_LOGIC;

daout : out STD_LOGIC_VECTOR (6 downto 0)); end second;

architecture Behavioral of second is

signal count:std_logic_vector(6 downto 0);

signal enmin_1,enmin_2:std_logic;

begin

daout<=count;

enmin_2<=(semin and clk);

enmin<=(enmin_1 or enmin_2);

process(clk,reset,semin)

begin

if(reset='0')then

count<="0000000";

enmin_1<='0';

elsif(clk'event and clk='1')then

if(count(3 downto 0))="1001"then

if(count<16#60#)then

if(count="1011001")then

enmin_1<='1';count<="0000000";

else

count<=count+7;

end if;

else

count<="0000000";

end if;

elsif(count<16#60#)then

count<=count+1;

enmin_1<='0';

else

count<="0000000";enmin_1<='0';

end if;

end if;

end process;

end Behavioral;

分模块:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity minute3 is

Port ( clk : in STD_LOGIC;

clks : in STD_LOGIC;

reset : in STD_LOGIC;

sethour : in STD_LOGIC;

enhour : out STD_LOGIC;

daout : out STD_LOGIC_VECTOR (6 downto 0)); end minute3;

architecture Behavioral of minute3 is

signal count:std_logic_vector(6 downto 0);

signal enhour_1,enhour_2:std_logic;

begin

daout<=count;

enhour_2<=(sethour and clks);

enhour<=(enhour_1 or enhour_2);

process(clk,reset,sethour)

begin

if(reset='0')then

count<="0000000";

enhour_1<='0';

elsif(clk'event and clk='1')then

if(count(3 downto 0))="1001"then

if(count<16#60#)then

if(count="1011001")then

enhour_1<='1';count<="0000000";

else

count<=count+7;

enhour_1<='0';

end if;

else

count<="0000000";

end if;

elsif(count<16#60#)then

count<=count+1;

enhour_1<='0' after 100 ns;

else

count<="0000000";enhour_1<='0';

end if;

end if;

end process;

end Behavioral;

时模块:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity hour is

Port ( clk : in STD_LOGIC;

reset : in STD_LOGIC;

daut : out STD_LOGIC_VECTOR (5 downto 0)); end hour;

architecture Behavioral of hour is

signal count:std_logic_vector(5 downto 0);

begin

daut<=count;

process(clk,reset)

begin

if(reset='0')then

count<="000000";

elsif(clk'event and clk='1')then

if(count(3 downto 0)="1001")then

if(count<16#23#)then

count<=count+7;

else

count<="000000";

end if;

elsif(count<16#23#)then

count<=count+1;

else

count<="000000";

end if;

end if;

end process;

end Behavioral;

转换器7

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity s is

Port ( a : in STD_LOGIC_VECTOR (6 downto 0);

low : out STD_LOGIC_VECTOR (3 downto 0);

high : out STD_LOGIC_VECTOR (3 downto 0)); end s;

architecture Behavioral of s is

begin

low<=a(3 downto 0);

high(3)<='0';

high(2 downto 0)<=a(6 downto 4);

end Behavioral;

转换器6

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity aaa is

Port ( a : in STD_LOGIC_VECTOR (5 downto 0);

high : out STD_LOGIC_VECTOR (3 downto 0);

low : out STD_LOGIC_VECTOR (3 downto 0)); end aaa;

architecture Behavioral of aaa is

begin

low<=a(3 downto 0);

high(3 downto 2)<="00";

high(1 downto 0)<=a(5 downto 4);

end Behavioral;

显示模块:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity xianshi is

Port ( num : in STD_LOGIC_VECTOR (3 downto 0);

led : out STD_LOGIC_VECTOR (6 downto 0)); end xianshi;

architecture Behavioral of xianshi is

begin

led<="1111110"when num="0000"else

"0110000"when num="0001"else

"1101101"when num="0010"else

"1111001"when num="0011"else

"0110011"when num="0100"else

"1011011"when num="0101"else

"1011111"when num="0110"else

"1110000"when num="0111"else

"1111111"when num="1000"else

"1110011"when num="1001"else

"1110111"when num="1010"else

"0011111"when num="1011"else

"1001110"when num="1100"else

"0111101"when num="1101"else

"1001111"when num="1110"else

"0000000"when num="1111";

end Behavioral;

报时模块:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity baoshi is

Port ( enhour : in STD_LOGIC;

din,daut : in STD_LOGIC_VECTOR (6 downto 0);

y : out STD_LOGIC);

end baoshi;

architecture Behavioral of baoshi is

begin

process(enhour,din)

begin

if(enhour='1' and din="0000000" and daut(0)='0')then

y<='1';

else y<='0';

end if;

end process;

end Behavioral;

测试结果

图中xlxn_1——xlxn_6依次为时分秒的时位与个位,xlxn_36为报时模块输出

图中秒模块个位按0-9依次增加最为明显,其他位增加较为缓慢在setmin设为1时分模块的个位马上增加一位,sethour设为1时,时模块个位亦是如此。而报时模块会出现三次上升是因为报时条件(enhour='1' and din="0000000" and daut(0)='0')所致。

数字钟设计(带仿真和连接图)

- 数字电子技术课程设计报告 题目:数字钟的设计与制作 : 专业:电气本一班 学号:姓名: 指导教师: 时间: - —

一、设计内容 数字钟设计 … 技术指标: (1)时间以24小时为周期; (2能够显示时,分,秒; (3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; (4)计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时; (5)为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号. ~ 二、设计时间: 第十五、十六周 三、设计要求: (1)画出设计的电路原理图; $ (2) 选择好元器件及给出参数,在原理图中反应出来; (3)并用仿真软件进行模拟电路工作情况; (4)编写课程报告。

! 摘要 数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。一般由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。 振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。 分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。 计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。 译码显示:将“时”“分”“秒”显示出来。将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。 由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。另外,计时过程要具有报时功能,当时间到达整点前10秒开始,蜂鸣器1秒响1秒停地响5次。 } 为了使数字钟使用方便,在设计上使用了一个变压器和一个整流桥来实现数字钟电能的输入,使得可以方便地直接插入220V的交流电就可以正常地使用了。关键词数字钟振荡计数校正报时

用VHDL实现数字时钟的设计[1]

收稿日期:2007-06-04 第一作者 刘竹林 男 27岁 助教 用V HDL 实现数字时钟的设计 刘竹林 李晶骅 (十堰职业技术学院电子工程系,湖北十堰442000) 摘 要:以一款数字钟设计为例,较详细的介绍了如何用VHDL 语言设计数字电路,并给出了部分程序、仿真 波形图,并在MAX +plusII 中进行编译、仿真、下载。由此说明利用VHDL 开发数字电路的优点。 关键词:VHDL ;设计;数字钟;应用电路中图分类号:TN953 文献标识码:A 0 引言 VHDL 硬件描述语言在电子设计自动化(EDA )中扮演 着重要的角色,它的出现极大的改变了传统的设计方法、设 计过程乃至设计观念。由于采用了“自顶向下” (Top 2Down )的全新设计方法,使设计师们摆脱了大量的辅助设计工作, 而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短了产品的研制周期。 这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 1 用V HDL 设计一款数字钟 我们设计的数字时钟原理框图如图1。其基本功能划 分为:计数模块(包括秒、分、时)、译码模块、扫描显示控制模块。计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数,当计数到23点59分59秒的时候,即一天结束,计数器清零, 新的一天重新开始计数。 图1 数字时钟原理框图 秒计数器的计数时钟信号为1Hz 的标准信号,可以由系 统板上提供的4MHz 信号通过222分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号CS (0)-CS (5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号CS (0)-CS (5)的频率超过人的眼睛视觉暂留频率24Hz 以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而且显示也不致闪烁抖动。 其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。 2 模块设计 2.1 VHDL 语言的基本结构 一个独立的设计实体通常包括:实体(EN TIT Y )、结构体(ARCHITECTURE )、配置(CONFIGURA TION )、包集合(PACKGE )、和库(L IBRAR Y )5个部分。其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。VHDL 程序设计基本结构如图2 。 图2 VHDL 程序设计基本结构 2.2 各模块的实现 2.2.1 计数模块(建立VHDL 语言的工程文件) 计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。其VHDL 源程序相差不大由于篇幅有限,这里我们以秒模块的实现为例。程序如下: library ieee ; use ieee.std -logic -1164.all ;entity counter -60-bcd is 山西电子技术 2008年第1期 应用实践

简易数字钟的设计

中文摘要 数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。 单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。 本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED 数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues软件仿真等。最终在实验箱上实现了与仿真结果相同的实际效果。 关键词单片机定时功能、AT89C51、共阴LED、Keil、Protues软件。

Abstract Microelectronics and computer technology along with the rapid development and progress, making the design of electronic systems and applications have entered a new era. The traditional manual design process is being advanced electronic design automation technology to replace. And is currently supporting modern technology has become the universal platform for electronic design, and step by step to support the development of system-level design. Only to hardware description language and logic synthesis-based top-down design methodology to meet the increasingly complex needs of digital system design. The progressive development of the taxi industry, the taxi meter is getting higher and higher requirements, the user requires not only the performance of the stability of billing, billing and accurate anti-cheat functions; and as a result of the instability in oil prices, billing system the need for regular adjustment of the meter so that users can request not to change the hardware to facilitate the billing system modifications. The system is the use of language, it can make use of digital circuits and system description, simulation and automatic design, and software as a development platform designed billing system procedures taxi and carried out a simulation program. To the achievement of pre-billing and simulation, as well as car to start, stop, pause and other functions, and dynamic scan shows the number of fares. Key Words Microcontroller\、AT89C51、7SEG-MPX6-CC-RED 、Keil、Proteus

数字时钟的Multisim设计与仿真

数字时钟的M u l t i s i m 设计与仿真 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

数字电子技术课程设计 学院:信息工程学院 班级:电气二班 姓名:刘君宇张迪王应博 学号:

数字时钟的Multisim设计和仿真 一、设计和仿真要求 学习综合数字电子电路的设计、实现 基础调研 应用设计、逻辑设计、电路设计 用Multisim 软件验证电路设计 分析电路功能是否符合预期,进行必要的调试修改 撰写Project 报告,提交Multisim 二、总体设计和电路框图 24 分、校时部分。主要由矩形波产生器、秒计数器、分计数器、时计数器、LED 图1. 数字钟电路框图 七段显示数码管、时间校准电路,闹钟电路构成。 五、结论 由脉冲发生器、秒计数器、分计数器、时计数器、LED显示数码管设计了数字时钟电路,经过仿真得出较理想的结果,说明电路图及思路是正确的,可以实现所要求的基本功能:计时、显示精确到秒、时分秒校时。 下页附设计感想和分工 整点报时设计体会

刘君宇分工:完成电路设计,整点报时,闹钟,扩展功能) 通过对软件Multisim的学习和使用,进一步加深了对数字电路的认识。在仿真过程中遇到许多困难,但通过自己的努力和同学的帮助都一一克服了。首先,连接电路图过程中,数码管不能显示,后经图形放大后才发现是电路断路了。其次,布局的时候因元件比较多,整体布局比较困难,因子电路不如原电路直观,最后在不断努力下,终于不用子电路布好整个电路。 调试时有的器件在理论上可行,但在实际运行中就无法看到效果,所以得换不少器件,有时无法找出错误便更换器件重新接线以使电路正常运行。在整个设计中,计数器的接线比较困难,反复修改了多次,在认真学习其用法后采用归零法和置数法设计出60进制和24进制的计数器。 同时,在最后仿真时,预置的频率一开始用的是1hz,结果仿真结果反应很慢,后把频率加大,这才在短时间内就能看到全部结果。总之,通过这次对数字时钟的设计与仿真,为以后的电路设计打下良好的基础,一些经验和教训,将成为宝贵的学习财富。

vhdl课程设计(电子钟+闹铃)

数字钟的设计 一、系统功能概述 (一)、系统实现的功能: 1、具有“时”、“分”、“秒”的十进制数字显示(小时从00 ~ 23)。 2、具有手动校时、校分、校秒的功能。 3、有定时和闹钟功能,能够在设定的时间发出闹铃声。 4、能进行整点报时。从59分50秒起,每隔2秒发一次低音“嘟”的信号,连续5次, 最后一次为高音“嘀”的信号。 (二)、各项设计指标: 1、显示部分采用的6个LED显示器,从高位至低位分别显示时、分、秒。 2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。 3、有三个按钮分别调时、分、秒的时间。 4、有一个按钮用作开启/关闭闹铃。 5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为1Hz、 1kHz的脉冲。 二、系统组成以及系统各部分的设计 1、系统结构描述//要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(一)系统的顶层文件: 1、顶层文件图:(见下页) 2、各模块的解释: (1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、hour_set:其中clk_1khz为闹铃模块提供时钟,处理后能产生“嘟”、“嘀”和变化的闹铃声音;clk_1hz为计时模块提供时钟信号,每秒计数一次;key_slt选择设置对象:定时或正常时间;key_alarm能够开启和关闭闹铃;sec_set、min_set、hour_set用于设置时间或定时,与key_slt相关联。各按键输出为脉冲信号。 (2)、CNT60_A_SEC模块: 这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示秒的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key 上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有两个输出口out_do、out_di来触发整点报时的“嘟”、“嘀”声音。 (3)、CNT60_A_MIN模块: 这个模块式将CNT60_A_SEC的输出信号进行60进制计数,并产生一个时位的触发信号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时时显示分的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有三个输出口out_do、out_di、out_alarm来触发整点报时的“嘟”、“嘀”、闹铃声音。

数字电子钟仿真

数字电子钟课程总结 题目:基于Multisim10.0的多功能电子钟的设计与仿真 学院:电子工程学院 专业:电子信息工程 学 号: 20121271008 姓名:卫丽业 指导教师:蒋品群 2014年 05月

基于Multisim10.0的多功能电子钟的设计与仿真 摘 要: 数字钟是由555定时器电路产生1KHz秒时钟信号, 经过分频器分频后输出稳定的秒脉冲, 作为时间基准。秒计数器满60向分计数 器进位,分计数器满60向时计数器进位, 时计数器以24为一个周 期。计数器的输出经译码器送到数码管显示,可将时、分、秒在相 应位置正确显示。计时出现误差或者调整时间时可以用校时电路 进行时、分的调整,并实现整点报时功能。 关键词: 数字钟 分频器 译码器 校时电路 整点报时电路 定时器 1.概述 主要是通过Multisim10.0软件作为应用平台,设计出电子数字钟逻辑电路,并在这个平台上进行仿真,验证它的工作状态是否正常,以实现要求的功能电路。 1.1 研究目标与任务 设计一个24小时制的数字时钟。要求计时、显示精确到秒、有校时功能,采用中小规模集成电路设计。 1.2 研究步骤 (1)根据要求,设计出比较合理的方案,选取合适的硬件器件,熟悉各个器件的性能; (2)通过Multisim10.0软件进行仿真和调试; (6)实验总结。 2.总体设计和电路框图 2.1 设计思路 1).由秒时钟信号发生器、计时电路、校时电路和整点报时电路构成。 2).秒时钟信号发生器可由555定时器构成。 3).计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 4).校时电路采用开关控制时、分计数器的时钟信号为校时脉冲以完成校时。 2.2 电路框图

基于VHDL的电子计时器的设计

EDA技术及应用课程设计 题目:基于VHDL的数字计时器 班级:电气1202班 姓名:李玉靖 学号:20121131080 指导老师:汪媛 (课程设计时间:2015年1月5日——2015年1月9日) 华中科技大学武昌分校

目录 1引言 (1) 1.1 EDA简介 (1) 1.2 VHDL简介 (2) 1.3 VHDL的特点 (3) 1.4 VHDL的设计结构 (4) 1.5 VHDL的设计步骤 (4) 2设计主要内容 (5) 3内部各功能模块 (6) 3.1六十进制计数模块 (6) 3.2二十四进制计数模块 (8) 3.3分频器模块 (10) 3.4LED显示模块 (11) 4顶层系统联调 (15) 5结语 (21) 6参考文献 (22) 7附录 (23)

1.引言 随着科学技术的迅猛发展,电子工业界经历了巨大的飞跃。集成电路的设计正朝着速度快、性能高、容量大、体积小和微功耗的方向发展。基于这种情况,可编程逻辑器件的出现和发展大大改变了传统的系统设计方法。可编程逻辑器件和相应的设计技术体现在三个主要方面:一是可编程逻辑器件的芯片技术;二是适用于可逻辑编程器件的硬件编程技术,三是可编程逻辑器件设计的EDA开发工具,它主要用来进行可编程逻辑器件应用的具体实现。在本实验中采用了集成度较高的FPGA 可编程逻辑器件, 选用了VHDL硬件描述语言和MAX + p lusⅡ开发软件。VHDL硬件描述语言在电子设计自动化( EDA)中扮演着重要的角色。由于采用了具有多层次描述系统硬件功能的能力的“自顶向下”( Top - Down)和基于库(L ibrary - Based)的全新设计方法,它使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短 了产品的研制周期。MAX + p lusⅡ是集成了编辑器、仿真工具、检查/分析工具和优化/综合工具的这些所有开发工具的一种集成的开发环境,通过该开发环境能够很方便的检验设计的仿真结果以及建立起与可编程逻辑器件的管脚之间对应的关系。 1.1 EDA简介 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射

数字时钟设计原理

数字时钟设计——原理图一.实验目的 设计一个多功能数字中电路,基本功能为:①准确计时,以数字形式显示分、秒的时间;②分和秒的计时要求为60进位;③校正时间。 二.设计框图和工作原理 由振荡器产生高稳定的高频脉冲信号,作为数字钟的时间基准(系统时钟),再经分频器输出标准秒脉冲信号。秒计数器计满60后向分计数器进位,分计数器计满60后重新开始计时。计数器的输出经译码器送显示器。计时出现误差时可以用校时电路进行校分。 三.设计方案

1.振荡器的设计 振荡器是数字钟的核心。振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。一般来说,振荡器的频率越高,计时精度越高。 在这里我们选用由集成电路定时器555与RC组成的多谐振荡器。这里选用555构成的多谐振荡器,输出振荡频率v0=1KHz的脉冲,电路参数如下图所示。 2.分频器的设计 选用3片中规模集成电路计数器74LS90可以完成分频功能。因为每片为1/10分频,3片级联则可获得所需要的频率信号,即第1片的Q3端输出频率为100HZ,第2片的Q3端输出为10Hz,第3片的Q3端输出为1Hz。分频电路如下图所示:

3.分秒计数器的设计 分和秒计数器都是模M=60的计数器,其计数规律为:00-01-… -58-59-00…选74LS92作十位计数器,74LS90作个位计数器。再将它们级联组成模数M=60的计数器。分秒计数电路如下: 74LS90的原理图如下: 74LS92的原理图如下: 4.校时电路的设计 当数字钟接通电源或者计时出现误差时,需要校正时间(或称校时)。校时是数字钟应具备的基本功能。一般电子手表都具有时、分、秒等校时功能。为使

数字时钟的设计与仿真

湖北民族学院 课程设计报告 数字时钟设计与仿真 课程:电子线路课程设计 专业:电子信息科学与技术 班级: 0312409 学号: 031240910 学生姓名:谢加龙 指导教师:易金桥 2014年 06月 21日

信息工程学院课程设计任务书 2014-06-21

摘要 基于单片机AT89c51设计而成的简易数字电子时钟,其主要功能皆由对单片机编程即由软件完成,外围硬件电路只包括报时电路、键盘输入电路和显示电路三个模块。具有外围硬件电路简单、运行功能可靠的优点。 关键词:单片机时钟键盘输入显示

目录 1、系统设计要求 (1) 1.1 基本功能 (1) 1.2扩展功能 (1) 2、硬件设计 (2) 2.1系统设计方案选择 (2) 2.2系统原理框图 (2) 2.3各单元的功能描述 (2) 2.4电路连接图 (2) 2.5元器件清单列表 (2) 2.6所用芯片的管脚图 (2) 3、软件设计 (3) 3.1主程序的流程图 (3) 3.2键盘扫描程序流程图 (3) 3.3发声程序流程图 (3) 3.4总程序 (3) 4、调试 (4) 4.1仿真调试 (4) 4.2硬件调试 (4) 5、总结 (5) 参考文献 (6)

1、系统设计要求 1.1 基本功能 (1)、要求准确显示“时”、“分”、“秒”,24 小时制; (2)、具有整点报时功能,在每小时59 分51 秒、53 秒、55 秒、57 秒发出低音,59秒整发出高音; (3)、系统工作符合一般时钟要求。 1.2扩展功能: (1)、具有校时功能,用户可修改“时”、“分”,且互不影响; (2)、可切换12 小时制和24 小时制。

vhdl数字时钟设计

数字时钟设计 一、题目分析 1、功能介绍 1)具有时、分、秒计数显示功能,以24小时循环计时。 2)时钟计数显示时有LED灯的花样显示。 3)具有调节小时、分钟及清零的功能。 4)具有整点报时功能。 2、总体方框图 3、性能指标及功能设计 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来

一个脉冲,即计数一次。 3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5)LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号。 二、选择方案 1、方案选择 方案一:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。 方案二:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟和秒均60进制。 终上所述,考虑到试验时的简单性,故我选择了方案二。 三、细化框图 根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:

基于单片机的电子数字钟仿真

《基于单片机的电子数字钟》 课程设计报告 专业: 电子信息工程 班级: 姓名: 学号: 指导教师: 2010年6月

一、课程设计的目的 本课程设计是自动化专业、电子信息技术专业学生在学完单片机原理及课程之后必修课程,它的教学目的和任务是综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础。 二、设计内容 利用单片机的定时/计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。 用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器7BH单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。 三、设计要求 1、在PROTEUS中设计硬件,在KEIL51中编写软件,在PROTEUS中运行程序仿真实现。 2、写课程设计报告,给出设计思想,原理,硬件电路图,给出相应程序,并写出设计过程。 课程设计报告格式: 1、课程设计的目的 2、课程设计具体要求 3、MCS-51单片机系统简介 4、MCS-51单片机内部定时器/计数器简介 5、键盘和LED数码管显示器简介 6、基本原理 7、硬件电路 8、软件程序流程及代码 9、设计制作过程 10、总结 四、MCS-51单片机系统简介 MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52 两个子系列。 对于51子系列,主要有8031、8051、8751 三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KROM,8751芯片带4KEPROM。51子

基于VHDL的多功能数字钟设计报告

基于VHDL的多功能数字钟 设计报告 021215班 卫时章 02121451

一、设计要求 1、具有以二十四小时制计时、显示、整点报时、时间设置和闹钟的功能。 2、设计精度要求为1秒。 二、设计环境:Quartus II 三、系统功能描述 1、系统输入:时钟信号clk采用50MHz;系统状态及较时、定时转换的控制信号为k、set,校时复位信号为reset,均由按键信号产生。 2、系统输出:LED显示输出;蜂鸣器声音信号输出。 3、多功能数字电子钟系统功能的具体描述如下: (一)计时:正常工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。 (二)校时:在计时显示状态下,按下“k”键,进入“小时”待校准状态,若此时按下“set”键,小时开始校准;之后按下“k”键则进入“分”待校准状态;继续按下“k”键则进入“秒”待复零状态;再次按下“k”键数码管显示闹钟时间,并进入闹钟“小时”待校准状态;再次按下“k”键则进入闹钟“分”待校准状态;若再按下“k”键恢复到正常计时显示状态。若校时过程中按下“reset”键,则系统恢复到正常计数状态。 (1)“小时”校准状态:在“小时”校准状态下,显示“小时”的数码管以2Hz 闪烁,并按下“set”键时以2Hz的频率递增计数。 (2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以2Hz闪烁,并按下“set”键时以2Hz的频率递增计数。 (3)“秒”校准状态:在“秒复零”状态下,显示“秒”的数码管以2Hz闪烁,并以1Hz的频率递增计数。 (4)闹钟“小时”校准状态:在闹钟“小时”校准状态下,显示“小时”的数码管以2Hz闪烁,并按下“set”键时以2Hz的频率递增计数。 (5)闹钟“分”校准状态:在闹钟“分”校准状态下,显示“分”的数码管以2Hz闪烁,并按下“set”键时以2Hz的频率递增计数。 (三)整点报时:蜂鸣器在“59”分钟的第“51”、“53”、“55”、“57”秒发频率为500Hz的低音,在“59”分钟的第“59”秒发频率为1000Hz的高音,结束时为整点。 (四)显示:采用扫描显示方式驱动4个LED数码管显示小时、分,秒由两组led灯以4位BCD 码显示。 (五)闹钟:闹钟定时时间到,蜂鸣器发出频率为1000Hz的高音,持续时间为60秒。 四、各个模块分析说明 1、分频器模块(freq.vhd) (1)模块说明:输入一个频率为50MHz的CLK,利用计数器分出 1KHz的q1KHz,500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz。 (2)源程序: library ieee;

简易数字钟设计(已仿真)

简易数字钟设计 摘 要 本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计, 最后将设计好的模块组合调试,并最终在EWB 下仿真通过。 关键词 数字钟,EWB ,74LS160,总线,三态门,子电路 一、引言:所谓数字钟,是指利用电子电路构成的计时器。相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。在此基础上,还能够实现整点报时,定时报闹等功能。 设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。 二、任务分析:能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。 总体设计 本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。 方案一、采用异步电路,数据选择器 将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下: 该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。 方案二、采用同步电路,总线结构 时钟信号分别加到各个模块,各个模块功能相对独立,框图如下: 显示 切换 秒钟 分钟 小时 控制 1Hz 脉冲信号 闹钟

VHDL数字钟设计报告

VHDL数字钟设计报告 一. 数字钟总体设计方案: 1.1设计目的 ①正确显示时、分、秒; ②可手动校时,能分别进行时、分的校正; ③整点报时功能; 1.2设计思路 数字钟的设计模块包括:分频器、去抖动电路、校时电路、“时、分、秒”计数器、校时闪烁电路、 整点报时和译码显示电路。 每一个功能模块作为一个实体单独进行设计,最后再用VHDL的例化语句将各个模块进行整合,生成 顶层实体top。 该数字钟可以实现3个功能:计时功能、设置时间功能和报时功能。 二.数字钟模块细节 2.1 分频器(fenpin) 本系统共需3种频率时钟信号(1024Hz、512Hz、1Hz)。为减少输入引脚,本系统采用分频模块,只需由外部提供1024Hz基准时钟信号,其余三种频率时钟信号由分频模块得到。 分频原理:为以1024Hz基准时钟经1024分频得到512Hz,1Hz频率时钟信号。 分频器管脚 代码:

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity fenpin is port(clk1024:in std_logic; clk1,clk512:out std_logic ); end fenpin ; architecture cml of fenpin is begin process (clk1024) variable count1: integer range 0 to 512; variable q1: std_logic; begin if clk1024' event and clk1024='1' then if count1=512 then q1:=not q1; count1:=0; else count1:=count1+1; end if; end if; clk1<=q1; end process; process(clk1024) variable count512: integer range 0 to 1; variable q512: std_logic; begin if clk1024' event and clk1024='1' then if count512=1 then q512:=not q512; count512:=0; else count512:=count512+1; end if; end if; clk512<=q512; end process; end cml; 2.2 校时电路(jiaoshi)

PROTEUS仿真的数字电子钟设计

PROTEUS仿真的数字电子钟设计 【摘要】电子钟作为现代人日常生活与工作中一种最为多见的计时工具之一,同人们的生活密切相关,而数字电子钟又凭借着小体积、轻重量与准确计时、结构简单以及少耗电等优点被广泛应用在日常生活中。故文章介绍一种基于PROTEUS仿真软件的数字电子钟,并对其设计与仿真调试情况展开具体分析。 【关键词】PROTEUS仿真;数字电子钟;设计方案 一、引言 PROTEUS仿真软件,作为Labeenter Electronics公司研发出来的一款用于电路设计和仿真的软件,主要涵盖了ISIS 与ARES等软件模块,其中,ISIS模块主要是用于电路原理图的布图和仿真,而ARES模块则多用于PCB设计。在该仿真软件中,有着极为丰富的资源,拥有30多个元器件库,并为设计者提供了27000个以上的仿真元器件,为数字电路与模拟电路混合仿真效果的实现奠定了良好的基础。同时,在该软件中,还可为用户提供了逻辑分析仪、虚拟终端与信号发生器以及交直流电压表等仿真仪器与仪表资源,即实现了同一仪器与仪表在同一个电路中的随意调整[1]。下面,基于PROTEUS仿真软件设计一数字电子钟。

二、数字电子时钟的设计分析 从本质上来说,数字电子钟主要可分为分频器、振荡器与译码器等几部分,其中,分频器与振荡器共同构成了一个“标准秒信号的发生器”,而其计时系统则由不同进制的计数器、显示器与译码器构成,当秒信号被输送到计数器中时开始计数,而后用“时”、“分”、“秒”的形式将累积结果显示出来[2]。下面,对数字电子钟的设计展开具体分析。 图1 本次设计主要以AT89C2051为其核心元器件(因PROTEUS仿真软件无该元器件,故设计原理图时以 AT89C4051代替),主要分成以下几个部分:①振荡电路,该部分作为计时器的一个核心部分,其频率的精确性与稳定性直接关系到计时器的总体准确度,故为达到最佳精确度,本次设计选用晶体振荡器来组成其振荡电路;②按键电路,如图1-a,即设计了S1、S2与S3三个按键,并使之分别同P3.5、P3.4与P3.2的端口进行复用,只要对应端口输出高电平的时候,该单片机就可读取出按键的当前状态们,并赋予其相对值;③蜂鸣器电路。在数字电子钟中,其响铃电路主要是由一个蜂鸣器与一个PNP型的三极管构成的,并经 AT89C2051中的P3.7端口来驱动,若三极管被导通之后,其蜂鸣器就会发出一定响声,并测得其J3两侧为高低平,若蜂鸣器无声,那么,J3两端的电压差则是低电平,然而,因

基于proteus的数字电子钟的仿真设计

题目:基于Proteus的数字电子钟的设计 与仿真 课程名称:单片机系统设计与Proteus仿真 学生姓名:马珂 学生学号: 1305010323 系别:电子工程学院 专业:通信工程 年级: 13级 任课教师:徐锋 电子工程学院 2015年5月

目录 一、设计目的与要求 (3) 二、设计内容与方案制定 (3) 三、设计步骤 (3) 1.硬件电路设计 (3) 1.1.硬件电路组成框图 (3) 1.2.各单元电路及工作原理 (4) 1.3.绘制原理图 (5) 1.4.元件清单列表 (6) 2.程序设计 (6) 2.1程序流程 (6) 2.2汇编程序 (7) 四、调试与仿真 (12) 五、心得体会 (14) 六、参考文献: (14)

基于Proteus的数字电子钟的设计与仿真 一、设计目的与要求 设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。 设计要求:设计一个时、分可调的数字电子钟、开机显示“9-58-00”。 二、设计内容与方案制定 具有校时功能,按键控制电路其中时键、分键两个键分别控制时、分时间的调整。按分键分加1;按时键时加1。 以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。 三、设计步骤 1、硬件电路设计 1.1.硬件电路组成框图 1.2.各单元电路及工作原理 (1)晶振电路 单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中

AT89C51单片机采用内部时钟方式。采用外接晶体和电容组成的并联谐振回路。其电路图如下: (2)键盘控制电路 键盘可实现对时间的校对,用两个按键来实现。按时键来调节小时的时间,按分键来调节分针的时间。其电路连接图如下: (3)显示电路 LED显示器是现在最常用的显示器之一发光二极管(LED)分段式显示器由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,采用动态显示方式显示时间,其硬件连接方式如下图所示。

数字电子钟设计说明..

数字电子钟课程设计 一、设计任务与要求 (1)设计一个能显示时、分、秒的数字电子钟,显示时间从00: 00: 00到23: 59: 59; (2)设计的电路包括产生时钟信号,时、分、秒的计时电路和显示电路(3)电 路能实现校正 (5)整点报时 二、单元电路设计与参数计算 1. 振荡器 石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。它还具有压电效应,在晶体某一方向加一电场,则在与此垂直的方向产生机械振动,有 了机械振动,就会在相应的垂直面上产生电场,从而机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限止时,才达到最后稳定。这用压电谐振的频率即为晶体振荡器的固有频率。 2. 分频器 由于振荡器产生的频率很高,要得到秒脉冲需要分频,本实验采用一片74LS90 和两片74LS160实现,得到需要的秒脉冲信号。

3. 计数器 秒脉冲信号经过计数器,分别得到“秒”个位、十位、“分”个位、十位以及 “时”个位、十位的计时。“秒” “分”计数器为六十进制,小时为二十四进制。 (1)六十进制计数 由分频器来的秒脉冲信号,首先送到“秒”计数器进行累加计数,秒计数器应完 成一分钟之内秒数目的累加,并达到 60秒时产生一个进位信号。本作品选用一 片74LS161和一片74LS160采取同步置数的方式组成六十进制的计数器。 (2)二十四进制计数 “24翻1”小时计数器按照“ 00— 01—02,, 22—23— 00—01”规律计数。与生 活中计数规律相同。二十四进制计数同样选用74LS161和74LS160计数芯片。但 清零方式采用的是异步清零方式。 MMgM 加 EHagij Z 1 进位信号 脉冲

相关文档
最新文档