棋类竞赛计时系统设计EDA课程设计报告_第1页
棋类竞赛计时系统设计EDA课程设计报告_第2页
棋类竞赛计时系统设计EDA课程设计报告_第3页
棋类竞赛计时系统设计EDA课程设计报告_第4页
棋类竞赛计时系统设计EDA课程设计报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、 课 程 设 计课程名称课程名称 eda 技术技术 课题名称课题名称 棋类竞赛计时系统设计棋类竞赛计时系统设计 专专 业业 电子科学与技术电子科学与技术 班班 级级 0801 学学 号号 03 姓姓 名名 蒋知英蒋知英 指导教师指导教师 郭照南郭照南 2011 年年 6 月月 24 日日2湖南工程学院课程设计任务书课程名称课程名称: eda 技术题题 目目:基于基于 vhdlvhdl 的棋类竞赛计时系统设计的棋类竞赛计时系统设计专业: 电科 班级: 0801 班 学生姓名:蒋知英 学号:03指导老师: 郭照南审 批:任务书下达日期 2011 年 6 月 13 日星期一设计完成日期 2011 年

2、 6 月 24 日星期五3 设计内容与设计要求 一设计内容:一设计内容:用 fpga 为核心器件,用 vhdl 为设计手段设计并制作一个用于棋类比赛的计时钟系统,功能要求如下:1. 该计时钟可分别完成甲乙对规定用时的计时和规定时间用完后的读秒计时。2. 规定甲乙双方各有 2 小时比赛规定用时,分别设计各方的用时定时器,并用数码管显示各方已用的时、分从0:001:59 计时间隔为 1s。3. 2 小时规定时间用完后,每方限定在 30 秒内必须下出一步棋,此时定时器将完成对读秒时间的 30s 倒计时,并数码管显示此时过程 3000。若计时到零,则发生警报信号该方超时负。4. 各定时器设置计时暂停/

3、继续键,在规定时间计时时,该键的作用为暂停本方计时,并继续对方计时;在读秒时间计时时,该键的作用为复位本方计时起始点 29s,并启动对方定时器。5. 设置系统复位键,比赛结束时,按该键使各方的定时器均复位到规定时间的零点 0:00,以便重新开始比赛。二、设计要求:二、设计要求:1、 设计思路清晰,给出整体设计框图;2、 在quartus中用 vhdl 完成各单元模块的设计,完成其功能仿真和编译并生成低层模块;3、 在quartus中用原理图输入法完成顶层设计并编译通过;4、 在quartus中完成设计下载并调试电路;5、 写出设计报告;4 主要设计条件1、提供 eda 设计环境和 eda 软件

4、quartus;2、提供 eda 实验箱和 cpld 下载装置; 说明书格式1、课程设计报告书封面;2、任务书;3、说明书目录;4、设计总体思路;5、单元电路设计;6、总电路设计;7、设计调试体会与总结;8、附录;9、参考文献。5 进 度 安 排 星期一 上午 安排任务、讲课。 星期一 下午 熟悉 max+plus的使用;星期二星期五 查资料、设计 星期一星期二 设计输入和设计仿真四楼 eda室 星期三 低层编译和设计下载四楼 eda 室 星期四 调试电路、写总结报告; 星期五 答辩。 参 考 文 献6 pld 器件与 eda 技术 李冬梅编电子技术课程设计指导 彭介华、主编 高等教育出版社

5、电子线路设计、实验、测试 谢自美主编华中理工出版社。7目录目录1. 设计总体思路设计总体思路.71.1 基本原理: .71.2 设计模块总体框图如下: .82. 单元电路设计单元电路设计.92.1 秒 60 进制加法计数时的设计:.92.2 分 60 进制加法计时器的设计:.92. 3 30 秒倒计时 .102.4 二进制计时器.112.5 控制模块的设计.112.6 选择模块的设计.122.7 显示模块的设计.123. 总电路设计总电路设计.144. 设计调试体会与总结设计调试体会与总结.155. 附录:附录:.165.1 秒 60 进制计时器程序.165.2 分 60 进制计时器程序 .1

