SystemC D触发器仿真

  • Eagleson
  • LV5工程师
  • |      2016-01-25 17:57:47
  • 浏览量 545
  • 回复:4

带有复位和置位端口的D触发器

SystemC D触发器仿真


运行环境 参考前面帖子: VS2012 + modelsim

SystemC仿真与波形跟踪

systemC的软件开发环境篇

相关语法功能也请参考前面的帖子。这里只是个人的一个练习实验 分享,有感兴趣的和疑问的欢迎交流


主要函数内容

SC_CTOR(rs_dff){

SC_METHOD(rs_dff_pos);

sensitive<

sensitive<

sensitive<

}

voidrs_dff::rs_dff_pos(){

       if(rst_n.read()==false)

       {

       out_q.write(0);

       }

       elseif(set_n.read()==false)

       {

       out_q.write(1);

       }

       else

       {

              out_q.write(in_data.read());

       }

}

测试文件代码

       voidgen_input()

       {

       wait();wait();wait();wait();

       rst_n=0;set_n=1;in_data=1;

       wait();wait();wait();wait();

       rst_n=1;in_data=1;set_n=0;

       wait();wait();wait();wait();

       rst_n=1;in_data=0;set_n=0;

       wait();wait();wait();wait();

       rst_n=0;in_data=0;set_n=0;

       wait();wait();wait();wait();

       in_data=1;rst_n=1;set_n=0;

       wait();wait();wait();wait();wait();wait();

       in_data=0;rst_n=1;set_n=1;

       wait();wait();wait();wait();

       in_data=1;rst_n=1;set_n=1;

       wait();wait();wait();wait();

       in_data=0;rst_n=1;set_n=1;

       }

       voiddisplay_variable()

       {

       cout<<"in_data="<

       cout<<"rst_n="<

       }

       SC_CTOR(tb)

       {

       SC_CTHREAD(gen_input,clock.pos());

       SC_METHOD(display_variable);

       sensitive<

       sensitive<

       dont_initialize();

       }

主函数

sc_clockclock("clock",2,SC_NS);

rs_dffD3("Dff3");

D3.in_data(in_data);

D3.out_q(out_q);

D3.clock(clock);

D3.rst_n(rst_n);

D3.set_n(set_n);

 

 

tbtb1("tb");

tb1.rst_n(rst_n);

tb1.set_n(set_n);

tb1.clock(clock);

tb1.in_data(in_data);

tb1.out_q(out_q);

//tracefilecreation

sc_trace_file*tf=sc_create_vcd_trace_file("Nand2");

sc_trace(tf,D3.in_data,"in_data");

sc_trace(tf,D3.out_q,"out_q");

sc_trace(tf,D3.clock,"clock");

sc_trace(tf,D3.rst_n,"rst_n");

sc_trace(tf,D3.set_n,"set_n");

sc_start(200,SC_NS);

sc_close_vcd_trace_file(tf);

 

 运行仿真结果如下

当 rst_n = 0  输出 out_q=0;

当 rst_n = 1 set_n = 0 时 out_q=1;

当 rst_n = 1 set_n = 1 时 out_q= indata;


SystemC D触发器仿真

out_q 延迟 indata 半个周期后 与D触发器的时序图一致。

SystemC D触发器仿真



 

 

 

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:3
Eagleson 2016-01-27
当然可以
0   回复
举报
发布
Eagleson 2016-01-25
,O(∩_∩)O谢谢
0   回复
举报
发布
蓝蓝的天 2016-01-25
顶一个。。。。。。。。。。。。。
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子