ここから本文です

FPGAである計算をさせる回路を作りました(ISE12.2を使用)。

質問者

kawane123123さん

2010/12/811:02:42

FPGAである計算をさせる回路を作りました(ISE12.2を使用)。

シュミレーションでは正しい値が出たのですが、実際にFPGAにダウンロードして実装すると正しい値が表示されません。
原因は何だと予想できますか?

<補足>
・表示はLEDに点灯させます。
・入力はrstボタンと、計算する値をセットするsetボタンのみです(ディップスイッチを使用)。
・計算に使用する値はあらかじめ内部で保持するという回路になっています。
・ピン配置は正しくされています。
・FPGAにダウンロードした回路は、制御回路と計算回路を繋いだものです。
・他の簡単な計算をFPGAで実行すると、正常に点灯します。

補足・チャタリング防止回路は使用していません

閲覧数:
514
回答数:
1

違反報告

ベストアンサーに選ばれた回答

ohyo02さん

2010/12/919:39:06

内部回路を非同期で設計されてますか? それとも同期回路で設計されてますか?
実際の回路を見ないと正確な回答にはならないと思いますが、推測も入れてということで・・・。

感じから見て、非同期回路のように思われます。表示をLEDに点灯させているので、最終段はラッチだと思います。が、問題はその最終段の前で、信号の変化のタイミングと同時にラッチエッジを変化させてませんか?

シュミレーションの結果は正しくても、同時変化に対する処理は計算上と実配線では異なります。
FPGAの場合、論理計算で正しくても回路の配置配線までは最適化されないので(ASICではある程度調整が効きます)特にラッチのホールドタイムには注意が必要です。
タイミングチャートをちゃんと作って、変化点の怪しそうなところはデータ確定から十分ホールド時間を確保していることを確認してラッチをかけるようにします。

なかなか頭の中だけで作ってるとわかりにくいかもしれませんが、タイミングを紙に書けば、だんだん見えてきます。。。 経験者談。

高度なシュミレータだと遅延配線込のシュミレーションもやってくれますが、簡単にできるのが身上のFPGAでは実際やられることはあまりないようです。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する