Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ядро PCI Express Block Plus в Virtex 5
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Страницы: 1, 2, 3
toshas
внутри PIO_RX_ENGINE в зависимости от типа пришедшего пакета есть ряд присвоений этому адресу:

например,
Код
wr_addr      <= #TCQ {region_select[1:0],m_axis_rx_tdata[10:2]};


region_select выбирается чуть ниже,
этот case можно настроить для работы по разным BAR и получить доступ к разным 2К.

Код
  assign mem64_bar_hit_n = ~m_axis_rx_tuser[2];
  assign io_bar_hit_n = 1'b1;
  assign mem32_bar_hit_n = ~m_axis_rx_tuser[4];
  assign erom_bar_hit_n  = ~m_axis_rx_tuser[8];

  always @*
  begin
    case ({io_bar_hit_n, mem32_bar_hit_n, mem64_bar_hit_n, erom_bar_hit_n})

      4'b0111 : begin
        region_select <= #TCQ 2'b00;    // Select IO region
      end // 4'b0111
.....
Lixlex
toshas, благодарю за ответ! А можно ли расширить эти области памяти хотябы до 64Кб? Адрес, который выделяется из пакета, пришедшего по AXI имеет разрядность всего 10 бит(с учетом префикса). Этого уж явно не хватит на 64Кб sad.gif
и еще где бы почитать про формат пакета от корки PCIe, приходящий по AXI?
toshas
конечно, для этого нужно указать требуемый объем BAR, а затем увеличить разрядность шины адреса в примере и делать присвоение не со 2 по 10 биты, а со 2 по 16 или больше.
адрес передается 32х битный в пакете.

формат пакета определен протоколом PCIe и описан в спецификации.
на шину AXI разрядностью 64бита ложится по два DW из пакета.
Lixlex
Правильно ли я понимаю, что в примере используется не весь адрес, который содержится в пакете, а только младшие 8 бит, а остальная часть отбрасывается?
toshas
именно так
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.