专题一:数字钟及校园打铃系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计目标:
1、基本的数字钟计时功能、校时功能; 2、定时闹钟功能; 可以任意设定闹钟时间,闹铃时间为1分钟。 3、校园打铃功能; (1)正常教学打铃:分夏季作息时间和春季作息时间打铃, 响铃时间20秒。两季作息时间通过开关切换。 (2)考试时间打铃,响铃时间20秒。 (3)正常教学打铃和考试打铃通过开关切换。
END behav;
二、定时闹钟功能电路设计
七段数码管译码器及显示器 时 输 出 分 输 出 秒 输 出 K1闭合,显示正常计时时间 K1断开,显示定时器时间
VCC
K1
正常计时时间和定时时间输出选择切换电路 分 时 输 输 出 出 定时时间存储电路
时 输 出
秒脉冲
分 输 出
秒 输 出
基本数字钟电路 复位 校时功能切换 复位
60进制计数器设计(VHDL程序) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY clock_60 IS PORT( CLRN,EN,CLK: IN STD_LOGIC; cout1: out STD_LOGIC; Qsa : OUT INTEGER RANGE 0 TO 9; Qsb : OUT INTEGER RANGE 0 TO 5); END clock_60; ARCHITECTURE a OF clock_60 IS BEGIN PROCESS(CLK,CLRN) VARIABLE tmpsa: INTEGER RANGE 0 TO 9; VARIABLE tmpsb: INTEGER RANGE 0 TO 5;
原理图设计方法
带校时电路的数字钟电路设计
状态源自文库状态图
2选1多路选择器vhdl程序
ENTITY mux21a IS PORT( a, b : IN BIT ; k : IN BIT; c : OUT BIT ) ; END ENTITY mux21a ; ARCHITECTURE one OF mux21a IS BEGIN c <= a WHEN k = ‘1' ELSE b ; END ARCHITECTURE one ;
D2 PIO41
D1 PIO40 FPGA/CPLD 目标芯片 PIO47-PIO40 PIO7 PIO6 PIO5 PIO4 PIO3 PIO2 PIO0
D16
D15
D14
D13
D12
D11
D9 单脉冲
单脉冲 键8 键7 键6 键5
单脉冲 键4 键3 键2
键1
实验电路结构图 NO.7
SPEAKER
接下页
数字钟时计数器
u24H: PROCESS(COUT2,CLRN) VARIABLE tmpHa: INTEGER RANGE 0 TO 9; VARIABLE tmpHb: INTEGER RANGE 0 TO 2; BEGIN IF CLRN='0' THEN tmpHb := 0; tmpHa := 0; ELSIF COUT2'event AND COUT2='1' THEN IF EN='1' THEN IF tmpHb=2 AND tmpHa=3 THEN tmpHa:=0; tmpHb:=0 ;COUT3<='1'; ELSIF tmpHa=9 THEN tmpHa:=0; tmpHb:=tmpHb+1; COUT3<='0'; ELSE tmpHa:=tmpHa+1;COUT3<='0'; END IF; END IF; END IF ; QHA<=tmpHa;QHB<=tmpHb;COUT<=COUT3; END PROCESS u24H; END a; 结构图NO.7:此电路适合于设计时钟、定时器、秒表等。因为可利用键8和键5分别 控制时钟的清零和设置时间的使能;利用键7、5和1进行时、分、秒的设置。
一、基本的数字钟计时功能、校时功能电路设计
1、基本计时功能电路设计
60进制计数器元件外部引脚功能图
说明:1、EN=‘1’时,正常计数,= ‘0’时,停止计数。 2、CLRN=’0’时,复位清零, =‘1’时,正常计数。 3、CLK时钟信号,上升沿触发。 4、QSA:60进制个位输出; QSB:60进制十位输出。
定时器控制电路
校时
调时或调分 “+”键 选择开关
数字钟VHDL程序的结构体部分
ARCHITECTURE a OF clock_v IS signal cout1,cout2,COUT3:STD_LOGIC; BEGIN u60s: PROCESS(CLK,CLRN) VARIABLE tmpsa: INTEGER RANGE 0 TO 9; VARIABLE tmpsb: INTEGER RANGE 0 TO 5; BEGIN IF CLRN='0' THEN tmpsb := 0; tmpsa := 0; ELSIF CLK'event AND CLK='1' THEN IF EN='1' THEN IF tmpsb=5 AND tmpsa=9 THEN tmpSa:=0; tmpSb:=0 ;COUT1<='1'; ELSIF tmpSa=9 THEN tmpSa:=0; tmpSb:=tmpSb+1; COUT1<='0'; ELSE tmpSa:=tmpSa+1;COUT1<='0'; END IF; END IF; END IF ; QSA<=tmpsa;QSB<=tmpsb; END PROCESS u60s; 接下页
数字钟实体
数字钟实体
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY clock_v IS PORT( EN,CLK,CLRN : IN STD_LOGIC; QSa,QMa,QHa : OUT INTEGER RANGE 0 TO 9; QSb,QMb : OUT INTEGER RANGE 0 TO 5; QHb : OUT INTEGER RANGE 0 TO 2 ; cout: out std_logic ); END clock_v;
24进制计数器设计元件外部引脚功能图:
说明:1、EN=‘1’时,正常计数,=‘0’时,停止计数。 2、CLRN=’0’时,复位清零,=‘1’时,正常计数。 3、CLK时钟信号,上升沿触发。 4、QHA:24进制个位输出;QHB:24进制十位输出。
24进制计数器设计 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY clock_24 IS PORT( CLRN,EN,CLK: IN STD_LOGIC; cout: out STD_LOGIC; Qha : OUT INTEGER RANGE 0 TO 9; Qhb : OUT INTEGER RANGE 0 TO 2); END clock_24; ARCHITECTURE a OF clock_24 IS BEGIN PROCESS(CLK,CLRN) VARIABLE tmpha: INTEGER RANGE 0 TO 9; VARIABLE tmphb: INTEGER RANGE 0 TO 2;
8
7
6
5
4
3
2
1 扬声器
译码器
译码器
译码器
译码器
译码器
译码器 PIO19-PIO16 PIO23-PIO20 PIO27-PIO24 PIO31-PIO28 PIO35-PIO32 PIO39-PIO36
D8 PIO47
D7 PIO46
D6 PIO45
D5 PIO44
D4 PIO43
D3 PIO42
专题二:数字钟及校园打铃系统设计
一、教学内容:数字钟设计
二、教学目的及要求: 1、掌握VHDL语言的基本结构及编程思想。 2、掌握VHDL语言的软件仿真方法。 3、掌握VHDL语言的下载及硬件仿真方法。 4、提高综合应用能力。
三、授课课时:6课时
四、教学重点、难点:数字钟VHDL语言设计
数字钟及校园打铃系统设计
状 态 机 程 序
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY zhuantaiji IS PORT ( CLK 0,reset: IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END zhuantaiji; ARCHITECTURE behav OF zhuantaiji IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL stx : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN --决定转换状态的进程 IF RESET ='1' THEN STX <= ST0; ELSIF CLK'EVENT AND CLK = '1' THEN CASE STX IS WHEN st0 => STX <= st1; WHEN st1 => STX <= st2; WHEN st2 => STX <= st3; WHEN st3=> STX <= st0; WHEN OTHERS => STX <= st0; END CASE ; END IF; END PROCESS COMREG ;
BEGIN IF CLRN='0' THEN tmphb := 0; tmpha := 0; ELSIF CLK'event AND CLK='1' THEN IF EN='1' THEN IF tmphb=2 AND tmpha=3 THEN tmpha:=0; tmphb:=0 ;COUT<='1'; ELSIF tmpha=9 THEN tmpha:=0; tmphb:=tmphb+1; ELSE tmpha:=tmpha+1; END IF; END IF; END IF ; QHA<=tmpha;QHB<=tmphb; END PROCESS ; END a;
BEGIN IF CLRN='0' THEN tmpsb := 0; tmpsa := 0; ELSIF CLK'event AND CLK='1' THEN IF EN='1' THEN IF tmpsb=5 AND tmpsa=9 THEN tmpSa:=0; tmpSb:=0 ;COUT1<='1'; ELSIF tmpSa=9 THEN tmpSa:=0; tmpSb:=tmpSb+1; ELSE tmpSa:=tmpSa+1; END IF; END IF; END IF ; QSA<=tmpsa;QSB<=tmpsb; END PROCESS ; END a;
COM1: PROCESS(STX) --输出控制信号的进程 BEGIN CASE STX IS WHEN st0 => y <= “111" ; WHEN st1 => y <= “011" ; WHEN st2 => y <= “101" ; WHEN st3=> y <= “110" ; WHEN OTHERS => Q<=“111" ; END CASE ; END PROCESS COM1 ;
数字钟分计数器
u60M: PROCESS(cout1,CLRN) VARIABLE tmpMa: INTEGER RANGE 0 TO 9; VARIABLE tmpMb: INTEGER RANGE 0 TO 5; BEGIN IF CLRN='0' THEN tmpMb := 0; tmpMa := 0; ELSIF COUT1'event AND COUT1='1' THEN IF EN='1' THEN IF tmpMb=5 AND tmpMa=9 THEN tmpMa:=0; tmpMb:=0 ;COUT2<='1'; ELSIF tmpMa=9 THEN tmpMa:=0; tmpMb:=tmpMb+1; COUT2<='0'; ELSE tmpMa:=tmpMa+1;COUT2<='0'; END IF; END IF; END IF ; QMA<=tmpMa;QMB<=tmpMb; END PROCESS u60M;
相关文档
最新文档