2016-04-25 5 views
3

私の現在のiCE40 FPGAプロジェクトには、8K×2ブロックRAMで構成された4Kx8 RAMに接続された8ビット(ソフトIP)マイクロプロセッサが含まれています。 FPGAを再コンパイルまたはリルートする必要なしに、新しいプログラム(8ビットマイクロの場合)を4kx8 RAMにロードすることができると便利です。提案されたフローでは、a)FPGAネットリストを解析して、2つの2Kx2ブロックRAM(4Kx8 RAMを構成する)が配置され、どのように配置されているかを把握する必要があります。 b)新しいプログラム(8ビットマイクロの場合)を含むインテル16進ファイルを8つのセクションに分割します。 c)ビットストリーム内の8つのブロックRAMデータセクションのそれぞれを見つけ、各セクションの現在の内容を新しいプログラム内容で置き換える。 icestormまたはyosysプロジェクトの誰かが、この提案されたフローが可能かどうか(または解決策がすでに存在するかどうか)についてコメントしてください。iCE40ビットストリームを変更して新しいブロックRAMの内容をロードする

答えて

4

編集:これを行うにはアイス・ストーム中のツールが用意されました:icebram

使用例:

  1. は、合成用のランダムhexファイルを生成します。 icebram -g 8 512 > datafile_syn.hex

  2. 実行合成(Yosys)と&経路(アラクネ-PNR)を配置します。私たちは8ビット幅、深×512ワードのメモリを持っていると言います。 Verilogコードで$readmemh("datafile_syn.hex", memory);を使用してメモリを初期化してください。

  3. 生成アイス・ストームの.ASCファイル内のメモリ内容を交換:icebram datafile_syn.hex datafile.hex <synout.asc> final.asc

  4. パックicepackのバイナリビットストリームに最終アイス・ストームの.ASCファイル。

datafile.hexが新しくなったら、手順3.と4.を繰り返してください。


理論的にはこれはもちろん可能ですが、まだ実装されていません。次の変更が必要になります。

1)Yosysのmemory_bramは、元のデザインのメモリが個々のSB_RAM40_4Kセルにどのように分割されているかの情報を何らかの形で保存する必要があります。好ましくは、この情報をセルの属性。

2)Arachne-pnrはすでにplacelistを作成できます。これは、1)の属性からの情報と関連する配置情報を含むファイルも書き込むように拡張する必要があります。

3)この情報を使用してIceStorm .ascファイルのメモリ内容を修正するためのツールを作成する必要があります。

私は1)できますが、他の誰かが2)と3)をしてくれればいいと思います。

+1

こんにちはクリフォード、返信いただきありがとうございます。私の目的のために、別の解決策が働くと思います。私はビットストリームを分析/変更するツール(人間の介入によって)を使用して解決策を見つけることは可能かもしれないと思う。 – scd

+1

元のビットストリームのRAMの最初の内容を知っているので、ブロックRAMがどのように配置されているかを判断する必要があります(人間の介入によって)。ブロックRAMの配置方法が分かれば、 RAMの内容を更新し、それに応じてビットストリームの内容を書き換えます。 すでに書いたビットストリーム解析ツールに基づいて、私が望むことを行うためのツールフローを書くことができたと思いますが、いくつかのヒントやガイダンスが必要な場合があります。 – scd

+0

@scd私に電子メールで[email protected]または[email protected]までお問い合わせください。 – CliffordVienna

関連する問題