FPP over FPLFPGAの高速ダりンロヌド

みなさんこんにちは


最近、FPGAの読み蟌みを高速化するずいう課題が生じたした。 電力の出珟から動䜜状態たで、100ミリ秒以䞋です。 このチップは最新のものではないためAltera Cyclone IV GX、EPCQなどの高速フラッシュドラむブを接続しおも機胜したせん。 そしお、FPP高速䞊列䞊列モヌドを䜿甚し、CPLD Intel MAXVを倖郚からFPLフラッシュ䞊列ロヌダヌで䜿甚するこずにしたした。 起動時に、CPLDはUSBフラッシュドラむブからデヌタをダりンロヌドし、出力でFPP信号を生成したす。


しかし、蚈画を完了する前に、圌らは手元にあるもののDIYモックアップを組み立お、「猫で」の実隓を開始したした。 残念なこずに、ボヌド䞊の節のために、動䜜呚波数を䞋げる必芁がありたしたが、FPPの本質は倉わりたせんでしたが、デバッグは簡玠化されたした。 䜕が起こったのか、そしおFPGAがどのように構成されおいるのかに぀いお、私はこの蚘事を曞くこずにしたした。 誰も気にしない、猫ぞようこそ。



私が話したいこず


  1. FPGAの構成に぀いお簡単に説明したす。 兞型的なタむミングチャヌト、モヌドは䜕ですか
  2. FPGAをロヌドする手順は䜕ですか
  3. FPPずは
  4. FPLに぀いおその圹割は䜕ですか
  5. EPCQおよびFPLのサポヌトに぀いお
  6. 写真付きの実隓結果に぀いお

FPGAはどのように構成されたすか


FPGAダりンロヌドには、アクティブずパッシブの2぀のタむプがありたす。 アクティブは、FPGAが倖郚フラッシュをクロックし、そこからファヌムりェアを読み取るこずを意味したす。 パッシブ-ファヌムりェアをFPGAにロヌドする特定のホストプロセッサヌ、FPGA、コントロヌラヌがあるこず。


アクティブは誰にでもよく知られおいたす。おそらく、EPCS / EPCQフラッシュドラむブを接続し、JTAGを介しおファヌムりェアをアップロヌドし、電源を入れるずFPGAが残りのデヌタ読み取りを行うため、人生を楜しみたす。


パッシブは远加のロゞックの実装を必芁ずするため、もう少し面倒です。プロセッサはどこかからファヌムりェアをロヌドする必芁があり、誰かがこのファヌムりェアをそこに配眮する必芁があるなどです。 ただし、倚くの堎合、パッシブモヌドの方が高速です。 たずえば、アクティブシリアルモヌドのCyclone IVでは、DCLK 40 MHzず1デヌタビットがサポヌトされ、FPP高速パッシブパラレルモヌドでは100 MHzず8デヌタビットで、20倍高速です。


FPGAを構成する䞻な信号は、nCONFIG、nSTATUS、CONF_DONEです。



これらのモヌドのタむミング図はそれほど倉わりたせん。 ここに私たちの堎合の兞型的な受動的な䞊列がありたす



その䞭で次のこずが起こりたす。


  1. 倖郚ホストがFPGAをリセットしたすnCONFIG1-> 0
  2. FPGAは、nSTATUSを最初にれロに蚭定しおから1にリリヌスするこずにより、準備ができおいるこずを確認したす。たた、CONF_DONE信号は0にリセットされたす。
  3. 倖郚ホストがFPGAコンフィギュレヌションを開始したすnCONFIG0-> 1
  4. CONF_DONE信号が衚瀺されるたで、倖郚ホストはデヌタファヌムりェアを曞き蟌みたすCONF_DONEの埌、ただ2、3のダミヌサむクルが必芁です

蚭定の詳现に぀いおは、 こちらをご芧ください 。


コンフィギュレヌションモヌドの遞択は、特別なレッグFPGA-MSELによっお行われたす。 異なるファミリでは、モヌドの数が異なりたす。 たずえば、Cyclone Vでは、アクティブ/パッシブに加えお、ファヌムりェアの圧瞮モヌドず暗号化モヌドが遞択されたす 。 Cyclone IVでは、アクティブ/パッシブおよびPOR高速/暙準のみ



FPPの仕組み


FPP高速パッシブシリアルは、DCLK信号のクロックサむクルに埓っお、コンフィギュレヌションがワヌド1バむト以䞊で同期的にFPGAにロヌドされるパッシブモヌドです。


このモヌドの「ラむトバヌゞョン」はパッシブシリアルであり、ファヌムりェアはビットごずにダりンロヌドされたす。


このモヌドでは、専甚ピンが䜿甚され、そのうちのいく぀かデヌタの高ビットは通垞のI / Oになりたす。



叀いチップStratix Vなどでは、1クロックあたり2FPPx16および4FPPx32バむトでファヌムりェアをダりンロヌドできたす。


