2012-04-24 2 views
0

Я новичок в программировании системы. Я пишу 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

И что это не так? Сообщения об ошибках? Поведение не так? Что вы пытались отладить до сих пор? –

+0

Я хочу протестировать программу, но я не знаю, как это происходит в первый раз, я не получаю никаких ошибок, но после запуска я ничего не получаю, могу ли вы дать мне основную программу, которая поможет мне протестировать это как отображение dout или что-нибудь еще. Спасибо заранее. –

ответ

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; 
} 

Я надеюсь, что это поможет

2

ли эту страницу какой-либо помощи?

http://www.asic-world.com/systemc/first1.html

Это называется «Моя первая программа в системе C», так выглядит о том, где вы находитесь.

Некоторые другие полезные ссылки для новых стартеров:

http://panoramis.free.fr/search.systemc.org/?doc=systemc/helloworld

http://www.ht-lab.com/howto/vh2sc_tut/vh2sc_tut1.html

Смежные вопросы