欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:88145687       资源大小:1.01MB        全文页数:61页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    数字电路实训基于CPLD实验板的多功能数字钟设计姓 名 学 号 班 级: 指导教师: 基于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(CLK'EVENT 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(CLK'EVENT AND CLK='1') THEN IF(Q3=24999999) THEN Q3<=0; A3<=NOT A3; F1<=A3; ELSE Q3<=Q3+1;F1<=A3; END IF; END IF; END PROCESS;END;该分频器有1个输入端和2个输出端 输入端:CLK:接50MHZ 输出端:F10000:输出10000HZ频率 F1:输出1HZ频率(2)计时器设计思路:数字钟的计时器相当于需要两个模60计数器和一个模24计数器,其中秒钟模60以1Hz频率进行计数,并向分钟进位;分钟模60则以秒钟的进位进行计数,并向时钟进位;时钟模24以分钟的进位进行计数。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity jishuqi isport(cht,cmt:in std_logic; f1clk:in std_logic; en:in std_logic; h2,h1:out std_logic_vector(3 downto 0); m2,m1:out std_logic_vector(3 downto 0); s2,s1:out std_logic_vector(3 downto 0);end jishuqi;architecture one of jishuqi is signal q0,q1:integer range 0 to 15; signal q2,q3:integer range 0 to 15; signal q4,q5:integer range 0 to 15; signal xm:std_logic; signal xs:std_logic; signal clk:std_logic; signal clk1:std_logic;beginm2to1h:process(cht) begin case(cht)is when'0'=>clk<=xm; when'1'=>clk<=f1clk; when others=>null; 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); h1<= conv_std_logic_vector(q1,4); end process m24; m2to1m:process(cmt) begin case(cmt)is when'0'=>clk1<=xs; when'1'=>clk1<=f1clk; when others=>null; 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; bm2<= tm2; end if; end process bijiao;naozhong_baoshi:process(m,comput) begin case m iswhen others=>null; end case; case(comput)is when'1'=>bell<=f1; when others=>null; 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 when'0'=>clk<='0' when'1'=>clk<=f1; when others=>null; 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); h1<= conv_std_logic_vector(q1,4);end process m24a;m60m:process(cma) begin case (cma) is when'0'=>clk1<='0' when'1'=>clk1<=f1; when others=>null; 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; si<=k1&set1;jiaoshi:process (mi)begin case mi is when"11"=>sel_show<='1'cht<='0'cmt<='0'en<='1' when"01"=>sel_show<='1'cht<='1'cmt<='0'en<='1' when"10"=>sel_show<='1'cmt<='1'cht<='0'en<='1' when"00"=>sel_show<='1'cht<='0'cmt<='0'en<='0' when others=>null; end case; end process ;dingshi:process (si) begin case si is when"11"=>sel_show1<='0'cha<='0'cma<='0'c<='0' when"01"=>sel_show1<='0'cha<='1'cma<='0'c<='1' when"10"=>sel_show1<='0'cma<='1'cha<='0'c<='1' when"00"=>sel_show1<='0'cma<='0'cha<='0'c<='0' when others=>null; 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 (clk'event and clk='1') then if (q0=7) then q0<=0; else q0<=q0+1; end if; end if; clk1<= conv_std_logic_vector(q0,6); end process m8;weixuan38:process(clk1) begin case(clk1)is when"000111"=>weixuan<="11111110" when"000110"=>weixuan<="11111101" when"000101"=>weixuan<="11111011" when"000100"=>weixuan<="11110111" when"000011"=>weixuan<="11101111" when"000010"=>weixuan<="11011111" when"000001"=>weixuan<="10111111" when"000000"=>weixuan<="01111111" when others=> null; end case; end process weixuan38;duanxuanyima:process(qq) begin case qq is when"0000"=>duanxuan<="11000000" when"0001"=>duanxuan<="11111001" when"0010"=>duanxuan<="10100100" when"0011"=>duanxuan<="10110000" when"0100"=>duanxuan<="10011001" when"0101"=>duanxuan<="10010010" when"0110"=>duanxuan<="10000010" when"0111"=>duanxuan<="11111000" when"1000"=>duanxuan<="10000000" when"1001"=>duanxuan<="10010000" when"1110"=>duanxuan<="11111111" when others=>null; end case; end process duanxuanyima;m8to1:process(clk1) begin case clk1 is when"000000"=>qq<=d0; when"000001"=>qq<=d1; when"000010"=>qq<=d2; when"000011"=>qq<=d3; when"000100"=>qq<=d4; when"000101"=>qq<=d5; when"000110"=>qq<=d6; when"000111"=>qq<=d7; when others=>null; 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、实训的心得体会XXX实训心得体会:我觉得这次实训对我来说,就是对我在过去一个学期里所学知识的一个总的考核。一个数字钟的设计是一个系统的设计,它需要我们从系统出发进行设计,需要一定的逻辑思维;因为这次实训我们是以分组的形式进行,所以组员之间如何协作也是我们必须要考虑的问题。刚开始的时候,我和我的组员一样,都会有一种无从下手的感觉,但慢慢的通过指导书和一些常识,我对数字钟的设计有了一个大概轮廓,对数字钟所需要的一些功能也进行了大概的归纳和分类;我们通过讨论决定以分模块的形式来实现数字钟的功能,这样不仅可以使数字钟的设计简单化,还可以方便我们组员的分工,我主要是负责控制器和动态显示器的设计。在对控制器和动态显示器的设计中,我觉得自己的收获是很大的,它不仅使我对VHDL语言有了进一步的认识,还使我对书本知识有了更深的掌握,也学到了很多没学过的知识,所以我觉得这一次的实训是非常有意义的。XXX的实训心得体会: 这次的实训对于我来说是一次挑战,同时也让我对数电产生了兴趣,这次的实训不但需要用到学习了的知识,而且需要许多的扩展的知识;需要我不断的利用学习的知识不断的容纳与吸收。 刚开始我们是根据指导书的内容,了解设计理念及思路。由于老师没有告诉我们方法,所以刚开始的时候我们是无从下手的,经过在网上查找几种不同的数字时钟的程序,寻找他们的理念,在与所学的知识进行比对,因为所学有限,所以进度比较慢,需要不断的进行程序的修改与测试,这个过程对于我来说是非常困难的,一个程序有可能只是小小的;就可能使程序失败,一个程序的功能弄错就让我们的整个的功能得不到表达、或错误。而且程序还有许多没有学习的语句,只能一点点慢慢的理解或请教。这让我学会了很多不懂得知识 本次的实训,让我了解了很多,从简单的到复杂的过程,让我学会了很多不懂得知识,也让我知道了做事要细心,要不然很难做成功一件事情,这可能让我以后可以少走许多的弯路,细心、坚持是我本次实训的最大的收获。 基于本次实训是合作制的,故我们是进行分工合作的,我负责的是定时器和报时器主要是调试报时的时间差,即根据程序的理想时间与下载的后的时间差进行对比,然后再进行修改、调节。XXX的实训心得体会:本次实训,我主要负责是分频器和计时器的设计。通过这次数字时钟的设计,我加深了对VHDL语言的理解和应用,同时也深深感受到,除了理论知识的学习之外,还必须掌握更深一步的动手能力,这样才能把知识真正的知识掌握在手中。所以,这次实训的真正让我把知识运用到实践中去,远比死记硬背的理论知识更有意义。原文已完。下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。一、 工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。本工程由宁夏燕宝房地产开发开发,银川市规划建筑设计院设计。本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。本工程建筑面积:27#m2;30# m2。室内地坪± m为准,总长27#m;30# m。总宽27#m;30# m。设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。本工程设计屋面为坡屋面防水采用防水涂料。外墙水泥砂浆抹面,外刷浅灰色墙漆。内墙面除卫生间200×300瓷砖,高到顶外,其余均水泥砂桨罩面,刮二遍腻子;楼梯间内墙采用50厚胶粉聚苯颗粒保温。地面除卫生间200×200防滑地砖,楼梯间50厚细石砼1:1水泥砂浆压光外,其余均采用50厚豆石砼毛地面。楼梯间单元门采用楼宇对讲门,卧室门、卫生间门采用木门,进户门采用保温防盗门。本工程窗均采用塑钢单框双玻窗,开启窗均加纱扇。本工程设计为节能型住宅,外墙均贴保温板。本工程设计为砖混结构,共六层。基础采用C30钢筋砼条形基础,上砌MU30毛石基础,砂浆采用M10水泥砂浆。一、二、三、四层墙体采用M10混合砂浆砌筑MU15多孔砖;五层以上采用M混合砂浆砌筑MU15多孔砖。本工程结构中使用主要材料:钢材:I级钢,II级钢;砼:基础垫层C10,基础底板、地圈梁、基础构造柱均采用C3

    注意事项

    本文(《数字电路实训》课程设计_基于CPLD实验板的多功能数字钟设计__187509699.doc)为本站会员(e****s)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开