
こんにちは。VHDLのprocessとeventで質問です。
process (CLOCK,RESET)
begin
if(RESET = '1') then
...(処理)
elsif(CLOCK'event and CLOCK = '1') then -- ☆
...(処理)
end if;
end process;
で書くのは黄金パターンのようですが、
☆の行を以下のようにevent文を取り払うと、何が違うのでしょうか?
elsif(CLOCK = '1') then
諸々の解説を見ると、processは()内の状態が変わったときにendまでのものが同時に処理されるという解説があり、eventはその指定された信号が変わったときにtrueなわけですよね。それでは何故processとeventを併用する必要性があるのでしょうか?
シミュレーションをやった感じでは何にも変わり映えしないのですが…厳密に何が起きているか知りたいのです。
No.1ベストアンサー
- 回答日時:
私もVHDLをかじっただけの人間なので詳しいことはわかりませんが、参考になれば幸いです。
憶測ですが、言語で決まった書き方をすることはコンパイラに対し、明示的に一定の回路を形成するための指示を与えることができるような気がします。例えば
entity Led_test is
Port ( CLK : in STD_LOGIC;
RESET : in STD_LOGIC;
OUT0 : out STD_LOGIC);
end Led_test;
architecture Behavioral of Led_test is
signal sub_out : std_logic;
begin
process(CLK,RESET)begin
if(RESET= '1')then
sub_out <= '1';
elsif(CLK'event and CLK = '1')then
sub_out <= sub_out xor '1';
else
end if;
end process;
OUT0 <= sub_out;
end Behavioral;
のような記述をした場合、Xilinx ISE 11でデバイスがXC9572の場合は出力までの遅延が6.5nsと出ました。
一方、eventを省いた場合は出力ラッチが複数あるというWARNINGが発生しましたが、コンパイルは成功し、遅延が10nsとなりました。この原因はデバイスとのfit行程でCLKをクロック信号、RESETをリセット信号として認識したかそうでないかの違いによるものだと思います。現に自動配置されたピンを確認すると前者ではそうなっていました。後者は通常のIOピンに接続されていたので、遅延が長くなったと思われます。
結局、結論はわからないのですが、process文とeventについては記述する方法だと私は認識しています。的外れな回答で申し訳ない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急です。 電源入れたままSIM...
-
soc、マイコン、ARM、組み込み...
-
教えてください Windows11で暗...
-
ワード作成した名刺の大量印刷...
-
AI を おちょくる質問
-
職場のノートパソコンを起動す...
-
外付けSSDを暗号化する機能はAn...
-
宮崎駿作品集15枚組を購入した...
-
スマホのUSBポートやタブレット...
-
AndroidでLinuxを動かすアプリ...
-
UQモバイルやLINEモバイルやmin...
-
rsyncをインストールするとssh...
-
Linuxユーザーはリモートアクセ...
-
Linuxはバージョンごとにコード...
-
microSDカードと外付けSSDって...
-
パソコンはスマホと違って重い...
-
皆さん、おはようございます♪ N...
-
パソコンのキーボードって不要...
-
Debianをノートパソコンにイン...
-
パスワードをハッシュ値にして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードセットにnullの場合
-
タイムアウトする仕組みを作りたい
-
subsequentとnextの違いってな...
-
C言語のプログラムで...
-
vbsのmsgboxランダム表示について
-
verilogのcase文
-
エクセルvba 値渡しのsu...
-
日付の重複
-
[至急]Project Euler:#21Amicab...
-
リスト間のアイテム移動について
-
変数に「.」が含まれる場合...
-
delphi
-
パスカル言語
-
Verilogの文法
-
Why is 77+33 not equal to 100?
-
Verilog-HDLによる設計において
-
pascalでの二分探索(バイナリ...
-
「for next」文と「if then els...
-
Scilabの&と&&に関する質問です
-
VBAでWorkbook_BeforeSaveイベ...
おすすめ情報