Перейти к содержанию
    

XILINX Vivado 18.3 and PCIe. Как адресовать через interconnect несколько слейвов на шине AXI в один бар на PCIe

а что значит "галочка 64бит" рядом с type ?

я как минимум вижу какие-то числа   0x0000_0002_0000_0000 что есть 64 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, Alex77 said:

а что значит "галочка 64бит" рядом с type ?

я как минимум вижу какие-то числа   0x0000_0002_0000_0000 что есть 64 бит.

Доброе утро. Сама адресация баров PCIe для AXI задаётся на предыдущей вкладке ядра, где задаются все настройки AXI

1111.thumb.JPG.bc74673c4b8275d8a99cb5ace6e33525.JPG

Эта же галочка "64 bit" Выбирает какого размера у нас будут бары и адресация в пределах одного бара. Имеется 6: 32-битных бара (размер каждого из которых может быть не больше 2ГБ) и 3: 64-битных бара (размер которых собственно огромен до экзабайт). В ядре 2 соседних бара как бы объединяются в один. К сожалению такая структура мне не подходит, так как моя материнка не запускается с баром больше 2ГБ (пробовал на 2 компах и сервере).

 2222.thumb.JPG.df7d5cdcc0d01fe41455c6269c969cd2.JPG

Изменено пользователем Kronac

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Alex77 said:

я " здесь" не вижу бара больше 2 ГБ, я вижу базовый адрес 8ГБ

Да, в чём проблема не понимаю? Адресация AXI 64-битная.

  От 0x0000_0000_0000_0000 до 0x0000_0001_FFFF_FFFF у меня располагается 8 ГБ ДДР-ка первым слейвом на интерконнекте. Работаю я с ней отдельными барами (BAR2 и BAR3) буферными (окнами) по 4 мб.

Следом за ней идут регистровые слейвы, я и назначаю бару (BAR0) стартовый адрес на AXI : 0x0000_0002_0000_0000. Далее в системе выделяется для данного бара диапазон памяти в пространстве PCIe устройств.

 

Вот например запустил одну из прошивок которая у меня была уже на ходу, тут правда первый бар не 4МБ как на скрине выше, а 1МБ, но разницы нет.

Система выделяет на BAR0: от 0x0000 9090 0000 до 0x0000 909F FFFF (что собственно равно 1 МБ, сколько назначишь столько система и выделит). 

 

 2222.JPG.f1b9ac90c6c83f91328e167f919cfa0c.JPG

 

Далее адрес PCIe 0x0000 9090 0000 при проходе через контроллер PCIe преобразовывается в адрес 0x0000_0002_0000_0000 на шине AXI, а при чтении адрес 

AXI 0x0000_0002_0000_0004 станет = PCIe 0x0000 9090 0004 И тд..

 

 

Изменено пользователем Kronac

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем поборол я проблему. Конкретных причин я не нашёл, только догадки. Если вкратце, то я создавал большие мегабайтовые слейвы на перспективу для будущих проектов, чтобы хватило места. По факту же я использовал не больше 8К адресного пространства. Плюс я хотел сделать красивые адреса для того, чтобы упростить дешифрацию адреса в интерконнекте (Выставить чисто старшие выровненные адреса для слейвов). Забил в итоге на всё. Сделал в лоб. Сколько требуется фактически, столько и выделил, подтянул все адреса друг к другу и заработало. Из бара 0 есть доступ ко всем слейвам. Не знаю какая проблема при работе с большим объёмом адресного пространства, пока разбираться не хочу. Работает, пускай себе работает. Всем спасибо за советы.

image.thumb.png.b3519ad531b295e4ebbe0d991881db5a.png

Изменено пользователем Kronac

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...