module test( | |
input clk, wen, | |
input [7:0] uns, | |
input signed [7:0] a, b, | |
input signed [23:0] c, | |
input signed [2:0] sel, | |
output [15:0] s, d, y, z, u, q, p, mul, div, mod, mux, And, Or, Xor, eq, neq, gt, lt, geq, leq, eqx, shr, sshr, shl, sshl, Land, Lor, Lnot, Not, Neg, pos, Andr, Orr, Xorr, Xnorr, Reduce_bool, | |
output [7:0] PMux | |
); | |
//initial begin | |
//$display("shr = %b", shr); | |
//end | |
assign s = a+{b[6:2], 2'b1}; | |
assign d = a-b; | |
assign y = x; | |
assign z[7:0] = s+d; | |
assign z[15:8] = s-d; | |
assign p = a & b | x; | |
assign mul = a * b; | |
assign div = a / b; | |
assign mod = a % b; | |
assign mux = x[0] ? a : b; | |
assign And = a & b; | |
assign Or = a | b; | |
assign Xor = a ^ b; | |
assign Not = ~a; | |
assign Neg = -a; | |
assign eq = a == b; | |
assign neq = a != b; | |
assign gt = a > b; | |
assign lt = a < b; | |
assign geq = a >= b; | |
assign leq = a <= b; | |
assign eqx = a === b; | |
assign shr = a >> b; //0111111111000000 | |
assign sshr = a >>> b; | |
assign shl = a << b; | |
assign sshl = a <<< b; | |
assign Land = a && b; | |
assign Lor = a || b; | |
assign Lnot = !a; | |
assign pos = $signed(uns); | |
assign Andr = &a; | |
assign Orr = |a; | |
assign Xorr = ^a; | |
assign Xnorr = ~^a; | |
always @* | |
if(!a) begin | |
Reduce_bool = a; | |
end else begin | |
Reduce_bool = b; | |
end | |
//always @(sel or c or a) | |
// begin | |
// case (sel) | |
// 3'b000: PMux = a; | |
// 3'b001: PMux = c[7:0]; | |
// 3'b010: PMux = c[15:8]; | |
// 3'b100: PMux = c[23:16]; | |
// endcase | |
// end | |
endmodule |