• ベストアンサー
  • 困ってます

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

  • 質問No.9641635
  • 閲覧数142
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 74% (696/935)

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周期分でなければならない
・・・と思われるので前述の私の理解は間違っていると思います。

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 36% (125/346)

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

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

お礼率 74% (696/935)

回答ありがとうございます。
>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)との時間差は不定です。
投稿日時:2019/08/02 16:22

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 36% (125/346)

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

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

もし必要であれば、(たんなる興味本位で質問したのでなければ)
自分の希望する回答を得るのに必要十分な情報を提示して再質問してください。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