実際のハードウェアなしでFPGAデザインをシミュレーション


9

FPGAは初めてで、現在HDL(特にVerilog)クラスを受講しています。組み合わせ回路や順序回路などのデジタル設計に関する十分な知識があります。

このYouTubeビデオに示すようなプロジェクトを作成したい。

また、ザイリンクスISEがロジック信号を処理し、波形をシミュレーションできることも知っています。USB、カメラなどを介して入力信号を取得し、コンピューターに出力するような追加機能はありますか?

実際のFPGAボードを購入せずに、このプロジェクトを(コンピューターでのシミュレーションのように)実行することはできますか?つまり、自分のコンピューターでプロジェクトをビルド、コーディング、実行し、USB経由でカメラを接続して、着信ビデオ信号をザイリンクスISEなどのHDLシミュレーターで処理できるようにすることはできますか(実際には購入していません) FPGAボードを使用してプロジェクトを合成します。現在のところ、そのための予算はありません)

(私が本当に意味しているのは、HDLlデザインを実際のソース、Cコードなどにインターフェースすることです。)


5
ザイリンクスのシミュレータでそれができるかどうかはわかりませんが、Icarus Verilogのようなものは、実際のソースからデータを取得できるCコードへのシミュレーションインターフェイスを許可します。ただし、リアルタイムよりも桁違いに遅くなる可能性が高いため、ライブビデオソースの処理は困難です。
Chris Stratton、

1
ああ、それはフレーズim発見、現実世界の情報源とのインターフェース
WantIt

2
@vvavepacketはコメント/投稿に賛成して、コメント/ポスターに感謝します。
Chetan Bhargava、2013

1
ビデオのFPGAはアルテラDE2のように見えます。ライセンスとチップにもよりますが、200〜600米ドルです。csc.kth.se/~emille/niisimに
Niklas

2
Terasic DE0-nanoは約80ドルで、カメラやLCDに接続できます。実際、彼らは彼らのウェブサイトでそれのデモを持っています。それらとは関係ありませんが、DE0-nanoは、手頃な価格のボード上にかなり素晴らしいFPGAを搭載しています。私は常にほとんどの開発ボードがどれほど高価かを嫌っていました。
akohlsmith 2013

回答:


5

ザイリンクスツールは、私が知る限りリアルタイムでインターフェイスできません。また、ModelSim(ActelのLibero IDEで使用され
ます)もできません。これを行うことができる何か。

しかし、これはあなたが求めなかった答えかもしれません(役に立たない場合は削除します)が、これを行うため、または少なくともそれに向けて始めるために、独自のFPGAボードを構築することを検討します。私は最初のFPGAボードをエッチングしましたが、それは非常に単純です(ボードはプロセスではありません;-))ので、非常に迅速に非常に多くのことを学びました。

長所:

  • 安いです
  • すぐに始めて、ハードウェアの考慮事項について知っておく必要があるすべてを学びます。ほとんどのデータシートを最初に読み取り、独自のスターターコードを書くことを強制します。これは、多くの場合、プラグアンドプレイの開発ボードによる学習方法よりも優れています。
  • 必要なものだけをボードに置いてください。
  • すべてをリアルタイムでシミュレーションする方法を考え出すのと同じ労力/研究で、実際に機能する設計の目標に向けてさらに進んでください。

短所:

  • まだプログラマーを購入する必要がありますが、ザイリンクス/アルテラプログラマーの安価なバージョンはeBayで見つけることができます。
  • PCB /シグナルインテグリティの設計と問題に焦点を当てたくない場合は、この方法で行うことで得られる知識の多くに関心がない可能性があります。

自分のボードのエッチングはおそらく不要だと思います。FPGAがそこにあり、焦り、PCBが到着するのを2週間待ちたくなかったためです。2層ボードの非常に安価な取引があります。これは、少なくともデザインを実行するために(おそらく最終的に望ましい速度よりも低速で)実行します。通常、高速FPGAデザインの最小レイヤー数は4ですが、これらははるかに高価です)

とにかく、Spirit Circuitsは、完全に無料の2層「ベアボーン」PCB取引(月に1回、1回のデザイン、マスクまたはシルクスクリーンなし)を行います。これは、1回限りのデザインに役立ちます。
また、適切な2層および4層の安価なプロトタイプボードの場合、ITeadとSeed Studioは、10ボード(またはその価格で5枚)のサービスで10ドルという低価格になります。


これは非常に興味深いです!励ましも
davidbak

6

標準のザイリンクスISE Webpack(xilinx.comからダウンロードできる無料バージョン)には、iSimと呼ばれるシミュレーターが含まれています。それは素晴らしいシミュレータではありませんが、完全に機能し、価格は適切です。

私はアルテラのツールを使用していませんが、シミュレーターが含まれていないと驚いたでしょう。

しかし...シミュレータでできることとできないことを知る必要があります。まず第一に、それはフルスピードで実行しているFPGAをシミュレートすることはできません。実際、それらはかなり遅いです。シミュレートされているFPGAの複雑さにもよりますが、1ミリ秒の「シミュレートされた時間」をシミュレートするのに1分かかることは驚くに値しません。1時間の「シミュレートされた時間」をシミュレートする場合、1000時間のリアルタイムが必要になります。

