Действительный сигнал при подключении асинхронного 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

Пожалуйста, дайте мне какие-либо комментарии или предложить что-нибудь, если вы знаете, какие проблемы в моей прошивке. Кроме того, у меня также есть несколько вопросов:

  1. Я знаю, что в асинхронном FIFO частота чтения должна быть выше, чем частота записи. Однако, если частота чтения слишком велика, чем частота записи, это означает, что FIFO быстро опустеет?
  2. Я действительно задаюсь вопросом о часах, которые я должен выбрать для частоты чтения fifo. Должен ли я выбрать часы из USER_CLK протокола Aurora для частоты чтения или я могу использовать любую частоту чтения (отличную от USER_CLK)?
  3. Если я не хочу использовать пропорцию 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 МГц.

0 ответов

Другие вопросы по тегам