搜档网
当前位置:搜档网 › VHDL实验报告-自动打铃系统-1228401082曹刚

VHDL实验报告-自动打铃系统-1228401082曹刚

VHDL实验报告-自动打铃系统-1228401082曹刚
VHDL实验报告-自动打铃系统-1228401082曹刚

第二次实验

自动打铃系统(14)

姓名:曹刚

学号:1228401082

班级:12电子信息工程

一.实验目的

1、综合运用EDA技术,完成自动打铃系统的设计与操作;

2、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现

方法和应用技巧;

3、通过本实践环节,培养科学和严谨的工作作风。

二.实验要求

1.用6个数码管实现时,分、秒的数字显示;

2.能设置当前时间;

3.能实现上、下课打铃及起床铃、熄灯铃功能;

4.能实现整点报时功能,并能控制启动和关闭;

5.能实现调整打铃时间和间歇长短的功能;

三.实验设计说明

根据设计要求,可以将自动打铃系统的划分为以下几个模块:

1.状态机:系统有多种显示模式,设计中将每种模式当成一种状态,采用用状态机来进行模式切换,将其作为系统的中心控制模块;

2.计时调时模块:用于完成基本的数字钟功能;

3.打铃时间设定模块:系统中要求打铃时间可调,此部分功能相对独立,单独用一个模块实现;

4.打铃长度设定模块:用以设定打铃时间的长短;

5.显示控制模块:根据当前时间和打铃时间等信息决定当前显示的内容;

6.打铃控制模块:用于控制铃声音乐的输出;

7.分频模块、分位模块、七段数码管译码模块等;

以上各模块可用下图表示其间的联系。

四. 实验原理

用层次化设计的方法以VHDL 语言编程实现以下功能:

【1】 具有“时”、“分”、“秒”计时功能;时为24进制,分和秒都为60进制。

【2】 具有消抖功能:手工按下键盘到是否这个过程大概50ms 左右,在按下开始到弹簧

片稳,定接触这段时间为5-10ms ,从释放到弹片完全分开也是5-10ms ,在达到稳定接触和完全分开的微观过程中,电平是时高时低的,因此如果在首次检测到键盘按下时延时10ms 再检测就不会检测到抖动的毛刺电平了。64Hz 的信号周期为15.6ms ,正适合做消抖信号。

【3】 具有校时和清零功能,能够用4Hz 脉冲对“小时”和“分”进行调整,并可进行秒清零; 【4】 具有整点报时功能。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59

分59秒发出一次高音1024Hz 信号,音响持续1秒钟,在1024Hz 音响结束时刻为整点。

【5】 具有一键设定闹铃及正常计时与闹铃时间的显示转换。闹时时间为一分钟。 【6】 具有学校的上下课铃,熄灯铃的功能,并且可以控制打铃时间的长短。 总体的设计框图如下

按键

状态机 计时调时模块

打铃时间 设定模块

打铃长度 设定模块

显示控制及打铃控制模块

七段数码管 译码电路

七段数码管

铃声音乐控制模块

闪烁指示信号

模块启动信号 与按键调节信号等

当前时间

打铃时间

铃声长度

打铃指示 信号等

图自动打铃系统总体设计框图

五.实验模块

1.时钟模块设计:

时钟模块是学校打铃器最基本的模块,主要实现基本计时、调时、调分功能,包括秒计数模块、分计数模块、时计数模块。

①秒计数模块:

如图所示为秒计数模块符号图。输入端口clr是秒计数模块的清零信号,也是整个数字中的使能信号,低电平有效;clk是秒脉冲输入端口,外接分频模块频率为1Hz的时钟信号;输出端口cq0[3..0]是秒时钟的低位,cq1[3..0]是高位;co端口是进位输出端口,当秒计数到59时输出高电平,其它时候输出低电平。

模块图如图。六十进制带进位计数器,可清零,当q0计满9后q1增加1,当q0满9且q1记满5,q1、q0同时归零,co输出为高电平。q1为十位q0为个位。

clk clr

co cq0[3..0] cq1[3..0]

second

inst

②分计数模块:

如图所示为分计数模块符号图。输入端口clr1是分计数模块的清零信号,也是整个数字中的使能信号,低电平有效;clk1是秒脉冲输入端口端口;cq2[3..0]是分计时的低位,cq3[3..0]是分计时的高位;cout端口是进位输出端口,接时计数的clk1作为时钟输入,当秒计数到59时输出高电平,其它时候输出低电平。

clk1 clr1

cout cq2[3..0] cq3[3..0]

inst1

③时技术模块:

如图所示为时计数模块符号图。输入端口clr是时计数模块的清零信号,也是整个数字中的使能信号,低电平有效;clk是秒脉冲输入端口输出端口;q0[3..0]是分计时的低位,q1[3..0]是分计时的高位。

此为24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动归零。带清零,clk输入为分秒进位相与的结果。q1为十位,q0为个位。

clk3 rst3 m cq4[3..0] cq5[3..0]

hour

inst6

2.分频模块设计:

晶体振荡器是构成数字时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定。石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且振荡信号的频率与振荡电路中的R、C元件的数值无关[7]。

模块图如图所示。由四个分频器构成,输入信号in_clk为1024Hz脉冲信号。把输入的8192Hz信号分频为四个脉冲信号,即1Hz的秒脉冲,4Hz的校时、校分脉冲,64Hz的消抖脉冲,以及512Hz和1024Hz的蜂鸣器低音输入。

in_clk clk_1

clk_4

clk_64

clk_512

clk_1024

div

inst

3.消抖模块设计:

由于大部分按键式机械触点,在触点闭合和断开时都会产生抖动,为避免抖动引起的误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按一次只做一次响应。

在本设计初期完成后,下载程序测试时,拨动按键或者按下按键时显示出现异常,这就需要加入按键消抖模块。

模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按键按下的信号。该模块有一个时钟输入端口,输入时钟信号是分频出来的64Hz的时钟信号;对sa 校时信号、sb校分信号、sc秒清零信号、sd闹时设置信号进行防抖动处理。是由四个两级d触发器构成的,分别对输入的sa、sb、sc、sd信号的相邻两个上升沿进行比较以确定按键的按下,从而达到消抖的目的。模块图如下:

clk_64 sa

sb

sc

m

k2

hj mj sclr sdo ml k2j

inst12

4.闹钟模块设计:

