
現在Verilog HDLを勉強しており、ひと通り勉強は終わりました。
しかしブロッキング代入[=]とノンブロッキング代入[<=]の使い分けをどこまで暗記すれば良いのか分かりません。
皆様は、[=]と[<=]の使い分け、あるいはネット型、レジスタ型への代入をする際の区別をどのように暗記していますか?「このポイントを理解すれば大丈夫!」みたいなことを教えていただけると助かります。
今思いつく例としては↓のとおりです
・assign文では[=]を使用しなければならない。
・assign文の左辺は[ネット型]のみ
・case文のHPによって[=]を使用しなければならない。
・ http://veri.jp/ba_nba.html のHPの最後のほうで『ほかにも「assign 文では NBA "<=" が使えません」という誤った注意書き』と書いてありますが、この記述の意味がわかりません。
・回路記述ではダメなのに、シミュレーション記述では問題がない等等、、、
他にもfunction文やalways文の中で式を書く時にも困っています。
No.1ベストアンサー
- 回答日時:
>
http://veri.jp/ba_nba.htmlこんな良い解説ページを見つけたのに、なぜ質問しているのかがよく分かりませんが・・・。
まずassign文は継続的代入であって、ブロッキング代入でもノンブロッキング代入でもないので、
ブロッキング代入とノンブロッキング代入の使い分けという議論の対象外です。
また、ブロッキング代入とノンブロッキング代入はレジスタ型に対して使う、
継続的代入はネット型に対して使う、
となるため、型でブロッキング代入とノンブロッキング代入の使い分けなんて言う議論は最初からできないです。(どちらもレジスタ型が相手だから)
解説ページにも書かれていますが、
ブロッキング代入とノンブロッキング代入の違いは、
"右辺の評価" と "左辺への代入" が同時に行われるか、別々に行われるかの違いです。
たとえば、
a = x;
b = a;
としたとき普通のプログラミング言語のように、bもxになって欲しいなら、ブロッキング代入を使いますし、
bにxが代入される前のaの値が入って欲しいなら、ノンブロッキング代入を使うことになります。
always文でFFを生成するときは、その時刻においては代入前の値を参照したい(実際の回路を考えると代入後の値を参照できるのは次のクロックがやってきたときだから)ので、
ノンブロッキング代入を普通は使いますね。
(ブロッキング代入だとレーシング=記述順序で結果が変わってしまうという問題があるというのもありますが。)
それ以外(組み合わせ論理を作るalways、function、シミュレーション記述)は、
特に理由がなければブロッキング代入を使っています(変数を直ちに更新して欲しい場合がほとんどだから)が、
前述のノンブロッキング代入の挙動を理解した上でノンブロッキング代入が必要だと思ったなら
使っていけないわけではないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 本気で困ってます! 大学受験/現代文の参考書ルートについて質問です! 現代文の参考書ルートについてで 2 2023/08/13 20:07
- その他(職業・資格) 弁理士試験の勉強方法について 1 2022/09/11 07:32
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- 高校 読解力をつけたい 2 2023/06/10 15:11
- 日本語 複合名詞(造語)について教えて欲しいです 2 2022/05/22 17:14
- 日本語 「~でも」(~で)「~さえ」の細かい違い その2 2 2023/08/20 17:20
- 知的財産権 ユーチューバーやブロガーが気を付けるべき著作権について 1 2022/08/28 21:18
- 日本語 「判断文」は「は」、「現象文」は「が」 6 2022/11/19 19:03
- 大学受験 大学受験の参考書について 高3の私文志望(今のところ中堅私立大)です。 基礎固めをしたいです。 持っ 3 2023/08/17 13:47
- 大学受験 9月からMARCH 間に合いますか? 3 2022/09/13 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
C言語 アロー演算子について質...
-
VBAでダブルコーテーション入り...
-
条件演算子 ? :
-
プログラミングで変数と関数の...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Accessコンボボックスにレコー...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
クラス中でコンストラクタを使...
-
Variant型で宣言してるのにEmpt...
-
IEEE規格で「いちばん近い偶数...
-
インクリメント演算子の前置(+...
-
C言語 初心者です。
-
整数xxxが大き過ぎますというエ...
-
PythonでGTKの使いかた
-
C言語 exitの使い方
-
数字の位ごとの値を表示するプ...
-
足して100になるような乱数のア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
[VBS]変数を定数に変換する方法...
-
テキストボックスの値を変数に...
-
Variant型で宣言してるのにEmpt...
-
エラーの意味は? Lvalue req...
-
整数xxxが大き過ぎますというエ...
-
C言語 列挙型(enum型)変数について
-
VBA 1行で複数の代入を行った...
-
gridViewの行選択解除
-
PL/Iについて、教えてください。
-
JavaScriptをURLから直接実行し...
-
Accessコンボボックスにレコー...
-
プログラミングで変数と関数の...
-
【VBA】複合代入演算子
-
ASP+SQLにてSessionがNullになる
-
無名関数のメリットがよくわか...
-
processing エラーで、 "cannot...
-
VBAプログラミングで質問です ...
おすすめ情報