【合作刊物投稿、发表文章、上传课件试卷图片请点这里,有偿发表,每篇0.2元】
悠扬教案网
本站首页 教学教案 教育论文 课件下载 试卷试题 作文指导 音像资料 教育文档 家教指南 发表文章 站内搜索 访客留言 自助广告
本站首页 教学教案 教育论文 课件下载 试卷试题 作文指导 音像资料 教育文档 家教指南 发表文章 站内搜索 访客留言 自助广告
| 综合教育论文 | 专题教育论文 | 幼教教研论文 | 小学教研论文 | 初中教研论文 | 高中教研论文 | 其它教育论文 | 论文写作指导 |
  当前位置:悠扬教案网 > 教育论文 > 专题教育论文 > 信息技术论文 > 正文
信息技术论文 -> 基于FPGA 交通灯控制器的设计

信息技术论文

基于FPGA 交通灯控制器的设计

本文作者:马力 发表时间:2006-6-29

作者单位:平南钢铁学院 联系方式:平南市环城东路



             基于FPGA 交通灯控制器的设计
要求:1)在十字路口的两个方向上各设一组红绿灯显示的顺序是:其中一个方向是绿,黄,红灯。另一个方向是红 绿 黄灯。
      2)设置一组数码管,以倒计时的方式显示。允许通行或禁止通行的时间。其中绿灯 黄灯 红灯的持续时间分别是20S .5S.25S.
      3)当各条路中任意一条出现特殊情况如消防车,救护车或其他需要特殊放行的车辆时候个方向上均是红灯亮。倒计时停止且数字灯闪烁,当特殊运行状态传完的时候控制器恢复原状态,继续正常运行。
源程序:
  (1)输出模块:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ledshow IS
        PORT(
                clk,urgen                        : IN         STD_LOGIC;
                state                                : IN         STD_LOGIC_VECTOR(1 DOWNTO 0);
                sub,set1,set2                : IN         STD_LOGIC;
                r1,g1,y1,r2,g2,y2        : OUT        STD_LOGIC;
                led1,led2                        : OUT        STD_LOGIC_VECTOR(7 DOWNTO 0));
END ledshow;
ARCHITECTURE a OF ledshow IS
        SIGNAL count1,count2 : STD_LOGIC_VECTOR(7 DOWNTO 0); ――1和2路的计数器
        SIGNAL setstate1,setstate2 : STD_LOGIC_VECTOR(7 DOWNTO 0);――1和2路计数器的初值
        SIGNAL tg1,tg2,tr1,tr2,ty1,ty2 : STD_LOGIC; ――指示灯的临时变量
BEGIN
led1<="00000000" WHEN urgen='1' AND clk='0' ELSE count1;――显示输出
led2<="00000000" WHEN urgen='1' AND clk='0' ELSE count2;
tg1<='1' WHEN state="00" AND urgen='0' ELSE '0';        ――考虑到紧急情况的输出
ty1<='1' WHEN state="01" AND urgen='0' ELSE '0';
tr1<='1' WHEN state(1)='1' OR urgen='1' ELSE '0';
tg2<='1' WHEN state="10" AND urgen='0' ELSE '0';
ty2<='1' WHEN state="11" AND urgen='0' ELSE '0';
tr2<='1' WHEN state(1)='0' OR urgen='1' ELSE '0';
setstate1<=  "01000000" WHEN state="00" ELSE                ――各个状态的初始值
                "00000101" WHEN state="01" ELSE
                "01000101" ;
setstate2<=  "01000000" WHEN state="10" ELSE
                "00000101" WHEN state="11" ELSE
                "01000101" ;
label2:
PROCESS (sub)
BEGIN
IF sub'event AND sub='1' THEN
IF set2='1' THEN
    count2<=setstate2;
ELSIF count2(3 DOWNTO 0)="0000" THEN count2<=count2-7; ELSE count2<=count2-1; END IF;
――十六进制转换成十进制
        g2<=tg2;                                                                        ――同步化
        r2<=tr2;
        y2<=ty2;
END IF;
END PROCESS label2;
label1:
PROCESS (sub)
BEGIN
IF sub'event AND sub='1' THEN
IF set1='1' THEN
    count1<=setstate1;
ELSIF count1(3 DOWNTO 0)="0000" THEN count1<=count1-7; ELSE count1<=count1-1; END IF;
――十六进制转换成十进制
        g1<=tg1;                                                                        ――同步化
        r1<=tr1;
        y1<=ty1;
END IF;
END PROCESS label1;
END a;

(2)控制模块:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ledcontrol IS
        PORT(
                reset,clk,urgen                : IN        STD_LOGIC;
                state                                : OUT        STD_LOGIC_VECTOR(1 DOWNTO 0);
                sub,set1,set2                : OUT        STD_LOGIC);
END ledcontrol;
ARCHITECTURE a OF ledcontrol IS
        SIGNAL count : STD_LOGIC_VECTOR(6 DOWNTO 0);
        SIGNAL subtemp: STD_LOGIC;
BEGIN
sub<=subtemp AND (NOT clk) ;        ――将电平型信号变为脉冲型,即高电平时输出一个脉冲
statelabel:
PROCESS (reset,clk)
BEGIN
IF reset='1' THEN                                                ――系统复位
    count<="0000000";
        state<="00";
ELSIF clk'event AND clk='1' THEN
    IF urgen='0' THEN count<=count+1;subtemp<='1';ELSE subtemp<='0';END IF;
――经过脉冲电平变换后,使得正常状态时,正常减计数,紧急状态下停止计数
        IF count=0 then state<="00";set1<='1';set2<='1';
        ELSIF count=40 then state<="01";set1<='1';
        ELSIF count=45 THEN state<="10";set1<='1';set2<='1';
        ELSIF count=85 THEN state<="11";set2<='1';
        ELSIF count=90 THEN count<="0000000"; ELSE set1<='0'; set2<='0';END IF;
END IF;   ――控制流程
END PROCESS statelabel;
END a;
 


第[1]页 
广告合作版权声明本站说明发表文章 

版权所有:悠扬教案网 网络实名:教案教学论文 ICP备案号:冀ICP备05000954号