EDA课程设计多功能数字钟的设计.docx

上传人:b****7 文档编号:15666301 上传时间:2023-07-06 格式:DOCX 页数:24 大小:1.20MB
下载 相关 举报
EDA课程设计多功能数字钟的设计.docx_第1页
第1页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第2页
第2页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第3页
第3页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第4页
第4页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第5页
第5页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第6页
第6页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第7页
第7页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第8页
第8页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第9页
第9页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第10页
第10页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第11页
第11页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第12页
第12页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第13页
第13页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第14页
第14页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第15页
第15页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第16页
第16页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第17页
第17页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第18页
第18页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第19页
第19页 / 共24页
EDA课程设计多功能数字钟的设计.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA课程设计多功能数字钟的设计.docx

《EDA课程设计多功能数字钟的设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计多功能数字钟的设计.docx(24页珍藏版)》请在冰点文库上搜索。

EDA课程设计多功能数字钟的设计.docx

EDA课程设计多功能数字钟的设计

EDA课程设计

学院:

电气信息学院

专业年级:

通信工程2013级

姓名:

学号

课题:

EDA课程设计

指导老师:

日期:

2016年7月6日

 

第一章多功能数字钟的设计

1、设计任务

了解数字钟的工作原理,进一步熟悉VHDL语言编写驱动七段数码管显示代码,并且掌握用多进程的方式实现一个综合性的程序。

最终实现硬件和软件多功能数字钟的设计。

(1)显示的格式为小时-分钟-秒钟,是24小时制,整点报时时间为5秒,级从整点前5秒钟开始进行报时提示,LED灯开始闪烁,过整点后,停止闪烁。

(2)系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10000次分频。

(3)调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调节分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。

2、方案设计

2.1软件设计方案

用VHDL语言编写程序实现设计内容中需要实现的功能。

将编写好的VHDL的程序加载到硬件电路中,从而驱动七段数码管时间,并用按键控制时间的变化,用软件仿真验证实验结果。

2.2硬件设计方案

在软件方案实现的基础上,将已经运行成功的程序,将结果烧制到硬件电路中,最后生成顶层电路原理图。

 

3、设计的具体实现

3.1设计步骤

3.1.1打开QUARTUS

软件,新建一个工程

3.1.2建完工程之后,再新建一个VHDLFile,打开VHDL编辑器对话框;

3.1.3按照自己设计方案,在VHDL编辑窗口编写VHDL程序;(程序见附录)

3.1.4编写完VHDL程序后,保存在自己新建的文件夹在D盘的目录下;

3.1.5对自己编写的VHDL程序进行编译仿真,对程序的错误进行修改,直到完全通过编译和仿真;

3.1.6仿真无误后,依照按键开关、数码管、LED灯与FPGA的管脚连接表进行管脚分配。

分配完成后,在进行编译一次,以使管脚分配生效;

端口名

使用模块信号

对应FPGA管脚

说明

CLK

数字信号源

C13

时钟为10KHz

HOUR

按键开关S1

P25

调整小时

MIN

按键开关S2

P26

调整分钟

RESET

按键开关S8

N25

复位

LED0

LED灯模块LED1

G13

整点倒计时

LED1

LED灯模块LED2

G15

LED2

LED灯模块LED3

G14

LED3

LED灯模块LED4

H12

DISPLAY0

数码管A段

F13

时间显示

DISPLAY1

数码管B段

F14

DISPLAY2

数码管C段

F15

DISPLAY3

数码管D段

E15

DISPLAY4

数码管E段

F16

DISPLAY5

数码管F段

F17

DISPLAY6

数码管G段

E18

SEG-SEL0

位选DEL0

G18

SEG-SEL1

位选DEL1

G17

SEG-SEL2

位选DEL2

G16

 

3.1.7用下载电缆通过JTAG口将对应的sof文件加载到FPGA中,观察设计结果是否和自己的编程思想一致。

 

4、设计的实验验证结果

4.1在硬件电路板上,七段数码管显示的结果

在附录中的数字时钟的源程序,当设计文件加载到目标器件后,将数字信号源模块的时钟选为10KHZ,数码换开始显示时间,从00︰00︰00开始。

整点正在前5秒的时候。

LED灯的模块LED1-LED5开始闪烁,一旦超过整点,LED停止显示。

按动按键开关的S1、S2小时和分钟开始步进,步进开始调整。

按下按键开关S8,显示恢复到00-00-00从新开始显示时间。

 

4.2用软件的方法仿真验证实验结果

4.2.1用生成顶层原理图输入法的结果和分析

4.2.2用软件仿真波形的仿真结果和分析

在100KHZ的情况下,将RST、S1、S2设置在高电平和低电平时,仿真结果没有发生变化,因为时钟周期很长,所以无变化。

5、心得体会

通过本次课程设计对EDA这门课程又有了更深入的了解和学习,特别是对VHDL语言编写程序的掌握进一步的加强了。

在进行硬件调试的时候因为管脚分配错误的问题一直得不到正确的硬件仿真结果,也让我明白了做实验需要认真仔细。

6、参考文献

[1]李景华,杜玉远.可编程逻辑器件与EDA技术.沈阳:

东北大学出版社,2000

[2]Pedroni,V.A.VHDL数字电路教程.北京:

电子工业出版社,2005

[3]曲伟建.EDA技术在数字电子电路设计中的应用[J].电测与仪表.2004(05)

[4]林若波.基于VHDL的有限状态机电路设计[J].中国水运(理论版).2007(09)

[5]康华光.电子技术基础(数字部分)[M].北京:

高等教育出版社,2001.

第二章交通信号灯控制器设计

1、设计任务

用EDA设计一个简单的交通灯控制器,具有如下功能:

(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

(2)用红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。

(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

(4)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

2、方案设计

2.1设计思路

(1)主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。

(2)45秒、25秒、5秒定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,定时结束信号也输入到主控电路,由主控电路启、闭三色信号灯或启动另一计时电路。

(3)主控电路是核心,这是一个时序电路,其输入信号为:

车辆检测信号(A,B);45秒、25秒、5秒定时信号(C,D,E)。

其状态转化图如下所示:

 

2.2设计总体框图

具体控制过程为支干道没有车来,主干道处于常允许通行的状态,此时主干道亮绿灯,支干道亮红灯,支干道有车来,即主、支干道均有车,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,且在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。

由于主、支干道有45秒和25秒得放行时间,以及每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,所以设计45秒、25秒和5秒计时电路,均采用倒计时。

考虑到显示的方便,每个计时电路又由计数器和码型转换电路组成。

码型转换电路是把对应的二进制码直接转换成数码管显示时的码字,采用数码管的静态显示。

2.3状态分析表

2.4电路原理图

3、功能电路的设计

3.1细化的设计总体框图

根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图所示:

 

3.2灯控制器电路设计

由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄、左拐允许四盏信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外,左拐灯亮允许车辆向左拐弯。

信号灯变换次序为:

主支干道交替允许通行,主干道每次放行40S,亮5S红灯让行驶中的车辆有时间停到禁行线外,左拐放行15秒,亮5S红灯;支干道放行30S,亮5S黄灯,左拐放行15秒,亮5S红灯,其中主支干道的红黄绿灯表示如MR、MY、MG、BR、BY、BG。

 

程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYJTDKZIS

PORT(CLK,SM,SB:

INSTD_LOGIC;

MR,MY,MG,BR,BY,BG:

OUTSTD_LOGIC);

ENDENTITYJTDKZ;

ARCHITECTUREARTOFJTDKZIS

TYPESTATE_TYPEIS(A,B,C,D);

SIGNALSTATE:

STATE_TYPE;

BEGIN

CNT:

PROCESS(CLK)IS

VARIABLES:

INTEGERRANGE0TO45;

VARIABLECLR,EN:

BIT;

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

IFCLR='0'THEN

S:

=0;

ELSIFEN='0'THEN

S:

=S;

ELSE

S:

=S+1;

ENDIF;

CASESTATEIS

WHENA=>MR<='0';MY<='0';MG<='1';

BR<='1';BY<='0';BG<='0';

IF(SBANDSM)='1'THEN

IFS=45THEN

STATE<=B;CLR:

='0';EN:

='0';

ELSE

STATE<=A;CLR:

='1';EN:

='1';

ENDIF;

ELSIF(SBAND(NOTSM))='1'THEN

STATE<=B;CLR:

='0';EN:

='0';

ELSE

STATE<=A;CLR:

='1';EN:

='1';

ENDIF;

WHENB=>MR<='0';MY<='1';MG<='0';

BR<='1';BY<='0';BG<='0';

IFS=5THEN

STATE<=C;CLR:

='0';EN:

='0';

ELSE

STATE<=B;CLR:

='1';EN:

='1';

ENDIF;

WHENC=>MR<='1';MY<='0';MG<='0';

BR<='0';BY<='0';BG<='1';

IF(SMANDSB)='1'THEN

IFS=25THEN

STATE<=D;CLR:

='0';EN:

='0';

ELSE

STATE<=C;CLR:

='1';EN:

='1';

ENDIF;

ELSIFSB='0'THEN

STATE<=D;CLR:

='0';EN:

='0';

ELSE

STATE<=C;CLR:

='1';EN:

='1';

ENDIF;

WHEND=>MR<='1';MY<='0';MG<='0';

BR<='0';BY<='1';BG<='0';

IFS=5THEN

STATE<=A;CLR:

='0';EN:

='0';

ELSE

STATE<=D;CLR:

='1';EN:

='1';

ENDIF;

ENDCASE;

ENDIF;

ENDPROCESSCNT;

ENDARCHITECTUREART;

3.3计数器的设计

根据路上状况,设计各个显示计时部分,包括45s、25s和5s,各部分采用顺时计数方法。

各模块如下:

 

 

 

程序如下:

----CNT45S.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT45SIS

PORT

(SB,CLK,EN45:

INSTD_LOGIC;

DOUT45M,DOUT45B:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYCNT45S;

ARCHITECTUREARTOFCNT45SIS

SIGNALCNT6B:

STD_LOGIC_VECTOR(5DOWNTO0);

BEGIN

PROCESS(SB,CLK,EN45)IS

BEGIN

IFSB='0'THENCNT6B<=CNT6B-CNT6B-1;

ELSIF(CLK'EVENTANDCLK='1')THEN

IFEN45='1'THENCNT6B<=CNT6B+1;

ELSIFEN45='0'THENCNT6B<=CNT6B-CNT6B-1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CNT6B)IS

BEGIN

CASECNT6BIS

WHEN"000000"=>DOUT45M<="01000101";DOUT45B<="01010000";

WHEN"000001"=>DOUT45M<="01000100";DOUT45B<="01001011";

WHEN"000010"=>DOUT45M<="01000011";DOUT45B<="01001000";

WHEN"000011"=>DOUT45M<="01000010";DOUT45B<="01000111";

WHEN"000100"=>DOUT45M<="01000001";DOUT45B<="01000110";

WHEN"000101"=>DOUT45M<="01000000";DOUT45B<="01000101";

WHEN"000110"=>DOUT45M<="00111001";DOUT45B<="01000100";

WHEN"000111"=>DOUT45M<="00111000";DOUT45B<="01000011";

WHEN"001000"=>DOUT45M<="00110111";DOUT45B<="01000010";

WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001";

WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000";

WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="01101001";

WHEN"001100"=>DOUT45M<="00110011";DOUT45B<="00111000";

WHEN"001101"=>DOUT45M<="00110010";DOUT45B<="00110111";

WHEN"001110"=>DOUT45M<="00110001";DOUT45B<="00110110";

WHEN"001111"=>DOUT45M<="00110000";DOUT45B<="00110101";

WHEN"010000"=>DOUT45M<="00101001";DOUT45B<="00110100";

WHEN"010001"=>DOUT45M<="00101000";DOUT45B<="00110011";

WHEN"010010"=>DOUT45M<="00100111";DOUT45B<="00110010";

WHEN"010011"=>DOUT45M<="00100110";DOUT45B<="00110001";

WHEN"010100"=>DOUT45M<="00100101";DOUT45B<="00110000";

WHEN"010101"=>DOUT45M<="00100100";DOUT45B<="00101001";

WHEN"010110"=>DOUT45M<="00100011";DOUT45B<="00101000";

WHEN"010111"=>DOUT45M<="00100010";DOUT45B<="00100111";

WHEN"011000"=>DOUT45M<="00100001";DOUT45B<="00100110";

WHEN"011001"=>DOUT45M<="00100000";DOUT45B<="00100101";

WHEN"011010"=>DOUT45M<="00011001";DOUT45B<="00100100";

WHEN"011011"=>DOUT45M<="00011000";DOUT45B<="00100011";

WHEN"011100"=>DOUT45M<="00010111";DOUT45B<="00100010";

WHEN"011101"=>DOUT45M<="00010110";DOUT45B<="00100001";

WHEN"011110"=>DOUT45M<="00010101";DOUT45B<="00100000";

WHEN"011111"=>DOUT45M<="00010100";DOUT45B<="00011001";

WHEN"100000"=>DOUT45M<="00010011";DOUT45B<="00011000";

WHEN"100001"=>DOUT45M<="00010010";DOUT45B<="00010111";

WHEN"100010"=>DOUT45M<="00010001";DOUT45B<="00010110";

WHEN"100011"=>DOUT45M<="00010000";DOUT45B<="00010101";

WHEN"100100"=>DOUT45M<="00001001";DOUT45B<="00010100";

WHEN"100101"=>DOUT45M<="00001000";DOUT45B<="00010011";

WHEN"100110"=>DOUT45M<="00000111";DOUT45B<="00010010";

WHEN"100111"=>DOUT45M<="00000110";DOUT45B<="00010001";

WHEN"101000"=>DOUT45M<="00000101";DOUT45B<="00010000";

WHEN"101001"=>DOUT45M<="00000100";DOUT45B<="00001001";

WHEN"101010"=>DOUT45M<="00000011";DOUT45B<="00001000";

WHEN"101011"=>DOUT45M<="00000010";DOUT45B<="00000111";

WHEN"101100"=>DOUT45M<="00000001";DOUT45B<="00000110";

WHENOTHERS=>DOUT45M<="00000000";DOUT45B<="00000000";

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREART;

--CNT25S.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT25SIS

PORT(SB,SM,CLK,EN25:

INSTD_LOGIC;

DOUT25M,DOUT25B:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITY;

ARCHITECTUREARTOFCNT25SIS

SIGNALCNT5B:

STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

PROCESS(SB,SM,CLK,EN25)IS

BEGIN

IFSB='0'ORSM='0'THEN

CNT5B<=CNT5B-CNT5B-1;

ELSIF(CLK'EVENTANDCLK='1')THEN

IFEN25='1'THEN

CNT5B<=CNT5B+1;

ELSIFEN25='0'THEN

CNT5B<=CNT5B-CNT5B-1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CNT5B)IS

BEGIN

CASECNT5BIS

WHEN"00000"=>DOUT25B<="00100101";DOUT25M<="00110000";

WHEN"00001"=>DOUT25B<="00100100";DOUT25M<="00101001";

WHEN"00010"=>DOUT25B<="00100011";DOUT25M<="00101000";

WHEN"00011"=>DOUT25B<="00100010";DOUT25M<="00100111";

WHEN"00100"=>DOUT25B<="00100001";DOUT25M<="00100110";

WHEN"00101"=>DOUT25B<="00100000";DOUT25M<="00100101";

WHEN"00110"=>DOUT25B<="00011001";DOUT25M<="00100100";

WHEN"00111"=>DOUT25B<="00011000";DOUT25M<="00100011";

WHEN"01000"=>DOUT25B<="00010111";DOUT25M<="00100010";

WHEN"01001"=>DOUT25B<="00010110";DOUT25M<="00100001";

WHEN"01010"=>DOUT25B<="00010101";DOUT25M<="00100000";

WHEN"01011"=>DOUT25B<="00010100";DOUT25M<="00011001";

WHEN"01100"=>DOUT25B<="00010011";DOUT25M<="00011000";

WHEN"01101"=>DOUT25B<="00010010";DOUT25M<="00010111";

WHEN"01110"=>DOUT25B<="00010001";DOUT25M<="00010110";

WHEN"01111"=>DOUT25B<="00010000";DOUT25M<="00010101";

WHEN"10000"=>DOUT25B<="00001001";DOUT25M<="00010100";

WHEN"10001"=>DOUT25B<="00001001";DOUT25M<="00010100";

WHEN"10010"=>DOUT25B<="00001000";DOUT25M<="00010011";

WHEN"10011"=>DOUT25B<="00000110";DOUT25M<="00010001";

WHEN"10100"=>DOUT25B<="00000101";DOUT25M<="00010000";

WHEN"10101"=>DOUT25B<="00000100";DOUT25M<="00001001";

WHEN"10110"=>DOUT25B<="00000011";DOUT25M<="00001000";

WHEN"10111"=>DOUT25B<="00000010";DOUT25M<="00000111";

WHEN"11000"=>DOUT25B<="00000001";DOUT25M<="00000110";

WHENOTH

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2