模块如图所示。一键设定闹铃时间,内部由四个d触发器构成。当确定sd键按下时,将当前时间的小时和分的个位十位分别存入四个d触发器内,作为闹时时间。ml_o[3..0]、mh_o[3..0]、hl_o[3..0]、hh_o[3..0]分别为闹钟时间的分低位、分高位、时低位和时高位。

sd

hh[3..0] hl[3..0] mh[3..0] ml[3..0]

hh_o[3..0] hl_o[3..0] mh_o[3..0] ml_o[3..0]

nz

inst3

5.调时模块设计:

如图所示为调时模块符号图。本设计的调时模块类似于二选一数据选择器,输入端口alarm是调时模块的调时开关,当为高电平是输出a 的数据,当为低电平时输出b的数据;a端接上一个计时模块的进位输出;b端接分频器的输出时钟脉冲;y为模块的输出,作为计时模块的输入时钟。由此可知当alarm为低电平时可进行调时、调分。

alarm a

b y

x21

inst9

6.整点报时和闹钟模块设计:

模块图如图所示。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。

min1[3..0] min0[3..0] sec1[3..0] sec0[3..0] hh[3..0]

hl[3..0] mh[3..0] ml[3..0] hou0[3..0] hou1[3..0] in_512

in_1024q

v oice inst8

7.打铃模块设计:

如表所示为学校作息时间。学校作息时间上课下课时间共包括18个时间点,将此写入程序中,当时钟时间与这些时间相同时,输出高电平,与时钟信号相与,作为报警模块的输入。

表2-1 学校作息时间

春季作息时间 上课 下课 上午

08:00 08:40 08:50

09:30 09:40 10:20 10:30 11:10 11:10 12:00 下午

14:00

14:40 14:50 15:30 15:40 16:20 16:30

17:10

如图所示为打铃模块设计框图。模块包括作息选择和时间比较部分,其设计思路为:将时钟的时高位、时低位、分高位、分低位分别于表2.1中的打铃时间数据进行比较,若相等,则Q_Y 输出高电平,否则输出低电平。

Q_HA[3..0]Q_MA[3..0]Q_HB[3..0]Q_MB[3..0]

Q_Y

COMP_TIME

inst7

7.显示模块设计:

对于本自动打铃系统的设计,必不可少的就是显示模块的设计,因为根据设计要求,时钟的计时显示、闹钟的时间设定、蜂鸣器报警时长的设定,都需要数码管来显示,实际应用的时候,用实验箱上的数码管显示是最直观的表现。

六. 实验程序及仿真

1.时钟模块设计: (1)秒计数模块 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity second IS

port(clk,clr:in std_logic;

时 段

co:out std_logic;

cq0:out std_logic_vector(3 downto 0);

cq1:out std_logic_vector(3 downto 0)); END second;

ARCHITECTURE behave of second is SIGNAL d: std_logic_vector(3 downto 0); SIGNAL g: std_logic_vector(3 downto 0); BEGIN

process(clk,clr,d,g)

BEGIN

if (clr ='1') then

d <="0000";

g <="0000";

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

if(d=9 and g=5)then

co<='1';

else

co<='0';

end if;

if(d=9)then

d<="0000";

if(g=5)then

g<="0000";

else

g<=g+1;

end if;

else

d<=d+1;

end if;

end if;

end process;

cq0<=d;cq1<=g;

end behave;

波形仿真:

(2)分计数模块

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity minute IS

port(clk1,clr1:in std_logic;

co:out std_logic;

cq0:out std_logic_vector(3 downto 0);

cq1:out std_logic_vector(3 downto 0)); END minute;

ARCHITECTURE behave of minute is SIGNAL d: std_logic_vector(3 downto 0); SIGNAL g: std_logic_vector(3 downto 0); BEGIN

process(clk1,clr1,d,g)

BEGIN

if (clr1 ='1') then

d <="0000";

g <="0000";