また、シミュレートされたFPGAは、USBポートなどと直接通信できません。シミュレーションされたFPGAは「テストベンチ」と通信します。テストベンチは、FPGA(またはFPGAの一部)の入力を供給し、FPGAの出力を検証するVHDLまたはVerilogコードのチャンクです。テストベンチでは、浮動小数点数の使用、ファイルの読み取りと書き込み、合成が不可能なロジックの実行など、かなり複雑なことができます。


1
アルテラには、ModelSimを含むQuartusの無料版があります。ModelSimの無料バージョンはシミュレーション速度を制限し、Quartusの無料バージョンは合成に使用されるCPUコアの数を制限しますが、それ以外は完全に機能します。
akohlsmith 2013

1
アルテラModelSimは、同じデザインでのVHDLとVerilogの協調シミュレーションをサポートしていません。
shuckc 2013

3

USBポート(または他のハードウェア)に到着する信号に直接インターフェースするシミュレーターは知りません。

少なくとも理論的には、ポートに到着する信号を受け取り、シミュレーターが処理できるテストベンチファイルに変換するソフトウェアを作成することは可能です。残念ながら、私はこれを行うための既存のソフトウェアを知りません、そしてあなた自身でそれを書くことは明らかに自明ではないでしょう。


次に、エントリーレベルの、私のようなn00bs向けの低コストfpgaボードを入手するのが最善の方法です
WantIt

VPIなどのカスタムコードへのインターフェイスをサポートするシミュレーターがある場合、実際にはテストベンチファイルを通過する必要はありませんが、シミュレーターの実行がリアルタイムよりも桁違いに遅いことを考えると、対処が簡単かもしれません。シミュレーションの速度で読み取ることができるファイルにキャプチャされたデータ。
Chris Stratton

@ChrisStratton Imは、ファイルにキャプチャされたデータのアイデアに興味があります。そのためのリソースはありますか?ありがとう
WantIt

データソースとして使用する周辺機器に完全に依存します。
Chris Stratton、

3

協調シミュレーションインターフェイス(DPI、VPI、VHPI、FLI)を使用する必要があります。これにより、シミュレーターにフックし、シミュレーションで実行されているRTLとマシン上の実際のハードウェアをつなぐコードを記述できます。

(不十分に文書化されたインターフェースを除いて)発生する重大な問題は、同期とタイミングに関連しています。シミュレーションで実行されるRTLは、実際のハードウェアよりはるかに低速です。シミュレーション速度に合わせるには、外部インターフェイスとの対話をステップスルーできる必要があります。一部のハードウェアインターフェースはこれを嫌います!たとえば、TCPを使用している場合は、カーネルスタックのタイマーを変更して、誤った再送信などを回避する必要がある場合があります。

IcarusはVPIをサポートしていて無料なので、ライセンスにお金をかけずに実験できます。協調シミュレーションの一部を実行する既存のフレームワークを調べて、シミュレーターに明確な抽象化を提供することができます。そのようなフレームワークの1つは、シミュレータへのPythonインターフェイスを提供するオープンソースライブラリであるCocotbです。(免責事項:私はcocotbの開発者の一人です。)

関連のある例:昨日、ping要求に応答するためにRTLをいくつかノックアップし、TUNインターフェイスを開くテストベンチを作成しました。次に、pingコマンドを使用してインターフェイスにpingを実行すると、シミュレーションで実行されているRTLがpingを受信して​​応答します。テストベンチ全体は、50行未満のPythonです。この例のソースコードはGithubにあり、LinuxのIcarusで実行されます。


0

ほとんどの場合、シミュレーションで行うことはすべてシミュレーションに残ります。そこから実際のハードウェアにアクセスすることはできません。実際のハードウェアのシミュレーションモデルが必要です。

ただし、ある程度の努力を惜しまない場合は、ほとんどのシミュレータに任意のコードへのインターフェイスがあります。Verilogでは、私が理解しているように、これはかなり標準的なインターフェースであるため、Verilog側ではシミュレータ間を移植します。VHDLの国では、標準的な方法がありますが、大手ベンダーの少なくとも1つが独自の方法を持っています!

また、リアルタイムで(つまり、FPGAが実行する速度で)インターフェースする可能性は非常に低く、残りのシミュレーション(HDL)もリアルタイムで実行されないことにも注意してください。コメントに記載されているように、ビデオのリアルタイムシミュレーション処理は、この方法では実現できません。

個人的に、私はこれを試す必要がなかったので、ハードウェアのモデルを作成し、すべてVHDLで実行する方が生産的であることがわかりました。

しかし、シミュレーションを実行することの利点を見逃さないでください。物事が機能しているかどうか(コンパイルに数秒かかります)を見つけてビットストリームを構築し(コンパイルには数十分から数時間かかります)、ハードウェアでそれらを試すためのはるかに迅速な方法です。


正しくない、質問へのコメントを参照してください。
Chris Stratton

OK、私はもっと明確にすべきだった-「私はFPGAに新しい」レベルに私の答えを制限していました:)回答が更新されました
マーティン・トンプソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.