6、75.3 30 秒倒计时程序.195.4 控制器程序.215.5 选择器程序.225.6 二进制计时器程序.225.7 显示模块程序.236. 参考文献:参考文献:.268设计总体思路设计总体思路基本原理:基本原理:本计时钟可分别完成甲乙对规定用时的计时和规定时间用完后的 30秒倒计时的功能。设计要求中规定甲乙双方各有 2 小时比赛规定用时,可分别设计各方的用时定时器,并用数码管显示各方已用的分、秒从00:0059:59 计时间隔为 1s,用分的进位来驱动一个 led 表示时,当分有进位是 led 灯亮即为一个小时。2 小时规定时间用完后,每方限定在 30 秒内必须下出一步棋,此时定时器将完成

7、对读秒时间的 30s 倒计时,并数码管显示此时过程2900。若计时到零,则发生警报信号该方超时负。设计要求中各定时器设置计时暂停/继续键,在规定时间计时时,该键的作用为暂停本方计时,并继续对方计时;在倒计时时,该键的作用为复位本方计时起始点 29s,并启动对方定时器。设置系统复位键,比赛结束时,按该键使各方的定时器均复位到规定时间的零点 00:00,以便重新开始比赛。按照设计要求,分别为甲乙双方设计规定时 2 小时计时器和 30 秒倒记时器。在控制模块的作用下,相互协调工作:在规定时 2 小时内,30秒倒计时器不工作,输入继续暂停信号时能暂停其中一方计时器的同时继续另一方的计时。当甲或乙规定两

8、小时用完后,启动各自的 30 秒计数器进行倒计时,这时的输入继续暂停信号能复位其中一方的 30 秒计时器到 29,并开始另一方的 30 秒倒计时器。当比赛结束时,从清零端输入复位信号,各计时器复位,以重新开始下场比赛。选择模块的设置,是为了很好解决显示管数量不足的问题。在两小时规定时间用完后二进制有个进位在改进位的控制下,选择器分别选择规定两小时秒和 30 秒倒计时的显示,故甲乙每方的时间上的显示就只需要4 个数码管,总共 8 个。显示模块是一个动态扫描显示电路。在一个人眼观察不出的扫描频率下,轮流在相对应的显示管上显示输入端口的输入的数据。同时当甲乙任一方所有时间都用完时,就输出报警信号,宣

9、布比赛结束,谁的时间先用完谁就输了。9设计模块总体框图如下设计模块总体框图如下:控制器2 进制计时器选择器分 60进制计时器30 秒倒计时2 进制计时器分 60进制计时器秒 60 进制计时器秒 60 进制计时器30 秒倒计时显示模块10单元电路设计单元电路设计1、秒、秒 60 进制加法计数时的设计进制加法计数时的设计:对于秒 60 进制的加法计数器的设计,有个位、十位的输出来驱动显示模块来显示,以及一个脉冲行的进位位,来驱动分 60 秒,作为分 60 秒的时钟脉冲。其输入有清零端,使能端和时钟脉冲,当清零端为高电平 1时此计数器被清零,而重新开始计时已被下次比赛使用,当使能端为低电平时该计数器

10、不工作处于暂停状态,而通过控制模块使得另一方的计时器工作从而达到暂停本方而继续对方的功能。秒 60 进制模块如右图所示:设计此计数器模块的目的是为了显示规定两小时用时的秒以及驱动分 60 进制。该模块的个位和十位的输出经过选择器来按时分别选择所需的输出。 其时序仿真图如下图所示:2 2、分、分 6060 进制加法计时器的设计进制加法计时器的设计: 对于分 60 进制的加法计数器的设计,也有个位、十位的输出来驱动显示模块来显示,以及一个脉冲行的进位位,来驱动分 60 秒,作为分60 秒的时钟脉冲和一个高电平的进位输出,用来驱动二进制计数器使其分在运行两次后停止计数,表示规定的两小时已经用完。其输

11、入有清零端,使能端和时钟脉冲,当清零端为高电平 1 时此计数器被清零,而重新开始计时已被下次比赛使用,当使能端为低电平时该计数器不工作处于暂停状态,而通过控制模块使得另一方的计时器工作从而达到暂停本方而继续对方的功能。分 60 进制模块如右图所示:设计此计数器目的是为了显示规定两小时用时的分,以及驱动二进制和驱动 led 灯,使其表示为一个小时,控制这个的是高电平进位端 co,但分 60 进制有个进位是 co 就为高电平 1,此时将其通过控制模11块使其输出一个低电平,将其接到 led 灯上,就可以表示为一个小时。其时序仿真图如下所示:3、30 秒倒计时秒倒计时30 秒倒计时器是一个减法计数器

