Действительный сигнал при подключении асинхронного FIFO (BRAM) к протоколу AURORA
Я новичок в программировании на языке VERILOG. Во-первых, я хотел бы упомянуть о своем проекте, который я делаю. В моем проекте я хотел бы соединить две платы через протокол Aurora от Xilinx, а затем посмотреть, что происходит с моей прошивкой через Modelism. Общая схема моей установки:
data_in (96 бит) -> Асинхронный FIFO (BRAM) -> Протокол Aurora | ====>| Аврора протокол
Основываясь на примере протокола Xurox для протокола Aurora, я смоделировал тестовый стенд только для протокола Aurora и увидел, что все работает хорошо. Однако в моем проекте данные, которые мне нужно перенести с платы (1) на плату (2), имеют бит данных 96 бит. 96 бит больше, чем шина ширины TX_D (32 бита) протокола Aurora. Я решил использовать ядро FIFO IP с вводом данных (96 бит) и выводом данных (24 бита), а затем 24-битный выход переходит к TX_D Aurora протокол. Я выбираю 24-битный вместо 32-битного вывода для асинхронного FIFO, потому что Xilinx дает только пропорцию между входными и выходными данными, составляющую 1:2,1:4,1:8,… Чтобы имитировать соединение между двумя прошивками, я изменяю тестовый стенд протокола Авроры для моего проекта. Я вижу, что моя симуляция работает, но не очень хорошо. Поскольку действительный сигнал моего FIFO во время выполнения не был подтвержден, и это означает, что на выходе шины не было данных для передачи в TX_D протокола Aurora, и вы можете увидеть его в моей прошивке. Я не знаю причину, по которой действительный сигнал не был утвержден. Я также приложил мою прошивку в этом посте, чтобы вам было легко понять мой дизайн.
https://www.dropbox.com/s/oi6qeo3vbojjv8e/aurora_fifo.rar?dl=0
Это мой симулятор от ModelIsm:
Фигура симуляции fifo connect aurora
Пожалуйста, дайте мне какие-либо комментарии или предложить что-нибудь, если вы знаете, какие проблемы в моей прошивке. Кроме того, у меня также есть несколько вопросов:
- Я знаю, что в асинхронном FIFO частота чтения должна быть выше, чем частота записи. Однако, если частота чтения слишком велика, чем частота записи, это означает, что FIFO быстро опустеет?
- Я действительно задаюсь вопросом о часах, которые я должен выбрать для частоты чтения fifo. Должен ли я выбрать часы из USER_CLK протокола Aurora для частоты чтения или я могу использовать любую частоту чтения (отличную от USER_CLK)?
- Если я не хочу использовать пропорцию din и dout в качестве поддержки Xilinx. Что мне нужно изменить, и есть какие-либо примеры кода для этой модификации.
Некоторые параметры о IP-ядре FIFO и протоколах Aurora:
- Чип FPGA:
_ Virtex-5 XC5VLX155T.
- FIFO:
_ Асинхронный FIFO с 96-битным шумом и 24 выходами.
_ Часы записи и чтения часов составляют 96 и 120 МГц соответственно.
_ Синхронный сброс (для чтения и записи)
_ Использование правильного выходного сигнала.
- Аврора протокол:
_ Версия 5.3.
_ Использование потокового интерфейса, дуплексный режим, без контроля потока.
_ Две полосы и ширина полосы 2 байта
=> TX_D является 32-битным, а RX_D - 32-битным.
_ GTP_DUAL включает в себя GTP0_X0Y3 (полоса 1) и GTP1_X0Y4 (полоса 2) - источник синхронизации: GTPD3
=> Из-за дизайна этой платы я использую только 2 полосы для передачи и получения данных
_ GTREFCLK: 60 МГц
_ Скорость полосы: 2,4 МГц.