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

移位运算与乘法

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 [1:0]count;
always@(posedge clk or negedge rst)begin
if(!rst)begin
    count<=0;
end
else begin
    count<=count+2'b01;
end
end
//******************************//
reg [7:0]d_reg;
always@(posedge clk or negedge rst)begin
    if(!rst)begin
        count<=0;
        out<=0;
        input_grant<=0;
        d_reg<=0;
    end
    else begin
        case(count)
        2'b00:begin
            d_reg<=d;
            input_grant<=2'b01;
            out<=d;
        end
        2'b01:begin
            input_grant<=0;
            out<=d_reg+{d_reg,1'b0};//一倍加上两倍等于三倍,也即乘上三
        end
        2'b10:begin
            input_grant<=0;
            out<=d_reg+{d_reg,1'b0}+{d_reg,2'b00};
        end
        2'b11:begin
            input_grant<=0;
            out<={d_reg,3'b000};
        end
        default:begin
            input_grant<=0;
            out<=d_reg;
        end
        endcase
    end
end
//*************code***********//
endmodule

关键是理解题意,题目表述的意思是只接受0状态时的值

另一个就是在状态机0状态的设置时,注意是并发的,并不能直接写out<=d_reg

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 15:43
点赞 评论 收藏
分享
贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
11-30 11:07
河南大学 Java
宇宙厂 测开 n*15
丘丘给个offer:有后选后
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务