1.
カメラ・インターフェース用AXI4-Stream IPは、FIFOを持たない。FIFOはAXI VDMA の C_S2MM_LINEBUFFER_DEPTH (”LogiCORE IP AXI Video Direct Memory Access v5.04a Product Guide PG020 December 18, 2012”の86ページの”C_S2MM_LINEBUFFER_DEPTH”参照)でFIFO深度を決定できるFIFOを使用する。つまり、AXI VDMAの s2mm_buffer_full がアサートされたらデータ転送が間に合わずにエラーということだ。これは、カメラからくるデータの転送速度は決まっているので、これ以下のストリーム転送しか出来ない場合は当然エラーとなる。
1.改 カメラ・インターフェース用AXI4-Stream IPは同期FIFOを持ち、少なくとも同期FIFOがEMPTYでなくなった状態まで、カメラ・データが溜まった後で、TVALIDをアサートする。
2.1.の前提があるので、AXI4-Stream のTREADY の途中でのディアサートは想定しない。最初にカメラのフレームを転送する最初には、TREADY を確認しアサートされていたら、AXI4-Stream でカメラのフレームの画像データを転送する。TREADY がアサートされていない場合は、そのフレームはAXI4-Stream で転送しない。
2.改 同期FIFOを入れることになったので、AXI4-Stream のTREADY の途中でのディアサートにも問題なく対応できる。ただし、待てる範囲はFIFOの容量による。
3.AXI VDMAの s_axis_s2mm_aclk は入力で、カメラ・インターフェース用のAXI4-Stream IPからクロックを入力することができる。カメラからのPCLKを入力することで、カメラ・インターフェース用のAXI4-Stream IPのクロックドメインはPCLKの1つとすることができる。
4.カメラからのデータはRGB565 なので、2クロックで1つのピクセルデータが転送される。よって、AXI4-Stream のTVALID のアサートは s_axis_s2mm_aclk の2クロックについて1回となる。
entity mt9d111_inf_axi_stream is
generic(
-- Master AXI Stream Data Width
C_M_AXIS_DATA_WIDTH : integer range 8 to 1024 := 24
);
port (
s2mm_aclk : out std_logic;
s2mm_prmry_reset : in std_logic;
s2mm_fsync : out std_logic;
-- Master Stream Ports
-- m_axis_aresetn : out std_logic;
m_axis_tdata : out std_logic_vector(C_M_AXIS_DATA_WIDTH-1 downto 0);
m_axis_tstrb : out std_logic_vector((C_M_AXIS_DATA_WIDTH/8)-1 downto 0);
m_axis_tvalid : out std_logic;
m_axis_tready : in std_logic;
m_axis_tlast : out std_logic;
init_done : in std_logic; -- PS部の初期化終了
-- MT9D111 Camera Interface
pclk_from_pll : in std_logic; -- PLLからMT9D111のxck に出力するクロック
pclk : in std_logic; -- MT9D111からのピクセルクロック入力
xck : out std_logic; -- MT9D111へのピクセルクロック出力
href : in std_logic;
vsync : in std_logic;
cam_data : in std_logic_vector(7 downto 0);
standby : out std_logic; -- STANDBY出力(ディスエーブル、0固定)
pfifo_overflow : out std_logic; -- pfifo overflow
pfifo_underflow : out std_logic -- pfifo underflow
);
end mt9d111_inf_axi_stream;
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | - | - | - | - |