EDA实验 交通灯设计

发布时间:2024-11-12

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

实验五 交通灯控制器设计

一、实验目的

(1)进一步熟练EDA设计流程、系统仿真及硬件测试分析。 (2)学会用分层次设计的方法设计交通灯控制器。

(3)掌握动态数码管的原理,学会用VHDL语言编程使用数码管。 (4)学习较复杂数字电路系统的设计。 二、实验内容与要求

一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;

乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0;

平时系统停留在MGCR(主干道通行)状态,当s=1时,经MYCR(黄灯)状态转到MRCG状态,但保证MGCR不短于一分钟;一旦s=0系统将脱离MRCG状态。随即由MRCY进入MGCR状态,即使s一直为1,MRCG持续时间也不得超过20秒。 三、设计思路/原理图

图一、交通灯控制器原理图

采用分层设计的方法分为其中jishuqi为倒计数器模块预置数有60、3、19三种。yimaqi为8位二进制数译码成8421BCD码的译码模块,dongtaism为动态扫描显示模块,deng为交通灯状态转移模块。当s=0时系统处以MGCR状态,一旦s=1且一直有效则状态转移:MGCR——>MYCR——>MRCG——>MRCY——>MGCR。其中MGCR持续时间为61秒,MYCR持续时间为4秒,MRCG最长持续时间为20秒。MRCY持续时间为4秒。

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

四、实验程序 (程序来源:王鸿亮 6100208031 ) (1)倒计数器模块jishuqi library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity jishuqi is

port(clk,s:in std_logic;

count:out std_logic_vector(7 downto 0); state:out std_logic_vector(1 downto 0)); end jishuqi;

architecture one of jishuqi is

signal st:std_logic_vector(1 downto 0):="00"; signal cnt:std_logic_vector(7 downto 0); type states is (st0,st1); signal stx:states; begin

process(clk,s) begin

if clk'event and clk='1' then case st is

when "00" =>if s='1' then case stx is when st0=>cnt<="00111100";stx<=st1;

when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000011";st<="01";end if;

when others=>null;end case; else cnt<="00000000";stx<=st0;st<="00";end if;

when "01" =>if s='1' then case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00010011";st<="10";end if;

when others=>null;end case;

else case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000000";st<="00";end if;

when others=>null;end case;end if;

when "10"=> if s='1' then case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000011";st<="11";end if;

when others=>null;end case; else cnt<="00000011";st<="11";end if;

when "11"=> if cnt>0 then cnt<=cnt-1;else cnt<="00000000";st<="00";stx<=st0;end if; when others=>null; end case; end if;

end process; state<=st;

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

count<=cnt; end architecture;

(2)交通灯状态转移模块deng library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity deng is

port(state:in std_logic_vector(1 downto 0); mg,cr,my,cg,mr,cy:out std_logic ) ; end entity deng ;

architecture one of deng is begin

process(state) begin

case state is

when "00"=>mg<='1';cr<='1';my<='0';mr<='0';cg<='0';cy<='0';

when "01"=>mg<='0';cr<='1';my<='1';mr<='0';cg<='0';cy<='0';

when "10"=>mg<='0';cr<='0';my<='0';mr<='1';cg<='1';cy<='0';

when "11"=>mg<='0';cr<='0';my<='0';mr<='1';cg<='0';cy<='1'; end case; end process;

end architecture one;

(5) 八位二进制向八位BCD译码的译码模块yimaqi library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity yimaqi is

port(count:in std_logic_vector(7 downto 0); p:out std_logic_vector(7 downto 0)); end entity yimaqi;

architecture one of yimaqi is begin

process(count)

variable h:std_logic_vector(7 downto 0); begin h:=count;

if h<10 then h:=h;

elsif h>=10 and h<20 then h:=h+6; elsif h>=20 and h<30 then h:=h+12;

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

elsif h>=30 and h<40 then h:=h+18; elsif h>=40 and h<50 then h:=h+24; elsif h>=50 and h<60 then h:=h+30; elsif h>=60 and h<70 then h:=h+36; end if; p<=h;

end process;

end architecture one;

(6)动态数据选择器模块dongtaism library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dongtaism is port(clk2:in std_logic;

count:in std_logic_vector(7 downto 0);

y:out std_logic_vector(2 downto 0);pu:out std_logic_vector(3 downto 0)); end entity dongtaism;

architecture one of dongtaism is

signal y1:std_logic_vector(2 downto 0); type states is (st0,st1); signal stx1:states; begin

process(clk2) begin

if clk2'event and clk2='1' then

