《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc
《《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc》由会员分享,可在线阅读,更多相关《《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字电路实训基于CPLD实验板的多功能数字钟设计姓 名 李祖均 徐接勋 徐国健 学 号:1006020103 1006020116 1006020102 班 级: 应电101 指导教师: 左红英 基于CPLD实验板的多功能数字钟设计实训报告一、实训目的: 1、掌握数字电路系统的设计方法和技巧; 2、掌握数字电子钟的分频器、计时器等的设计及应用; 3、掌握VHDL源程序的设计、编译和错误修改; 4、掌握的测试向量文件建立,仿真; 5、掌握硬件测试的方法和步骤; 6、掌握器件适配的方法,设计的下载,功能测试。 7、掌握团队协作和分工的技巧。二、实训要求1、 能进行正常的时、分、秒计时功能,分别由6
2、个数码管显示24小时、60分钟、60秒钟的计数器显示;2、能利用实验系统上的按键实现计时状态下的“校时”与“校分”功能;3、能利用蜂鸣器做整点报时;4、完成电路设计后,用实验系统下载验证。附加功能:1、 能进行闹钟的时、分的设置,分别由6个数码管显示24小时、60分钟、60秒钟的闹钟显示;2、 能用实验系统上的按键实现闹钟下的“校时”与“校分”功能;3、能利用蜂鸣器做闹钟报时。三、实训过程1、数字时钟系统的设计思路利用VHDL语言编程设计数字时钟,要实现计时、调时、定时和显示功能,应首先设计一个分频器,将实验板上所提供的50MHZ分成1HZ和10000HZ两个不同的频率,其中1HZ用来驱动计数
3、器计时,调时和定时器的定时,10000HZ用来驱动动态扫描器。然后分别设计控制器,计时器,定时器,动态显示器和报时器。(在此次实训中,李祖均主要负责的是动态显示器和控制器的设计并对整个实验进行编译、仿真验证、修改错误;徐接勋负责的定时器和报时器的设计并对整个实验硬件测试;徐国健负责的是分频器和计数器的设计,还有编写实训报告。)2、各个模块的设计原理(VHDL语言)(1)分频器设计思路:利用翻转将实验板上所提供的50MHZ频率分成占空比为50%,分别为1HZ和10000HZ两个不同的频率,其中1HZ用来驱动计数器计时,调时和定时器的定时,10000HZ用来驱动动态扫描器。(该模块由徐国健负责设计
4、)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY clk_div ISPORT(CLK:IN STD_LOGIC; F10000,F1:OUT STD_LOGIC);END clk_div;ARCHITECTURE ONE OF clk_div IS SIGNAL Q0:INTEGER RANGE 0 TO 2500; SIGNAL A0:STD_LOGIC:=0; SIGNAL Q3:INTEGER RANGE 0 TO 25000000; SIGNAL A3:STD_LOGIC:=0;BEGIN PROCESS(CLK,Q0) BEGIN I
5、F(CLKEVENT AND CLK=1) THEN IF(Q0=2499) THEN Q0=0; A0=NOT ;A0; F10000=A0; ELSE Q0=Q0+1;F10000=A0; END IF; END IF; END PROCESS; PROCESS(CLK,Q3) BEGIN IF(CLKEVENT AND CLK=1) THEN IF(Q3=24999999) THEN Q3=0; A3=NOT A3; F1=A3; ELSE Q3=Q3+1;F1clkclknull; end case; end process m2to1h; m24:process(clk) begin
6、 if (rising_edge(clk) then if (en=0 or (q0=3 and q1=2) then q0=0; q1=0; elsif(q0=9) then q0=0; q1=q1+1; else q0=q0+1; end if; end if; h2= conv_std_logic_vector(q0,4); h1clk1clk1null; end case; end process m2to1m;m60m:process(clk1) begin if (rising_edge(clk1) then if (en=0 or (q2=9 and q3=5) then q2=
7、0; q3=0; xm=1; elsif(q2=9) then q2=0; q3=q3+1; else q2=q2+1;xm=0; end if; end if; m2= conv_std_logic_vector(q2,4); m1= conv_std_logic_vector(q3,4); end process m60m;m60s:process(f1clk) begin if (rising_edge(f1clk) then if (en=0 or (q4=9 and q5=5) then q4=0; q5=0; xs=1; elsif(q4=9) then q4=0; q5=q5+1
8、; else q4=q4+1;xs=0; end if; end if; s2= conv_std_logic_vector(q4,4); s1= conv_std_logic_vector(q5,4); end process m60s;end one; 计时器有4个输入端和6个输出端,各个端口的作用为: 输入端:(cht:调时间的时,高电平有效; ,cmt:调时间的分,高电平有效; f1clk:1HZ的频率输入,驱动计时; en:计数器清零端,低电频有效; 输出端 h1:小时的十位; h2:小时的个位; m1:分钟的十位; m2:分钟的个位; s1:秒钟的十位; s2:秒钟的个位;(3)报
9、时器设计思路:报时器有整点报时和闹钟功能。对于整点报时,我们要对分和秒进行比对,当分钟59m时,蜂鸣器从51s开始每隔两秒报一次时,一共报五次时;对于闹钟,则需要对设定的时和分与正常计时进行比对,相同时蜂鸣器则以每秒一次的频率报时,共60s。(此模块主要由徐接勋负责设计)library ieee;use ieee.std_logic_1164.all;entity bijiao isport(bell:out std_logic; f1:in std_logic; th1,th2,tm1,tm2,h1,h2,m1,m2,s1,s2:in std_logic_vector(3 downto 0)
10、; bh1,bh2,bm1,bm2:out std_logic_vector(3 downto 0);end bijiao;architecture one of bijiao is signal comput:std_logic; signal m:std_logic_vector(15 downto 0);begin m=m2&m1&s2&s1;bijiao:process(th1,th2,tm1,tm2,h1,h2,m1,m2) begin if(th1=h1 and th2=h2 and tm1=m1 and m2=tm2)then comput=1; bh1= th1; bh2= t
11、h2; bm1= tm1; bm2= tm2; else comput=0; bh1= th1; bh2= th2; bm1= tm1; bm2null; end case; case(comput)is when1=bellnull; end case; end process naozhong_baoshi;end one;报时器有11个输入端和5个输出端,各个端口的作用为: 输入端:f1:1HZ频率输入端,用来整点报时和闹铃; th1:定时器的小时的个位; th2:定时器的小时的十位; tm1:定时器的分钟的个位; tm2:定时器的分钟的十位; h1:计时器的小时的个位; h2:计时器的
12、小时的十位; m1:计时器的分钟的个位; m2:计时器的分钟的十位;S1:计时器的秒钟的个位; S2:计时器的秒钟的十位; 输出端:bh1:定时器的小时的个位; bh2:定时器的小时的十位; bm1:定时器的分钟的个位; bm2:定时器的分钟的十位; bell:蜂鸣器信号。(4)定时器设计思路:定时器是定闹钟的时和分,相当于一个分钟模60计数器和一个时钟模24计数器,它们由两个端口控制,且互不影响。(此模块主要由徐接勋负责设计)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity dingshi
13、qi isport(f1,cha,cma: in std_logic; h2,h1:out std_logic_vector(3 downto 0); m2,m1:out std_logic_vector(3 downto 0);end dingshiqi;architecture one of dingshiqi is signal q0,q1:integer range 0 to 15; signal q2,q3:integer range 0 to 15; signal clk:std_logic; signal clk1:std_logic;beginm24:process(cha)
14、begin case(cha)is when0=clkclknull; end case; end process m24;m24a:process(clk) begin if (rising_edge(clk) then if (q0=3 and q1=2) then q0=0; q1=0; elsif(q0=9) then q0=0; q1=q1+1; else q0=q0+1; end if; end if;h2= conv_std_logic_vector(q0,4); h1clk1clk1null; end case; end process m60m;m60ma:process(c
15、lk1) begin if (rising_edge(clk1) then if (q2=9 and q3=5) then q2=0; q3=0; elsif(q2=9) then q2=0; q3=q3+1; else q2=q2+1; end if; end if; m2= conv_std_logic_vector(q2,4); m1= conv_std_logic_vector(q3,4); end process m60ma;end one;定时器有3个输入端和4个输出端,各个端口的作用为: 输入端:f1:1HZ的频率输入,驱动定时; cha:定时间的时,高电平有效; cma:定时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路实训 数字电路 课程设计 基于 CPLD 实验 多功能 数字 设计
限制150内