Jump to content

hbhbts

Members
  • Content Count

    8
  • Joined

  • Last visited


Reputation Activity

  1. Thanks
    hbhbts got a reaction from Bes in Fsm   
    SC_MODULE(Fsm) {
        sc_in<bool> clk;
        sc_in<bool> reset;
        sc_in<bool> is_valid;
        sc_in<bool> is_half_dollar;
        sc_out<bool> is_dispensed;

        SC_CTOR(Fsm) {
            SC_THREAD(fsm_thread);
            sensitive << clk.pos();
        };
        void fsm_thread() {
            typedef enum {S0=0, S1=1, S2=2, S3=3} state_e;
            state_e state = S0;
            while(true) {
                is_dispensed.write(false);
                if(reset.read() == false) {
                    switch(state) {
                        case S0:
                            if(is_valid.read() == true && is_half_dollar.read() == true)
                                state = S1;
                            else
                                state = S2;
                            break;
                        case S1:
                            if(is_valid.read() == true && is_half_dollar.read() == true)
                                state = S2;
                            else 
                                state = S3;
                            break;
                        case S2:
                            if(is_valid.read() == true)
                                state = S3;
                            break;
                        case S3:
                            is_dispensed.write(true);
                            state = S0;
                            break;
                        default:
                                state = S0;
                    }
                }        
                else
                    state = S0;
                wait();
            }
        }//fsm_thread
    };
×
×
  • Create New...