FPGA-DIYプログラミング


9

私は数年前からマイクロコントローラーをプログラミングしており、デジタルデザインクラスを受講した後、FPGAを発見しました。異なるFPGAや開発ボードなどについて調査を行った後、最終的な「製品」の独自のバージョンを作成する方法がわからないので、私はまだ購入をためらっています。私はPIC、SAM、AVRなどを問題なくカスタムPCBに配置したので、心配する必要はありません。主な関心事は、メーカーのボードなしでFPGAをプログラミングすることです。

私の特定の質問:Quartus、Vivado、iCEcubeなどによって生成されたビットマップファイルを取得し、アドレス0から始まるSPIフラッシュメモリチップに(たとえば、FT2232Hを介して)書き込み、フラッシュメモリをFPGAのSPIピン(MODE構成が適切に設定されている)?

部分的な仮説をお詫びします。ラティスのダイアモンドプログラマーがそれをすべて行うと確信していますが、そのアプローチがさまざまなメーカーのFPGAで機能するのか、それとも、Quartusが書き込み中に「ウィンドウドレッシング」またはヘッダーをメモリに追加したのかと思いました。

質問を改善または明確にするために私にできることがあるか、またはFPGAプログラミングプロセスの大きなポイントを見逃していないかどうかを知らせてください。ありがとう!


「ビットマップ」とは、ビットストリームを意味しますか?
Eugene Sh。

この質問は以前に別の
電圧スパイク

1
最初のFPGAボードデザインでは、2つのデバイスプログラミング方法(およびベンダーのJTAGヘッダー)を提供することをお勧めします。必要に応じてMODEピンを変更できるように、ジャンパー位置を配置します。これらを台無しにするのは非常に簡単で、バックアップ計画を立てることは良いことです。また、INITとDONE(またはラティスがプログラミング状態を示すために使用するもの)のテストポイントを必ず提供してください。
フォトン

2
BGA、特にピン数の多いものを取り付けるために必要なプロセス制御は、QFPのようなものよりも厳密です。ボールの数が多いという事実は、ブリッジまたは接続不良の可能性が高いことを意味します。ボールが非表示になっているため、問題が発生する前に問題を検出することができません(X線がない場合)。問題。そして、コンポーネントを再マウントする場合、それをリボールする必要があり、より多くの装備が必要です。FPGAも損傷したくない高価なチップです。大きなBGAは、PCB予熱器などが必要になる場所です。
DKNguyen

1
私は、技術者が一日中手直し以外に何もしなかった場所で働いていました。彼らはホットエアステーションがあり(温度制御が厳しく、ヒートガンより信頼性があり)、BGAを手ではんだ付けすることはできませんでした。私は彼らが予熱器を持っていたとは思わないので、それを試すつもりなら予熱器を手に入れて安価なチップを使用してください(おそらくデイジーチェーンのダミーBGAパッケージでさえ、それを行う前にそれを釘付けするまで電気的に接続を確認できます)実物)。
DKNguyen

回答:


12

はい、問題なく動作します。

実際、ほとんどのFPGAの開発ツールでは、FPGA自体のJTAG接続を介して外部フラッシュを直接プログラムできるため、フラッシュ用の個別のプログラミングインターフェイスは不要です。


1
また、ラティスマッハX02のように、オンボードフラッシュを備えているため、ラティスプログラミングポッドに接続するために必要な抵抗と5x2ヘッダーがいくつか必要です。
Spehro Pefhany

Vivado / QuartusなどのツールからJTAGを介してフラッシュを直接プログラムできることを知っていました。ベンダー固有のケーブルを購入する必要なくそれを実行できることを望んでいました。FT2232Hを使用してビットストリームを書き込むだけでなく(ビットマップ?)私自身。チップはQuartusでサポートされているとは思いませんし、Vivadoでオープンにサポートされていないと思います(NexysボードとBasysボードで使用されていますが)。
ブレイクルーカス

