Вот осциллограммы из ChipScope Analyzer:
Нажмите для просмотра прикрепленного файла
Так выглядит описание в файле *.mhs:
CODE
BEGIN axi_datamover
PARAMETER INSTANCE = axi_datamover_y
PARAMETER HW_VER = 4.02.a
PARAMETER C_INCLUDE_MM2S = 0
PARAMETER C_INCLUDE_S2MM = 1
PARAMETER C_INCLUDE_S2MM_DRE = 0
PARAMETER C_S2MM_BTT_USED = 23
PARAMETER C_S2MM_INCLUDE_SF = 0
PARAMETER C_S2MM_BURST_SIZE = 256
PARAMETER C_INCLUDE_S2MM_STSFIFO = 1
PARAMETER C_S2MM_STSCMD_FIFO_DEPTH = 1
PARAMETER C_S2MM_STSCMD_IS_ASYNC = 1
PARAMETER C_M_AXI_S2MM_ID_WIDTH = 3
PARAMETER C_S2MM_ADDR_PIPE_DEPTH = 4
BUS_INTERFACE M_AXI_S2MM = axi4_0
BUS_INTERFACE S_AXIS_S2MM_CMD = axi_dma_ctrl_y_M_AXIS_CMD
BUS_INTERFACE M_AXIS_S2MM_STS = axi_datamover_y_M_AXIS_S2MM_STS
BUS_INTERFACE S_AXIS_S2MM = axi_stream_fft_core_0_Y_AXIS
PORT m_axi_s2mm_aclk = clk_75_0000MHzPLL0
PORT m_axis_s2mm_cmdsts_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axi_s2mm_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axis_s2mm_cmdsts_awclk = axi_dma_ctrl_y_axis_aclk_0
END
PARAMETER INSTANCE = axi_datamover_y
PARAMETER HW_VER = 4.02.a
PARAMETER C_INCLUDE_MM2S = 0
PARAMETER C_INCLUDE_S2MM = 1
PARAMETER C_INCLUDE_S2MM_DRE = 0
PARAMETER C_S2MM_BTT_USED = 23
PARAMETER C_S2MM_INCLUDE_SF = 0
PARAMETER C_S2MM_BURST_SIZE = 256
PARAMETER C_INCLUDE_S2MM_STSFIFO = 1
PARAMETER C_S2MM_STSCMD_FIFO_DEPTH = 1
PARAMETER C_S2MM_STSCMD_IS_ASYNC = 1
PARAMETER C_M_AXI_S2MM_ID_WIDTH = 3
PARAMETER C_S2MM_ADDR_PIPE_DEPTH = 4
BUS_INTERFACE M_AXI_S2MM = axi4_0
BUS_INTERFACE S_AXIS_S2MM_CMD = axi_dma_ctrl_y_M_AXIS_CMD
BUS_INTERFACE M_AXIS_S2MM_STS = axi_datamover_y_M_AXIS_S2MM_STS
BUS_INTERFACE S_AXIS_S2MM = axi_stream_fft_core_0_Y_AXIS
PORT m_axi_s2mm_aclk = clk_75_0000MHzPLL0
PORT m_axis_s2mm_cmdsts_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axi_s2mm_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axis_s2mm_cmdsts_awclk = axi_dma_ctrl_y_axis_aclk_0
END
Я использовал плату SP-605 со SPARTAN-6. Софт - ISE 14.7 (Planahead + XPS).
Чтобы нагляднее продемонстрировать проблему я специально перевёл датамувер в режим асинхронных команд, чтобы был дополнительный сброс (на всякий случай). Все сбросы датамувера я подключил к DIP-Switch на отладочной плате, и захватил осциллограммы сразу после снятия сброса. Хотя проблема проявляется и без всего перечисленного, но не так наглядно.
Кто-нибудь с таким сталкивался? Как лечить? Пока я делаю программный обход этой проблемы, добавляя в стрим избыточные данные (те самые 4 слова), которые будут потеряны при первой пересылке. При дальнейших пересылках всё работает как положено по датащиту.