私は基本的に以下のように動作しなければならないモジュールをSystemCに書いています:それはポートp_in
とポートh
を通して制御信号を介してバイト列を受け取ります。モジュールはh
信号がtrue
の場合にだけ、matrix
のバイト内にバイトを保存する必要があります。私が持っている問題はh
がfalseの場合でも、カウンタi
とj
をインクリメントしていきますが、反復がh
がfalse
ときに停止したときに継続しなければならないということですSystemCで制御信号を使ってforループ内のカウンタを管理する方法は?
void MY_MODULE::my_method(){
if(!rst){
//put all the output ports to 0
}
while(1){
//The module waits while the signal h is false
while(!h) wait();
//The iterations to fill in the matrix begin
//The iterations must work just if h = true
for(i=0; i<100; i++){
for(j=0; j<100; j++){
wait();
matrix.nmmatrix[i*matrix.width+j] = p_in;
}
}
}
}
:SC_THREAD
の中で私は、私はこれを実装し使用しています再びtrue
です。私が間違っていることのヒントを教えてください。
更新
次のように私は無限ループを変更した:
while(1){
//The module waits while the signal h is false
while(!h) wait();
//The iterations to fill in the matrix begin
//The iterations must work just if h = true
for(i=0; i<100; i++){
//Wait for a positive event of control signal h
wait(h.posedge_event());
for(j=0; j<100; j++){
wait();
matrix.nmmatrix[i*matrix.width+j] = p_in;
}
}
}
今カウンタは、信号h
がfalse
ている間増加を停止します。それにもかかわらず、私が持っている問題は、h
が初めてtrue
のときにカウントが開始しないことですが、h
がtrue
のときに開始されます。どちらが問題だろうか?
私はすでにそれを試しています。 – Marco
スレッドの機密性リストには何がありますか? –
"シミュレーション"とは何ですか?あなたが「シミュレーション」について言及したのはこれが初めてです。 –