summaryrefslogtreecommitdiff
path: root/manual/PRESENTATION_ExAdv/select.v
blob: 1b0bb7eeb67e6f7336a0b641e929de813efb4981 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module test(clk, s, a, y);
    input clk, s;
    input [15:0] a;
    output [15:0] y;
    reg [15:0] b, c;

    always @(posedge clk) begin
        b <= a;
        c <= b;
    end

    wire [15:0] state_a = (a ^ b) + c;
    wire [15:0] state_b = (a ^ b) - c;
    assign y = !s ? state_a : state_b;
endmodule