elsif(clk1'EVENT and clk1='1')then

if(d=9 and g=5)then

co<='1';

else

co<='0';

end if;

if(d=9)then

d<="0000";

if(g=5)then

g<="0000";

else

g<=g+1;

end if;

else

d<=d+1;

end if;

end if;

end process;

cq0<=d;cq1<=g;

end behave;

波形仿真和秒计时相同。

(3)时技术模块:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity hour IS

port(clk3,rst3,m:in std_logic;

cq4:out std_logic_vector(3 downto 0);

cq5:out std_logic_vector(3 downto 0)); END hour;

ARCHITECTURE behave of hour is

SIGNAL d: std_logic_vector(3 downto 0);

SIGNAL g: std_logic_vector(3 downto 0);

BEGIN

process(clk3,rst3,m,d,g)

BEGIN

if (rst3 ='1') then

d <="0000";

g <="0000";

elsif(clk3'EVENT and clk3='1')then

if(m='0') then

if(d=9 or (d=1 and g=1))then

d<="0000";

if(g=1)then

g<="0000";

else

g<=g+1;

end if;

else

d<=d+1;

end if;

else

if(d=9 or (d=3 and g=2))then

d<="0000";

if(g=2)then

g<="0000";

else

g<=g+1;

end if;

else

d<=d+1;

end if;

end if;

end if;

end process;

cq4<=d;cq5<=g;

end behave;

波形仿真如下:

2.分频模块设计:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity div is

port(in_clk:in std_logic;

clk_1,clk_4,clk_64,clk_512,clk_1024:out std_logic);

end div;

architecture one of div is

signal a,b,c,d,e:std_logic;

signal c1,c4,c64,c512,c1024:integer range 8192 downto 0;

begin

process(in_clk)

begin

if in_clk'event and in_clk='1' then

if c1024>=7 then c1024<=0;e<=not e;else c1024<=c1024+1;end if;

if c512>=15 then c512<=0;d<=not d;else c512<=c512+1;end if;

if c64>=127 then c64<=0;c<=not c;else c64<=c64+1;end if;

if c4>=2047 then c4<=0;b<=not b;else c4<=c4+1;end if;

if c1>=8191 then c1<=0;a<=not a;else c1<=c1+1;end if;

end if;

end process;

clk_1<=a;

clk_4<=b;

clk_64<=c;

clk_512<=d;

clk_1024<=e;

end one;

波形仿真如下:

3.消抖模块设计:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity xd is

port(clk_64,sa,sb,sc,m,k2:in std_logic;

hj,mj,sclr,sdo,ml,k2j:out std_logic);

end xd;

architecture one of xd is

begin

process(clk_64)

variable sa_n,sa_p,sb_n,sb_p,sc_n,sc_p,m_n,m_p,k2_p,k2_n:std_logic; begin

if clk_64'event and clk_64='1' then

sa_p:=sa_n;sa_n:=sa;

sb_p:=sb_n;sb_n:=sb;

sc_p:=sc_n;sc_n:=sc;

m_p:=m_n;m_n:=m;

k2_p:=k2_n;k2_n:=k2;

if sa_p= sa_n then hj<=sa;end if;

if sb_p= sb_n then mj<=sb;end if;

if sc_p= sc_n then sclr<=sc;end if;

if m_p=m_n then ml<=m;end if;

if k2_p=k2_n then k2j<=k2;end if;

end if;

end process;

end one;

波形仿真如下:

4.闹钟模块设计:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity nz is

port (sd:in std_logic;

hh,hl,mh,ml:in std_logic_vector(3 downto 0);

hh_o,hl_o,mh_o,ml_o:out std_logic_vector(3 downto 0)); end nz;

architecture one of nz is

begin

process (sd,hh,hl,mh,ml)

begin

if sd'EVENT and sd='1' then

hh_o<=hh;hl_o<=hl;mh_o<=mh;ml_o<=ml;end if;

end process;

end one;

波形仿真如下图:

5.调时模块设计:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity x21 is

port (alarm,a,b:in std_logic;

y:out std_logic);

end x21;

architecture one of x21 is

begin

process(alarm,a,b)

begin

if alarm='0' then y<=a;else y<=b;

end if;

end process;

end one;

波形仿真如下图:

6.整点报时和闹钟模块设计:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

USE IEEE.STD_LOGIC_ARITH.ALL;

entity voice is

port (min1,min0,sec1,sec0,hh,hl,mh,ml,hou0,hou1:in std_logic_vector(3 downto 0); in_512,in_1024:in std_logic;

q:out std_logic);

end voice;

architecture one of voice is

begin

process(min1,min0,sec1,sec0)

begin

if min1="0101" and min0="1001" and sec1="0101" then

if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111" then q<=in_512;

elsif sec1="0101" and sec0="1001" then q<=in_1024;

else q<='0';

end if;

else q<='0';

end if;

if min1=mh and min0=ml and hou1=hh and hou0=hl then q<=in_1024;

end if;

end process;

end one;

波形仿真如下图:

7.打铃模块设计:

library ieee;

use ieee.std_logic_1164.all;

entity comp_time is

port( q_ha,q_ma:in std_logic_vector(3 downto 0);

q_hb: in std_logic_vector(3 downto 0);

q_mb: in std_logic_vector(3 downto 0);

Q_Y: out std_logic);

end comp_time;

architecture a of comp_time is

signal qtime: std_logic_vector(15 downto 0);

begin

qtime<=q_hb & q_ha & q_mb & q_ma;

process(qtime)

begin

case qtime is:

when "0000100000000000" => Q_Y<='1'; when "0000100001000000" => Q_Y<='1';

when "0000100001010000" => Q_Y<='1'; when "0000100100110000" => Q_Y<='1';

when "0000100101000000" => Q_Y<='1'; when "0000101000100000" => Q_Y<='1';

when "0000101000110000" => Q_Y<='1'; when "0000101100010000" => Q_Y<='1';

when "0000101100100000" => Q_Y<='1'; when "0000110000000000" => Q_Y<='1';

when "0000111000000000" => Q_Y<='1'; when "0000111001000000" => Q_Y<='1';

when "0000111001010000" => Q_Y<='1'; when "0000111100110000" => Q_Y<='1';

when "0000111101000000" => Q_Y<='1'; when "0001000000100000" => Q_Y<='1';

when "0001000000110000" => Q_Y<='1'; when "0001000100010000" => Q_Y<='1';

when others=> Q_Y<='0';

end case;

end process;

end a;

七.引脚映射

本次设计我们采用GW48 EDA实验箱,选择芯片EP1K30TC144-3,选择模式0,引脚锁定如下表所示:

Node Pin

1 CLK 56

2 sa 30

3 sb 31

4 sc 32

5 p 33

6 m 36

7 clr 37

8 sec03 67

9 sec02 65

10 sec01 42

11 sec00 41

12 sec13 72

13 sec12 70

14 sec11 69

15 sec10 68

16 min03 80

17 min02 79

18 min01 78

19 min00 73

20 min13 86

21 min12 83

22 min11 82

23 min10 81

24 hour03 90

25 hour02 89

26 hour01 88

27 hour00 87

28 hour13 96

29 hour12 95

30 hour11 92

31 hour10 91

八.编程调试

首先在连接电脑前,在实验箱上选择模式0,引脚映射如上表所示。

然后将程序下载到实验箱内,结果前六个数码管显示时间,时间从00开始增加,按键6可以进行时加速,按键5可以进行分加速,按键4可以进行闹钟时间设定,按键3清零。在到达整点时会听见三声比较轻的声音,刚好到达整点时将会听到一声比较高的声音,验证成功。

九.实验原理图

十.实验总结

1.本次实验结果并不像设计的那么好,最终我们只利用该打铃系统实现了数字钟,整点报时,闹钟定时等功能,对于上下课打铃这个模块并没能最最终实现,虽然已经编写出程序,生成模块,但是此模块的连接比较繁琐还需要其他模块,故最终我们放弃了这个模块的

设计。

2.本次实验理论上是要编写一个自动打铃系统,但是最终我们并没能完全实现自动,在整点报时部分可以实现,但是在闹钟设定以及闹钟时长设定部分都需要通过手动调节而成。

3.收获:通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了打铃模块而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示。后来,在数十次的调试,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。

总的来说,这次设计的自动打铃系统还是比较成功的,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

数字电子时钟实验报告材料

华大计科学院 数字逻辑课程设计说明书 题目:多功能数字钟 专业:计算机科学与技术 班级:网络工程1班 姓名:刘群 学号: 1125111023 完成日期:2013-9

一、设计题目与要求 设计题目:多功能数字钟 设计要求: 1.准确计时,以数字形式显示时、分、秒的时间。 2.小时的计时可以为“12翻1”或“23翻0”的形式。 3.可以进行时、分、秒时间的校正。 二、设计原理及其框图 1.数字钟的构成 数字钟实际上是一个对标准频率 1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路。图 1 所示为数字钟的一般构成框图。 图1 数字电子时钟方案框图

⑴多谐振荡器电路 多谐振荡器电路给数字钟提供一个频率1Hz 的信号,可保证数字钟的走时准确及稳定。 ⑵时间计数器电路 时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成。其中秒个位和秒十位计数器、分个位和分十位计数器为60 进制计数器。而根据设计要求,时个位和时十位计数器为24 进制计数器。 ⑶译码驱动电路 译码驱动电路将计数器输出的8421BCD 码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。 ⑷数码管 数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管。本设计提供的为LED数码管。 2.数字钟的工作原理 ⑴多谐振荡器电路 555 定时器与电阻R1、R2,电容C1、C2 构成一个多谐振荡器,利用电容的充放电来调节输出V0,产生矩形脉冲波作为时钟信号,因为是数字钟,所以应选择的电阻电容值使频率为1HZ。 ⑵时间计数单元 六片74LS90 芯片构成计数电路,按时间进制从右到左构成从低位向高位的进位电路,并通过译码显示。在六位LED 七段显示起上显示

VHDL实验报告

《创新实验》实验报告 —基于VHDL的编程和硬件实现

一、实验目的 1.熟悉和掌握硬件描述语言VHDL的基本语法及编写; 2.掌握软件Xilinx ISE 10.1的使用; 3.熟悉SDZ-6电子技术实验箱的使用; 4.了解节拍脉冲发生器等基本电路的实现; 5.了解八位二进制计数器的功能与设计; 6.学习键盘和七段数码管显示的控制和设计。 二、实验内容 1.Xilinx ISE 10.1软件的使用; 2.节拍脉冲发生器等基本电路的实现; 3.八位二进制计数器的实现 4.键盘扫描及显示的实现 三、实验器材 1、PC机 2、SDZ-6电子技术实验箱 3、正负5V电源 4、I/O接口线 四、软件的使用 在安装Xilinx10.1软件时,需要一个ID号,其实这个ID号是可以重复使用的,几个同学在官网注册后就可以共享ID号了。 安装完成之后就可以使用这个软件编写相应的VHDL的程序。 1.新建工程 File—>New Project 弹出下面的对话框 输入工程名后单击Next。然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击Next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击Finish,完成新建一个工程。在窗口的左边会出现刚刚新建的工程,如下: 2.新建一个VHDL的源文件。 在上图中,右击工程选择New Source ,弹出如下对话框。

在对画框的左边选择VHDL Module,输入文件的名字(改名字最好是你定义的实体的名字)。单击Next。出现下面的对话框。 该对话框主要是对外部端口的编辑。可以直接跳过,即单击Next,在源文件上编辑端口。然后在接下来的对话框中单击Finish。完成建立一个源文件。窗口右边就会出现刚才编辑的源文件。 3.编写和编译代码 将事先编好的代码复制到源文件里,然后保存文件。 选中左边的文件名,在窗体的左边出现如下编辑文档内容。

数字电子钟实验报告

咸阳师范学院物理与电子工程学院 课程设计报告 题目: 班级: 姓名: 学号: 指导教师: 成绩: 完成日期:年月

目录 第一章概述 3 第二章数字电子钟的电路原理 4 第三章电路调试与制作11 第四章总结与体会12 第五章附录13

第一章概述 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运运超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 虽然市场上已有现成的数字集成电路芯片出售,价格便宜,使用方便,这里所制作的数字电子可以随意设置时,分的输出,是数字电子中具有体积小、耗电省、计时准确、性能稳定、维护方便等优点。 课程设计目的 (1)加强对电子制作的认识,充分掌握和理解设计个部分的工作原理、设计过程、选择芯片器件、电路的焊接与调试等多项知识。 (2)把理论知识与实践相结合,充分发挥个人与团队协作能力,并在实践中锻炼。 (3)提高利用已学知识分析和解决问题的能力。 (4)提高实践动手能力。

第二章数字电子钟的电路原理 数字电子钟的设计与制作主要包括:数码显示电路、计数器与校时电路、时基电路和闹铃报时电路四个部分。 1.数码显示电路 译码和数码显示电路是将数字钟的计时状态直观清晰地反映出来。显示器件选用FTTL-655SB双阴极显示屏组。在计数电路输出信号的驱动下,显示出清晰的数字符号。 2.计数器电路 LM8560是一种大规模时钟集成电路它与双阴极显示屏组可以制成数字钟钟控电路。 3.校时电路 数字钟电路由于秒信号的精确性和稳定性不可能做到完全准确无误,时基电路的误差会累积;又因外部环境对电路的影响,设计产品会产生走时误差的现象。所以,电路中就应该有校准时间功能的电路。通过手动调节按键,达到校准的目的。 4.定时报警电路 当调好定时间后并按下开关K1(白色键),显示屏右下方有红点指示,到定时时间有驱动信号经R3使VT1工作,即可定时报警输出。 芯片资料 LM8560是一种大规模时钟集成电路它与双阴极显示屏组可以制成数字钟钟控电路。作为时钟,它准确醒目;作为控制开关,它动作无误;在1小时59分钟或59分钟内,能任意暂停,使用十分方便。 仔细观察从0-9的每个数字并比较图1所示的笔段。内部电路参看图2, LM8560各脚功能,参看图3。

VHDL实验报告03137

VHDL实验报告 60 庄炜旭实验三. 4位可逆计数器,4位可逆二进制代码-格雷码转换器设计 一.实验目的 学习时序电路的设计,仿真和硬件测试,进一步熟悉VHDL设计技术 1. 学习4位可逆计数器的设计 2. 学习4位可逆二进制代码-格雷码转换器设计 二.实验内容 设计4位可逆计数器,及4位可逆二进制代码-格雷码转换器,并仿真,下载。 [具体要求] 1.4位可逆计数器 a)使用CLOCK_50作为输入时钟,其频率为50MHz(对于频率大于50Hz的闪烁, 人眼会看到连续的光),因而,对其进行225的分频后,再用于时钟控制。(可 利用实验一) b)使用拨码开关SW17作为模式控制,置‘1’时为加法计数器,置‘0’时为减 法计数器,同时使用LEDR17显示SW17的值。 c)使用KEY3作为异步复位开关(按下时为0,不按为1),当为加法计数器时, 置“0000”,当为减法计数器时,置“1111”。 d)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 2.4位可逆二进制代码――格雷码转换器 a)使用拨码开关SW17作为模式控制,置‘1’时为二进制代码―>格雷码转换, 置‘0’时为格雷码―>二进制代码,同时使用LEDR17显示SW17的值。 b)使用拨码开关SW3, SW2, SW1, SW0作为输入的被转换数,SW3为高位,SW0 为低位。 c)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 三.管脚设定 SW[0]PIN_N25 SW[1]PIN_N26 SW[2]PIN_P25 SW[3] PIN_AE14 SW[17] PIN_V2 LEDR[0] PIN_AE23 LEDR[1] PIN_AF23 LEDR[2] PIN_AB21 LEDR[3] PIN_AC22 LEDR[17] PIN_AD12 KEY[3] PIN_W26

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

