Alveo U250でXPM_MEMORY_SPRAMを使いたい(1)

  • Mar 24, 2023
post-thumb

Alveo U250でXPM_MEMORY_SPRAMを使いたい

ちょっとAlveo U250でRAMを指定のファイルで初期化することにした. Alveo U250はultrascale+をベースに云々ってサイトに書いてあるので,XPM_MEMORY_SPRAMが使えそう. ECC周りは不要なので,まあ無視します. それ以外の部分ちょこちょこ使ってみましょう.

公式ドキュメントを読む

UltraScale Architecture Libraries Guide (UG974):XPM_MEMORY_SPRAM

この記事ではまずドキュメントの軽い日本語化を目指すかなあ.

XPM_MEMORY_SPRAMとは

Parameterized Macro: Single Port RAM

って書かれているわね.まあただのSingle PortのRAMでしょって思っている.

Families: UltraScale, UltraScale+

なるほど?ということは,それなりのサイズのものにしか使えないのかな?

readについて

全部クロック同期ですね,当たり前だけど. addraにアドレスを送るとdoutaに値が返ってくる.このタイミングはenaで告知されるのと,遅延量はREAD_LATENCY_Aに依存するらしい.

writeについて

weaを立てると,書き込み.enaも立てましょう. addraにアドレスを送って,データはdinaに送る.

この時のdoutaWRITE_MODE_Aってパラメータで振る舞いを変えられるらしい.

リセットについて

rstaを立てると,同期的にREAD_RESET_VALUE_Aで設定した値になるらしい.ちなみにこれはREAD_LATENCY_Aに依存しない.

出力維持

regceaを立ててrstaを下げると,最後の出力をそのままし続けてくれるっぽい.

サイズについて

MEMORY INIT PARAMを使う時,メモリサイズは最大でも4K[bits]らしい. MEMORY INIT PARAMについては,説明読んでもよくわかっていないので,必要になるまで一旦スルー.

その他

Memory initialization with Asymmetric Byte Write Enableはサポートしていないとのこと. Asymmetric Byte Write Enable自体を知らないので,よくわからん.Asymmetricは非対称.うーんどういうこと?

MEMORY_INIT_FILE

初期化するときに,hoge.memみたいなやつで初期化したいので,調べる.

拡張子

***.memでないと怒られる.たとえばhello.mifだと怒られる.

memファイルの書き方

ASCIIで16新数表記.幅はメモリに合わせればよさそう. あと当然だけど,Vivado projectにmemファイルを入れましょう.

MEMORY_INIT_PARAMについて

MEMORY_INIT_PARAMも存在するが,これは""にしないといかん. MEMORY_INIT_PARAMが優先されるっぽいね.

次の記事

次の記事:Alveo U250でXPM_MEMORY_SPRAMを使いたい(2)