对信号使用等待语句
Using wait statements with signals
是否可以在线程中使用带有输入信号的等待语句,即
void Thread::myThread(){
while(1){
wait(mySignal);
if(mySignal == 1){
//do stuff
}
}
}
其中 mySignal
是 sc_in<int> mySignal;
我尝试 运行 类似的变体,但是当我尝试跨过 wait 语句时出现以下错误。
从我能够读到的关于 waits
的内容来看,它们似乎需要时间、事件和其他一些组合,但不是直接的信号。
假设我不能在等待中直接使用信号,我可以通过在构造函数中使线程敏感来实现相同的结果,即
SC_MODULE(myModule){
sc_in<bool> mySignal;
void myThread();
SC_CTOR(myModule){
SC_THREAD(myThread)
sensitive << mySignal;
}
}
void myModule::myThread(){
while(1){
wait(); //Wait for mySignal
if(mySignal == 1){
//do stuff
}
}
}
您的代码中存在轻微的不一致。
尝试将您的代码更改为:
SC_MODULE(myModule){
sc_in<bool> mySignal;
void myThread();
SC_CTOR(myModule){
SC_THREAD(myThread); //<< SC_THREAD is a macro.
sensitive << mySignal;
}
}
void myModule::myThread(){ //<< Did you mean this instead of Thread class
while(1){
wait(); //Wait for mySignal
if(mySignal == 1){
//do stuff
}
}
}
是否可以在线程中使用带有输入信号的等待语句,即
void Thread::myThread(){
while(1){
wait(mySignal);
if(mySignal == 1){
//do stuff
}
}
}
其中 mySignal
是 sc_in<int> mySignal;
我尝试 运行 类似的变体,但是当我尝试跨过 wait 语句时出现以下错误。
从我能够读到的关于 waits
的内容来看,它们似乎需要时间、事件和其他一些组合,但不是直接的信号。
假设我不能在等待中直接使用信号,我可以通过在构造函数中使线程敏感来实现相同的结果,即
SC_MODULE(myModule){
sc_in<bool> mySignal;
void myThread();
SC_CTOR(myModule){
SC_THREAD(myThread)
sensitive << mySignal;
}
}
void myModule::myThread(){
while(1){
wait(); //Wait for mySignal
if(mySignal == 1){
//do stuff
}
}
}
您的代码中存在轻微的不一致。 尝试将您的代码更改为:
SC_MODULE(myModule){
sc_in<bool> mySignal;
void myThread();
SC_CTOR(myModule){
SC_THREAD(myThread); //<< SC_THREAD is a macro.
sensitive << mySignal;
}
}
void myModule::myThread(){ //<< Did you mean this instead of Thread class
while(1){
wait(); //Wait for mySignal
if(mySignal == 1){
//do stuff
}
}
}