
目次
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
に送る.
この時のdouta
はWRITE_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
が優先されるっぽいね.