Subversion Repositories programming

Rev

Rev 203 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * Copyright 2006, Ira W. Snyder (devel@irasnyder.com)
 * License: GNU General Public License v2 (or, at your option, any later
 * version)
 */

/**
 * Name: Ira Snyder
 * Class: CS365 - Computer Architecture
 * Project #1 - Part 1 (support)
 * Due: 2006-02-06
 */

/**
 * File: ALU1.v
 * Purpose: Implementation of a 1-bit ALU.
 */

module ALU1 (a, b, cin, op, cout, result);
    input a, b, cin;
    input[0:1] op; /* 00=AND, 01=OR, 10=ADD, 11=ADD A+~B */
    output cout, result;

    wire w_or, w_and, w_binv, w_add_out, w_sub_out;

    /* AND, OP=00 */
    OR_2  or1  (a, b, w_or);

    /* OR, OP=01 */
    AND_2 and1 (a, b, w_and);

    /* ADD, OP=10 */
    /* SUB, OP=11 */
    NOT_1 not1 (b, w_binv);
    Mux2 m_binv (b, w_binv, op[1], w_adder_b);

    OneBitAdder add (cin, a, w_adder_b, cout, w_add_out);

    /* MUX the output together */
    Mux4 resMux (w_and, w_or, w_add_out, w_add_out, op, result);

endmodule