![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっています。
以下の開発環境におけるFPGAのロジックのシミュレーションに疑問があるので質問します。
環境
modelsim Altera starter edition
質問概要
10進カウンターを作ってクロックの立ち上がりで動作するように作ったのに立下りで動作するのは何故か。(10進数をカウンター内部変数TQで数え上げqに出力しているがTQはクロックの立ち上がりで動いているが、qは立下りで動いている様に見える)
10進カウンターの内部構造
ソース概要
・内部変数TQが0から始まり、+1していき10回数えたら0から桁上がりの変数cを1にしてやりなおし。
・計算中の内部変数TQで7SEG LEDを駆動させるためのアウトプットqがある。
・リセットは0の時リセットされる。
VHDLのソースを載せます。
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity COUNT10 is
port(RESET,CLK : in std_logic;
Q: out std_logic_vector(3 downto 0);
C: out std_logic
);
end COUNT10;
architecture RTL of COUNT10 is
signal TQ : std_logic_vector(3 downto 0);
begin
process (RESET,CLK ) begin
if(RESET='0') then
TQ <= "0000";
C<='0';
elsif(CLK 'event and CLK ='1') then
if(TQ="1001") then
TQ <= "0000";
C <='1';
elsif(TQ="0000") then
C <='0';
TQ <= TQ + '1';
else
TQ <= TQ + '1';
end if;
end if;
Q<=TQ;
end process;
end RTL;
シミュレーション結果
クロックを数え上げた内部変数TQがqへ値を渡す仕組みになっています。
これがたち下がりの時に行われている様に見える。
![「FPGAのシミュレーションに関して」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/519272_5497d139537c5/M.jpg)
No.1ベストアンサー
- 回答日時:
Q<=TQ;
の代入文がprocess文の中に入ってるからですね。
シミュレーションでprocess文が評価(実行)されるのは、センシティビティリスト内の信号が変化したときのみです。
ですから、TQがクロック立ち上がりで変化した後、process文内が再度実行されるのはクロックの立ち下り時になります。
合成するとシミュレーションとは違ってQはクロック立ち下りに同期しないかもしれませんね。
ただ、書き方としては代入文はこのプロセス文の外でやる方がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 球面と接する直線の軌跡が表す領域 4 2023/07/30 12:37
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付の重複
-
verilogのcase文
-
subsequentとnextの違いってな...
-
delphi
-
pascalでの二分探索(バイナリ...
-
タイムアウトする仕組みを作りたい
-
FORTRAN77でプログラミング
-
C言語のプログラムで...
-
レコードセットにnullの場合
-
クラスモジュールの処理
-
VB.NETでのイベントの途中終了
-
Excel VBAでsub,dimは何の略?
-
他のフォームから別のフォーム...
-
C#のループでtextboxに値を入れ...
-
エクセルVBAでテキストボッ...
-
リストビューの列ヘッダーの幅...
-
VB.NET)コンボボックスの連動に...
-
C言語のサフィックスについて
-
テキストボックスに大文字を
-
VBAで入力数値について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タイムアウトする仕組みを作りたい
-
レコードセットにnullの場合
-
subsequentとnextの違いってな...
-
日付の重複
-
verilogのcase文
-
Verilog-HDLによる設計において
-
Verilogの文法
-
リスト間のアイテム移動について
-
Rubyプログラミングの課題につ...
-
EXCEL VBA 文字 アドレス 検...
-
Delphiでコンポーネント名を変...
-
delphi
-
TreeViewのTag情報取得
-
pascalでの二分探索(バイナリ...
-
エクセルVBAついて ①if•••••the...
-
「for next」文と「if then els...
-
整順リスト形式の英単語辞書(pa...
-
直線検出のハフ変換プログラム(...
-
Matlab
-
【FPGA】VHDLのprocessとevent
おすすめ情報