minor update

This commit is contained in:
Blaise Tine 2021-08-02 22:29:05 -07:00
parent 16f1f24a62
commit 07f6667b66
3 changed files with 30 additions and 5 deletions

21
hw/rtl/libs/VX_sat_fx.v Normal file
View file

@ -0,0 +1,21 @@
`include "VX_platform.vh"
module VX_sat_fx #(
parameter IN_W = 1,
parameter OUT_W = 1,
parameter MODEL = 1
) (
input wire [IN_W-1:0] data_in,
output wire [OUT_W-1:0] data_out
);
`STATIC_ASSERT(((OUT_W+1) < IN_W), ("invalid parameter"))
if (MODEL == 1) begin
assign data_out = data_in[IN_W-1] ? OUT_W'(0) : ((data_in > {OUT_W{1'b1}}) ? {OUT_W{1'b1}} : OUT_W'(data_in));
end else begin
wire [OUT_W-1:0] underflow_mask = {OUT_W{~data_in[IN_W-1]}};
wire [OUT_W-1:0] overflow_mask = {OUT_W{(| data_in[IN_W-2:OUT_W])}};
assign data_out = (data_in[OUT_W-1:0] | overflow_mask) & underflow_mask;
end
endmodule

View file

@ -9,8 +9,6 @@
`define FIXED_HALF (`FIXED_ONE >> 1)
`define FIXED_MASK (`FIXED_ONE - 1)
`define CLAMP(x,lo,hi) (($signed(x) < $signed(lo)) ? lo : ((x > hi) ? hi : x))
`define TEX_ADDR_BITS 32
`define TEX_FORMAT_BITS 3
`define TEX_WRAP_BITS 2

View file

@ -12,14 +12,20 @@ module VX_tex_wrap #(
reg [`FIXED_FRAC-1:0] coord_r;
wire [31:0] clamp = `CLAMP(coord_i, 0, `FIXED_MASK);
wire [`FIXED_FRAC-1:0] clamp;
`UNUSED_VAR (clamp)
VX_sat_fx #(
.IN_W (32),
.OUT_W (`FIXED_FRAC)
) sat_fx (
.data_in (coord_i),
.data_out (clamp)
);
always @(*) begin
case (wrap_i)
`TEX_WRAP_CLAMP:
coord_r = clamp[`FIXED_FRAC-1:0];
coord_r = clamp;
`TEX_WRAP_MIRROR:
coord_r = coord_i[`FIXED_FRAC-1:0] ^ {`FIXED_FRAC{coord_i[`FIXED_FRAC]}};
default: //`TEX_WRAP_REPEAT