ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Verilog HDLコミュの【質問】Verilog-HDLにおける条件分岐について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
初めまして。アーサーと申します。
現在大学で回路設計をしております。

always文の条件分岐に関して質問させていただきます。

現在以下のような構造のプログラムを書いております。

reg flag;
//module1
always@(posedge CLK of negedge RST) begin
if (flag == 1) begin
・・・
if() flag <= 0;・・・?
・・・
end
end
//module2
always@(posedge CLK of negedge RST) begin
if (flag == 0) begin
・・・
if() flag <= 1;・・・?
・・・
end
end

つまり、always文を用いた2つのモジュールがあり、"module1"内のある条件(モジュール終了フラグが立つ?)になると、もう一つの"module2"を処理する。こちらの"module2"も終了したら(?)また最初の"module1"に戻る。

このような動作をする回路を作成したいと思ってます。
しかし、上記の記述では論理合成されません。

エラー内容としては、
Xst:899 - "Filename" line 84: The logic for <"regista"> does not match a known FF or Latch template.
がmodule内の全レジスタにおいて表示されます。("regista"のところに各レジスタが入った文が列挙されます。)

おそらくFPGA内部のFFやラッチの「スイッチ」は「リセット」と「クロック」の2つまでであり、「flag」がもう一つのスイッチとしての役割を果たしており、スイッチの数が超過してしまってるようです。

flagをwire型にする、alwaysのイベント文にflagを組み込むなどしてみたのですが上手くいきません。

flagの立て方がおかしいのか。
構文がおかしいのか。
そもそもこのような構造は制御できないのか。

色々考えた末、こちらで質問させていただきました。
よろしければ詳しい方、アドバイスいただけますでしょうか?

ちなみに開発環境はXilinx -ISEを使っております。

よろしくお願いいたします。

長文失礼しました。

コメント(5)

sensitivity listの書き方がまずいのでは。
"of"ってのは"or"の誤記ですか?それとも本当にRTLが"of"になっている?
もう一つ、判断する内容のないif文は無意味だと思いますが、わざわざ入れている理由はなんでしょうか。
RTLと順序実行言語(Cなど)をごっちゃにされているようですね。
何をやりたいのかがよく判りませんので、アドバイスもしにくいのですが、別のAlways文の中で同じレジスタに値を入れようとしてませんか?通常エラーですね。書けないことはないのですが、バグの元なので、ラッチ条件をわざわざ分けたりしないですね。

always@() の条件も、posedge CLK or negedge RST の間違いではないですか?
wire型もやったとの事ですが、混乱しないためにもassign文でflag書いてもいいと思いますし、もう一個別で組み合わせ回路always文にて、ステートマシン作るのも手だと思いますよ。
処理と遷移が一緒になってて何となく違和感。

皆さんおっしゃってますが、"of"は"or"の間違い?
この頃の若い人って、他人にものを聞き、回答があってもお礼とかしないものなのかな・・・。
掲示板の向こうには人間がいるんですよ。サーチエンジンではないんですが・・・。

中年オヤジの愚痴でした。
トピック汚し失礼。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Verilog HDL 更新情報

Verilog HDLのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング