tmct-web

電子工作・DIYの製作例やノウハウを公開しています

【SRunner改】Raspberry PiでIntel製コンフィグレーションROMに書き込む

この記事は何?

IntelのSRAM系FPGAはコンフィグレーションROMとセットで使われることが多いですが、たいていROMへの書き込みはメーカー書き込み(=未書き込みのROMに業者で書き込んでから基板に実装する)か、何も書き込まない生ROMを基板に実装してFPGA経由で書き込むことがほとんどです。

この記事はRaspberry Piを使ってコンフィグレーションROMの信号を制御し、直接ROMに書き込むためのツール「SCONFIG」を紹介します。

SCONFIGについて

このツールはIntel(ALTERA)が公開している「SRunner」というツールをRaspberry Piに移植したものです。

SRunnerはパソコンのパラレルポートとIntel(ALTERA)のFPGAコンフィグレーションROM(EPCSシリーズ)を接続して書き込みを行うためのツールですが、下記の理由があり今となってはほぼ利用価値がないツールです。

  • パラレルポートが付いていて正常稼働するパソコンは新品での入手は不可。
    USB-パラレル変換もソフト的な互換がなく使えない。
  • 対応OSがWindows XPまで。

とくにWindows 2000 〜 Windows XPのパソコンはマザーボード上の電解コンデンサに問題があるものが多く、電解液が漏れて起動しなくなっている個体が多いため実機での利用はほぼ絶望的と考えて良いでしょう。

…とはいえコンフィグレーションROMに書き込むツールを製作するための資料は非常に乏しく技術資料としての価値は高いので、試しにRaspberry Piに移植してみたものを「SCONFIG」として公開します。

I/O駆動部分はRaspberianのGPIO標準ドライバを利用していますが、この部分をただのI/O駆動に書き換えることで一般的なマイコンなどにも容易にポーティングが可能です。

ソースファイルなど

ソースファイルとコンパイル済みのバイナリはGithubで公開していますので、そちらをご覧ください。(かなり昔に作ったツールのため著作者表示が「Mi-ke neko Tools」になってますが気にしないでください…。)

リンク
Github sconfig_tmct

ライセンス条項はSRunnerの条項に準拠します。著作権表示を消さない限り商用・私用問わず自由に利用して頂いて構いませんが、すべて自己責任にてご利用ください。

ポートアサイン

以下のようなポートアサインになっています。

このアサインは bb_gpio.c に定義しているので、ここを書き換えると別のポートにアサインすることもできます。

Pin No. ピン名 入出力方向 信号名 備考
7 GPIO4;GPIO_GCLK OUT EPCS_ASDI ASDI出力‥EPCSのASDIに接続
11 GPIO17;GPIO_GEN0 OUT EPCS_nCE nCE出力‥FPGAのnCEに接続
12 GPIO18;GPIO_GEN1 OUT EPCS_nCS nCS出力‥EPCSのnCSに接続
13 GPIO27;GPIO_GEN2 OUT EPCS_nCONFIG nCONFIG‥FPGAのnCONFIGに接続
15 GPIO22;GPIO_GEN3 OUT EPCS_DCLK DCLK出力‥EPCSのDCLKに接続
16 GPIO23;GPIO_GEN4 IN EPCS_CONFDONE CONFDONE入力‥FPGAのCONFDONEに接続
18 GPIO24;GPIO_GEN5 IN EPCS_DATAO DATAO入力‥EPCSのDATAに接続

インストール方法

適当なフォルダにプログラムファイル本体を入れるだけです。とくに設定などは不要ですが、他のタスクにGPIOリソースを使われている場合は使用できません。

GPIO制御はRaspberian標準のデバイスドライバを使用しており、ほかには何も必要ありません。

使い方

コマンドライン専用ツールです。パラメータを省略することはできません。

./mt_sconfig -<<command>> -<<EPCS density>> <<filename>>
Parameter
«command» EPCSに対して実行するコマンドを指定します。
program … 指定されたRPDファイルを書き込む
read … EPCSの内容を指定されたRPDファイルに保存する
verify … 指定されたRPDファイルの内容とEPCSの内容が一致することを確認する
erase … EPCSをイレースする(本家SRunnerにはない機能)
«EPCS density» EPCSのサイズを指定します。
EPCS4なら4、EPCS16なら16を指定します。
«filename» 書き込みターゲットとなるRPDファイルを指定します。
RPDファイルは標準では生成されないので、SOFファイルからQuartusのファイルコンバータで変換することで生成します。

正常に書き込みが完了すると、以下のように表示されます。下記はEPCS4に接続して書き込みを行った例です。

$ ./mt_sconfig -program -4 test_rbf.rpd
=======================================================
Mi-ke neko Tools :: SCONFIG Version 1.0
Copyright (c) 2015 Mi-ke neko Tools.
Based on SRunner(Windows) Version 1.2
Copyright (c) 1995-2015 Altera Corporation.
=======================================================
Operation: Programming EPCS
Info: Programming file: "test_rbf.rpd" opened.
Info: Driver opened.
Info: File size: 524288 bytes.
Info: Silicon ID - 0x12
Info: Serial Configuration Device - EPCS4
Info: Erasing. Please wait few minutes...
Info: Erase Done.
Info: Start programming process.
Info: Programming. Please wait few minutes...
Info: Programming successful.
Info: Driver closed.
Operation Completed!!!

注意事項など

GPIOを単純にPIO制御しているため、非常に遅いです。

ハードウェアの機能を使えばもっと高速に書き込みが可能なので、他の機種に移植する場合はそれを考慮に入れると良いでしょう。

最終更新: 2021-07-10
作成: 2021-07-03
  • Raspberry Pi
  • FPGA

© 2025 tmct-web All Rights Reserved.
Powered by Hugo. Theme by TechDoc. Designed by Thingsym.