| |
| module example001(a, y); |
| |
| input [15:0] a; |
| output y; |
| |
| wire gt = a > 12345; |
| wire lt = a < 12345; |
| assign y = !gt && !lt; |
| |
| endmodule |
| |
| // ------------------------------------ |
| |
| module example002(a, y); |
| |
| input [3:0] a; |
| output y; |
| reg [1:0] t1, t2; |
| |
| always @* begin |
| casex (a) |
| 16'b1xxx: |
| t1 <= 1; |
| 16'bx1xx: |
| t1 <= 2; |
| 16'bxx1x: |
| t1 <= 3; |
| 16'bxxx1: |
| t1 <= 4; |
| default: |
| t1 <= 0; |
| endcase |
| casex (a) |
| 16'b1xxx: |
| t2 <= 1; |
| 16'b01xx: |
| t2 <= 2; |
| 16'b001x: |
| t2 <= 3; |
| 16'b0001: |
| t2 <= 4; |
| default: |
| t2 <= 0; |
| endcase |
| end |
| |
| assign y = t1 != t2; |
| |
| endmodule |
| |
| // ------------------------------------ |
| |
| module example003(a_shl, a_shr, a_sshl, a_sshr, sh, y_shl, y_shr, y_sshl, y_sshr); |
| |
| input [7:0] a_shl, a_shr; |
| input signed [7:0] a_sshl, a_sshr; |
| input [3:0] sh; |
| |
| output [7:0] y_shl = a_shl << sh, y_shr = a_shr >> sh; |
| output signed [7:0] y_sshl = a_sshl <<< sh, y_sshr = a_sshr >>> sh; |
| |
| endmodule |
| |
| // ------------------------------------ |
| |
| module example004(clk, rst, y); |
| |
| input clk, rst; |
| output y; |
| |
| reg [3:0] counter; |
| |
| always @(posedge clk) |
| case (1'b1) |
| rst, counter == 9: |
| counter <= 0; |
| default: |
| counter <= counter+1; |
| endcase |
| |
| assign y = counter == 12; |
| |
| endmodule |
| |