12、。所示完成对甲和乙用完归定时间的读秒计时。该计数器从 29 开始,如果清零端无效,每来一个秒脉冲,在继续使能端有效下减少 1 到 28。依次到 00,此时输出一个进位信号 co 为高电平 1,直到有清零端复位有效时进位信号才回到 0,此时计数器复位到 29,重新开始计时。其中复位端的功能为复位本方而继续对方,与在规定的两小时中暂停本方和继续对方为同一个键。其模块如右图所示:其时序仿真图如下所示:124、二进制计时器、二进制计时器二进制计时器以分 60 计时器的脉冲进位为时钟,当分计时器有进位则二进制计时器就计时一次,当来两个脉冲则二进制就有个高电平进位输出,这个高电平经过控制器来控制 30 秒

13、倒计时,并且使得分计时器停止计时,当系统有个清零信号,则二进制被清零且进位位为零。其模块如右图所示:其时序仿真图如下所示:5、控制模块的设计、控制模块的设计控制模块用来控制各个模块的,首先它可以通过二进制的进位来控制 30 秒倒计时的启动以及控制分 60计时器停止计时;通过使能端来控制甲乙两方暂停和继续的问题,还通过二进制的进位来控制数码管显示秒的选择问题,当二进制进位为高电平是则选择显示 30 秒倒计时,否则显示 60 秒计时器,还通过 30 秒倒计时的进位来控制 30 秒倒计时停止工作即进位位为 1;并可通过清零键控制整个系统的清零。其模块如右图所示: 其时序仿真图如下所示:136 6、选

14、择模块的设计、选择模块的设计 选择模块的设计为了解决数码管数量不足的问题,当在规定的两小时计时时,即二进制的进位为零时即控制器的 start=0 时选择两小时秒的显示,当规定的两小时用完时,即二进制的进位为1 时即控制器的 start=1 时选择 30 秒倒计时显示,只要就解决了数码管数量不足的问题了。其模块如右图所示:其时序仿真图如下所示:7 7、显示模块的设计、显示模块的设计八个输入端口分别接选择模块的输入,在一个较高的时钟脉冲钟作用下,从第一个输入端口的情况依次扫描到第八个,并在显示管上显示。其中 d03.0 、d13.0、d23.0、d33.0、d43.0、d53.0、d63.0、d7

15、3.0分别是甲的60 秒个位、60 秒十位、60 分个位、60 分十位,其后四个为乙的显示同甲。而在规定两小时用完后 d03.0 、d13.0、d43.0、d53.0则分别显示甲乙 30 秒倒计时的个位和十位,但 d23.0、d33.0、d63.0、d73.0 分别依然显示甲乙的分 60 的个位和十位,所以也称位动态扫描显示。sg6.0 和 bt7.0分别为段控制信号和位控制信号。而 a1、a2、a3、a4 则是个进制计时器进位的输入,b、ba、bb 是依据 a1、a2、a3、a4 来判断输出的,b 是 30,秒倒计时用完即某方输的报警信号的输出接 led 灯,而 ba、bb 则是用来显示甲乙

16、两方规定用时的时的表示接 led 灯,灯亮为一小时。其模块如右图所示:14其时序仿真图如下所示:15总电路设计总电路设计将各个功能程序生成模块,在按任务要求以及设计思路将各个模块连接起来组成一个能实现任务需求功能的总电路图模块:总电路图模块如下图所示:各个模块关系连接的总电路图如下所示16设计调试体会与总结设计调试体会与总结本次设计用了两天的时间来设计各个模块,以及将各个模块进行过仿真,然后连接成总电路图模块,设计完成后就去实验室调试,起初调试出来的结果是对的,但是自己的设计思路出了错,所以对设计在进行修改,将修改后的设计再进行调试,结果与自己所想的结果不一致,在此情况下我就只是一味的认为自己

