二极管。双色发光二极管单独 发光时可以分别显示红色和绿色,当红色和绿色都亮时,由 混色原理可知,这时显示的是黄色,所以,主、次干道的倒 计时显示器能显示红、绿、黄三种颜色,而且LED数码管倒计 时显示器的显示颜色与交通信号灯的颜色是同步的。通过 ispLSI1032E的VHDL 语言编程实现了 LED数码管倒计时显示器 的动态扫描显示,每一位数码管显示1 ms,消隐1 ms,数据 刷新周期为2 ms。qout_main、qout_secondary是CPLD发出的 数码管的段码(g、f、e、d、c、b、a共七段),段码是低电 平有效。 led_high_main 、led_low_main 、 led_high_secondary 、 led_low_secondary 是 CPLD发出的 4 个数码管的位选码,位选 码是高电平有效。 ispLSI1032E芯片共有64根I/O线,在图6.7所示的系统硬 件电路中使用了63根I/O线。
第6章 城市交通信号控制系统的设计 6.5.2 系统软件设计及VHDL源程序 由系统硬件电路设计可知,ispLSI1032E实现了除
时间设置电路、驱动及显示电路、时钟电路以外的其
他所有需要的系统硬件电路,并且通过 VHDL 硬件描述 语言实现了对ispLSI1032E内部硬件电路的设计。在进
行ispLSI1032E内部逻辑功能的软件设计过程中,采用
状态机的设计方法实现了图6.2所示框图中的控制器设 计。所以,ispLSI1032E内部逻辑电路主要由状态机、
100进制减法计数器、显示译码器、二选一数据选择器、
数据寄存器、分频器等组成。 ispLSI1032E 的完整的 VHDL源程序如下:
第6章 城市交通信号控制系统的设计 Designed by OU-Weiming, 2005.1.29 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity traffic_real_1 is port(clk : in std_logic;
40MHz时钟输入
第6章 城市交通信号控制系统的设计 indata_1 , indata_3 , indata_4 , indata_5: in std_logic_vector(7 downto 0);
indata_2: in std_logic_vector(3 downto 0);
qout_main 时间显示段码 led_high_main , led_low_main , , qout_secondary:out std_logic_vector(6 downto 0);
led_high_secondary
std_logic;
,
led_low_secondary:out
第6章 城市交通信号控制系统的设计 时间显示位选码 select_rg: out std_logic_vector(3 downto 0); , , select_g_main ,
颜色选择控制
select_r_main select_r_secondary std_logic; jtdout: out std_logic_vector(3 downto 0)); select_g_secondary:out
交通灯信号输出
第6章 城市交通信号控制系统的设计 end traffic_real_1; architecture hav of traffic_real_1 is
type states is (s3,s2,s1,s0);
signal state: states:=s0; signal nextstate: states:=s0; signal count3 , count2: std_logic_vector(3 downto 0);
主干道计数器
第6章 城市交通信号控制
系统的设计 signal count1 , count0: std_logic_vector(3 downto 0); downto 0); signal 次干道计数器 std_logic_vector(7 主干道倒计时初值 : signal data0_main :
data0_secondary
std_logic_vector(7 downto 0);
次干道倒计时初值
第6章 城市交通信号控制系统的设计 signal light : std_logic_vector(3 downto 0); 交通灯输出信号 signal qout_main_high , qout_main_low std_logic_vector(6 downto 0); 主干道段码 :
signal qout_secondary_high , qout_secondary_low : std_logic_vector(6 downto 0); 次干道段码
signal load_main , load_secondary: std_logic; 计数器初值预置控制信号
第6章 城市交通信号控制系统的设计 signal clkms,clks: std_logic; 毫秒及秒信号 signal flag_main,flag_secondary: std_logic; begin U1:process(clk) 时钟分频 variable stemp1: integer range 0 to 39999; variable carry1: std_logic; begin if( clk’event and clk=′1′) then if stemp1=39999 then stemp1:=0; carry1:=′1′;
第6章 城市交通信号控制系统的设计 else stemp1:=stemp1+1; carry1:=′0′; end if; end if; clkms<=carry1; end process U1; U2: process(clkms) 时钟1000分频 variable stemp2: integer range 0 to 999; variable carry2: std_logic; begin if( clkms’event and clkms=′1′) then
if stemp2=999 then
第6章 城市交通信号控制系统的设计 stemp2:=0; carry2:=′1′; else stemp2:=stemp2+1; carry2:=′0′; end if; end if; clks<=carry2; end process U2;
U3: process(clks,load_main) 主干道倒计时器,
完成同步预置时间初值或减1
第6章 城市交通信号控制系统的设计 begin if rising_edge(clks) then if load_main=′1′ then count3<=data0_main(7 downto 4); count2<=data0_main(3 downto 0);
elsif count2="0000" then
count3<=count3-1; count2<="1001"; else count2<=count2-1; end if; end if;
第6章 城市交通信号控制系统的设计 end process U3; U4: process(clks,load_secondary) 次干道倒计时器,完成同步预置时间初值或减1 begin if rising_edge(clks) then if load_secondary=′1′ then count1<=data0_secondary(7 downto 4); count0<=data0_secondary(3 downto 0); elsif count0="0000" then count1<=count1-1; count0<="1001"; else
第6章 城市交通信号控制系统的设计 else count0<=count0-1; end if; end if; end process U4; U5:process(clks) 产生预置时间初值控制信号 begin 并且改变当前状态 if falling_edge(clks) then if (count3="0000" and count2="0000" and count1="0000" and count0="0000" )then load_main<=′1′;
第6章 城市交通信号控制系统的设计
load_secondary<=′1′;
state<=nextstate; elsif (count3="0000" and coun
t2="0000") then load_main<=′1′; load_secondary<=′0′;
state<=nextstate;
elsif (count1="0000" and count0="0000") then load_main<=′0′; load_secondary<=′1′;
state<=nextstate;
第6章 城市交通信号控制系统的设计 else load_main<=′0′; load_secondary<=′0′; end if; end if; end process U5; U6: process(state) 状态机 不妨设主干道是南北道,次干道是东西道 begin case state is when s0=> light<="0110"; s0状态,南北道绿灯亮,东西道红灯亮
第6章 城市交通信号控制系统的设计 nextstate<=s1; data0_main<=indata_1; data0_secondary<=indata_5; select_rg<="1001"; when s1状态,南北道黄灯亮,东西道红灯亮 nextstate<=s2; s1=> light<="0010";
bbs.99jianzhu.com内容:建筑图纸、PDF/word 流程,表格,案例,最新,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。