电子时钟实验报告_电子时钟

电子时钟实验报告 一、实验目的 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。二、设计任务及要求 利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间,显示格式为“时时分分”; 2.由LED闪动做秒显示; 3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出音乐,按停止键使可使闹玲声停止。 三、工作原理及设计思路 利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。 闹铃声由交流蜂鸣器产生,电路如右图,当P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。 四、电路设计及描述 (1)硬件连接部分: 在ZKS-03单片机综合实验仪上有四位共阳LED数码管,其标号分别为LED1~LED4。为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O 口,即P1.0口和P1.1口,一个用作数据线SDA,另一个用作时钟信号线CLK,

它们都通过跳线选择器JP1相连。 由于采用共阳LED数码管,它的阴极分别通过限流电阻R20~R27连接到控制KD_0~KD_Q7。这样控制8个发光二极管,就需要8个I/O口。但由于单片机的I/O口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。串并转换电路其实质是一个串入并处的移位寄存器,串行数据再同步移位脉冲CLK的作用下经串行数据线SDA把数据移位到KD_0~KD_Q7端,这样仅需2根线就可以分别控制8个发光二极管的亮灭。而P0口只能作地址/数据总线,P2口只能作地址总线高8位,P3.0、P3.1作为串行输入、输出接口,实验仪上单片机可用作I/O的口仅有:P1.0--P1.7,8位;P3.2、P3.3、P3.4、P3.5,4位。其中:P1.0用作数据线SDA,P1.1用作时钟信号CLK,所以P1.0和P1.1应该接对应跳线的A位,即跳线的中间和下面相连。P1.3、P1.4、P1.5和P1.6是四个数码管的位扫描线,其中P1.6对应数码管W1,显示小时高位;P1.5对应数码管W2,显示小时低位;P1.4对应数码管W3,显示分钟高位;P1.3对应数码管W4,显示分钟低位。P1.7连接蜂鸣器电路,输出不同频率的方波,使其发出不同的声音。P1.2用来控制秒的闪烁显示。故,P1.2也应该接对应跳线的A位。 其显示电路如下图所示: P3.2、P3.3、P3.4、P3.5分别连接单刀双掷开关S1、S2、S3、S4,从而输入高低电平。将S2S1定义为功能模式选择开关;S3定义为分钟数调整开关;S4定义为小时数调整开关。 当S2S1=00时,显示当前时间,不进行任何操作。 当S2S1=01时,显示当前时间,同时可进行时钟调整,若S3=1,分钟数持续加1,若S4=1,小时数持续加1。

