CQU数字逻辑实验——交通灯系统设计

这篇博客介绍了使用Verilog进行数字逻辑设计,通过代码展示了如何构建一个交通灯控制系统,包括管脚约束和时钟分频器的版本1实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就是几个灯的状态转换,代码如下:

module lights(out,an,led,clk,rst_n);
input wire clk,rst_n;//时钟和重置键
output reg [5:0] led;//led灯显示接口
output  reg [6:0] out;//数码管显示接口
output  reg [3:0] an; //控制数码管开关
//============================================================
reg newclk;
reg [30:0] count2;
    
parameter s0=3'd0,//没有输出
            s1=3'd1,//输出100001
            s2=3'd2,//输出010010
            s3=3'd3,//输出001100
            s4=3'd4;//输出010010
reg [3:0] count; //计时用
reg [2:0] pstate,nstate;    //原状态,现状态
//============================================================
//状态转换1(次态到现态转换的条件)               
    always @ (posedge newclk or negedge rst_n)
    begin
        if(!rst_n)
            begin
                pstate<=s0;
                count<=0;
            end 
        else
            begin                               
                if((pstate==s1)||(pstate==s3))
                    begin
                        count<=count+1;
                        if(count==8)
                            begin
                                pstate<=nstate;
                                count<=5;//当状态为s2和s4时要倒数4秒                              
                            end
                    end
                else if(pstate==s2 || pstate==s4)
                    begin
                         count<=count+1;
                         if(count==8)
                            begin
                                pstate<=nstate;
                                count<=0;//当状态为s2和s4时要倒数9秒
                            end
                    end
                 else
                    pstate<=nstate;
            end
     end
//============================================================
//状态转换2 (现态的赋值)     
     always @ (pstate or rst_n)
     begin
        case(pstate)
            s0: if(rst_n==1)
                    nstate=s1;
                else
                    nstate=s0;
            s1: nstate=s2;
            s2: nstate=s3;
            s3: nstate=s4;
            s4: nstate=s1;
            default:nstate=s0;
        en
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值