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

PCIE IP и CycloneIV

Здравствуйте!

 

Необходимо реализовать прием, обработку и пересылку данных на ПЛИС CycloneIV через интерфейс PCIE. В QSys собрал системы, согласно примерам от Altera. Параметры PCIE IP приведены на рисунке. Возник ряд вопросов.

 

Q1: Я правильно понимаю, что настройку/управление/чтение_состояния блоков PCIE и DMA я могу сделать во внешнем модуле (без использования NIOS), через второй порт onchip-memory

(записывая и читая слова по соттветствующим смещениям, согласно описаниям на PCIE IP и DMA)?

 

Q2: Не смог для себя уяснить некоторые моменты с настройкой PCIE IP. В каких случаях использовать 64-бит BAR type, а в каких 32-бит? Я правильно понимаю, что при использовании 64-бит BAR TYPE,

трансляции адресов не происходит, а при 32-бит BAR TYPE старшие 32 бита добавляются из таблицы адресов трансляции?

 

Q3: Использование fixed translation table отличается от dynamic лишь тем, что dynamic необходимо вначале настраивать через CRA, а fixed жестко задается при генерации системы?

Параметр size of address pages определяет размер адресуемой памяти для данных?

 

Q4: Карта адресов. В первой колонке показан общей размер onchip-memory - 64 кБ. Из второй видно, что для обращения к регистрам PCIE используются

адреса 0x0000_0000 - 0x0000_3FFF, к регистрам DMA адреса 0x0000_4000 - 0x0000_401F. Я правильно понимаю, что если через порт S2 on-chip memory

прочитаю данные по адресу 0x0000_0000, что получу следующие параметры PCIE: Command, Status, Vendor ID, Device ID ? Соответственно при обращении по

адресу 0x0000_4001 получу следующие параметры DMA: Write master start address + Read master start address. Правильно?

post-90101-1453273159_thumb.png

post-90101-1453273165_thumb.png

post-90101-1453273168_thumb.png

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


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

Отвечу в теме, хотя и сам новичок и многое не понимаю :)

 

Q1: Я правильно понимаю, что настройку/управление/чтение_состояния блоков PCIE и DMA я могу сделать во внешнем модуле (без использования NIOS), через второй порт onchip-memory

(записывая и читая слова по соттветствующим смещениям, согласно описаниям на PCIE IP и DMA)?

Например, для Lattice PCI-E IP я работаю вообще без каких либо процессоров в режиме DMA, вообще не вижу смысла в процессоре там, если проект простой. Возможно, для альтеровской IP для PCI-E можно также поступить...

 

Q2: Не смог для себя уяснить некоторые моменты с настройкой PCIE IP. В каких случаях использовать 64-бит BAR type, а в каких 32-бит? Я правильно понимаю, что при использовании 64-бит BAR TYPE,

трансляции адресов не происходит, а при 32-бит BAR TYPE старшие 32 бита добавляются из таблицы адресов трансляции?

Я использую адрес из одного 32-битного BAR исключительно для MMIO, эта область у меня вообще всего-лишь 4096 байт. Это для настройки. Для чего там 64 бита не представляю...

 

Q3: Использование fixed translation table отличается от dynamic лишь тем, что dynamic необходимо вначале настраивать через CRA, а fixed жестко задается при генерации системы?

Параметр size of address pages определяет размер адресуемой памяти для данных?

Это разве не проблема хоста транслировать адреса, или я что-то не понял? При выделении буфера разве ОС не заботится чтобы драйвер получил свой адрес, а устройство - соответствующий ему адрес? В случае x86, разве не хост делает это действие по трансляции адресов?

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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