题解 | #移位运算与乘法#

移位运算与乘法

https://www.nowcoder.com/practice/1dd22852bcac42ce8f781737f84a3272

`timescale 1ns/1ns
module multi_sel(
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);
//*************code***********//

reg [7:0]d_tmp;
reg [1:0]cnt;

always @(posedge clk or negedge rst)
begin
    if(~rst) begin
        cnt <= 0;
        input_grant <= 0;
    end 
    else if (cnt == 0) begin
        cnt <= cnt + 1;
        input_grant <= 1;
    end 
    else begin
        cnt <= cnt + 1;
        input_grant <= 0;
    end
end


always@(posedge clk or negedge rst)
begin
    if(~rst)begin
        out <= 11'h0;
        d_tmp <= 8'h0;
    end
    else if (cnt == 2'b00)begin
        out <= d; // 00: 0 + d
        d_tmp <= d;
    end
    else if (cnt == 2'b11)begin
        out <= out + d_tmp; //11: out + d_tmp
    end
    else
    begin
        out <= out + (d_tmp << cnt); // 01: out + d_tmp * 2 10: out + d_tmp * 4
    end
end


//*************code***********//
endmodule

时刻铭记...加法的优先级要高于移位运算

全部评论

相关推荐

工科女的日常:真诚建议:别再用这种花哨的模板,可以看看我发的那个零经验找实习发帖子
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务