1
はい、他の方法でビットファイルを使用してフラッシュをプログラムできます。MCUのプログラマの1人がおそらくそれを実行できます。私のSegger J-linkは確かに可能です。
DKNguyen

@Toor:確かにそれはベンダー固有のケーブルではありませんが、ベンダーツールでハードコーディングされたサポートがまだあり、SeggerはFT2232Hよりもかなり高価です。
Ben Voigt

2
ほとんどすべての主要ベンダーがエンジニアリングドキュメントを提供しており、統合システムやテストリグでは望ましい場合があるため、特定のアップロードビットストリームをパーツ(FPGAとカスタム構成フラッシュの両方)にカスタムツールでアップロードできます。(特に最初は)ベンダーがサポートするギアを使用するのが最も簡単かもしれませんが、私は長年にわたって特定のプロジェクトの代替案を何度も実装しています。元のFPGAボードプロジェクトのより難しい部分は、ボード上でFPGAが必要とするすべてのサポートである可能性があります-多くの場合、いくつかの異なる電圧に対してルーティングおよびバイパスする多くの電源ペア。
Chris Stratton、

3

「によって生成された[sic]ビットマップ[sic]ファイル」と言った場合、正しいものを選択する限り、答えは「はい」です。生成されたファイルが1つだけではないため、明確な記事を使用してわずかなエラーが発生しました。

たとえば、QuartusはSOF、POF、およびJICファイルを生成できます。最後の1つは、FPGA JTAGを介した間接プログラミングに使用するものです。それをSPIフラッシュに書き込むことは役に立ちません。SOFは、FPGAでデザインを一時的に実行するためにJTAGを介してロードするためのものです。POFは、フラッシュチップにロードする必要があるものです。

異なるベンダーのそれぞれからの異なるファイルの意味についての多くの有用な情報については、FPGA:ビットストリームとSRAMオブジェクトファイルを参照してください。


1

フラッシュメモリをFPGAのSPIピンに接続した場合(MODE構成が適切に設定されている場合)、FPGAは機能しますか?

私の質問を正しく理解した場合、FPGA構成(たとえば、コンパイルされたHDLモデル)をSPI EEPROMまたはSPIフラッシュに書き込み、FPGAがSPI ICのデータを使用してそれ自体をプログラムするようにします。

(Dave Tweedの答えを正しく理解した場合、彼はあなたの質問を別の方法で理解しました。)

少なくとも多くのSPIフラッシュメモリデバイスは機能しません。SPIフラッシュメモリICは、ICからデータが読み取られるように特定の波形(たとえば、読み取られるアドレス)を送信する必要があるためです。

この波形は、すべてのフラッシュメモリデバイスで同じではありません。SDメモリカード(SPIフラッシュメモリとしても使用可能)だけを見ている場合でも、カードがデータを読み取る前に異なる波形をカードに送信する必要がある2つのバリアントが見つかります。

FPGAのモードピンを正しく設定すると、FPGAは一部のシリアルメモリデバイスにデータを送信するように指示する波形を送信します。ただし、ICごとに異なる波形が必要なため、波形はすべてのフラッシュICによって理解されるわけではなく、特定のタイプによってのみ理解されます。

アルテラがFPGAと互換性のある特別なフラッシュまたはEEPROM ICを製造していることを知っています。


(私の知る限り)構成プロトコルとしてSD / MMCをサポートするFPGAがないため、SDカードは機能しません。ほとんどのFPGAはAT24 / AT26 / AT45に準拠しています。
Dmitry Grigoryev

1

公式のFPGAプログラミングツールを使用せずにFPGAビットストリームをフラッシュに書き込む場合は、そのビットストリームファイルを、生のバイナリ、Intel HEX、Motorola SREC()。これにより、FPGAビットストリームに含まれる可能性のある独自のヘッダーが削除されます。

このようにして、フラッシュメーカーのツール(または独自のツール)を使用してフラッシュをプログラムしたり、FPGAビットストリームで事前にプログラムされたフラッシュチップを注文したりできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.