diff options
Diffstat (limited to 'usrp2/sdr_lib')
-rw-r--r-- | usrp2/sdr_lib/round.v | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/usrp2/sdr_lib/round.v b/usrp2/sdr_lib/round.v index 5b83981c6..26d5a4cf4 100644 --- a/usrp2/sdr_lib/round.v +++ b/usrp2/sdr_lib/round.v @@ -32,12 +32,20 @@ module round output [bits_out-1:0] out, output [bits_in-bits_out:0] err); - wire round_corr; - wire round_corr_trunc = 0; - wire round_corr_rtz = (in[bits_in-1] & |in[bits_in-bits_out-1:0]); - wire round_corr_nearest = in[bits_in-bits_out-1]; - wire round_corr_nearest_safe = (~in[bits_in-1] & (&in[bits_in-2:bits_out])) ? 0 : + wire round_corr,round_corr_trunc,round_corr_rtz,round_corr_nearest,round_corr_nearest_safe; + + assign round_corr_trunc = 0; + assign round_corr_rtz = (in[bits_in-1] & |in[bits_in-bits_out-1:0]); + assign round_corr_nearest = in[bits_in-bits_out-1]; + + generate + if(bits_in-bits_out > 1) + assign round_corr_nearest_safe = (~in[bits_in-1] & (&in[bits_in-2:bits_out])) ? 0 : round_corr_nearest; + else + assign round_corr_nearest_safe = round_corr_nearest; + endgenerate + assign round_corr = round_to_nearest ? round_corr_nearest_safe : trunc ? round_corr_trunc : |