本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VHDL ステートにとどまる時間)

VHDL ステートにとどまる時間

2023/09/06 22:11

このQ&Aのポイント
  • VHDL初心者が質問する、VHDLのステートにとどまる時間についての疑問
  • 質問者は、detectステートにとどまる時間についての考え方に誤りがあると感じている
  • 質問者は、detectステートにとどまる時間はclk_rxの8周期分であると考えているが、実際は7周期分である
※ 以下は、質問の原文です

VHDL ステートにとどまる時間

2019/08/02 09:47

FPGAの初心者です。
上級者の皆さんがNET上に掲載されているVHDLの記述例をみながら勉強中です。

Q1.
when detect =>
if(clk_rx = '1') then
if(cnt_bitwidth = 7) then
cnt_bitwidth <= 0;
state <= proc;
else
cnt_bitwidth <= cnt_bitwidth + 1;
state <= state;

cnt_bitwidth = 0 でdetectステートに入ります
detect ステートになってから
clk_rxの1発目でcnt_bitwidthが1となり
clk_rxの2発目でcnt_bitwidthが2となり
・・・・(中略)
clk_rxの7発目でcnt_bitwidthが7となり
clk_rxの8発目でcnt_bitwidthが7になっているので procステートへ入る
・・・と理解しました。
そうすると、
detectステートにとどまる時間はclk_rx の7周期分になります。

しかし動作から考えると
detectステートにとどまる時間はclk_rx の8周期分でなければならない
・・・と思われるので前述の私の理解は間違っていると思います。

間違いを教えてください。

質問者が選んだベストアンサー

ベストアンサー
2019/08/02 13:02
回答No.1

Clk_rxの8発目でprocステートに遷移するので
detectステートには8周期分いるで正しいですよ。
cnt_bitwidth が {0,1,2,3,4,5,6,7}の間、detectステートにいますよね。
疑問がある場合には、ブロッキング代入について調べるといいかも。

proc文のセンシティビティリスト記述が無いと、実はこれで正しいのかは分からなかったりするんですけどね。

お礼

2019/08/02 16:22

回答ありがとうございます。
>cnt_bitwidth が {0,1,2,3,4,5,6,7}の間、detectステートにいますよね。
cnt_bitwidthが0のときとは
detectステートに入ってから、clk_rxの1発目が入るまでの期間のことでしょうか?
なお
detectステートに入るのはclk(50MHz)のタイミングであり、
clk_rx(153.6KHz)との時間差は不定です。

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

その他の回答 (2件中 1~2件目)

2019/08/05 15:01
回答No.2

>detectステートに入るのはclk(50MHz)のタイミングであり、
>clk_rx(153.6KHz)との時間差は不定です。

それは質問時に、すでに判っていた情報ですよね?
申し訳ないですが、後出しで出された情報に対して回答するのは
キリが無いので回答するつもりはありませんです。

もし必要であれば、(たんなる興味本位で質問したのでなければ)
自分の希望する回答を得るのに必要十分な情報を提示して再質問してください。

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。