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

移位运算与乘法

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

将cnt/d_temp/移位运算拆分成多个写

注意:第一次计算d*1 时,out 并不能写为 out <= d_temp ,此时d_temp 是上一拍的值,当cnt = 0 && rst 时才将d存到d_temp 里。

`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 [2:0] cnt;
reg [7:0] d_temp;

always @(posedge clk or negedge rst)
begin
    if (!rst)
        cnt <= 0;
   
    else if (cnt == 3'd3)
        cnt <= 0;

    else 
        cnt <= cnt +1;

end

always @(posedge clk or negedge rst)
begin
    if (!rst)
    begin
        d_temp <= 0;
        input_grant <= 0;
    end

    else if (cnt == 0)
    begin
    d_temp <= d;
    input_grant <= 1;
    end
    
    else
    begin
    d_temp <= d_temp;
    input_grant <= 0;
    end
end

always @(posedge clk or negedge rst)
begin
    if (!rst)
    out <= 0;

    else
        case(cnt)
        3'd0: out <= d;  
        3'd1: out <= (d_temp << 2) - d_temp;
        3'd2: out <= (d_temp << 3) - d_temp;
        3'd3: out <= d_temp << 3;
        default: out <= 0;
        endcase
end



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

全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务