17、的程序出了错,反反复复的查找原因,花了好几个小时也没查出来,自己认为是对的怎么调试的结果会不对呢,后来我根据哪些结果和我所想的不一样在重新对其进行管脚锁定,可能是实验箱有什么问题,果然不出我所料,出现调试结果和我所预料的不一样的原因是因为实验箱上 27、28 管脚是联通的,才导致我的结果出错。所以在调试中我体会最深的就是实验箱的问题,因为这箱子用了很久难免有些地方是坏的,所以在以后我对于自己的设计如果与所想的又出入,不但要考虑自己的设计是否有问题,也还要考虑是否硬件设施有问题,从此我得出的体会是:如果自己真的认为这个问题没有错,就不要在查下去,得转移到另一地方,应该多方面的查找问题的所在,而不

18、要只看一方面。两周的 eda 课程设计结束了,在这两周的时间里无论是对 quartus软件的熟悉程度,还是对数字电路的基本原理的理解,以及对 vhdl 语言的应用及编写都有了很大的提高!两个星期的艰苦奋斗,我终于完成了设计!设计的过程,实际上也就是一个发现问题、分析问题、解决问题的过程。两个星期的设计过程中,我发现的问题层出不穷,但最终通过各方面的努力,比如有些问题自己解决不了,我就通过和同学讨论或者请教老师,最终还是圆满解决了!通过这两周的课程设计我坚定了自己的信心,开始以为自己什么都没学到什么都不知道,但是经过这两周的努力我很好的把老师布置下了的设计任务完成了,感觉自己其实还是知道些东西的

19、,虽然在设计中遇到了一些技术上的问题,但是通过自己的努力以及老师的帮住我解决了这些问题并也掌握了这些能力。课程设计是结束了,但是跟这种课程设计一样的人生还很长,通过这次的学习,我认为人啊随时都会遇到这样那样的困难,但是我们不能退缩了,要像做课程设计一样,遇到什么难题先自己去思考,再通过身边的人的帮助,没有什么事情是解决不了的!当然最重要的还是要靠自己。在这次课程设计中之所以我能顺利的完成,除了是因为我自己的努力之外,老师的指导和帮助是少不了的,所以在此感谢郭老师对我的指导,让我在这两周的课程设计中学到了许多的东西。17附录附录:1、秒、秒 60 进制计时器程序进制计时器程序library ie

20、ee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60m isport(clk: instd_logic;cr: instd_logic;en: instd_logic; co1 : out std_logic;q1: out std_logic_vector (3 downto 0); y10: out std_logic_vector (3 downto 0) );end cnt60m;architecture a of cnt60m issignalbcd1n: std_logic_vecto

21、r (3 downto 0); signalvcd10n : std_logic_vector (3 downto 0);beginprocess (clk,cr)beginif (cr = 1) thenbcd1n = 0000; elsif (clkevent and clk = 1) thenif (bcd1n=9) then bcd1n=0000; else if (en=1) thenbcd1n = bcd1n + 1;elsebcd1n = bcd1n;end if; end if;end if;end process;q1 = bcd1n; y10=vcd10n;18proces

22、s (clk, cr)beginif cr = 1 thenvcd10n = 0000;elsif (clkevent and clk = 1) thenif (bcd1n=9) then if (vcd10n=5) then vcd10n=0000; else if (en=1) thenvcd10n = vcd10n + 1;elsevcd10n = vcd10n;end if; end if; end if;end if;end process;process (bcd1n,vcd10n) begin if (bcd1n=9 and vcd10n=5) then co1=1; else

23、co1=0; end if; end process;end a;2、分、分 60 进制计时器程序进制计时器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 isport(clk: instd_logic;cr: instd_logic;en: instd_logic; co,co1 : out std_logic;19q1: out std_logic_vector (3 downto 0); y10: out std_logic_vector (3 downto 0

24、) );end cnt60;architecture a of cnt60 issignalbcd1n: std_logic_vector (3 downto 0); signalvcd10n : std_logic_vector (3 downto 0);beginprocess (clk,cr)beginif (cr = 1) thenbcd1n = 0000; elsif (clkevent and clk = 1) thenif (bcd1n=9) then bcd1n=0000; else if (en=1) thenbcd1n = bcd1n + 1;elsebcd1n = bcd

