2012-04-24 23 views
0

我是新來的systemC編程我正在寫一個D觸發器,但我找不到一種方法來編寫主程序並輸入信號(din,clock而在我的情況DOUT):寫一個D觸發器的主程序

這是我的代碼:

#include "systemc.h" 

SC_MODULE(d_ff) { // on déclare le module à l'aide de la macro SC_MODULE. 

    sc_in<bool> din; // signal d'entrée 
    sc_in<bool> clock;// définition de l'horlogue 
    sc_out<bool> dout;// signal de sortie 

    void doit() { // La fonction qui assure le traitement de la bascule D 
    dout = din; // Affectation de la valeur du port d'entrée dans le port de sortie 

    cout << dout; 
    }; 

    SC_CTOR(d_ff) { //le constructeur du module d_ff 
    SC_METHOD(doit); //On enregistre la fonction doit comme un processus 
    sensitive_pos << clock; } 


    int sc_main (int argc , char *argv[]) { 
    d_ff obj(); 
     din<=true; 
    clock<=false; 
    obj.doit(); 
    return 0; 
     }}; 
+2

又是什麼做的不對?錯誤訊息?行爲不正確?到目前爲止,您嘗試調試什麼? – 2012-04-25 12:42:47

+0

我想測試程序,但你不知道如何,因爲這是我第一次,我沒有得到任何錯誤,但我沒有得到任何運行後,你能給我一個主要的程序,幫助我測試它像顯示dout或其他任何事先謝謝你 – 2012-04-25 12:46:17

回答

1

您必須安裝VCD觀衆看到在波形的形式模擬結果。 我想這就是你想要的 我使用這個http://www.iss-us.com/wavevcd/index.htm,但也有其他的。

接下來,您必須對代碼進行一些更改。這些變化將產生VCD文件:

我做了這個一個:

// File dff.h 
#include <iostream> 
#include <systemc.h> 

SC_MODULE (dff) { 
    sc_in <bool> clk; 
    sc_in <bool> din; 
    sc_out <bool> dout; 

    void dff_method(); 

    SC_CTOR (dff) { 
     SC_METHOD (dff_method); 
      sensitive_pos << clk; 
    } 
}; 

// File dff.cpp 
#include "dff.h" 

void dff:: dff_method(){ 
    dout=din; 
} 


// File: main.cpp 
#include <systemc.h> 
#include "dff.h" 

int sc_main(int argc, char* argv[]) 
{ 
    sc_signal<bool> din, dout; 
    sc_clock clk("clk",10,SC_NS,0.5); 

    dff dff1("dff"); 

    dff1.din(din); 
    dff1.dout(dout); 
    dff1.clk(clk); 

    // WAVE 
    sc_trace_file *fp;     // VCD file 
    fp=sc_create_vcd_trace_file("wave"); 
    fp->set_time_unit(100, SC_PS);  // resolution (trace) ps 
    sc_trace(fp,clk,"clk");    // signals 
    sc_trace(fp,din,"din"); 
    sc_trace(fp,dout,"dout"); 

    //Inicialization 
    din=0; 

    //START 
    sc_start(31, SC_NS);    
    din=1; 
    cout << "Din=1" << endl; 
    cout << "Tempo: " << sc_time_stamp() << endl; 

    sc_start(31, SC_NS); 
    din=0; 
    cout << "Din=0" << endl; 
    cout << "Tempo: " << sc_time_stamp() << endl; 

    sc_start(31, SC_NS); 

    sc_close_vcd_trace_file(fp);  // fecho(fp) 

    char myLine[100]; 
    cin.getline(myLine, 100); 

    return 0; 
} 

我希望這將有助於