EDA交通信号控制器的VHDL设计Word文档格式.docx
- 文档编号:14766301
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:10
- 大小:192.72KB
EDA交通信号控制器的VHDL设计Word文档格式.docx
《EDA交通信号控制器的VHDL设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《EDA交通信号控制器的VHDL设计Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
绿
黄
表1交通信号灯的4种状态
设计要求:
(1)采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。
(2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。
二、设计原理
1、设计目的:
学习EDA开发软件和Quartus的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
设计说明:
在事先准备及老师指导后,将此次设计分4个模块,来解决交通灯的各项特性。
(1)第一模块:
clk时钟秒脉冲发生电路
在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:
系统输入信号:
Clk:
由外接信号发生器提供256的时钟信号
系统输出信号:
full:
产生每秒一个脉冲的信号
(2)第二模块:
计数秒数选择电路
计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。
系统输入:
full:
接收由clk电路的提供的1hz的时钟脉冲信号
系统输出信号:
tm:
产生显示电路状态转换信号
tl:
倒计数值秒数个位变化控制信号
th:
倒计数值秒数十位变化控制信号
(3)第三模块:
红绿灯状态转换电路
本电路负责红绿灯的转换。
tm:
接收计数秒数选择电路状态转换信号
comb_out:
负责红绿灯的状态显示
(4)第四模块:
时间显示电路
本电路负责红绿灯的计数时间的显示。
tl:
led7s1:
负责红绿灯的显示秒数个位
led7s2:
负责红绿灯的显示秒数十位
三、设计方案
CLK
时间显示数据输出
信号灯输出
图2交通信号灯控制器程序原理框图
进程将CLK信号分频后产生1秒信号,然后构成两个带有预置数功能的十进制计数器,并产生允许十位计数器计数的控制信号。
状态寄存器实现状态转换和产生状态转换的控制信号,下个模块产生次态信号和信号灯输出信号,以及每一个状态的时间值。
经过四个模块的处理,使时间计数、红绿灯显示能够正常运行。
四、程序清单:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtrafficIS
PORT(clk:
instd_logic;
outstd_logic_vector(6downto0);
led7s2:
outstd_logic_vector(5downto0));
END;
ARCHITECTUREoneOFtrafficIS
TYPEdmIS(s0,s1,s2,s3);
SIgnalcurrent_state,next_state:
dm;
SIGNALFULL:
STD_LOGIC;
SIGNALtl:
STD_LOGIC_VECTOR(6DOWNTO0);
SIGNALth:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALtm:
SIGNALTIME:
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFCLK'
EVENTANDCLK='
1'
THEN
IFCNT8="
"
CNT8:
="
00000000"
;
FULL<
='
ELSECNT8:
=CNT8+1;
FULL<
='
0'
ENDIF;
ENDPROCESSP_REG;
PROCESS(full)
IFfull'
EVENTANDfull='
IFTIME<
1000011"
THEN
TIME<
=TIME+1;
ELSeTIME<
0000000"
ENDIF;
ENDPROCESS;
REG:
process(full,current_state)
IFfull='
ANDfull'
EVENTTHEN
current_state<
=next_state;
ENDprocess;
COM:
process(current_state,time)
begin
casecurrent_stateis
whens0=>
comb_out<
001100"
tm<
=39-time;
iftime=39thennext_state<
=s1;
elsenext_state<
=s0;
endif;
whens1=>
010100"
=43-time;
iftime=40thencomb_out<
elsiftime=41thencomb_out<
000100"
elsiftime=42thencomb_out<
elsiftime=43thennext_state<
=s2;
whens2=>
100001"
=63-time;
iftime=63thennext_state<
=s3;
whens3=>
100010"
=67-time;
iftime=64thencomb_out<
elsiftime=65thencomb_out<
100000"
elsiftime=66thencomb_out<
elsiftime=67thennext_state<
endcase;
endprocess;
PROCESS(tm)
BEGIN
IFtm>
=30THENth<
11"
tl<
=tm-30;
ELSIFtm>
=20THENth<
10"
=tm-20;
=10THENth<
01"
=tm-10;
ELSEth<
00"
=tm;
process(th,tl)
casethis
when"
=>
led7s1<
0111111"
0000110"
1011011"
1001111"
whenothers=>
null;
casetlis
when"
led7s2<
0000001"
0000010"
0000011"
0000100"
1100110"
0000101"
1101101"
1111101"
0000111"
0001000"
1111111"
0001001"
1101111"
endprocess;
end;
五、用QuartusII软件的设计过程主要包括
1建立项目
2输入设计电路(可采用不同方式)
3设计编译
4设计仿真
5设计下载
六、仿真结果(如下图)
七、引脚设置
接下来就要选择目标器件并对相应的引脚进行锁定了,我们选择的器件为cyclone系列的EP1C3T144芯片,引脚锁定方法如下图所示。
将未使用的管脚设置为三态输入(一定要设置,否则可能会损坏芯片)。
本实验只能用采用模式6下载调试,一切正常。
八、实验中问题
A、程序设计中的问题
在程序设计中有遇到不知如何简化程序的问题,开始编写的时候设置的变量、信号过多,不懂得巧妙的应用。
B、波形仿真中的问题
波形仿真正确,但是波形图中存在毛刺现象,毛刺现象又称为竞争冒险,由于信号在FPGA器件内部通过连线和逻辑单元时都有一定的延时。
延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。
另外信号高低电平的转换也需要一定的过渡时间。
所以多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。
如果一个组合逻辑电路中有“毛刺“出现,就说明该电路存在“冒险”。
毛刺的消除可以通过改变设计,破坏毛刺产生的条件来减少毛刺的发生。
毛刺并不是对所有的输入都有危害,对于D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且不满足数据的建立和保持时间,就不会对系统造成危害,因此可认为D触发器的D输入端对毛刺不敏感。
根据这个特性,应当在系统中尽可能采用同步电路,因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。
由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间。
这种方法可以大大减少毛刺,但他并不能完全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 交通信号 控制器 VHDL 设计