VL5 位拆分与运算
现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],
现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低)
0: 不输出且只有此时的输入有效
1:输出[3:0]+[7:4]
2:输出[3:0]+[11:8]
3:输出[3:0]+[15:12]

`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_temp;
always @(posedge clk or negedge rst) begin
if(~rst) d_temp<=16'h0000;
else d_temp<=(sel==2'b00)?d:d_temp;
end
assign validout = ~(sel==2'b00);
assign out = (sel==2'b01)?(d_temp[3:0]+d_temp[7:4]):
(sel==2'b10)?(d_temp[3:0]+d_temp[11:8]):
(sel==2'b11)?(d_temp[3:0]+d_temp[15:12]):
5'd0;
//*************code***********//
endmodule


被折叠的 条评论
为什么被折叠?



