|
как вставить HPS часть в свой проект FPGA |
|
|
|
 |
Ответов
(1 - 10)
|
Apr 27 2017, 09:51
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(nmurzin @ Apr 27 2017, 11:59)  Вопрос - как мне теперь вставить HPS часть в свой проект FPGA на квартусе???
Я добавил в проект файл HardProcSys.qip И хочу вставить в свой файл верхнего уровня компонент HardProcSys.vhd Но дальше надо будет назначать пины. А я помню, что когда я в PinPlaner пытался в FPGA проекте назначить пин из HPS части, то PinPlaner не позволял это сделать.
Как же прикрутить HPS часть??? Может для нее надо создавать отдельный проект и выбирать отдельную микросхему? FPGA часть и HPS часть это части одного проекта в квартусе, или это должны быть два разных проекта? Приветствую. FPGA и HPS подсистемы единого чипа SoC могут работать как независимо друг от друга, так и совместно. По крайней мере так указано в документах. Сам пока что собирал только проект, в котором и ПЛИС, и процессоры HPS были вместе в одном QSys файле, так как взаимодействовали друг с другом. Назначать пины для HPS компонента не нужно, в PinPlanner они не доступны, так как назначаются автоматически на основе настроек HPS компонента в QSys.
|
|
|
|
|
Apr 27 2017, 13:14
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(nmurzin @ Apr 27 2017, 16:41)  Но ведь модуль сгенерированный Qsys содержит например пины интерфейса DDR3, которые имеют имена типа mem_* Куда мне девать эти ноги? Зачем он мне их выкатил? Затем "выкатил", что HPS не может работать без внешней SDRAM памяти, она необходима. В моём случае файл верхнего уровня имеет внешние пины для DDR3 памяти: Код module top ( ////////// HPS ///////// ///////// DDR3 ///////// output [14:0] HPS_DDR3_ADDR, output [2:0] HPS_DDR3_BA, output HPS_DDR3_CAS_N, output HPS_DDR3_CKE, output HPS_DDR3_CK_N, output HPS_DDR3_CK_P, output HPS_DDR3_CS_N, output [3:0] HPS_DDR3_DM, inout [31:0] HPS_DDR3_DQ, inout [3:0] HPS_DDR3_DQS_N, inout [3:0] HPS_DDR3_DQS_P, output HPS_DDR3_ODT, output HPS_DDR3_RAS_N, output HPS_DDR3_RESET_N, input HPS_DDR3_RZQ, output HPS_DDR3_WE_N, к которым подсоединяются выводы memory_* модуля HPS: Код system u0 ( .memory_mem_a (HPS_DDR3_ADDR), .memory_mem_ba (HPS_DDR3_BA), .memory_mem_ck (HPS_DDR3_CK_P), .memory_mem_ck_n (HPS_DDR3_CK_N), .memory_mem_cke (HPS_DDR3_CKE), .memory_mem_cs_n (HPS_DDR3_CS_N), .memory_mem_ras_n (HPS_DDR3_RAS_N), .memory_mem_cas_n (HPS_DDR3_CAS_N), .memory_mem_we_n (HPS_DDR3_WE_N), .memory_mem_reset_n (HPS_DDR3_RESET_N), .memory_mem_dq (HPS_DDR3_DQ), .memory_mem_dqs (HPS_DDR3_DQS_P), .memory_mem_dqs_n (HPS_DDR3_DQS_N), .memory_mem_odt (HPS_DDR3_ODT), .memory_mem_dm (HPS_DDR3_DM), .memory_oct_rzqin (HPS_DDR3_RZQ), Роутер их подхватывает и автоматически разводит на нужное место, так как это hard controller. Там ещё куча assigments для пинов памяти нужна:
Как правило файлы с назначениями идут в комплекте с обучающими платами для разработок, там и примеры есть, на базе которых не так сложно разобраться...
|
|
|
|
|
Apr 27 2017, 13:28
|
Частый гость
 
Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141

|
Спасибо sonycman. Я не мог понять зачем мне ноги памяти, если я не могу раскидать их в PinPlaner. А если он умный и сам знает где они весят и сам их разводит, то зачем он мне их выписывает. Сейчас стало понятно как дальше двигаться.
|
|
|
|
|
Apr 28 2017, 09:08
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (sonycman @ Apr 27 2017, 20:14)  Затем "выкатил", что HPS не может работать без внешней SDRAM памяти, она необходима. А вот это, кстати, не понятно, почему она именно необходима? Что мешает процу работать с OCM, тем более, что при старте он только так и работает? И ещё там QSys генерит пачку HDL исходников тоже на тему DDR контроллера, хотя в конфигурации со стороны ПЛИС никаких заявок на работу с DDR нет. Вот зачем это?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 28 2017, 13:31
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(dxp @ Apr 28 2017, 13:08)  А вот это, кстати, не понятно, почему она именно необходима? Что мешает процу работать с OCM, тем более, что при старте он только так и работает? И ещё там QSys генерит пачку HDL исходников тоже на тему DDR контроллера, хотя в конфигурации со стороны ПЛИС никаких заявок на работу с DDR нет. Вот зачем это? Я сделал такой вывод потому, что в настройках HPS модуля в разделе SDRAM нельзя отключить память. Если инстанциируется HPS - то он будет вместе с DDR SDRAM. Я бы вот также хотел бы видеть на рынке хорошую FPGA с менее "жирным" хардовым ARMом, и чтобы его память также была внутри чипа. Но не судьба пока что, к сожалению. Приходится "баловаться" с монстрами  Цитата(dxp @ Apr 28 2017, 13:08)  Что мешает процу работать с OCM, тем более, что при старте он только так и работает? При старте процессор, всё же, наверное выполняет код в ROM, так как в OCM пусто.
|
|
|
|
|
Apr 28 2017, 14:01
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (sonycman @ Apr 28 2017, 20:31)  Я сделал такой вывод потому, что в настройках HPS модуля в разделе SDRAM нельзя отключить память. Если инстанциируется HPS - то он будет вместе с DDR SDRAM. Вот это-то и странно! Впрочем, там хватает "странностей", начиная от упомянутых HDL файлов для DDR контроллера, хотя оный не заявлен для доступа со стороны ПЛИС, и заканчивая необходимостью проводить синтез (соответственно, и создавать HDL проект) только для того, чтобы получить файлы поддержки для процессора. Я отношу это сугубо к кривизне дизайна. При ровном дизайне Qsys и должен бы сгенерить все эти файлы. Подозреваю, что причины тянутся к NIOS'у - поскольку это софтовое ядро, то его по любому надо синтезировать, ну а генерацию файлов сделали на этапе ассемблера. Теперь хотя ядро железное, но файлы всё равно генерятся ассемблером, это вынуждает юзера проводить синтез, хотя по здравому смыслу это было бы не нужно - это подтверждается тем, что, например, в Vivado этого делать не надо, достаточно того, что генерит аналог Qsys - IP Integrator. QUOTE (sonycman @ Apr 28 2017, 20:31)  Я бы вот также хотел бы видеть на рынке хорошую FPGA с менее "жирным" хардовым ARMом, и чтобы его память также была внутри чипа. Вот есть с М3  Правда, не знаю, насколько это по вашим меркам хорошая FPGA. Но, имхо, она по мощи где-то соответствует Cortex-M3, т.е решение сбалансированное. QUOTE (sonycman @ Apr 28 2017, 20:31)  При старте процессор, всё же, наверное выполняет код в ROM, так как в OCM пусто. Да, прямо первые такты, конечно, из BOOTROM железно зашитый загрузчик, но дальше этот код грузит программу в OCM и дальше собственно пользовательская программа уже живёт в этой памяти. Я это имел в виду. И то, что какая-то жизнь без SDRAM всё же есть, поэтому жёсткое безусловное навязывание DDR контроллера выглядит грубым.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 28 2017, 14:25
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(dxp @ Apr 28 2017, 18:01)  Вот это-то и странно! Впрочем, там хватает "странностей", начиная от упомянутых HDL файлов для DDR контроллера, хотя оный не заявлен для доступа со стороны ПЛИС... Есть вариации чипов с двумя хардовыми DDR SDRAM контроллерами - один (обязательный) для HPS, и второй (опциональный) для FPGA. Может, это к нему относится? Цитата например, в Vivado этого делать не надо А у Цинков можно использовать MPU без SDRAM контроллера? Цитата Вот есть с М3 Да, спасибо, тоже интересный вариант.
|
|
|
|
|
Apr 28 2017, 15:13
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (sonycman @ Apr 28 2017, 21:25)  Есть вариации чипов с двумя хардовыми DDR SDRAM контроллерами - один (обязательный) для HPS, и второй (опциональный) для FPGA. Может, это к нему относится? Да нет, там вообще ничего не было указано в Qsys насчёт DDR. Пустой компонент, только GPIO сконфигурированы (светодиодами помигать). QUOTE (sonycman @ Apr 28 2017, 21:25)  А у Цинков можно использовать MPU без SDRAM контроллера? Там аналогично в IP Integrator создаётся блок-дизайн и про экспорте генерируются файлы для инициализации периферии (ps7init.h и ps7init.c), которых достаточно для этой задачи. Никакого синтеза проводить не надо. Т.е. можно ковыряться с процессорной частью независимо и без лишнего гемора. Ну, и конечно, можно абсолютно автономно работать только с OCM, которой там куда больше и которая подцеплена к ядрам поближе и продуманнее (в другой теме писал про это).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|