题解 | #位拆分与运算#

位拆分与运算

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 [4:0] out;
reg validout;
reg [15:0] data_clock;
always@(posedge clk or negedge rst) begin
    if(!rst) begin
        out <= 0;
        validout <= 0;
        data_clock <= 0;
    end
    else begin
        case(sel)
            2'd0: begin
                out <= 0;
                validout <= 0;
                data_clock <= d;
            end
            2'd1:begin
                out <= data_clock[3:0] + data_clock[7:4];
                validout <= 1;
            end
            2'd2:begin
                out <= data_clock[3:0] + data_clock[11:8];
                validout <= 1;
            end
            2'd3:begin
                out <= data_clock[3:0] + data_clock[15:12];
                validout <= 1;
            end
            default:begin
                out <= 0;
                validout <= 0;
            end
        endcase
    end
end
//*************code***********//
endmodule

全部评论
如果需要对输入信号在时序电路中进行操作,则需要先寄存
点赞
送花
回复
分享
发布于 2023-09-12 11:24 北京

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务