EDA实验 交通灯设计
时间:2025-04-18
时间:2025-04-18
实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有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 …… 此处隐藏:4953字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:网络营销目标市场的选择