基于VHDL语言的EDA实验报告(附源码)

EDA 实验报告 ——多功能电子钟 姓名:张红义 班级:10级电科五班 学号:1008101143 指导老师:贾树恒

电子钟包括:主控模块,计时模块,闹钟模块,辅控模块,显示模块,蜂鸣器模块,分频器模块。 1.主控模块: 主要功能:控制整个系统,输出现在的状态,以及按键信息。 源代码: libraryieee; use ieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entity mc is port(functionswitch,k,set,lightkey: in std_logic; chose21,setout: out std_logic; lightswitch:bufferstd_logic; modeout,kmodeout : out std_logic_vector(1 downto 0); setcs,setcm,setch,setas,setam,setah:outstd_logic); end mc; architecture work of mc is signalmode,kmode:std_logic_vector(1 downto 0); signal light,chose21buf:std_logic; signalsetcount:std_logic_vector(5 downto 0); begin process(functionswitch,k,set,lightkey) begin iffunctionswitch'event and functionswitch='1' then mode<=mode+'1'; end if; iflightkey'event and lightkey='1' then lightswitch<=not lightswitch; end if; if mode="01" thenchose21buf<='0'; else chose21buf<='1'; end if; ifk'event and k='1' then if mode="01" or mode="11" then kmode<=kmode+'1'; end if;end if; if set='1' then if mode = "01" then ifkmode="01" then setcount<="000001"; elsifkmode="10" thensetcount<="000010"; elsifkmode="11" then setcount<="000100";

VHDL实验报告论文

硬件描述语言期末实验报告 题目:硬件描述语言实现秒表功能 姓名xxxx 学号xxxxxxxxxx 年级专业xxxxxxxxxxxxx 指导教师xxxx 2012年6月20日

河北大学本科生VHDL硬件实验论文(设计) 硬件描述语言实现秒表功能 摘要 应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了数字系统的开发时间。我们尝试利用VHDL为开发工具设计数字秒表。 秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外整个秒表还需有一个启动信号,暂停信号和一个清零信号,以便秒表能随意停止及启动。 关键词:VHDL语言数字秒表时序仿真图

目录 一、实验目的 (1) 二、硬件要求 (1) 三、引脚说明 (1) 四、模块介绍 (2) 4.1.计数器(六、十进制) (2) 4.2.蜂鸣器 (2) 4.3.译码器 (3) 4.4.控制器 (4) 五、整体连接图 (5) 六、实验结果 (6) 七、实验总结 (6) 八、谢辞 (7) 九、附录 (7)

一实验目的 学习使用VHDL语言,以及EDA芯片的下载仿真。 二硬件要求 (1)主芯片EPF10K10LC84-4。 (2)蜂鸣器。 (3)8位八段扫描共阴极数码显示管。 (4)二个按键(暂停,开关)。 三引脚说明 3.1引脚设置 3.2信号说明 signal q:std_logic_vector(3 downto 0); --q是用于分频的信号。 signal state: std_logic_vector(3 downto 0); --state为状态信号,state为1时为暂停记录状态,为0时为正常显示计数状态。signal led: std_logic_vector(3 downto 0); --led为数码管扫描信号,通过对d1~d6的选择使数码管发光。

