最初のページ 戻る 次へ 最後のページ 画像

module alu8(cmd, a,b, c, czflag, f);

input [3:0] cmd;

input [7:0] a,b;

input c;

output [1:0] czflag;

output [7:0] f;

function [8:0] aluCore;

input [3:0] cmd;

input [7:0] a,b;

input c;

case (cmd)

4'h0: aluCore = a+b; // A+B

4'h1: aluCore = a+b+{7'b0,c}; // A+B+C

4'h2: aluCore = a-b; // A-B

4'h3: aluCore = a-b-{7'b0,c}; // A-B-C

4'h4: aluCore = a&b; // A and B

4'h5: aluCore = a|b; // A or B

4'h6: aluCore = a^b; // A xor B

4'h7: aluCore = ~a ; // not A

4'h8: aluCore = b; // b

default: aluCore = 9'bzzzzzzzzz; //reserved

endcase

endfunction

assign { czflag[1],f } = aluCore(cmd,a,b,c);

assign czflag[0] = (f==8'b0);

endmodule

/* instructionSet.h */

`define ADD 4'b0000

`define ADC 4'b0001

`define SUB 4'b0010

`define SUC 4'b0011

`define AND 4'b0100

`define OR 4'b0101

`define XOR 4'b0110

`define NOT 4'b0111

`define LD 4'b1000

`define B 4'b1011

`define FIN 4'b1111

ALU(alu8),マルチプレクサ他は

submodule.vに作成