GenaSPB 34 January 8, 2015 Posted January 8, 2015 · Report post Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS. http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13 Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 12, 2015 Posted January 12, 2015 · Report post Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS. http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13 Хочу попробовать всю систему засунуть в qsys, но почему то в qsys'e отсутствует умножитель, да и вообще простые арифметические операции. Кто работал в qsys подскажите как поступить. Quote Share this post Link to post Share on other sites More sharing options...
serjj1333 0 January 12, 2015 Posted January 12, 2015 · Report post То что вы отметили на рисунке, это корка для перемножения матриц причем floating point (либа FP альтеры). Зачем вам в Qsys размещать элементарные мат операции? Реализуйте функциональный блок в отдельном .v модуле и сделайте для него авалоновскую обертку, что бы можно было подключить в qsys. Вся простая арифметика (в т.ч. floating point) через обычный megawizzard в 14м квартусе спокойно размещается... Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 12, 2015 Posted January 12, 2015 · Report post То что вы отметили на рисунке, это корка для перемножения матриц причем floating point (либа FP альтеры). Зачем вам в Qsys размещать элементарные мат операции? Реализуйте функциональный блок в отдельном .v модуле и сделайте для него авалоновскую обертку, что бы можно было подключить в qsys. Вся простая арифметика (в т.ч. floating point) через обычный megawizzard в 14м квартусе спокойно размещается... Из мануалов я понял, что qsys - это оболочка, в которой собирается вся система. Т.е если работаешь в qsys квартус уже не требуется. Quote Share this post Link to post Share on other sites More sharing options...
serjj1333 0 January 12, 2015 Posted January 12, 2015 · Report post Из мануалов я понял Ну это вы неправильно поняли :laughing: Qsys всего лишь генерирует синтезируемые файлы и скрипты, которые подключаются к проекту Quartus для дальнейшей сборки. Вы можете большую часть проекта накидать в Qsys, оставив на Quartus только верхний уровень и имплементацию, но тогда если вам не будет хватать функционала готовых IP, вам нужно написать собственные, совместимые либо с шиной Avalon либо с AXI. Размещать в Qsys корки с элементарным функционалом (простая арифметика например) не целесообразно по системным и ресурсным соображениям, т.к. совместимость с шинами, которые использует Qsys добавляет некоторую избыточность плюс большой проект в Qsys совершенно нечитаем (правда можно использовать архитектуру субсистем, но там есть ньюансы с пробрасованием сигналов, что не всегда дает выигрыш в удобстве представления). Поэтому есть смысл размещать корки с законченным функционалом, например фильтры, цепочки фильтров, Фурье, преобразование систем координат, интерфейсы и пр. Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 12, 2015 Posted January 12, 2015 · Report post Ну это вы неправильно поняли :laughing: 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. Направьте пожалуйста в нужном направлении Quote Share this post Link to post Share on other sites More sharing options...
serjj1333 0 January 12, 2015 Posted January 12, 2015 · Report post Посмотрел я как в новом квартусе добавлять 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. Удачи :rolleyes: Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 January 12, 2015 Posted January 12, 2015 (edited) · Report post третий блок из фильтров Обратите внимание, что FIR фильтр может работать в двухканальном (многоканальном) режиме (а CIC - в двухпортовом на входе и двухканальном на выходе) - что сильно экономит объём логики в применении к квадратурным трактам. В моём проекте именно так - за образцом можно туда заглянуть. Edited January 12, 2015 by Genadi Zawidowski Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 13, 2015 Posted January 13, 2015 · Report post Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS. http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13 Простите, а как скачать все файлы одновременно?Никогда с таким хранилищем не сталкивался. Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 January 13, 2015 Posted January 13, 2015 (edited) · Report post SVN-клиентом... Ловите архив на сегодняшний день. Q13.1 (последний из 13-х). Edited January 13, 2015 by Genadi Zawidowski Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 13, 2015 Posted January 13, 2015 · Report post SVN-клиентом... Ловите архив на сегодняшний день. Q13.1 (последний из 13-х). Спасибо! Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 14, 2015 Posted January 14, 2015 · Report post Всем привет. Делаю управление ПЛИС внешним процессором по интерфейсу spi. С процессора на плис идут два 32-х разрядных сигнала управления. Использую корку Avalon-ST Serial Peripheral Interface Core. Решил не заморачиваться с шиной Avalon и сделать все в квартусе, а не в qsys. До работы с интерфейсом сигналы, связанные с шиной Avalon(в cic и fir фильтрах), я задавал самостоятельно. Сейчас хочу поступить так же, поэтому из корки удаляю сигнал sysclk, stsinkdata, stsinkready, stsourseready, stsoursedata – то есть хоть что-то говорящее об Avalon. И вот здесь встал вопрос, а какой сигнал должен идти от spi slave до блока в ПЛИС? А как вы делаете управление по spi? Quote Share this post Link to post Share on other sites More sharing options...
serjj1333 0 January 14, 2015 Posted January 14, 2015 · Report post Имхо для управления лучше поставить altera_avalon_spi, которая имеет шину Avalon-MM. Посмотрите SPI Core в ug_embedded_ip.pdf Altera. Там как раз до 32 бит регистр данных задается. По прерыванию забираются данные из корки. А ST тут как раз не нужен. Quote Share this post Link to post Share on other sites More sharing options...
verali 0 January 14, 2015 Posted January 14, 2015 · Report post Имхо для управления лучше поставить 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 (сигналы на прикрепленной мною картинке). Зачем нужны эти сигналы? Quote Share this post Link to post Share on other sites More sharing options...
serjj1333 0 January 14, 2015 Posted January 14, 2015 · Report post Эта корка адаптирована для использования под Qsys с шиной Avalon и Nios. Но можно ее использовать и в обычном RTL проекте. External - это то, что выбрасывается на порты SPI. SPI control port - это Avalon. По нему идет управление и обмен данными. Посмотрите карту регистров корки, там расписаны адреса внутренних регистров. Обмен по SPI происходит посредством чтения/записи по Avalon. Прерывание позволит вам узнать момент приёма очередной порции данных. Я использовал UART, данный SPI не пробовал, но думаю, что там все точно также. Если в вашем проекте Nios'a не будет, то вам нужно будет написать простенький Avalon Master, который будет управлять данной коркой (и другими Avalon MM корками, если они появятся далее) Quote Share this post Link to post Share on other sites More sharing options...