电子时钟实验报告_电子时钟

电子时钟实验报告

一、实验目的 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。 二、设计任务及要求 利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求: 1.在4位数码管上显示当前时间,显示格式为“时时分分”; 2.由LED闪动做秒显示; 3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出音乐,按停止键使可使闹玲声停止。 三、工作原理及设计思路 利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。 闹铃声由交流蜂鸣器产生,电路如右图,当P1.7输出不同频率的方波,蜂鸣器便会发出不同的声音。 四、电路设计及描述 (1) 硬件连接部分: 在ZKS-03单片机综合实验仪上有四位共阳LED数码管,其标号分别为LED1~LED4。 为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O口,即P1.0口和P1.1口,一个用作数据线SDA,另一个用作时钟信号线CLK,它们都通过跳线选择器JP1相连。 由于采用共阳LED数码管,它的阴极分别通过限流电阻R20~R27连接到控制KD_0~KD_Q7。这样控制8个发光二极管,就需要8个I/O口。但由于单片机的I/O口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。串并转换电路其实质是一个串入并处的移位寄存器,串行数据再同步移位脉冲CLK的作用下经串行数据线SDA把数据移位到KD_0~KD_Q7端,这样仅需2根线就可以分别控制8个

VHDL实验报告

专用集成电路实验报告 13050Z01 1305024237 刘德文

实验一开发平台软件安装与认知实验 实验内容 1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计 电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。 2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译 码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。 源程序: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity ls74138 is Port ( g1 : in std_logic; g2 : in std_logic; inp : in std_logic_vector(2 downto 0); y : out std_logic_vector(7 downto 0)); end ls74138; architecture Behavioral of ls74138 is begin process(g1,g2,inp) begin if((g1 and g2)='1') then case inp is when "000"=>y<="00000001"; when "001"=>y<="00000010";

多功能数字电子钟实验报告

一、设计题目 多功能数字电子钟 二、设计目的 1、掌握数字电路中计数、分频、译码、显示及时钟脉冲振荡器等组合逻辑电路与时序逻辑电路的综合应用。 2、掌握多功能数字钟电路设计方法、装调技术及数字钟的扩展应用。 三、设计内容及要求 1、基本要求 a)准确计时,以数字形式显示时、分、秒的时间; b)小时以24进制,分和秒为60进制; c)具有校时电路 2、设计数字钟的整体电路并画出电路图 3、组装、调试单元电路及整体电路 四、设计过程 1、查阅资料,了解数字钟电路的基本原理并画出原理框图 数字钟电路系统主要由主体电路和扩展电路两大部分组成,其中主体电路完成数字钟的基本功能,扩展电路完成数字钟的扩展功能。振荡器、分频器、计时电路、译码显示电路与校时电路五大部分组成数字钟的整体电路。其中计时电路即为时间的计时,校时电路主要是在时间不准确时调节时间到准确的时间点上。系统组成原理框图如下图1.1所示。 图1.1 数字电子钟原理框图

由以上的原理图可知,本电路主要由振荡器和分频器产生1HZ(即1秒)的秒脉冲,用秒脉冲驱动计数器开始计时。因为每分钟60秒,每小时60分钟,所以应该有24进制的“时计数器”、60进制的“分计数器”、60进制的“秒计数器”。当“秒计数器”计数到59后,下一个脉冲到达时“分计数器”就进1,“分计数器”计数到59后,再来一个脉冲“时计数器”就进1。把秒计数器的输出进行译码、显示时钟秒。分计数器的输出经译码、显示时钟分。时计数器的输出经译码、显示时钟时。例如,当计时到20:59:59时,再来一个脉冲后,就会显示21:00:00。 60进制计数器 其中,“秒”和“分”的计数器都是60进制计数器,由一级十进制计数器和一级六进制计数器级联组成。十进制计数器的复位方法我们平常已经熟悉了(即用74LS90组成:其中R0(1)=R0(2)=R1(1)=R1(2)=0),6进制计数器的复位方法是:当CP输入端输入第六个脉冲时,它的四个触发器输出的状态为“0110”,这时QbQc均为高电平“1”。将它们相“与”(用两级“与非”门,保证复位信号为高电平)后,送到计数器的清除端Cr,使计数器复“0”,从而实现60进制计数。原理图见图1.2。 图1.2 60进制计数器 24进制计数器 24进制计数器由两级十进制计数器级联、“与非门”和“非门”共同组成。原理为:当“时”计数器个位输入端CP脉冲到来第十个触发脉冲时,“时”的个位计数器复“0”,并向“时”的十位进位,在第24个触发脉冲到来时,“时”的个位计数器的四级触发器状态为“0100”,而“时”的十位计数器的状态为“0010”,这时“时”的个位计数器的Qc和“时”的十位计数器的Qb输出为“1”,把它们相“与”经两级反相器反相后,送到“时”计数器的清除端Cr,使计数器复“0”。使计数器复“0”。从而实现了24进制计数。原理图如图1.3所示。 图1.3 24进制计数器

vhdl实验报告--蜂鸣器

VHDL 实验报告 一、实验目的 1、掌握蜂鸣器的使用; 2、通过复杂实验,进一步加深对VHDL语言的掌握程度。 二、实验原理乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。 乐曲的12 平均率规定:每2 个八度音(如简谱中的中音1 与高音1)之间的频率相差1 倍。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音6)的频率为440Hz, 音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音I至高音1 之间每个音符的频率,如表所示。 音名频率/Hz 音名频率/Hz 音名频率/Hz 低音1 中音1 高音1 低音2 中音2 高音2 低音3 中音3 高音3 低音4 中音4 高音4 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 中音7 高音7 表简谱音名与频率的对应关系 产生各音符所需的频率可用一分频器实现, 由于各音符对应的频率多为非整数, 而分频系数又不能为小数, 故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低, 则由于分频系数过小, 四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素, 在尽量减小频率误差的前提下取合适的时钟频率。实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此, 要控制音符的音 长,就必须知道乐曲的速度和每个音符所对应的节拍数, 本例所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s 的话,那么一拍所应该持续的时间为秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。 本例设计的音乐电子琴选取40MHZ的系统时钟频率。在数控分频器模块,首先对时钟频率进行40分频,得到1MHZ的输入频率,然后再次分频得到各音符的频率。由于数控分频器 输出的波形是脉宽极窄的脉冲波, 为了更好的驱动蜂鸣器发声, 在到达蜂鸣器之前需要均衡占空比, 从而生成各音符对应频率的对称方波输出。这个过程实际上进行了一次二分频, 频率变为原来的二分之一即。 因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为 523. 3Hz,它的分频系数应该为: 0.375MHZ 0.375 106 716 523.3 523.3

