码迷,mamicode.com
首页 > 其他好文 > 详细

systemC全加器建模

时间:2018-07-04 21:06:45      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:如何   amp   为什么   bsp   wait   技术分享   com   tor   cout   

博主今天刚看完systemC的时序建模和组合建模部分,就开始写sc代码了,但遇到了很多错误。。。

base.h头文件:

#ifndef _base_
#define _base_
#include "systemc.h"
#include <iostream>
#endif

关于全加器的定义 full_adder.h :

#include "base.h"
#ifndef _full_adder_
#define _full_adder_
SC_MODULE(Full_Adder)
{
    sc_in<bool>   a , b , carry_in ;
    sc_out<bool>  sum , carry_out ;
    
    void Full_Adder_Proc();
    
    SC_CTOR(Full_Adder){
        SC_METHOD(Full_Adder_Proc);
        sensitive<<a<<b<<carry_in ;
    }
};
#endif

关于全加器的函数 full_adder.cpp :

#include "full_adder.h"
void Full_Adder::Full_Adder_Proc(){
    sum = a^b^carry_in ;
    carry_out = a&carry_in |  b&carry_in | a&b ;
}

关于信号驱动的头文件  driver.h:

#include "base.h"
#ifndef _driver_
#define _driver_
SC_MODULE(driver)
{
    sc_out<bool > d_a , d_b , d_cin;
    
    void driver_proc();
    
    SC_CTOR(driver){
        SC_METHOD(driver_proc);
    }
};
#endif

关于信号驱动的实现代码driver.cpp:

#include "driver.h"
void driver::driver_proc(){   
 sc_uint<3> temp;  
       
 temp = 0 ;    
    
  while(1){       
           d_a = temp[0];      
           d_b = temp[1];        
           d_cin = temp[2]; 
          
           wait(5,SC_NS);       
           temp++;    
          };    
}

关于monitor的头文件:

#include "base.h"
#ifndef _monitor_
#define _monitor_
SC_MODULE(Monitor){
    sc_in<bool> a , b , carry_in , sum , carry_out ;
    
    void Monitor_Proc();
    
    SC_CTOR(Monitor){
            SC_METHOD(Monitor_Proc);
            sensitive<<a<<b<<carry_in<<sum<<carry_out ;
    }
};
#endif

关于monitor的实现:

#include "monitor.h"
void Monitor::Monitor_Proc(){
    std::cout<<" a:"<<a<<" b:"<<b<<" cin:"<<carry_in;
    std::cout<<"sum:"<<sum<<" cout:"<<carry_out<<std::endl;
}

期间博主犯了两个很傻的错误:

(1)   其中一个文件把#ifndef  写成了 #ifdef

(2)   构造函数SC_CTOR写成了SC_STOR

导致一直编译不能通过。。。。。。。。。。

在解决这些问题后,终于正常通过了,正打算看看结果,却发现:

技术分享图片

似乎和systemC内建的关键字冲突了,后来改了Driver,但还是显示相同的警告。

由于还没开始学习如何编写sc测试平台,所以暂时还不知道为什么会这样。。

暂且把问题留在这吧,等博主过段时间再来解答

systemC全加器建模

标签:如何   amp   为什么   bsp   wait   技术分享   com   tor   cout   

原文地址:http://blog.51cto.com/13824643/2136269

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!