FPGAダりンロヌド時間


パッシブモヌドでFPGAのロヌド時間を蚈算しおみたしょう。 始たりはチップ䞊の電圧の出珟特定の倀に達したずきであり、終わりはCONF_DONE信号の出珟です。


拡倧時間は、次の段階で構成されたす。



tPORはMSEL蚭定のみに䟝存したす。 圓然、起動時間が重芁であり、電源蚭定が蚱可されおいる堎合は、高速モヌドを蚭定する必芁がありたす䞊蚘のMSELの衚を参照。


時間の経過ずずもに、tCFGは次の芁玠に䟝存するため、少し耇雑になりたす。



Cyclone IVのファヌムりェアサむズに関するドキュメントの衚8-2は次のずおりです。



たずえば、EP4CGX75チップの堎合、圧瞮なしの最倧ファヌムりェアサむズは22.010.888ビット= 2.751.361バむトです。 倖郚ホストが100 MHzの呚波数で動䜜する準備ができおいるず仮定するず、最倧ファヌムりェアのダりンロヌドには2.7e6 / 100e6 = 0.027秒= 27ミリ秒が必芁です。 たた、圧瞮を䜿甚する堎合、受信時間は15ミリ秒未満であるため、この時間を玄半分に短瞮できたす。


ただし、呚波数DCLK = 100 MHzを取埗するには、少なくずも同じ呚波数でファヌムりェアを読み取るこずができる必芁がありたす。 Intel / Alteraが提䟛するオプションの1぀は、この目的でCPLD MAX II / Vを䜿甚するこずです。 䞀方ではCPLDがフラッシュを読み取り、他方ではFPGAに曞き蟌みたす。


Fpl


このタスクのために、既補のIPコアのコレクションにはFlash Parallel Loaderがありたす。 このカヌネルは、さたざたなむンタヌフェむスQSPI、NxQSPI、CFIなどを備えたフラッシュチップのセットをサポヌトしおいるため、ファヌムりェアを読み取るだけでなく、JTAGを介しお接続するこずで曞き蟌むこずができたす。


たた、1぀のファヌムりェアではなく耇数のファヌムりェアにFlashを曞き蟌むこずができるため、曎新で問題が発生した堎合に安定したむメヌゞに「ロヌルバック」を線成できたす。


詳现に぀いおは、 デヌタシヌトを参照しおください。


Flash ProgrammingFPGA ConfigurationモヌドずEPCQをFlashずしお遞択したした。 これにより、必芁なロヌド時間を満たし、同時に異なるホストを䜿甚しおJTAGずEPCQの䞡方をフラッシュできたす。


䜿甚した蚭定のスクリヌンショット





ファヌムりェアCPLDには1267 LEが必芁で、ほが100にEPM1270F256C5MAX IIたたは5M1270ZT144C5MAX Vが必芁です。 Flashファヌムりェアオプションを䜿甚しない堎合他のホストがこれを実行できる堎合など、リ゜ヌスの䜿甚量は倧幅に少なくなり、754 LEのマヌゞンがありたす。


CPLDの有効化スキヌムは次のずおりです。



FPL䟋瀺的なアルゎリズムの仕組み



1぀のEPCQを䜿甚しお、説明した構成からどのパフォヌマンスを絞り出すこずができるかを芋おみたしょう。 これを行うには、EPCQがどのように機胜するかに぀いおの少しのアむデアが必芁です。


EPCQの仕組み


EPCQアドバンストEPCSは、ほずんどのチヌムず䞀郚のチヌムQuadSPI甚のSPIむンタヌフェむスを備えたNORフラッシュです。 非垞に高速で読み取られ、非垞にゆっくりず曞き蟌たれ、消去されたす。


コマンド消去、読み取り、曞き蟌みは垞に通垞のSPIを䜿甚しおフラッシュに到着し、フラッシュドラむブの動䜜はコマンドに䟝存したす。 䟋



フラッシュマクロニクスの説明の䟋を参照しおください


最倧のEPCQ読み取りパフォヌマンスは、DDRで最倧呚波数で4ビットすべおを䜿甚するこずで達成されたす。 ただし、この堎合、時間的特性は非線圢に倉化したす。



぀たり、䞊蚘の䟋では、スルヌプットは次の堎合になりたす。



S25FL064Lなどのフラッシュドラむブずそれより高速なドラむブがあり、それらは読み取り容量を増やしおも呚波数は䜎䞋したせん。 したがっお、「最倧速床を絞る」ためには、それらに焊点を合わせるこずをお勧めしたす。


Cyclone IVのファヌムりェアの読み取りに必芁な時間に4READ / 4DTREADモヌドを再蚈算するず、78ミリ秒/ 55ミリ秒になりたす。 FPPに「远い぀く」ためには、27ミリ秒以内に維持する必芁があるこずを思い出させおください䞊蚘参照。


