《数字电路实训》课程设计-基于CPLD实验板的多功能数字钟设计.doc_第1页
《数字电路实训》课程设计-基于CPLD实验板的多功能数字钟设计.doc_第2页
《数字电路实训》课程设计-基于CPLD实验板的多功能数字钟设计.doc_第3页
《数字电路实训》课程设计-基于CPLD实验板的多功能数字钟设计.doc_第4页
《数字电路实训》课程设计-基于CPLD实验板的多功能数字钟设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字电路实训基于cpld实验板的多功能数字钟设计姓 名 李祖均 徐接勋 徐国健 学 号:1006020103 1006020116 1006020102 班 级: 应电101 指导教师: 左红英 基于cpld实验板的多功能数字钟设计实训报告一、实训目的: 1、掌握数字电路系统的设计方法和技巧; 2、掌握数字电子钟的分频器、计时器等的设计及应用; 3、掌握vhdl源程序的设计、编译和错误修改; 4、掌握的测试向量文件建立,仿真; 5、掌握硬件测试的方法和步骤; 6、掌握器件适配的方法,设计的下载,功能测试。 7、掌握团队协作和分工的技巧。二、实训要求1、 能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟、60秒钟的计数器显示;2、能利用实验系统上的按键实现计时状态下的“校时”与“校分”功能;3、能利用蜂鸣器做整点报时;4、完成电路设计后,用实验系统下载验证。附加功能:1、 能进行闹钟的时、分的设置,分别由6个数码管显示24小时、60分钟、60秒钟的闹钟显示;2、 能用实验系统上的按键实现闹钟下的“校时”与“校分”功能;3、能利用蜂鸣器做闹钟报时。三、实训过程1、数字时钟系统的设计思路利用vhdl语言编程设计数字时钟,要实现计时、调时、定时和显示功能,应首先设计一个分频器,将实验板上所提供的50mhz分成1hz和10000hz两个不同的频率,其中1hz用来驱动计数器计时,调时和定时器的定时,10000hz用来驱动动态扫描器。然后分别设计控制器,计时器,定时器,动态显示器和报时器。(在此次实训中,李祖均主要负责的是动态显示器和控制器的设计并对整个实验进行编译、仿真验证、修改错误;徐接勋负责的定时器和报时器的设计并对整个实验硬件测试;徐国健负责的是分频器和计数器的设计,还有编写实训报告。)2、各个模块的设计原理(vhdl语言)(1)分频器设计思路:利用翻转将实验板上所提供的50mhz频率分成占空比为50%,分别为1hz和10000hz两个不同的频率,其中1hz用来驱动计数器计时,调时和定时器的定时,10000hz用来驱动动态扫描器。(该模块由徐国健负责设计)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 if(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 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=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; 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)报时器设计思路:报时器有整点报时和闹钟功能。对于整点报时,我们要对分和秒进行比对,当分钟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); 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= th2; bm1= tm1; bm2= tm2; else comput=0; bh1= th1; bh2= th2; bm1= tm1; bm2bellbellbellbellbellnull; 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:计时器的小时的十位; 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 dingshiqi 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) 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(clk1) 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:定时间的分,高电平有效; 输出端:h1:小时的十位; h2:小时的个位; m1:分钟的十位; m2:分钟的个位; (5)控制器设计思路:控制器是对校时、定时和显示的控制,考虑到实验板的输入端口,用两个端口分别控制校时器的时和分,同时还控制显示器显示定时时间;另外再用两个端口控制计时器的校时、校分和控制显示器显示计时时间。(此模块主要由李祖均负责设计)library ieee;use ieee.std_logic_1164.all;entity kzq isport(k:in std_logic; set:in std_logic; k1:in std_logic; set1:in std_logic; cht,cmt:out std_logic; cha,cma:out std_logic; en:out std_logic; sel:out std_logic);end kzq;architecture one of kzq is signal mi:std_logic_vector(1 downto 0); signal si:std_logic_vector(1 downto 0); signal sel_show:std_logic; signal sel_show1:std_logic; signal c:std_logic;begin mi=k&set; sisel_show=1;cht=0;cmt=0;ensel_show=1;cht=1;cmt=0;ensel_show=1;cmt=1;cht=0;ensel_show=1;cht=0;cmt=0;ennull; end case; end process ;dingshi:process (si) begin case si is when11=sel_show1=0;cha=0;cma=0;csel_show1=0;cha=1;cma=0;csel_show1=0;cma=1;cha=0;csel_show1=0;cma=0;cha=0;cnull; end case; end process ;m2to1:process(c) begin if(c=0)then sel=sel_show; else sel=sel_show1; end if; end process m2to1;end one;控制器有4个输入端和6个输出端,各个端口的作用为:输入端:k:控制校时的时;set:控制校时的分;k1:控制定时的时;set1:控制定时的分;输出端:cht:调时间的时,高电平有效;cmt:调时间的分,高电平有效;cha:定时间的时,高电平有效;cma:定时间的分,高电平有效;en:清零信号,低电平有效;sel:闹钟和计时时间的选择信号。(6)动态显示器设计思路:动态显示器是对计时时间和定时时间的动态显示,要对输进来的计时时间和定时时间进行选择,即需要一个二选一的数字选择器,动态显示器显示时需要对七段数码管进行段选和位选,则需要一个多路数字选择器和一个七段显示译码器,组合起来就是一个动态显示器。(此模块主要由李祖均负责设计)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity dtxs isport(clk:in std_logic; h1,h2,m1,m2,s1,s2,ah1,ah2,am1,am2,as1,as2:in std_logic_vector(3 downto 0); sel:in std_logic; weixuan:out std_logic_vector(7 downto 0); duanxuan:out std_logic_vector(7 downto 0);end dtxs;architecture one of dtxs is signal qq:std_logic_vector(3 downto 0); signal clk1: std_logic_vector(5 downto 0); signal q0:integer range 0 to 10; signal d0,d1,d2,d3,d4,d5,d6,d7: std_logic_vector(3 downto 0); signal xian:std_logic_vector( 3 downto 0);beginm8:process(clk) begin if (clkevent and clk=1) then if (q0=7) then q0=0; else q0=q0+1; end if; end if; clk1weixuanweixuanweixuanweixuanweixuanweixuanweixuanweixuan null; end case; end process weixuan38;duanxuanyima:process(qq) begin case qq is when0000=duanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuannull; end case; end process duanxuanyima;m8to1:process(clk1) begin case clk1 is when000000=qqqqqqqqqqqqqqqqnull; end case; end process m8to1;xianshi:process(h1,h2,m1,m2,s1,s2,ah1,ah2,am1,am2,as1,as2) begin if(sel=1 )then d0=s1; d1=s2; d3=m1; d4=m2; d6=h1; d7=h2; else d0=as1; d1=as2; d3=am1; d4=am2; d6=ah1; d7=ah2; end if; xian=1110; d2=xian; d5=xian; end process xianshi; end one; 动态显示器有14个输入端和2个输出端,各个端口的作用为: 输入端:clk:10000hz输入端,用来驱动动态显示器; h1:计时器的小时的个位; h2:计时器的小时的十位; m1:计时器的分钟的个位; m2:计时器的分钟的十位; s1:计时器的秒钟的个位; s2:计时器的秒钟的十位; ah1:报时器的bh1输端; ah2:报时器的bh2输出端; am1:报时器的bm1输出端; am2:报时器的bm2输出端; as1:计时器的秒钟的个位; as2:计时器的秒钟的十位; sel控制器的sel输出端; 输出端:duanxuan:驱动七段显示数码管; weixuan:驱动8个数码管;3、下载测试(1)、编辑电路并进行全程编译(2)、引脚锁定编译;(3)、下载于cpld实验板进行功能测试;4、数字钟设计的改进我们在实验板进行数字钟功能测试时,发现在校时和定时时很难设定自己想要设置的时间,几乎每一次在控制端口闭合和断开时,时间就会发生剧烈的跳变,这对于我们的校时和定时是非常不利的;开始时我们认为这是程序的问题,但当我们分别对各模块的程序进行排查后,我们发现程序并没有问题,因此,我们暂时放下了这个问题。后来我们从网上看到相关的论文才了解到这是开关在闭合和断开时产生的干扰信号,所以我们决定在控制器的输入端口分别加入一个消抖电路,如下图所示:(此改进由李祖均、徐国健和徐接勋共同完成) 转化为元件和改进后的总图如下图所示: 改进555、实训的心得体会李祖均的实训心得体会:我觉得这次实训对我来说,就是对我在过去一个学期里所学知识的一个总的考核。一个数字钟的设计是一个系统的设计,它需要我们从系统出发进行设计,需要一定的逻辑思维;因为这次实训我们是以分组的形式进行,所以组员之间如何协作也是我们必须要考虑的问题。刚开始的时候,我和我的组员一样,都会有一种无从下手的感觉,但慢慢的通过指导书和一些常识,我对数字钟的设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论