VHDL电子钟实验报告

期末大作业课程设计实验报告设计题目:基于VHDL电子钟的设计

目录 一、概述 (3) 1.1目的 (3) 1.2课程设计的要求和功能 (3) 二、总结 (3) 2.1课程设计进行过程及步骤 (3) 2.2所遇到的问题,如何解决问题 (15) 2.3体会收获以及建议 (15) 3.4参考资料(书,网络资料) (15) 三、教师评语 (16) 四、成绩 (16)

一、概述 1.1目的 1. 基于CPLD系统模块板,设计一个电子钟。来熟悉CPLD的工作原理以及 对VHDL的使用。 2. 通过设计出一个电子钟具有校时功能,来巩固分频,键盘扫描,计数,动 态扫描等知识内容。 1.2课程设计的要求和功能 设计一个电子钟,能进行正常的时分秒计时功能,分别有六个数码管显示24小时,60分钟,60秒的计数器显示。 利用实验箱系统上的按键实现“校时”、“校分”功能: (1)按下“SA”键时,计时器快速递增,按24小时循环,进行时校正; (2)按下“SB”键时,计分器快速递增,按60分循环,进行分校正 (3)按下“SC”键时,秒清零,进行秒校正; 二、总结 2.1课程设计进行及步骤 1.设计提示 系统框图见下

2.系统结构设计描述(1)系统顶层文件 1.顶层原理图见下

2.各个模块的解释 (1)五个输入量clk50MHz,SA,SB,SC,reset: 其中clk50MHz为总体系统提供时钟,并且经过分频来分别对电子 钟模块提供时钟,产生一秒一秒的进位信号,对显示模块的计数器 提供时钟实现显示模块的扫描功能,对按键去抖动提供时钟,实现 键盘扫描的功能。SA,SB,SC用来控制按键,实现按键控制,SA是 实现“时”加一,SB是实现“分”加一,SC是实现“秒”清零。 Reset是来控制按键功能的使能。 (2)按键功能模块 三个输入chos ,date0,date1的功能是:chos接受来自按键的信号, 若按键按下,则将date0的内容,也就是通过按键产生的脉冲来控 制电子钟进行加一,若按键没有按下,则将“秒”分频信号接入电 子钟的clk计数输入端,通过时钟脉冲来控制电子钟。 (3)电子钟计数模块 有5个输入ci,nreset,load,clk,d[7..0],作用分别是ci是使能端,直 接接高电位,nreset是复位,load和d[7..0]是用来置数的,clk提供 计数时钟,也就是一秒一个脉冲。 输出端有三个,co是进位功能,只有“秒”和“分”模块有效, qh[3..0],ql[3..0]是分位的数字输出端,一个是十位,一个是个位。

vhdl实验报告

福建农林大学计算机与信息学院 信息工程类 实验报告 2013年11 月13 日

实验项目列表

福建农林大学计算机与信息学院信息工程类实验报告 系:电子信息工程系专业:电子信息工程年级: 2010级 姓名:学号:实验课程: VHDL数字系统设计 实验室号:__ 田C407 实验设备号: 07 实验时间: 11.12 指导教师签字:成绩: 实验一数控分频器的设计 1.实验目的和要求 学习数控分频器的设计、分析和测试方法。 2.实验原理 信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。 数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。 100.0μs200.0μs300.0μs400.0μs 图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns) 3.主要仪器设备(实验用的软硬件环境) 实验的硬件环境是: 微机一台 GW48 EDA实验开发系统一套 电源线一根 十芯JTAG口线一根 USB下载线一根 USB下载器一个 示波器 实验的软件环境是: Quartus II 9.0软件

4.操作方法与实验步骤 (1)创建工程,并命名位test。 (2)打开QuartusII,建立VHDL文件,并输入设计程序。保存为DVF. (3)选择目标器件。Acex1k—EP1K100QC208-3。 (4)启动编译。 (5)建立仿真波形图。 (6)仿真测试和波形分析。 (7)引脚锁定编译。 (8)编程下载。 (9)硬件测试 5.实验内容及实验数据记录 在实验系统上硬件验证例5-20的功能。可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。 6.实验数据处理与分析 1)实验代码 【例1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS PORT ( CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END; ARCHITECTURE one OF DVF IS SIGNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = "11111111" THEN CNT8 := D; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; --否则继续作加1计数 FULL <= '0'; --且输出溢出标志信号FULL为低电平 END IF; END IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2; --如果溢出标志信号FULL为高电平,D触发器输出取反

数字电子钟实验报告

目录 一、设计目的、意义 (1) 二、设计内容 (1) 1总体设计方案简介 (1) 2单元电路设计 (2) 3总电路图 (6) 4仿真结果 (7) 三、结果分析 (8) 四、设计总结 (8) 五、设计心得 (9) 参考文献 (10) 附录 (11)

一、设计目的、意义 1.巩固和加深对电子线路基本知识的理解,提高综合运用课程知识的能力。 2.培养学生根据课程需要自学参考书籍,查阅手册、图表和文献资料的能力。 3.通过实际电路方案的分析比较、设计计算、元件选取、安装调试等环节,初步掌握简单实用电路的分析方法和工程设计方法。 4.掌握常用仪器设备的正确使用方法,学会简单电路的调试和整机指标测试方法,提高动手能力。 5.了解与课程有关的电子线路及元器件工程技术规范,按课程设计任务书的要求编写设计说明书,能正确反映设计的实验结果,能正确绘制电路图。 二、设计内容 1.总体设计方案简介 电路总体框图如图2.1所示: 图2.1 数字钟原理框图 电路由振荡器、分频器、“时”“分”“秒”对应的计数器、译码显示器、校时电路、整点报时电路和闹钟电路等构成。

电路的工作原理是:振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向时计数器进位,时计数器设置成24进制计数器。计数器的输出送译码显示器显示。计时出现误差时可以用校时电路进行校时、校分、校秒。由分计数器、秒计数器的结果控制整点报时电路。当时计数器、分计数器计数到与闹钟设置电路设置的时间相同时实现闹钟功能,蜂鸣器响一分钟。 2.单元电路设计 1). 振荡器 由555定时器构成的多谐振荡器 产生1kHz的脉冲信号,电路参数如图 2.2。通过调节R3在输出端得到比较精 准的1kHz脉冲信号。 2). 分频器 分频器的功能有两个:一是产生标 准脉冲信号,二是提供整点报时电路用 的1kHz的高音频信号和500Hz的低音 频信号。选用三片74LS90完成上述功 能。第一片的Q A端输出频率为500Hz, 第二片的Q D端输出为10Hz,第三片的 Q D端输出为1Hz。电路如图2.3。 图2.2 振荡器 图2.3 分频器

