|
|
  |
Шина Avalon |
|
|
|
Jan 12 2015, 09:53
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Genadi Zawidowski @ Jan 8 2015, 23:37)  Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS. http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13Хочу попробовать всю систему засунуть в qsys, но почему то в qsys'e отсутствует умножитель, да и вообще простые арифметические операции. Кто работал в qsys подскажите как поступить.
|
|
|
|
|
Jan 12 2015, 11:07
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(serjj @ Jan 12 2015, 10:10)  То что вы отметили на рисунке, это корка для перемножения матриц причем floating point (либа FP альтеры). Зачем вам в Qsys размещать элементарные мат операции? Реализуйте функциональный блок в отдельном .v модуле и сделайте для него авалоновскую обертку, что бы можно было подключить в qsys. Вся простая арифметика (в т.ч. floating point) через обычный megawizzard в 14м квартусе спокойно размещается... Из мануалов я понял, что qsys - это оболочка, в которой собирается вся система. Т.е если работаешь в qsys квартус уже не требуется.
|
|
|
|
|
Jan 12 2015, 11:25
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Из мануалов я понял Ну это вы неправильно поняли Qsys всего лишь генерирует синтезируемые файлы и скрипты, которые подключаются к проекту Quartus для дальнейшей сборки. Вы можете большую часть проекта накидать в Qsys, оставив на Quartus только верхний уровень и имплементацию, но тогда если вам не будет хватать функционала готовых IP, вам нужно написать собственные, совместимые либо с шиной Avalon либо с AXI. Размещать в Qsys корки с элементарным функционалом (простая арифметика например) не целесообразно по системным и ресурсным соображениям, т.к. совместимость с шинами, которые использует Qsys добавляет некоторую избыточность плюс большой проект в Qsys совершенно нечитаем (правда можно использовать архитектуру субсистем, но там есть ньюансы с пробрасованием сигналов, что не всегда дает выигрыш в удобстве представления). Поэтому есть смысл размещать корки с законченным функционалом, например фильтры, цепочки фильтров, Фурье, преобразование систем координат, интерфейсы и пр.
|
|
|
|
|
Jan 12 2015, 13:06
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(serjj @ Jan 12 2015, 11:25)  Ну это вы неправильно поняли Qsys всего лишь генерирует синтезируемые файлы и скрипты, которые подключаются к проекту Quartus для дальнейшей сборки. Вы можете большую часть проекта накидать в Qsys, оставив на Quartus только верхний уровень и имплементацию, но тогда если вам не будет хватать функционала готовых IP, вам нужно написать собственные, совместимые либо с шиной Avalon либо с AXI. Размещать в Qsys корки с элементарным функционалом (простая арифметика например) не целесообразно по системным и ресурсным соображениям, т.к. совместимость с шинами, которые использует Qsys добавляет некоторую избыточность плюс большой проект в Qsys совершенно нечитаем (правда можно использовать архитектуру субсистем, но там есть ньюансы с пробрасованием сигналов, что не всегда дает выигрыш в удобстве представления). Поэтому есть смысл размещать корки с законченным функционалом, например фильтры, цепочки фильтров, Фурье, преобразование систем координат, интерфейсы и пр. Подскажите пожалуйста, у меня такая система:
Блок 1(первый красный прямоугольник) состоит из spi-slave и nco, блок 2 состоит из двух умножителей и третий блок из фильтров и spi-master. Правильно ли я понимаю, что следует выполнить следующие шаги : 1) Первый блок генерирую в qsys как отдельную систему. Генерирую HDL файл. 2) Второй блок я генерирую в квартусе с помощью визарда. В этом проекте находится top level. Соединяю первый и второй блок в quartus 3) Третий блок генерирую в qsys как отдельную систему. Генерирую HDL файл. Собираю все три блока в quartus. Направьте пожалуйста в нужном направлении
|
|
|
|
|
Jan 12 2015, 14:29
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Посмотрел я как в новом квартусе добавлять IP через ip catalog... Раньше с обычным Megawizard'ом было удобнее, а сейчас если честно через одно место Но если отбросить негатив, то как можно сделать: 1) Для FIR и CIC фильтров, NCO, Avalon ST Serial делаем корки, они создадутся с расширением .qsys 2) Генерируем через Qsys для них файлы RTL врапперов, например .v, они лежат в папке synthesis, которая создается в папке корки (название совпадает с именем .qsys файла) 3) Добавляем в проект файлы .qsys или .qip из папки synthesis для каждой корки 4) Изучаем спецификацию на Avalon а главное на ST (streaming) 5) На обычном верилоге накидываем искомую систему, в которой подключаем наши корки, как обычные модули; их враперы лежат в соответствующих папках synthesis 6) Соединяем их, учитывая специфику их шин (у них будут разные разрядности, некоторые шины могут содержать 2 квадратуры, например NCO) 7) Добавляем где надо дополнительную арифметику и логику 8) Подключаем все это добро на топ к портам и вперед собирать/отлаживать, перед вами обычный FPGA/RTL проект прим: если нужно поменять параметры IP корок, то нужно будет перегенировать содержимое папок synthesis Из выше сказанного, я думаю, что в вашем случае собирать систему полностью в Qsys не целесообразно, замучаетесь с согласованием интерфейсов и отладкой, на верилоге ИМХО проще будет... Очень не обрадовала скудность и документации на ST корки в перспективе Qsys, сыро все это еще! Qsys напротив имеет преимущество, когда есть Nios/HPS и разветвленная шина Avalon-MM/AXI. Удачи
|
|
|
|
|
Jan 13 2015, 09:21
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Genadi Zawidowski @ Jan 8 2015, 23:37)  Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS. http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13Простите, а как скачать все файлы одновременно?Никогда с таким хранилищем не сталкивался.
|
|
|
|
|
Jan 13 2015, 10:34
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Genadi Zawidowski @ Jan 13 2015, 09:54)  SVN-клиентом... Ловите архив на сегодняшний день. Q13.1 (последний из 13-х). Спасибо!
|
|
|
|
|
Jan 14 2015, 10:05
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Всем привет. Делаю управление ПЛИС внешним процессором по интерфейсу spi. С процессора на плис идут два 32-х разрядных сигнала управления. Использую корку Avalon-ST Serial Peripheral Interface Core. Решил не заморачиваться с шиной Avalon и сделать все в квартусе, а не в qsys. До работы с интерфейсом сигналы, связанные с шиной Avalon(в cic и fir фильтрах), я задавал самостоятельно. Сейчас хочу поступить так же, поэтому из корки удаляю сигнал sysclk, stsinkdata, stsinkready, stsourseready, stsoursedata – то есть хоть что-то говорящее об Avalon.
И вот здесь встал вопрос, а какой сигнал должен идти от spi slave до блока в ПЛИС? А как вы делаете управление по spi?
|
|
|
|
|
Jan 14 2015, 13:27
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(serjj @ Jan 14 2015, 10:23)  Имхо для управления лучше поставить altera_avalon_spi, которая имеет шину Avalon-MM. Посмотрите SPI Core в ug_embedded_ip.pdf Altera. Там как раз до 32 бит регистр данных задается. По прерыванию забираются данные из корки. А ST тут как раз не нужен. Посмотрел SPI core. Вижу такую куртинку:
В мануале ug_embedded_ip.pdf ничего не сказано ни про data_from_cpu, ни про mem_addr, ни про data_to_cpu. Я могу додумать и предположить, что ядро позволяет использовать либо external либо spi_control_port (сигналы на прикрепленной мною картинке). Зачем нужны эти сигналы?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|