case stx1 is when st0=>y1<="000";pu<=count(3 downto 0);stx1<=st1; when st1=>y1<="001";pu<=count(7 downto 4);stx1<=st0; when others=>stx1<=st0; end case;end if;end process; y<=y1; end architecture one ; 五、实验步骤

1.建立工作库文件夹和编辑设计文件 2.编译过程 3.系统仿真

(1)建立新的波形激励文件。

(2)在波形编辑器窗口添加节点。

(3)通过Edit->End Time 来设定仿真结束时间。 (4)点击save保存。

(5)通过Tools下的Simulator Tools项进行仿真,然后观察输出波形。 4.引脚锁定

(1)通过Assignment->Assignment Editor->Pin查找到引脚进行引脚的锁定。 5.编程下载

(1)选择Tools->Programmer菜单,点击Hardware Setup窗口完成硬件设置。 (2)点击Start开始编程下载。

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

6.硬件测试

六、仿真波形分析

下列各图中clk为计数器时钟上升沿触发,clk2为动态扫描时钟上升沿触发,pu为数码管输出,y[1]对应计数值十位,y[0]对应计数值个位。

A1 图

1

A2 图

2

A3 图3

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

4

5

图6

1、 A1以前s=0、mg=1、 my=0、mr=0、cg=0、cy=0、cr=1、数码管显示0,此时系统处以主绿乡红(mgcr)主干道通行状态。 2、 A1-A2: s=1、mg=1、 my=0、mr=0、cg=0、cy=0、cr=1、数码管显示60-00,此时系统处以主绿乡红(mgcr)主干道通行状态且持续时间为61秒。

3、 A2-A3:s=1、mg=0、 my=1、mr=0、cg=0、cy=0、cr=1、数码管显示03-00,此时系统处以主黄乡红(mycr)状态且持续时间为4秒。 4、 A3-A4: s=1、mg=0、 my=0、mr=1、cg=1、cy=0、cr=0、数码管显示19-00,此时系统处以主红乡绿(mrcg)乡间道路通行状态且持续时间为20秒。

5、A4-A5: s=1、mg=0、 my=0、mr=1、cg=0、cy=1、cr0、数码管显示03-00,此时系统处以主红乡黄(mrcy)状态且持续时间为4秒。

6、A5以后回到2,直到A6处s由1变为0,系统回到1主绿乡红(mgcr)主干道通行状态。

实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0。

七、硬件测试

引脚锁定:clk锁定为引脚79(2hz),clk2锁定为引脚78(1000hz),y[2] 锁定为引脚14(Y3),y[1] 锁定为引脚13(Y2),y[0] 锁定为引脚12(Y1),pu(3 downto 0) 锁定为引脚11、8、9、10(DX、CX、BX、AX),s锁定为引脚55(电平3),mg锁定为引脚208(LED8),cr锁定为引脚206(LED7), my锁定为引脚207(LED6)mr锁定为引脚204(LED5),cg锁定为引脚170(LED4),cy锁定为引脚169(LED3)。

测试结果:电平3为低电平时数码管显示0,LED8亮、LED7亮、LED6灭、LED5灭、LED4灭、LED3灭。

电平3为高电平且持续时间较长(大于88秒)时1、数码管显示60-00,LED8灭、LED7亮、LED6亮、LED5灭、LED4灭、LED3灭;2、数码管显示03-00 ,LED8灭、LED7亮、LED6亮、LED5灭、LED4灭、LED3灭;3、数码管显示19-00 ,LED8灭、LED7灭、LED6灭、LED5亮、LED4亮、LED3灭;4、数码管显示3-0 ,LED8灭、LED7灭、LED6灭、LED5亮、LED4、LED3亮;5、回到1。 电平3为高电平持续时间较短时(小于88秒)则在在电平变为低电平时则数码管立即显示0,LED8亮、LED7亮、LED6灭、LED5灭、LED4灭、LED3灭。

结果分析:平时系统停留在MGCR状态,当s=1时,经MYCR(黄灯)状态转到MRCG状态,且MGCR为61秒;一旦s=0系统将脱离MRCG状态。随即由MRCY进入MGCR状态,即使s一直为1,MRCG最长持续时间为20秒。交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔。

八、实验小结

这次实验使我更进一步地熟悉了VHDL硬件描述语言的设计思想,同时通过对程序的调试也使自己对VHDL语言的语法,结构和基本语句有了更深刻的了解。在设计较复杂数字电路系统时最好采用分层设计的方法,分为各个功能模块,逐个进行仿真,最后通过顶层文件调用各个底层文件完成设计,这样设计程序的可移植性好如八位二进制向八位BCD译码的译码模块可以作为它用,程序也便于修改如程序要增加一些功能也只需加入相应的模块即可。

EDA实验 交通灯设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219