题解 | #序列发生器#

此为状态机写法,三段式状态机

module sequence_generator(

    input clk,

    input rst_n,

    output reg data

    );

    reg [2:0] state,nstate;

    parameter s0=3'd0,s1=3'd1,s2=3'd2,s3=3'd3,s4=3'd4,s5=3'd5;//定义6个状态

    always @(posedge clk or negedge rst_n)

    begin

    if(!rst_n)

    state<=s0;

    else

    state<=nstate;

    end

    

    always @(*)//状态转移

    begin

    if(!rst_n)

    nstate<=s0;

    else

    begin

    case(state)//因为是序列发生器,所以状态直接转移不需要条件

    s0:nstate<=s1;

    s1:nstate<=s2;

    s2:nstate<=s3;

    s3:nstate<=s4;

    s4:nstate<=s5;

    s5:nstate<=s0;

    default:state<=s0;

    endcase

    end

    end

    

always @(posedge clk or negedge rst_n)//数据输出

begin

if(!rst_n)

data<=0;

else

begin

if(nstate==s0)

data<=0;

else if(nstate==s1)

data<=0;

else if(nstate==s2)

data<=1;

else if(nstate==s3)

data<=0;

else if(nstate==s4)

data<=1;

else if(nstate==s5)

data<=1;

end

end

    endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:35
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
在debug的柠檬精很迷人:好消息:现在HR挑三拣四 15年后 HR跪着求要简历 坏消息:被挑的是这代人,到时候求人的也是这代人。真好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务