Sunteți pe pagina 1din 2

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
//
// Company:
// Engineer:
//
// Create Date:
01:06:09 03/24/2013
// Design Name:
// Module Name:
alu
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
//
module alu(a,b,y,cout,code,cin);
input [16:0] a,b;
output [16:0] y;
output cout;
input [3:0] code;
input cin;
parameter andb =0;
parameter nandb =1;
parameter orb =2;
parameter norb =3;
parameter xorb=4;
parameter xnorb=5;
parameter nota=6;
parameter lsft=7;
parameter rsft=8;
parameter add=9;
parameter sub=10;
parameter mul=11;
parameter div=12;
parameter mod=13;
parameter fadd=14;
reg[16:0] y;
reg cout;
always @ (code,a,b,cin)
case(code)
andb : y = a & b;
nandb : y = ~(a & b);
orb : y = a | b;
norb : y = ~(a | b);
xorb : y = a ^ b;
xnorb :y = ~(a ^ b);
nota : y = ~a;
lsft : y = a<<b;
rsft : y = a>>b;
add : y = a + b;
sub : y = a - b;
mul : y = a * b;

div : y = a / b;
mod : y = a % b;
fadd : {cout,y} = a+b+cin;
default:{cout,y} = 17'bxxxxxxxxxxxxxxxxx;
endcase
endmodule

S-ar putea să vă placă și