VHDL实验报告一2选1多路选择器

实验一 实验目的: 熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试 二、实验内容 内容(一)用vhdl语言设计2选1多路选择器 参考例3-1程序设计如下: library ieee; use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one 全程编译后软件提示0错误,3警告,可以继续下面仿真操作。 程序分析: 这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。 时序仿真及分析: 时序仿真输入图: 时序仿真输出图: 时序分析: 由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b 下载和硬件测试: 引脚锁定图: 程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz 信号,clock2接8Hz信号。通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。 实验内容(二)双二选一多路选择器设计

程序设计: library ieee; use mux21a is port (a,b,s:in bit; y: out bit); end entity mux21a; architecture one of mux21a is begin y<=a when s='0' else b; end architecture one; entity muxk is port (a1,a2,a3,s0,s1:in bit; outy:out bit); end entity muxk; architecture bhv of muxk is component mux21a port (a,b,s:in bit; y:out bit); end component; signal tmp: bit; begin u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp); u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy); end architecture bhv; 全程编译后软件提示0错误,2警告 程序分析: 这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。实体mux21a是一个2选一选通电路,实体muxk是元件的例化,其作用是将两个mux21a组合成一个3选1多路选择器。 时序仿真及分析: 时序仿真输入图 时序仿真输出图 时序分析: 从仿真出来的结果,我们不难发现,s0和s1做为a1、a2、a3的选通控制信号。当s0=0.、s1=0时,outy输出a1;当s0=0.、s1=1时,outy输出a2;当s0=1.、s1=0时,outy输出a1;当s1=1.、s2=1时,outy输出a3; 下载和硬件测试: 引脚锁定图

单片机电子时钟实验报告

课程设计报告 设计题目: 电子时钟设计 指导教师: 姓名: 学号: 班级: 专业: 日期: 2012-1-5 目录

摘要 (3) 第一章系统设计要求 (4) 1.1基本功能 (4) 1.2扩展功能 (4) 第二章硬件总体设计方案 (4) 2.1系统功能实现总体设计思路 (4) 2.2各部分功能实现 (6) 2.3系统工作原理 (6) 2.4时钟各功能分析及图解 (6) 2.4.1电路各功能图解分析 (7) 2.4.2电路功能使用说明 (10) 第三章软件总体设计方案 (1) 控制电路的C语言源程序 (10) 第四章课程设计结果分析 (19) 第五章总结 (20) 参考文献 (21) 单片机电子时钟

摘要:单片机即单片微型计算机。(Single-Chip Microcomputer ),是集 CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于工业自动化上和智能产品。时钟,自从它被发明的那天起,就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用越来越广范,人们对时间计量的精度要求也越来越高。怎样让时钟更好的为人民服务,怎样让我们的老朋友再次焕发青春呢?这就要求我们不断设计出新型的时钟,来不断满足人们的日常生活需要。然而市场上的时钟便宜的比较笨重,简单实用的又比较昂贵。那么,有没有一款既简单实用价格又便宜的时钟呢? 我们课程设计小组设想:可不可以利用单片机功能集成化高,价格又便宜的特点设计一款结构既简单,价格又便宜的单片机电子时钟呢? 基于这种情况,我们课程设计小组成员多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。 关键词:单片机时钟计时

VHDL实验报告

VHDL实验报告 5080309563 李斌 实验三.4位可逆计数器,4位可逆二进制代码-格雷码转换器设计 [设计思路及步骤]: 一.需求: 设计4位可逆计数器,及4位可逆二进制代码-格雷码转换器,并仿真,下载。 [具体要求] 1.4位可逆计数器 a)使用CLOCK_50作为输入时钟,其频率为50MHz(对于频率大于50Hz的闪烁, 人眼会看到连续的光),因而,对其进行225的分频后,再用于时钟控制。(可 利用实验一) b)使用拨码开关SW17作为模式控制,置‘1’时为加法计数器,置‘0’时为减 法计数器,同时使用LEDR17显示SW17的值。 c)使用KEY3作为异步复位开关(按下时为0,不按为1),当为加法计数器时, 置“0000”,当为减法计数器时,置“1111”。 d)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高 位,LEDR0为低位。 2.4位可逆二进制代码――格雷码转换器 a)使用拨码开关SW17作为模式控制,置‘1’时为二进制代码―>格雷码转换, 置‘0’时为格雷码―>二进制代码,同时使用LEDR17显示SW17的值。 b)使用拨码开关SW3, SW2, SW1, SW0作为输入的被转换数,SW3为高位,SW0 为低位。 使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高位,LEDR0为低位。 二.变量解释: 4位可逆计数器: 1.clk为时钟输入,clkout为分频后的时钟,cnt为分频计数,ctr为SW17模式 控制,rst为KEY3异步复位开关,tem为输出结果的中间变量; 2.本实验的时钟输入为50MHz,定义为clk,为此设计时需要将其分频为50Hz, 需225分频,因此,代码中,需要有一个cnt作为一个225计数器,同时,定义 分频后的时钟为clkout; 3.建立process,检测key是否为0,为0则复位。否则,检测clkout,触发上升 沿则检测模式控制,对tem加1或减1,同时应检测是否达到最大或最小值, 达到最值则直接返回到最初值,否则继续操作; 4.最后,转换tem的值为相应的4位二进制数,并于LED上反映出来。 四位可逆二进制代码-格雷码转换器: 1.检测模式,进行相应的操作; 2.ctr为0则格雷码转换成二进制码;ctr为1则为二进制码转换为格雷码 [源代码]: 1)4位可逆计数器: library ieee; use ieee.std_logic_1164.all; entity cnt is

相关主题