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