私の現在の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の内容をロードする
3
A
答えて
4
編集:これを行うにはアイス・ストーム中のツールが用意されました:icebram
使用例:
は、合成用のランダムhexファイルを生成します。
icebram -g 8 512 > datafile_syn.hex
実行合成(Yosys)と&経路(アラクネ-PNR)を配置します。私たちは8ビット幅、深×512ワードのメモリを持っていると言います。 Verilogコードで
$readmemh("datafile_syn.hex", memory);
を使用してメモリを初期化してください。生成アイス・ストームの.ASCファイル内のメモリ内容を交換:
icebram datafile_syn.hex datafile.hex <synout.asc> final.asc
パック
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. ドッカーdiffが新しいファイルに変更内容を示していない
- 2. AjaxがData変数の内容を変更しています
- 3. Android:タブの内容を更新しています
- 4. ページを再ロードせずにリストの内容を変更する
- 5. Verilogで推定ブロックRAM(BRAM)の内容を初期化する方法
- 6. C++:ダンプRAMの内容
- 7. C#リストの更新としてフォームの内容を更新する
- 8. アセンブリファイルの内容を変更します
- 9. MPMoviePlayerControllerの内容を変更します
- 10. プリズム - シェル内にusercontrolの内容をロードしていない
- 11. 更新内容
- 12. 内容に基づいてuiscrollviewのサイズを変更します
- 13. 内容をプログラムで変更した後にNSTokenFieldを更新する
- 14. イベントハンドラを使用してボタンの内容を変更します
- 15. ボタンを押してUITextViewの内容を変更します。
- 16. テーブルをループしてセルの内容を変更する
- 17. Android:ラジオボタンを使用してテキストビューの内容を変更する
- 18. 新しいウィンドウと同じ内容と小さな変更
- 19. ios - ブロック内のUIを更新する
- 20. iCE40 I/Oブロックとパッケージピンの対応
- 21. フラグメントの内容を更新する
- 22. JQuery - テーブルの内容を更新する
- 23. MergeAdapterの内容を更新する
- 24. zenityウィンドウの内容を更新する
- 25. プロパティの内容を更新するインスタンス
- 26. jQuery - FileUploaderの内容を更新する
- 27. パネルの内容をブロックするが、ページ全体をブロックしない方法
- 28. エレメントの内容を変更してください
- 29. テキストエレメントの内容を変更してください。
- 30. ファイルをパディングして内容を変更しますか?
こんにちはクリフォード、返信いただきありがとうございます。私の目的のために、別の解決策が働くと思います。私はビットストリームを分析/変更するツール(人間の介入によって)を使用して解決策を見つけることは可能かもしれないと思う。 – scd
元のビットストリームのRAMの最初の内容を知っているので、ブロックRAMがどのように配置されているかを判断する必要があります(人間の介入によって)。ブロックRAMの配置方法が分かれば、 RAMの内容を更新し、それに応じてビットストリームの内容を書き換えます。 すでに書いたビットストリーム解析ツールに基づいて、私が望むことを行うためのツールフローを書くことができたと思いますが、いくつかのヒントやガイダンスが必要な場合があります。 – scd
@scd私に電子メールで[email protected]または[email protected]までお問い合わせください。 – CliffordVienna