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

移位运算与乘法

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] cnt ;
reg [10:0] din ;

always @(posedge clk or negedge rst) begin
    if(!rst)begin
        cnt <=2'b00;
    end
    else if(cnt==2'b11) begin
        cnt <=0;
    end
    else cnt <= cnt+1'b1;
end

always @(posedge clk or negedge rst) begin
    if(!rst)begin
        input_grant <= 1'b0;
        out <= 11'b0;
        din = 1'b0;
    end else begin
        case (cnt)
            2'b00: begin
                din = d;
                input_grant <= 1'b1;
                out <= din;
            end
            2'b01: begin
                input_grant <=1'b0;
                out <= (din<<2'd2)-din;
            end
            2'b10:begin
                input_grant <=1'b0;
                out <= (din<<2'd3)-din;
            end
            2'b11:begin
                input_grant <= 1'b0;
                out <= din<<2'd3;
            end
        endcase
    end
end

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

本题的核心点是接收到一个输入后,会将本次的输入相应的四个输出按照周期输出结束后才继续接收下一个输入,对于这种类似于线程型的任务,可以用计数器进行计数。

代码中需要注意的点:din 接收赋值需要采用阻塞赋值,否则接收的第一个值将会被错过!

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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