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

移位运算与乘法

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;
reg [7:0]d_r;
always@(posedge clk or negedge rst)begin
    if(!rst)begin
        count<=0;   
    end else if (count==2'b11)
        count<=0;
        else count<=count+1;
end

always@(posedge clk or negedge rst)begin
    if(!rst)begin
        d_r<=0;
        input_grant<=0;
    end else if(count==0)begin
        d_r<=d;
        input_grant<=1;
    end else begin
        d_r<=d_r;
        input_grant<=0;
    end
end


always@(posedge clk or negedge rst)begin
    if(!rst)begin
        out<=0;
    end else case(count)
        2'd0 : out <= d;
        2'd1 : out <= (d_r<<2)-d_r;
        2'd2 : out <= (d_r<<3)-d_r;
        2'd3 : out <= (d_r<<3);
        default : out <= 11'd0;
    endcase
end


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

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务