《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc

上传人:e****s 文档编号:88145494 上传时间:2023-04-22 格式:DOC 页数:62 大小:1.01MB
返回 下载 相关 举报
《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc_第1页
第1页 / 共62页
《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计.doc_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《《数字电路实训》课程设计_基于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:定时间

16、的分,高电平有效; 输出端: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

17、; 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

18、=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

19、: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)动态显示器设计思路:动态显示器是对计时时间和定时时间的动态

20、显示,要对输进来的计时时间和定时时间进行选择,即需要一个二选一的数字选择器,动态显示器显示时需要对七段数码管进行段选和位选,则需要一个多路数字选择器和一个七段显示译码器,组合起来就是一个动态显示器。(此模块主要由李祖均负责设计)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:

21、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(

22、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

23、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)

24、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

25、:计时器的秒钟的个位; s2:计时器的秒钟的十位; ah1:报时器的bh1输端; ah2:报时器的bh2输出端; am1:报时器的bm1输出端; am2:报时器的bm2输出端; as1:计时器的秒钟的个位; as2:计时器的秒钟的十位; sel控制器的sel输出端; 输出端:duanxuan:驱动七段显示数码管; weixuan:驱动8个数码管;3、下载测试(1)、编辑电路并进行全程编译(2)、引脚锁定编译;(3)、下载于CPLD实验板进行功能测试;4、数字钟设计的改进我们在实验板进行数字钟功能测试时,发现在校时和定时时很难设定自己想要设置的时间,几乎每一次在控制端口闭合和断开时,时间就会发生

26、剧烈的跳变,这对于我们的校时和定时是非常不利的;开始时我们认为这是程序的问题,但当我们分别对各模块的程序进行排查后,我们发现程序并没有问题,因此,我们暂时放下了这个问题。后来我们从网上看到相关的论文才了解到这是开关在闭合和断开时产生的干扰信号,所以我们决定在控制器的输入端口分别加入一个消抖电路,如下图所示:(此改进由李祖均、徐国健和徐接勋共同完成) 转化为元件和改进后的总图如下图所示: 改进555、实训的心得体会李祖均的实训心得体会:我觉得这次实训对我来说,就是对我在过去一个学期里所学知识的一个总的考核。一个数字钟的设计是一个系统的设计,它需要我们从系统出发进行设计,需要一定的逻辑思维;因为这

27、次实训我们是以分组的形式进行,所以组员之间如何协作也是我们必须要考虑的问题。刚开始的时候,我和我的组员一样,都会有一种无从下手的感觉,但慢慢的通过指导书和一些常识,我对数字钟的设计有了一个大概轮廓,对数字钟所需要的一些功能也进行了大概的归纳和分类;我们通过讨论决定以分模块的形式来实现数字钟的功能,这样不仅可以使数字钟的设计简单化,还可以方便我们组员的分工,我主要是负责控制器和动态显示器的设计。在对控制器和动态显示器的设计中,我觉得自己的收获是很大的,它不仅使我对VHDL语言有了进一步的认识,还使我对书本知识有了更深的掌握,也学到了很多没学过的知识,所以我觉得这一次的实训是非常有意义的。徐接勋的

28、实训心得体会: 这次的实训对于我来说是一次挑战,同时也让我对数电产生了兴趣,这次的实训不但需要用到学习了的知识,而且需要许多的扩展的知识;需要我不断的利用学习的知识不断的容纳与吸收。 刚开始我们是根据指导书的内容,了解设计理念及思路。由于老师没有告诉我们方法,所以刚开始的时候我们是无从下手的,经过在网上查找几种不同的数字时钟的程序,寻找他们的理念,在与所学的知识进行比对,因为所学有限,所以进度比较慢,需要不断的进行程序的修改与测试,这个过程对于我来说是非常困难的,一个程序有可能只是小小的;就可能使程序失败,一个程序的功能弄错就让我们的整个的功能得不到表达、或错误。而且程序还有许多没有学习的语句

29、,只能一点点慢慢的理解或请教。这让我学会了很多不懂得知识 本次的实训,让我了解了很多,从简单的到复杂的过程,让我学会了很多不懂得知识,也让我知道了做事要细心,要不然很难做成功一件事情,这可能让我以后可以少走许多的弯路,细心、坚持是我本次实训的最大的收获。 基于本次实训是合作制的,故我们是进行分工合作的,我负责的是定时器和报时器主要是调试报时的时间差,即根据程序的理想时间与下载的后的时间差进行对比,然后再进行修改、调节。徐国健的实训心得体会:本次实训,我主要负责是分频器和计时器的设计。通过这次数字时钟的设计,我加深了对VHDL语言的理解和应用,同时也深深感受到,除了理论知识的学习之外,还必须掌握

30、更深一步的动手能力,这样才能把知识真正的知识掌握在手中。所以,这次实训的真正让我把知识运用到实践中去,远比死记硬背的理论知识更有意义。原文已完。下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。一、 工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。本工程由宁夏燕宝房地产开发开发,银川市规划建筑设计院设计。本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。本工程建筑面积:27#m2;30# m2。室内地坪 m为准,总长27#m;30# m。总宽27#m;30# m。设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。本工程设计屋面为坡屋面防水采用防水涂料。外墙水泥砂浆抹面,外刷浅灰色墙漆。内墙面除卫生间200300瓷砖,高到顶外,其余均水泥砂桨罩面,刮二遍腻子;楼梯间内墙采用50厚胶粉聚苯颗粒保温。地面除卫生间200200防滑地砖,楼梯间50厚细石砼1:1水泥砂浆压光外,其余均采用50厚豆石砼毛地面。楼梯间单元门采用楼宇对讲门,卧室门、卫生间门采用木门,进户门采用保温防盗门。本工程窗均采用塑钢单框

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com