EDA 实验报告实验七 交通灯控制电路的设计一、实验目的:进一步学习复杂数字电路的设计方法,提高利用硬件描述语言进行电路设计的技巧和熟练程度。
二、实验要求及原理:1、 满足图1顺序工作流程。
图中设南北方向的红、黄、绿灯分别为NSR 、NSY 、NSG ,东西方向的红、黄、绿灯分别为EWR 、EWY 、EWG 。
它们的工作方式有些必须是并行进行的,即南北方向绿灯亮,东西方向红灯亮;南北方向黄灯亮,东西方向红灯亮;南北方向红灯亮,东西方向绿灯亮;南北方向红灯亮,东西方向黄红灯亮。
图1 交通灯顺序工作流程图2、 应满足两个方向的工作时序:即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。
时序流程图2所示。
图2中,假设每个单位时间为3秒,则南北、东西方向绿、黄、红灯亮时间分别15秒、3秒、18秒,一次循环为36秒。
其中红灯亮的时间为绿灯、黄灯亮的时间之和。
图2 交通灯时序工作流程图3、 十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。
具体为:当1 2 3 4 5 6 7 8 9 10 11 12 1 23 4 5 6 NSGt某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。
例如:当南北方向从黄灯转换成红灯时,置南北方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而南北方向的绿灯亮;同时,东西方向的红灯亮,并置东西方向的数显为24。
三、实验内容1、根据实验要求及原理1、2画出交通指示灯控制电路原理框图。
提示:两个方向的控制电路可以共用一个24进制计数器实现。
2、用VHDL硬件描述语言层次化设计方法进行顶层文件和各模块电路的设计。
产生1秒信号输出文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY miao ISPORT( CLK:IN STD_LOGIC; 时钟信号输入EN:OUT STD_LOGIC); 2分频使能信号输出END miao;ARCHITECTURE one OF miao ISSIGNAL CNT:INTEGER RANGE 0 TO 1;SIGNAL FOUT:STD_LOGIC;BEGINP1:PROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1'THENIFCNT=1THENFOUT<='1';CNT<=0;ELSIF CNT<1THENCNT<=CNT+1;FOUT<='0';END IF;END IF;END PROCESS P1;EN<=FOUT;END one;东西南北交通灯显示文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ls164 ISPORT( CLKIN:IN STD_LOGIC; 2分频信号输入EWG:OUT STD_LOGIC; 东西方向绿灯EWY:OUT STD_LOGIC; 东西方向黄灯EWR:OUT STD_LOGIC; 东西方向红灯NSG:OUT STD_LOGIC; 南北方向绿灯NSY:OUT STD_LOGIC; 南北方向黄灯NSR:OUT STD_LOGIC); 南北方向红灯END ls164;ARCHITECTURE one OF ls164 ISSIGNAL CNT :INTEGER RANGE 1 TO 12;BEGINP1:PROCESS(CLKIN)BEGINIF CLKIN'EVENT AND CLKIN='1'THENIF CNT>11THENCNT<=1;ELSECNT<=CNT+1;END IF;END IF;END PROCESS P1;P2:PROCESS(CNT)BEGINIF CNT<6THENNSG<='1';NSY<='0';NSR<='0';EWG<='0';EWY<='0';EWR<='1';ELSIF CNT=6THENNSG<='0';NSY<='1';NSR<='0';EWG<='0';EWY<='0';EWR<='1';ELSIF CNT>6 AND CNT<12THENNSG<='0';NSY<='0';NSR<='1';EWG<='1';EWY<='0';EWR<='0';ELSENSG<='0';NSY<='0';NSR<='1';EWG<='0';EWY<='1';EWR<='0';END IF;END PROCESS P2;END one;数码管扫描显示文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shaomiao ISPORT(SHAOMIAO:IN STD_LOGIC; 数码管扫描时钟信号CLKIN:IN STD_LOGIC; 秒信号输入EWRIN :IN STD_LOGIC; 东西方向红灯使能信号NSRIN :IN STD_LOGIC; 南北方向红灯使能信号WEIXUAN:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); 数码管位选信号DUANXUAN:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); 数码管段选信号END shaomiao;ARCHITECTURE one OF shaomiao ISSIGNAL INPUT :INTEGER RANGE 0 TO 12;SIGNAL GEWEI :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL SHIWEI :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL CNT :INTEGER RANGE 0 TO 2;BEGINP1:PROCESS(SHAOMIAO,EWRIN,NSRIN)BEGINIF SHAOMIAO'EVENT AND SHAOMIAO='1'THENIF EWRIN='1'THENCNT<=CNT+1;WEIXUAN<="000"; DUANXUAN<=GEWEI;IF CNT=2THENCNT<=0;WEIXUAN<="001"; DUANXUAN<=SHIWEI;END IF;ELSIF NSRIN='1'THENCNT<=CNT+1;WEIXUAN<="110"; DUANXUAN<=GEWEI;IF CNT=2THENCNT<=0;WEIXUAN<="111"; DUANXUAN<=SHIWEI;END IF;END IF;END IF;END PROCESS P1;P2:PROCESS(CLKIN)BEGINIF CLKIN'EVENT AND CLKIN='1'THENIF EWRIN='1' OR NSRIN='1'THENIF INPUT=12THENINPUT<=1;ELSEINPUT<=INPUT+1;END IF;END IF;END IF;END PROCESS ;PROCESS(INPUT)BEGINCASE INPUT ISWHEN 0 => GEWEI<="1011011";SHIWEI<="0000110";WHEN 1 => GEWEI<="0000110";SHIWEI<="0000110";WHEN 2 => GEWEI<="0111111";SHIWEI<="0000110";WHEN 3 => GEWEI<="1101111";SHIWEI<="0111111";WHEN 4 => GEWEI<="1111111";SHIWEI<="0111111";WHEN 5 => GEWEI<="0000111";SHIWEI<="0111111";WHEN 6 => GEWEI<="1111101";SHIWEI<="0111111";WHEN 7 => GEWEI<="1101101";SHIWEI<="0111111";WHEN 8 => GEWEI<="1100110";SHIWEI<="0111111";WHEN 9 => GEWEI<="1001111";SHIWEI<="0111111";WHEN 10 => GEWEI<="1011011";SHIWEI<="0111111";WHEN 11 => GEWEI<="0000110";SHIWEI<="0111111";WHEN 12 => GEWEI<="0111111";SHIWEI<="0111111";WHEN OTHERS => NULL;END CASE;END PROCESS ;END one;例化文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jiaotongdeng ISPORT( clk :IN STD_LOGIC;SHAOMIAOXINHAO:IN STD_LOGIC;EWG1:OUT STD_LOGIC;EWY1:OUT STD_LOGIC;EWR1:OUT STD_LOGIC;NSG1:OUT STD_LOGIC;NSY1:OUT STD_LOGIC;NSR1:OUT STD_LOGIC;WEIXUAN1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DUANXUAN1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END jiaotongdeng ;ARCHITECTURE one OF jiaotongdeng ISCOMPONENT miao ISPORT( CLK:IN STD_LOGIC;EN:OUT STD_LOGIC);END COMPONENT;COMPONENT ls164 ISPORT( CLKIN:IN STD_LOGIC;EWG:OUT STD_LOGIC;EWY:OUT STD_LOGIC;EWR:OUT STD_LOGIC;NSG:OUT STD_LOGIC;NSY:OUT STD_LOGIC;NSR:OUT STD_LOGIC);END COMPONENT;COMPONENT shaomiao ISPORT(SHAOMIAO:IN STD_LOGIC;CLKIN:IN STD_LOGIC;EWRIN :IN STD_LOGIC;NSRIN :IN STD_LOGIC;WEIXUAN:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DUANXUAN:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT;SIGNAL ewr2 : STD_LOGIC;SIGNAL nsr2 : STD_LOGIC;signal enable:std_logic;BEGINU1: miao PORT MAP(CLK=>clk,EN=>enable);U2:ls164 PORT MAP(CLKIN=>enable,EWG=>EWG1,EWY=>EWY1,EWR=>ewr2,NSR=>nsr2,NSG=>NSG1, NSY=>NSY1);U3: shaomiao PORT MAP( SHAOMIAO=>SHAOMIAOXINHAO,CLKIN=>clk,EWRIN=>ewr2,NSRIN=>nsr2,WEI XUAN=>WEIXUAN1,DUANXUAN=>DUANXUAN1);EWR1<=ewr2;NSR1<=nsr2;END one;3、用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据(不包括数码显示部分)。