cours2: rf32.h

File rf32.h, 755 bytes (added by fpecheux, 15 years ago)
Line 
1#ifndef _RF32_H
2#define _RF32_H
3#include "systemc.h"
4
5SC_MODULE(rf32)
6{
7        sc_in<bool> clk;
8        sc_in<bool> RegWrite;
9        sc_in<sc_uint<5> > Addwrite;
10        sc_in<sc_uint<5> > Addrd1;
11        sc_in<sc_uint<32> > Writedata;
12        sc_out<sc_uint<32> > data1;
13
14        sc_signal<sc_uint<32> > regFile[32];
15
16        SC_CTOR(rf32)
17        {
18                SC_METHOD(mReadRegs);
19                sensitive << Addrd1 ;
20                sensitive << clk.neg() ;
21                SC_METHOD(mWriteReg);
22                sensitive << clk.pos() ;
23        }
24
25        void mReadRegs()
26        {
27                if (Addrd1.read()==0)
28                        data1.write(0);
29                else
30                        data1.write(regFile[Addrd1.read()].read());
31        }
32
33        void mWriteReg()
34        {
35                if (RegWrite)
36                        if (Addwrite.read()!=0)
37                        {
38                                regFile[Addwrite.read()].write(Writedata.read());
39                //              printf("rf[%d]=%d\n",(int)Addwrite.read(),(int)Writedata.read());
40                        }
41        }
42};
43#endif