cours2: alu_32.h

File alu_32.h, 846 bytes (added by fpecheux, 15 years ago)
Line 
1#ifndef _ALU_32_H
2#define _ALU_32_H
3#include "systemc.h"
4
5SC_MODULE(alu_32)
6{
7        sc_in<sc_uint<32> > A;
8        sc_in<sc_uint<32> > B;
9        sc_in<sc_uint<3> > Aluop;
10        sc_out<sc_uint<32> > Aluout;
11        sc_out<bool> zero;
12
13        SC_CTOR(alu_32)
14        {
15                SC_METHOD(mWrite);
16                sensitive << A << B << Aluop ;
17        }
18
19        void mWrite()
20        {
21                sc_uint<32> result = 0 ;
22                sc_uint<32> opA ;
23                sc_uint<32> opB ;
24       
25                opA = A.read() ;
26                opB = B.read() ;
27       
28                switch(Aluop.read())
29                {
30                        case 0:
31                                result = opA & opB ;
32                                break;
33                        case 1:
34                                result = opA | opB ;
35                                break;
36                        case 2:
37                                result = opA + opB ;
38                                break;
39                        case 6:
40                                result = opA - opB ;
41                                break;
42                        case 7:
43                                result = opA | opB ;
44                                break;
45                        default:
46                                cout << "aluop illegal" << endl ;
47                                break;
48       
49                }
50                Aluout=result;
51                zero=(result==0)?1:0;
52        }
53};
54#endif