lifang88322
首先最简单的方法是列出真值表。写出逻辑表达式。然后根据逻辑表达式来写出vhdl程序。在编译=》仿真=》功能分析=》输出延时=》下载程序 1.设计原理 在这个实例中,我们设计一个简单的十字路口交通灯。交通灯分东西和南北两个方向,均通过数码管和指示灯指示当前的状态。设两个方向的流量相当,红灯时间45s,绿灯时间40s,黄灯时间5s. 从交通灯的工作机理来看,无论是东西方向还是南北方向,都是一个减法计数器。只不过计数时还要判断红绿灯情况,再设置计数器的模值。 下表所示为一个初始状态和4个跳变状态。交通灯工作时状态将在4个状态间循环跳变,整个交通灯则完全按照减计数器原理进行设计。状态 当前计数值 下一个CLOCK到来时新模值东西方向指示 南北方向指示 东西-南北方向指示 东西方向指示 南北方向指示 东西-南北方向指示初始 0 0 45 40 红-绿1 6 1 红-绿 5 5 红-黄2 1 1 红-黄 40 45 绿-红3 1 6 绿-红 5 5 黄-红4 1 1 45 40 红-绿2.部分程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity traffic is port(clk, urgency: in std_logic;east_west:buffer std_logic_vector(7 downto 0);--东西方向时钟计数south_north: buffer std_logic_vector(7 downto 0); --南北方向的时钟计数led:buffer std_logic_vector(5 downto 0)); --交通指示灯end traffic;architecture arch of traffic is。。。。。。。 end arch; 3.具体设计步骤1) 建立一个新的工程完成上面的电路设计2) 编译电路并使用功能仿真来验证设计3) 引脚配置,如Part I中讨论的,这些配置是确保VHDL代码中输出端口能使用PFGA芯片上连接到LEDR和LEDG的引脚。重新编译项目,并下载到FPGA芯片上。4) 测试电路的正确性。
MM头Selina
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity top_traffic isport( clock : in std_logic;reset : in std_logic;chip1 : in std_logic;chip2 : in std_logic;seg_out : out std_logic_vector(6 downto 0);chip_sel : out std_logic;chip_sel1 : out std_logic;chip_sel2 : out std_logic;q_out : out std_logic_vector(11 downto 0));end ;architecture bhv of top_traffic iscomponent qhz_anyport( clk: in std_logic;Q: out std_logic);end component;component qhz_any1port( clk: in std_logic;Q: out std_logic);end component;component mux21aport( s : in std_logic;a,b : in std_logic_vector(6 downto 0);y : out std_logic_vector(6 downto 0));end component;component trafficport( clk : in std_logic;rst : in std_logic;times : out integer range 0 to 100;q : out std_logic_vector(11 downto 0);shi: out std_logic_vector(6 downto 0);ge: out std_logic_vector(6 downto 0));end component;signal m1 : std_logic;signal m2 : std_logic;signal m3 : integer range 0 to 100;signal m4 : std_logic_vector(6 downto 0);signal m5 : std_logic_vector(6 downto 0);beginu1 : qhz_any port map(clk=>clock,Q=>m1);u2 : qhz_any1 port map(clk=>clock,Q=>m2);u3 : qhz_any1 port map(clk=>clock,Q=>chip_sel);u4 : traffic port map(clk=>m1,times=>m3,q=>q_out,rst=>reset,ge=>m4,shi=>m5);u5 : mux21a port map(a=>m4,b=>m5,y=>seg_out,s=>m2);chip_sel1<=chip1;chip_sel2<=chip2;end bhv;-------------miao fenpin-----------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qhz_any isgeneric(n:integer:=20000000);port( clk: in std_logic;Q: out std_logic);end qhz_any;architecture bhv of qhz_any isbeginprocess(clk)variable cout:integer:=0;beginif clk'event and clk='1' thenif cout<(n/2) thenQ<='1'; cout:=cout+1;elsif cout<(n-1) thenQ<='0'; cout:=cout+1;else cout:=0;end if;end if;end process;end bhv;----------------scan fenpin-----------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qhz_any1 isgeneric(n:integer:=200000);port( clk: in std_logic;Q: out std_logic);end qhz_any1;architecture bhv of qhz_any1 isbeginprocess(clk)variable cout:integer:=0;beginif clk'event and clk='1' thenif cout<(n/2) thenQ<='1'; cout:=cout+1;elsif cout<(n-1) thenQ<='0'; cout:=cout+1;else cout:=0;end if;end if;end process;end bhv;--------------------traffic-------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity traffic isport( clk : in std_logic;rst : in std_logic;times : out integer range 0 to 100;q : out std_logic_vector(11 downto 0);shi,ge:out std_logic_vector(6 downto 0));end traffic;architecture bhv of traffic issignal cnt : integer range 0 to 100;signal l1,l2:integer range 0 to 9;type state_value is (s1,s2,s3,s4);signal state : state_value;beginprocess(clk,rst)beginif rst='1' thenstate<=s1; --S,N travel E,W stopcnt<=39;q<="100001100001";elsif rising_edge(clk) thencase state iswhen s1=> --s1if cnt=0 thenstate<=s2;q<="100010100010";cnt<=4;elsestate<=s1;cnt<=cnt-1;end if;when s2=> --s2if cnt=0 thenstate<=s3;q<="001100001100";cnt<=44;elsestate<=s2;cnt<=cnt-1;end if;when s3=> --s3if cnt=0 thenstate<=s4;q<="010100010100";cnt<=4;elsestate<=s3;cnt<=cnt-1;end if;when s4=> --s4if cnt=0 thenstate<=s1;q<="100001100001";cnt<=39;elsestate<=s4;cnt<=cnt-1;end if;end case;end if;end process;l1<=cnt/10; l2<=cnt rem 10;---- JI SUAN SHI WEI ; GE WEIprocess(l1)begincase l1 is ------- XIAN SHI SHI WEIwhen 0=>shi<="1111110"; --0when 1=>shi<="0110000"; --1when 2=>shi<="1101101"; --2when 3=>shi<="1111001"; --3when 4=>shi<="0110011"; --4when 5=>shi<="1011011"; --5when 6=>shi<="1011111"; --6when 7=>shi<="1110000"; --7when 8=>shi<="1111111"; --8when 9=>shi<="1111011"; --9end case;end process;process(l2)begincase l2 is -------- XIAN SHI GE WEIwhen 0=>ge<="1111110"; --0when 1=>ge<="0110000"; --1when 2=>ge<="1101101"; --2when 3=>ge<="1111001"; --3when 4=>ge<="0110011"; --4when 5=>ge<="1011011"; --5when 6=>ge<="1011111"; --6when 7=>ge<="1110000"; --7when 8=>ge<="1111111"; --8when 9=>ge<="1111011"; --9end case;end process;end bhv;---------------------------2 xuan 1-----------library ieee;use ieee.std_logic_1164.all;entity mux21a isport( s : in std_logic;a,b : in std_logic_vector(6 downto 0);y : out std_logic_vector(6 downto 0));end mux21a;architecture one of mux21a isbeginprocess(a,b,s)beginif s='0' then y<=a; else y<=b;end if;end process;end one;~~自己用过的,时间根据你的改过了,11点就熄灯,没时间写特殊情况了,自己先看看哦
交通工程毕业论文题目 交通工程是运输工程学中的一个分支。运输工程包括:公路交通、铁路交通、航空交通、水上交通、管道交通五项内容。下面是我为你带来的 交通工程毕业
用PLC实现智能交通控制 1 引言 据不完全统计,目前我国城市里的十字路口交通系统大都采用定时来控制(不排除繁忙路段或高峰时段用交警来取代交通灯的情况),这样必
用PLC实现智能交通控制 1 引言 据不完全统计,目前我国城市里的十字路口交通系统大都采用定时来控制(不排除繁忙路段或高峰时段用交警来取代交通灯的情况),这样必
首先最简单的方法是列出真值表。写出逻辑表达式。然后根据逻辑表达式来写出vhdl程序。在编译=》仿真=》功能分析=》输出延时=》下载程序 1.设计原理 在这个实
内容简介: 毕业设计(论文) PLC交通灯电气控制设计,共17页,6857字 [摘 要]: 针对近年来城市交通的拥挤现象,特别是驾驶员违章严重、交通事故频