2688|0

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

交通灯控制器VHDL [复制链接]

  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3. USE IEEE.STD_LOGIC_UNSIGNED.ALL;

  4. ENTITY TrafficLight IS
  5.   PORT (Clk              : IN STD_LOGIC;
  6.         S,Reset          : IN STD_LOGIC;
  7.         mg,my,mr,cg,cy,cr : OUT STD_LOGIC );
  8. END TrafficLight ;

  9. ARCHITECTURE rtl OF TrafficLight IS
  10.   TYPE TrafficState IS (mgcr, mycr, mrcg, mrcy);
  11.   SIGNAL ps,ns   : TrafficState ;
  12.   SIGNAL Count    : STD_LOGIC_VECTOR(5 DOWNTO 0);
  13.   SIGNAL Clrn    : STD_LOGIC ;
  14. BEGIN

  15.   Counter : PROCESS(clk)
  16.   BEGIN
  17.     IF Reset = '1' OR (Clrn = '1' AND NOT(Count = "000000")) THEN Count <= "000000";
  18.     ELSIF clk'EVENT AND clk = '1' THEN
  19.       IF NOT(Count = "000001" AND ps = mgcr) THEN Count <= Count + 1;
  20.                 END IF;
  21.     END IF;
  22.   END PROCESS Counter;

  23.   StateTransition : PROCESS(clk,Count,ps)
  24.   BEGIN
  25.     IF Reset = '1' THEN ns <= mgcr;Clrn <= '0';
  26.       ELSIF clk'EVENT AND clk = '1' THEN
  27.         CASE ps IS
  28.           WHEN mgcr => mr<='0';mg<='1';my<='0';cr<='1';cg<='0';cy<='0';
  29.                                      IF Count >= "000001" AND S = '1' THEN ns <= mycr;Clrn <= '1';
  30.                       ELSE Clrn <= '0';
  31.                       END IF;
  32.           WHEN mycr => mr<='0';mg<='0';my<='1';cr<='1';cg<='0';cy<='0';
  33.                                     IF Count >= "000011" THEN ns <= mrcg;Clrn <= '1';
  34.                       ELSE Clrn <= '0';
  35.                       END IF;
  36.           WHEN mrcg => mr<='1';mg<='0';my<='0';cr<='0';cg<='1';cy<='0';
  37.                                      IF Count >= "010011" OR S = '0' THEN ns <= mrcy;Clrn <= '1';
  38.                       ELSE Clrn <= '0';
  39.                       END IF;
  40.           WHEN mrcy => mr<='1';mg<='0';my<='0';cr<='0';cg<='0';cy<='1';
  41.                                      IF Count >= "000011" THEN ns <= mgcr;Clrn <= '1';
  42.                       ELSE Clrn <= '0';
  43.                       END IF;
  44.           WHEN OTHERS => NULL;
  45.         END CASE;
  46.     END IF;
  47.   END PROCESS StateTransition;

  48. PROCESS(clk)
  49.   BEGIN
  50.     IF clk'EVENT AND clk='1' THEN
  51.                           ps<=ns;
  52.     END IF;
  53. END PROCESS;

  54. END rtl;
复制代码

目的和要求:
   1.有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;
   2.交通灯由绿→红有4秒黄灯亮的间隔时间,由红→绿没有间隔时间;
   3.系统有MRCY、MRCG、MYCR、MGCR四个状态;
   4.相间公路右侧各埋有一个传感器,当有车辆通过相间公路时,发出请求信号S;
   5.平时系统停留在MGCR状态,一旦S信号有效,经MRCY转入MRCG状态,但要保证MRCG状态也不得短于一分钟;
   6.一旦S信号无效,系统脱离MRCG状态。随即经MRCY转入进入MGCR状态,计时S信号一直有效,MRCG状态也不得长于20秒钟。

麻烦那位帮我看看我的程序到底问题出在哪里?或者给出能运行解决此题的程序。我用XILINX+SIM。
PS:网上有一段类似的程序,但看不懂,没有注释。麻烦也注释一下。
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表