diff options
Diffstat (limited to 'nandgame/cond_check.sv')
| -rw-r--r-- | nandgame/cond_check.sv | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/nandgame/cond_check.sv b/nandgame/cond_check.sv index d5344ba..3961313 100644 --- a/nandgame/cond_check.sv +++ b/nandgame/cond_check.sv @@ -8,20 +8,28 @@ module cond_check #( parameter DATA_WIDTH = 16 ) ( - input [(DATA_WIDTH-1):0] X, - input wire ltz, - input wire eqz, - input wire gtz, - output wire res + // operand + input [(DATA_WIDTH-1):0] X_in, + // check whether operand < 0 + input wire check_ltz_in, + // check whether operand == 0 + input wire check_eqz_in, + // check whether operand > 0 + input wire check_gtz_in, + + // result of check + output wire result_out ); -wire ltr, eqr, gtr, greater_zero; -assign greater_zero = X[(DATA_WIDTH - 1)] == 0; -assign ltr = ltz && !greater_zero; -assign gtr = gtz && greater_zero && !(X == 0); -assign eqr = eqz && (X == 0); +wire is_neg_int; +assign is_neg_int = X_in[(DATA_WIDTH - 1)] == 1; + +wire ltz_result_int, eqz_result_int, gtz_result_int; +assign ltz_result_int = check_ltz_in && is_neg_int; +assign gtz_result_int = check_gtz_in && !is_neg_int && !(X_in == 0); +assign eqz_result_int = check_eqz_in && (X_in == 0); -assign res = ltr || gtr || eqr; +assign result_out = ltz_result_int || gtz_result_int || eqz_result_int; endmodule |
