systemC三态建模

在verilog或systemVerilog中出现三态时我们需要使用wire语句声明类型,
而在systemC中我们则是需要另外的一些类型:
                 sc_signal_rv                      sc_signal_resolved
                 sc_out_rv                          sc_out_resolved
                 sc_inout_rv                      sc_inout_resolved

其中resolved为一位类型,rv为多位类型。这在建立总线模型时十分有用,

下面就给出一个使用systemC三态建模的示例:

#include "base.h"
#ifndef TRISTATE
#define TRISTATE
SC_MODULE(tristate_driver){
    sc_in<bool> ready , dina , dinb ;
    sc_out<sc_logic> selectx ;
    void prc_selectx();
    
    SC_CTOR(tristate_driver){
        SC_METHOD(prc_selectx);
        sensitive<<dina<<dinb;
    }
};
#endif

####################################################################################

#include "tristate.h"
void tristate_driver::prc_selectx(){    
    if(ready)   selectx = SC_LOGIC_Z ;    
    else        selectx = sc_logic(dina.read()&dinb.read());
}

最后的仿真结果:

Screenshot from 2018-07-07 09-03-32.png



猜你喜欢

转载自blog.51cto.com/13824643/2137420