25、1n;end if; end if;end if;end process;q1 = bcd1n; y10=vcd10n;process (clk, cr)beginif cr = 1 thenvcd10n = 0000;elsif (clkevent and clk = 1) thenif (bcd1n=9) then if (vcd10n=5) then vcd10n=0000; else if (en=1) thenvcd10n = vcd10n + 1;elsevcd10n = vcd10n;20end if; end if; end if;end if;end process;proc

26、ess (clk,cr) beginif(cr=1)then co=0;elsif(clkevent and clk = 1) then if( bcd1n=9 and vcd10n=5 )then co=1; end if;end if;end process;process (bcd1n,vcd10n) begin if (bcd1n=9 and vcd10n=5) then co1=1; else co1=0; end if; end process;end a;3、30 秒倒计时程序秒倒计时程序library ieee;use ieee.std_logic_1164.all;use i

27、eee.std_logic_unsigned.all;entity cnt30 isport(clk: instd_logic;cir ,en : instd_logic; co : out std_logic;q1: out std_logic_vector (3 downto 0); y10: out std_logic_vector (3 downto 0) );end cnt30;architecture a of cnt30 is signalbcd1n: std_logic_vector (3 downto 0);21signalvcd10n : std_logic_vector

28、(3 downto 0);beginprocess (clk,cir,en) beginif(cir=1)then co=0;elsif(clkevent and clk = 1) then if( bcd1n=0 and vcd10n=0 )then co=1; end if;end if;end process;process (clk,cir)beginif (cir=1) thenbcd1n = 1001; elsif (clkevent and clk = 1) thenif (en=1 ) then if (bcd1n=0 ) then bcd1n = 1001; elsif (b

29、cd1n=0 and vcd10n=0) thenbcd1n = 1001;elsebcd1n = bcd1n-1;end if; end if; end if; end process;q1 = bcd1n; y10 = vcd10n;process (clk, cir)beginif (cir =1) thenvcd10n = 0010;elsif (clkevent and clk = 1) then if (en=1 ) then if (bcd1n=0 and vcd10n=0) then vcd10n = 0010; elsif ( bcd1n=0) then22 vcd10n =

30、 vcd10n-1; else vcd10n = vcd10n ; end if; end if; end if; end process;end a;4、控制器程序、控制器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity kongzhiqi isport( en,cr,coa,cob,clkaa,clkbb,clk3,co1,co2: instd_logic; clka,clkb,clk1,clk2,ena,enb,cra,crb : out std_logic);end kon

31、gzhiqi;architecture a of kongzhiqi isbeginprocess (en,cr,coa,cob,clkaa,clkbb) begin if(en=1) then ena=1;enb=0;else ena=0;enb=1; end if;if(cr=1 or (not en)=1) then cra=1;else cra=0; end if; if(cr=1 or en=1) then crb=1;else crb=0; end if; if(coa=0) then clka=clkaa;else clka=0; end if;23 if(cob=0) then

32、 clkb=clkbb;else clkb=0; end if; if(co1=0) then clk1=clk3;else clk1=0; end if; if(co2=0) then clk2=clk3;else clk2=0; end if; end process;end a;5、选择器程序、选择器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xuanzeqi isport( start: instd_logic; a,b,c,d: in std_logic_vecto

33、r (3 downto 0); m301,m302 : out std_logic_vector (3 downto 0);end xuanzeqi;architecture a of xuanzeqi isbeginprocess (start,a,b,c,d) begin if(start=1) then m301=a;m302=b;else m301=c;m302=d; end if; end process;end a;6、二进制计时器程序、二进制计时器程序library ieee;24use ieee.std_logic_1164.all;use ieee.std_logic_uns

34、igned.all;entity cnt2 isport(clk: instd_logic;cir : in std_logic;co : out std_logic);end cnt2;architecture a of cnt2 issignalbcd1n: std_logic_vector (1 downto 0);begin process (clk,cir) beginif(cir=1)then co=0;elsif(clkevent and clk = 1) then if( bcd1n=1 )then co=1; end if;end if;end process;process (clk,cir)beginif (cir=1) thenbcd1n = 00; elsif (clkevent and clk = 1) thenif (

温馨提示

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

评论

0/150

提交评论