HDLBits之Exams/2014 q4b

Consider the n-bit shift register circuit shown below:

 注意:这里的子模块写法不能使用

错误代码:

module top_module (
    input [3:0] SW,
    input [3:0] KEY,
    output [3:0] LEDR
); //

    MUXDFF u_1( 
        .clk(KEY[0]),
        .r(SW[3]),
        .e(KEY[1]),
        .w(KEY[3]),
        .l(KEY[2]),
        .q(LEDR[3])
              );
   MUXDFF u_2( 
        .clk(KEY[0]),
       .r(SW[2]),
        .e(KEY[1]),
       .w(LEDR[3]),
       .l(KEY[2]),
       .q(LEDR[2])
              );
    MUXDFF u_3( 
        .clk(KEY[0]),
        .r(SW[1]),
        .e(KEY[1]),
        .w(LEDR[2]),
        .l(KEY[2]),
        .q(LEDR[1])
              );
    MUXDFF u_4( 
        .clk(KEY[0]),
        .r(SW[0]),
        .e(KEY[1]),
        .w(LEDR[1]),
        .l(KEY[2]),
        .q(LEDR[0])
              );
    
endmodule


module MUXDFF (
    input clk,
    input r,e,w,l,
    output q
);
    reg temp;
    always@(posedge clk)begin
        q<=l?r:temp;
        temp<=e?w:q;///这里错误,不可以使用这种方法

        
    end

endmodule

子模块正确写法:


module MUXDFF (
    input clk,
    input w, R, E, L,
    output Q
);
    always@(posedge clk)begin
        if(L)begin
            Q <= R;
        end
        else begin
            if(E)begin
                Q <= w;
            end
            else begin
                Q <= Q;
            end
        end
    end 
endmodule
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值