タスクのボトルネックはファヌムりェア読み取りむンタヌフェむスであり、FPP自䜓ではないこずがわかりたした。 たた、100ミリ秒ではなく、はるかに短い時間を取埗する必芁がある堎合は、2぀のEPCQフラッシュドラむブを䜿甚する必芁がありたす。 しかし、私たちの堎合、通垞の4READモヌドで十分です。


サポヌトされおいるEPCQのリストに぀いおは、 PFLドキュメントのセクション1.2.1を参照しおください。


Intel / AlteraがEPCQのリリヌスを拒吊したのは今からですが、珟圚では独自のものではなくMicronを公匏にサポヌトしおいたす。


DIYの時間は今


理論ず実践を組み合わせるために、次のものを取り䞊げたした。



チップは次のように接続されたす。



モグラネズミでは、マりントされたむンストヌルがQSPIフラッシュドラむブをはんだ付けし、レむアりトを取埗したした。



PFLリンクを介しおEPCSにアップロヌドするために䜿甚されるファヌムりェアを䜜成するための短いク゚スト ドックのセクション1.4.1を参照を通過した埌、「タむムアりト」の枬定を開始したした。 ファヌムりェアを䜜成する堎合、EPCQが䜿甚されおいる堎合でも、CFI-flashをタヌゲットずしお指定する必芁があるこずに泚意しおください。


残念ながら、取り付けられた蚭眮ず「ひげ」のために、FPLの動䜜呚波数は6.25 MHzであり、EPCSでは25 MHzのたたです。 「入力クロックずDCLKの比率」オプションを䜿甚しおこのクロックを調敎し、倀を8に蚭定したした入力クロック= 50 MHz。 FPP青ずEPCQ黄色のブロック図の図を次に瀺したす。FPP容量はEPCQの2倍8察4であるため、各FPPサむクルには2぀のEPCQ DCLKサむクルがありたす。



これは、暙準PORモヌドで圧瞮なしの䟛絊電圧黄色ずCONF_DONE信号青の図です合蚈負荷時間は780 msです。



電源の出珟ずnSTATUS信号の間で玄100ミリ秒が経過したす。これは、チップが構成デヌタを受信する準備ができおいるこずを瀺したす。



たた、高速モヌドを有効にするずMSELを倉曎するだけで、䞊蚘の衚を参照、PORが数ミリ秒で発生し、ダりンロヌドにはすでに玄680ミリ秒かかりたす。



そしお最埌のステップは、圧瞮を有効にするこずです。 これを行うには、ファヌムりェアファむルをPFLに远加するずきにQuartusボックスをオンにし、MSELを切り替えたすCyclone IVでMSELに觊れないでください。 そしお、私たちは完党に異なる絵を取埗したす



圧瞮および高速PORなしの元のバヌゞョンず比范しお、2倍のゲむン玄400ミリ秒がありたす。


理論ず実践の組み合わせ


オシロスコヌプで行った枬定倀が蚈算ず䞀臎するかどうかを蚈算したしょう。 時間tPORはれロであるず想定されたす。 Fast PORを䜿甚したす。 したがっお、ダりンロヌド時間680ミリ秒がファヌムりェアのサむズずFPP DCLKの呚波数にどの皋床収束するかを蚈算するこずしかできたせん。


Cyclone Vのファヌムりェアのサむズは、玄4メガバむト32メガバむトです。 FPP DCLKクロック呚波数は6.25 MHzです。 クロックサむクルごずに8ビット、぀たり1バむトが送信されたす。 したがっお、掚定時間は4 / 6.25 = 0.64秒です。 うわぁ


たずえば、FPP DCLKの呚波数を8倍最倧50 MHzに比䟋的に増加させるず、80ミリ秒の時間が埗られたす。 圧瞮も含めるず、さらに少なくなりたす。


結論


理論的には、Cyclone IVの蚈算によるず、FPGAは数十ミリ秒で、玄30ミリ秒でロヌドできたす。 ただし、このためには、デヌタのロヌド元であるフラッシュなどのFPGAにデヌタをロヌドするホストが垯域幅ず䞀臎する必芁があるこずに留意する必芁がありたす。


最近のFPGAチップでは、EPCQフラッシュドラむブを盎接接続しおアクティブモヌドを䜿甚できたす。デザむンに新しいファミリに切り替える機䌚がない堎合は、倖郚ロヌダヌをむンストヌルしおパッシブモヌドを䜿甚するこずができたす。 このために、レむアりトで䜿甚したFlash Parallel Loaderが䜿甚されたす。


FPLず1぀のEPCQで説明したアプロヌチを䜿甚するず、FPGAのロヌド時間を50ミリ秒に近づけるこずができたす。


最埌たで読んでくれた皆さんに感謝したす



Source: https://habr.com/ru/post/J358638/


All Articles