Torika 0 20 января, 2016 Опубликовано 20 января, 2016 · Жалоба Здравствуйте! Необходимо реализовать прием, обработку и пересылку данных на ПЛИС 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. Правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 13 октября, 2016 Опубликовано 13 октября, 2016 · Жалоба Отвечу в теме, хотя и сам новичок и многое не понимаю :) 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, разве не хост делает это действие по трансляции адресов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться