« CosmoZの低速サンプリング | トップページ | Cosmo-Zの大幅な機能強化 »

2015.04.15

BLOGANAの機能拡張を開発中

MITOUJTAGのBLOGANA機能を拡張しています。

BLOGANA(ブロガナ)というのは、XILINX FPGA内のBlockRAMに波形データを溜め込む高速なロジアナIPのことです。BLOGANAを埋め込んだFPGAは、MITOUJTAGで波形を読み出すことができます。

ChipScopeやSignalTAPのようなものです。

しかし、いままでのBLOGANAでは、ビット幅が72bit、サンプリング長が最大1024に限られていました。それは、XILINXのBlockRAMが36bit幅で512Wordの深さで、4個まで使うようになっていたからです。

Blogana1


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をこんな形や

Blogana2

こんな形

Blogana3


に並べてくれるというわけです。

最大で、252bit 8192Word(縦7個・横16個)並べることができます。この場合、112個の18K BlockRAMを使います。

Blogana4

それでもArtix-7のXC7A100T中のBlockRAMの約40%しか使いません。

実際にカウンタを作ってBLOGANA_DINのbit251~220につないでキャプチャしてみたところ、

Blogana5

ちゃんと動いているようなので、早速、実戦に投入してみます。

Cosmo-Zの波形Capture機能を実行したときの各部の波形を見てみます。

Cosmozcaptureblogana2

これは、16bit 8ch 2148ワードのデータをマルチプレクスしながらAXIインターコネクトに対して投げているところの波形です。

AXIバスや、周囲にの制御信号の動きを見る限り、ちゃんとキャプチャできているようです。

これからいろいろな波形を取ってデバッグしていきたいと思います。

|

« CosmoZの低速サンプリング | トップページ | Cosmo-Zの大幅な機能強化 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« CosmoZの低速サンプリング | トップページ | Cosmo-Zの大幅な機能強化 »