|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
要求用两个full adder做一个2位adder
full adder 代码如下
//-------------------------------
#include "systemc.h"
SC_MODULE (full_adder){
sc_in<bool> a,b,carry_in;
sc_out<bool> sum,carry;
void prc_full_adder()
{ sum= a^b^carry;
carry= ((a & b)|(a & carry_in)|(b & carry_in));
}
SC_CTOR(full_adder)
{
SC_METHOD (prc_full_adder);
sensitive<<a<<b<<carry_in;
}
};
//-------------------------------------------
two_bit_adder 的代码模板如下
//------------------------------------------
#include "systemc.h"
#include "full_adder.cpp"
SC_MODULE(two_bit_adder){
sc_in < sc_bit> carry_in0;
sc_in < sc_bv<2> > num1 , num2;
sc_out < sc_bit > carry_in2;
sc_out < sc_bv<2> > sum2;
full_adder *f1, *f2;
void prc_2_bit_adder()
{
}
SC_CTOR(two_bit_adder)
{
SC_METHOD(prc_2_bit_adder);
sensitive<<carry_in0<<num1<<num2;
f1= new full_adder ("f1");
f2= new full_adder ("f2");
f1->a( );
f1->b( );
f1->carry_in ( );
f1->sum ( );
f1->carry ( );
f2->a( );
f2->b( );
f2->carry_in( );
f2->sum( );
f2->carry ( );
}
~ two_bit_adder()
{ delete f1;
delete f2;
}
};
//-----------------------
现在的问题是红色部分,如何链接。因为systemC只能用sc_signal链接,但full adder 的所有接口是一位的,但是2 bit adder的sum num1, num2是两位的sc_uint, 而sc_signal与 IO Port都不可以位选择,只能通过variable.
现在的问题是转换的代码写在哪里?无论写在prc_2_bit_adder()里或是
SC_CTOR里都报错或是结果不对。应该如何做呢? |
|