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

移位运算与乘法

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

always@(posedge clk or negedge rst)
begin
    if(!rst)
        input_grant <= 1'd0;
    else if(flow==0)
        input_grant <= 1'b1;
    else 
        input_grant <= 1'b0;
end

always @ (posedge clk or negedge rst)
begin
        if(!rst)
            data_d<=0;
        else if(flow==0)
            data_d <= d;
end
always @(posedge clk or negedge rst)
begin
        if(!rst)
            out <= 11'd0;
        else 
        begin
                case(flow)
                    2'd0:out <= d;
                    2'd1:out <= (data_d<<1)+data_d;
                    2'd2:out <= (data_d<<1)+(data_d<<2)+data_d;
                    2'd3:out <= data_d<<3;
                endcase
        end
end

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

全部评论
有点难的地方是如何选取计数器的加一时刻,那个状态做什么事,本质上是个状态机,还有就是怎么解决在计算期间不接收新来的值,可以用寄存器加计数器状态逻辑控制的方法来避免
点赞 回复 分享
发布于 2024-03-24 16:17 四川

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务