数字逻辑——有限状态机交通灯

一、 实验目的

设计一个交通灯控制器,要求实现功能:

  1. 交通灯位于四个方向(东南西北)
  2. 南北和东西向在同一时间亮相同的灯
  3. 灯变化的次序为:绿-黄-红,循环
  4. 南北和东西向灯不同时为绿灯或黄灯
  5. 灯的持续时间:绿9s,黄-3s,红-9s
    用verilog语言描述有限状态机的功能,熟悉有限状态机原理,了解用计数器控制时间等方法。

二、 实验内容

1. 实验流程

① 分析实验目的,在实验中南北东西的交通灯一共有四种状态,因为南北,东西在同一时刻分别具有相同的状态,故南北灯,东西灯可以分别由3个灯——红,黄,绿灯表示状态。
② 以led[2:0]依次表示南北灯的绿灯,黄灯,红灯,以led[5:3]依次表示东西灯的绿灯、黄灯、红灯。状态表如下:
在这里插入图片描述
③ 根据状态表,利用计数器完成verilog代码并上板实验。

2. Verilog代码分析

(1) Design source(.v文件):

clkdivtransport.v:
module clkdivtransport(
input CLK100MHZ,
    input reset,
    output [5:0]LED,
    output clk1HZ
    );
    reg [100:0]count1;
    always@(posedge CLK100MHZ)
    begin
     if(count1==100000000)count1<=0;
     else count1<=count1+1;
     end
     assign clk1HZ=(count1<50000000?0:1);  //分频得到1hz的时钟信号
     transport x1(.CP(clk1HZ),.reset(reset),.led(LED));
endmodule
transport.v:
        module transport(
    input CP,
    input reset,
    output reg [5:0]led
    );
    wire t1,t2,t3,t4;
    reg ST,LT;
    reg [5:0]count;
    assign t1=led[3]&led[2];
    assign t2=led[3]&led[1];
    assign t3=led[5]&led[0];
    assign t4=led[4]&led[0];
    always@(posedge CP)
    begin
    if(!reset)begin ST=0;LT=0;count=0;led=6'b001100;end//清零
    
    if(count==9)begin LT<=1;count<=0;end//长短时间
    else if(count==3)begin ST<=1;count=count+1;end
    else begin count<=count+1;ST<=0;LT<=0;end 
    
    if(t1&LT)led=6'b001010;
    else if(t2&ST)led=6'b100001;
    else if(t3&LT)led=6'b010
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

adriaW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值