BLOGANAの機能拡張を開発中
MITOUJTAGのBLOGANA機能を拡張しています。
BLOGANA(ブロガナ)というのは、XILINX FPGA内のBlockRAMに波形データを溜め込む高速なロジアナIPのことです。BLOGANAを埋め込んだFPGAは、MITOUJTAGで波形を読み出すことができます。
ChipScopeやSignalTAPのようなものです。
しかし、いままでのBLOGANAでは、ビット幅が72bit、サンプリング長が最大1024に限られていました。それは、XILINXのBlockRAMが36bit幅で512Wordの深さで、4個まで使うようになっていたからです。

BLOGANAはSpartan-3のころに開発したので、当時はBlockRAMが貴重で、あまりたくさんのメモリをロジアナ用に使えなかったためです。
しかし、AXIバスの動作を見ようとしたりすると、72bitじゃ足りません。SATAのプロトコルを見ようとすると長さが1024では足りまさえん。BLOGANAの機能拡張が望まれてきました。
今のXILINX 7シリーズにはBlockRAMは売るほど入っています。これを有効に活用してみることにしました。
新しいBLOGANAのComponent定義はこうなりました。
entity blogana2 is generic( BIT_WIDTH : integer := 72; --サンプリングする信号のBIT幅を指定(1以上、252以下で指定) SAMPLE_LENGTH : integer := 1024--サンプリングの長さ(word)を指定(1以上、8192以下で指定) ); Port ( CLK : in std_logic; TRIG : in std_logic; USER_OP : out std_logic_vector(19 downto 0); SAMPLE_EN : in std_logic; DIN : in std_logic_vector(255 downto 0); --BIT幅は常に256bit SAMP_FREQ : in integer range 0 to 2147483647; -- サンプリング周波数 BUSY : out std_logic -- 必ずどこかに出力すること ); end blogana2;
入力データ幅は256ビット。(ただしサンプリングできるのは252bitまで)
データ長は8192まで拡張できるようにしました。
データ幅やデータ長はGenericで渡します。
このGeneric文で指定したパラメータを見て、BLOGANA内部のマクロとFOR文が、BlockRAMをこんな形や
最大で、252bit 8192Word(縦7個・横16個)並べることができます。この場合、112個の18K BlockRAMを使います。
それでもArtix-7のXC7A100T中のBlockRAMの約40%しか使いません。
実際にカウンタを作ってBLOGANA_DINのbit251~220につないでキャプチャしてみたところ、
Cosmo-Zの波形Capture機能を実行したときの各部の波形を見てみます。
これは、16bit 8ch 2148ワードのデータをマルチプレクスしながらAXIインターコネクトに対して投げているところの波形です。
AXIバスや、周囲にの制御信号の動きを見る限り、ちゃんとキャプチャできているようです。
これからいろいろな波形を取ってデバッグしていきたいと思います。
| 固定リンク







コメント