题解 | #位拆分与运算#

位拆分与运算

https://www.nowcoder.com/practice/1649582a755a4fabb9763d07e62a9752

`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output [4:0]out,
output validout
);
//*************code***********//
    reg [15:0] d_reg;
    reg [4:0] out_tmp;
       reg validout_tmp;
    always@(posedge clk or negedge rst) begin
        if(!rst) begin //这里是异步复位,如果删去negedge rst,则是同步复位
            out_tmp <= 5'b0;
            validout_tmp <= 1'b0;
        end
        else begin
            case(sel) 
                              //每一条cese中,如果有多条语句,都要加 begin/end
                2'b00: begin out_tmp <= 5'b0; validout_tmp <= 1'b0;end
                2'b01: begin out_tmp <= d_reg[3:0] + d_reg[7:4]; validout_tmp <= 1'b1; end
                2'b10: begin out_tmp <= d_reg[3:0] + d_reg[11:8];  validout_tmp <= 1'b1; end
                2'b11: begin out_tmp <= d_reg[3:0] + d_reg[15:12];  validout_tmp <= 1'b1; end
            endcase
        end
    end
 //写成两个always
    always@(posedge clk or negedge rst) begin
        if(!rst) begin
            d_reg <= 5'b0;
        end
        else if (sel == 2'b0) begin
                d_reg <= d;
        end
    end
    
    assign out = out_tmp;
	 assign validout = validout_tmp;
//*************code***********//
endmodule            


全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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