题解 | 位拆分与运算
位拆分与运算
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 reg [4:0] out,//除了四位还需预留一位给进位 output reg validout ); reg [15:0] d_lock; always@(posedge clk or negedge rst)begin if(!rst)begin d_lock <= 16'b0; end else if(sel == 2'b00)begin d_lock <= d;//当sel为0时输入有效 end end always@(posedge clk or negedge rst)begin if(!rst)begin out <= 5'b0; validout <= 1'b0; end else begin case(sel) 2'b00:begin out <= 5'b0; validout <= 1'b0; end 2'b01:begin out <= d_lock[3:0] + d_lock[7:4]; validout <= 1'b1; end 2'b10:begin out <= d_lock[3:0] + d_lock[11:8]; validout <= 1'b1; end 2'b11:begin out <= d_lock[3:0] + d_lock[15:12]; validout <= 1'b1; end default:begin out <= 15'b0; validout <= 1'b0; end endcase end end endmodule
verilog刷题记录 文章被收录于专栏
记录自己最近刷题掌握的点滴