реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Шина Avalon
verali
сообщение Dec 22 2014, 08:38
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Добрый день!
Собрал из IP ядер цифровой приемник (digital down converter).
Провел моделирование в ModelSim. Все хорошо, но есть НО!
В IP ядрах цифровых фильтров присутствуют входные и выходные сигналы для шины Avalon.
Из литературы я понял, что Avalon - универсальная шина для построения системы на кристалле.
Правильно ли я понимаю, что помимо прямого соединения компонентов цифровой обработки сигналов, их еще и надо связать этой шиной?
CIC фильтр так же требует входной сигнал с этой шины (in_valid(), .out_ready(), .in_error(). При моделировании я самостоятельно задавал эти сигналы.
Немного непонятно, зачем она нужна, направьте пожалуйста в правильную сторону.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Dec 22 2014, 09:06
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Если вы для сборки системы используете QSYS или SOPC builder,
то соединения посредством шины Авалон будут сгенерированы автоматом.
Если есть несовместимость сигналов - будут выданы ошибки и предупреждения.
Если вы делали свой собственный компонент, то рекомендую использовать мастер,
для генерации шаблона.
Go to the top of the page
 
+Quote Post
verali
сообщение Dec 22 2014, 09:28
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(Копейкин @ Dec 22 2014, 10:06) *
Если вы для сборки системы используете QSYS или SOPC builder,
то соединения посредством шины Авалон будут сгенерированы автоматом.
Если есть несовместимость сигналов - будут выданы ошибки и предупреждения.
Если вы делали свой собственный компонент, то рекомендую использовать мастер,
для генерации шаблона.

Для сборки системы я использовал Quartus. Делал step by step: последовательно соединял ip ядра и моделировал их.
Получается что данную системы (цифровой приемник) правильнее сделать в Qsys или Sopc builder?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Dec 22 2014, 10:27
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Если вы планируете использовать шину Авалон и готовые IP
(типа NIOSII, DDR(1,2,3), Ethernet и т.п. ), то следует использовать Qsys или Sopc builder.
Для создания шаблонов компонентов и затем создания системы.
Также последняя версия Квартуса поддерживает не только Авалон.
Если вы создаёте собственную систему "с нуля" "врукопашную", то всё равно, что
использовать. wink.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 22 2014, 11:14
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



у ксалинкса IP ядра могут быть 2 видов (выбираются при запихивании в проект) нативные и на AXI шину. Последняя если цеплять на проц микроблайз, для систем без проца, я брал нативные и работал с предоставленными сигналами. Может у альтеры есть что-то подобное?
Go to the top of the page
 
+Quote Post
verali
сообщение Dec 22 2014, 14:44
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(Копейкин @ Dec 22 2014, 11:27) *
Если вы планируете использовать шину Авалон и готовые IP
(типа NIOSII, DDR(1,2,3), Ethernet и т.п. ), то следует использовать Qsys или Sopc builder.

А чем отличается Qsys от SOPC Builder?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Dec 22 2014, 16:53
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(verali @ Dec 22 2014, 18:44) *
А чем отличается Qsys от SOPC Builder?

Версии Квартуса после 10 (если правильно помню), для построения систем, имеют в составе QSYS.
Более ранние - SOPC builder.
Go to the top of the page
 
+Quote Post
krux
сообщение Dec 22 2014, 18:29
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Смотря что этой шиной делать.
Сигналы у вас streaming или memory-mapped?
Если надо данные через неё загонять куда-нибудь (может, например, в DDR2/3 ?) - это одно. Если надо по этой шине всего-лишь управление организовать - это другое.
Другими словами, нужно для начала понять - для чего она используется: для передачи данных или для управления?

Выходы видятся следующие:
1) если нужно гибкое управления - то напрашивается микроконтроллер, и, как следствие, Nios2, который в свою очередь, тянет qsys, который требует аккуратного заворачивания всех субмодулей в qsys-обёртки.
2) если гибкость не требуется, вы понимаете что и куда, и писать объемные компоненты не предвидится, а нарисовать небольшой конечный автомат для вас не проблема - то можно плюнуть на qsys, и наваять один-два недостающих компонента врукопашную.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
verali
сообщение Dec 23 2014, 09:56
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(krux @ Dec 22 2014, 19:29) *
Смотря что этой шиной делать.
Сигналы у вас streaming или memory-mapped?
Если надо данные через неё загонять куда-нибудь (может, например, в DDR2/3 ?) - это одно. Если надо по этой шине всего-лишь управление организовать - это другое.
Другими словами, нужно для начала понять - для чего она используется: для передачи данных или для управления?

Выходы видятся следующие:
1) если нужно гибкое управления - то напрашивается микроконтроллер, и, как следствие, Nios2, который в свою очередь, тянет qsys, который требует аккуратного заворачивания всех субмодулей в qsys-обёртки.
2) если гибкость не требуется, вы понимаете что и куда, и писать объемные компоненты не предвидится, а нарисовать небольшой конечный автомат для вас не проблема - то можно плюнуть на qsys, и наваять один-два недостающих компонента врукопашную.

Задача такая:
На вход приемника (16 разрядный вход) приходит сигнал с АЦП . Управление планирую сделать по SPI.
Съем данных (квадратуры) планирую сделать тоже по SPI.
Не до конца понял назначение шины Avalon, требуется ли она для моего проекта, если управление идет по spi?


Решил в качестве получения доп.опытав пересобрать систему в Qsys.
Но есть одно НО:
почему то для Cyclone V недоступно ядро NCO и CIC фильтр.
Прикрепленное изображение

Или требуется отдельная лицензия на эти ядра?
Стоит Quartus 14.0 Web Edition

Сообщение отредактировал verali - Dec 23 2014, 10:34
Go to the top of the page
 
+Quote Post
verali
сообщение Dec 24 2014, 07:09
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Кто-нибудь соединял блоки DSP в Qsys?
Требуется отдельная лицензия на ip ядра в qsys, чтобы их активировать?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Dec 24 2014, 12:10
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(verali @ Dec 24 2014, 11:09) *
Кто-нибудь соединял блоки DSP в Qsys?
Требуется отдельная лицензия на ip ядра в qsys, чтобы их активировать?

С этими блоками не сталкивался. laughing.gif
Другие TSE, DDR, NIOS позволяли собрать timelimited систему,
которая работала, пока к схеме подключен программатор или только 1 час.
Возможно с вашими IP есть какие-то нюансы, почитайте подробное описание.
Go to the top of the page
 
+Quote Post
verali
сообщение Dec 24 2014, 13:14
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(Копейкин @ Dec 24 2014, 13:10) *
С этими блоками не сталкивался. laughing.gif
Другие TSE, DDR, NIOS позволяли собрать timelimited систему,
которая работала, пока к схеме подключен программатор или только 1 час.
Возможно с вашими IP есть какие-то нюансы, почитайте подробное описание.

Описание полностью идентично, как для ip ядра в Визарде, так и для ядра в qsys - они имеют только временные ограничения по работе.
Go to the top of the page
 
+Quote Post
serjj
сообщение Dec 25 2014, 08:49
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



В Quartus 14.1 для Cyclone V доступны перечисленные вами ядра. Если хотите использовать их через QSys, обновите софтину и все появится rolleyes.gif . Обратите внимание, что Авалон у фильтров имеет тип Streaming, тогда как у большинства компонентов (в т.ч. Nios) он Memory mapped. Соответсвенно, если вы хотите передать результат фильтрации/децимации в Nios для дальнейшей обработки, вам интерфейсы нужно будет согласовать, поставив преобразование Streaming-MM. SPI так же имеет интерфейс Memory mapped, следовательно что бы передать данные из SPI в NCO нужно будет реализовать преобразование MM-Streaming.
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 3 2015, 12:23
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Dec 25 2014, 09:49) *
В Quartus 14.1 для Cyclone V доступны перечисленные вами ядра. Если хотите использовать их через QSys, обновите софтину и все появится rolleyes.gif . Обратите внимание, что Авалон у фильтров имеет тип Streaming, тогда как у большинства компонентов (в т.ч. Nios) он Memory mapped. Соответсвенно, если вы хотите передать результат фильтрации/децимации в Nios для дальнейшей обработки, вам интерфейсы нужно будет согласовать, поставив преобразование Streaming-MM. SPI так же имеет интерфейс Memory mapped, следовательно что бы передать данные из SPI в NCO нужно будет реализовать преобразование MM-Streaming.

Спасибо за ответ!
Скажите пожалуйста зачем в ядре spi нужен сигнал data_in?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
novartis
сообщение Jan 3 2015, 13:05
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Ваш slave spi должен возвращать мастеру какие-либо данные, вот для этого и нужна шина data_in.
Почитал документацию на эту корку, не понял как там данные складируются, надо вдаваться в тонкости, так что дерзайте.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 8 2015, 23:37
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Хе, я тут тоже этим занимаюсь... Частично приручил AvalonST, но переход на Q 14.1 отложился как раз из-за необходимости засовывать всё в QSYS.
http://188.134.5.254/browser/hfreceiver/trunk/fpga_q13
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 12 2015, 09:53
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 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 подскажите как поступить.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 12 2015, 10:10
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



То что вы отметили на рисунке, это корка для перемножения матриц причем floating point (либа FP альтеры). Зачем вам в Qsys размещать элементарные мат операции? Реализуйте функциональный блок в отдельном .v модуле и сделайте для него авалоновскую обертку, что бы можно было подключить в qsys. Вся простая арифметика (в т.ч. floating point) через обычный megawizzard в 14м квартусе спокойно размещается...
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 12 2015, 11:07
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Jan 12 2015, 10:10) *
То что вы отметили на рисунке, это корка для перемножения матриц причем floating point (либа FP альтеры). Зачем вам в Qsys размещать элементарные мат операции? Реализуйте функциональный блок в отдельном .v модуле и сделайте для него авалоновскую обертку, что бы можно было подключить в qsys. Вся простая арифметика (в т.ч. floating point) через обычный megawizzard в 14м квартусе спокойно размещается...

Из мануалов я понял, что qsys - это оболочка, в которой собирается вся система. Т.е если работаешь в qsys квартус уже не требуется.

Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 12 2015, 11:25
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Из мануалов я понял

Ну это вы неправильно поняли laughing.gif

Qsys всего лишь генерирует синтезируемые файлы и скрипты, которые подключаются к проекту Quartus для дальнейшей сборки. Вы можете большую часть проекта накидать в Qsys, оставив на Quartus только верхний уровень и имплементацию, но тогда если вам не будет хватать функционала готовых IP, вам нужно написать собственные, совместимые либо с шиной Avalon либо с AXI. Размещать в Qsys корки с элементарным функционалом (простая арифметика например) не целесообразно по системным и ресурсным соображениям, т.к. совместимость с шинами, которые использует Qsys добавляет некоторую избыточность плюс большой проект в Qsys совершенно нечитаем (правда можно использовать архитектуру субсистем, но там есть ньюансы с пробрасованием сигналов, что не всегда дает выигрыш в удобстве представления). Поэтому есть смысл размещать корки с законченным функционалом, например фильтры, цепочки фильтров, Фурье, преобразование систем координат, интерфейсы и пр.
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 12 2015, 13:06
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Jan 12 2015, 11:25) *
Ну это вы неправильно поняли laughing.gif

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.
Направьте пожалуйста в нужном направлении
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 12 2015, 14:29
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Посмотрел я как в новом квартусе добавлять IP через ip catalog... Раньше с обычным Megawizard'ом было удобнее, а сейчас если честно через одно место sad.gif

Но если отбросить негатив, то как можно сделать:
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.gif
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 12 2015, 17:59
Сообщение #23


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
третий блок из фильтров

Обратите внимание, что FIR фильтр может работать в двухканальном (многоканальном) режиме (а CIC - в двухпортовом на входе и двухканальном на выходе) - что сильно экономит объём логики в применении к квадратурным трактам. В моём проекте именно так - за образцом можно туда заглянуть.

Сообщение отредактировал Genadi Zawidowski - Jan 12 2015, 18:10
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 13 2015, 09:21
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 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

Простите, а как скачать все файлы одновременно?Никогда с таким хранилищем не сталкивался.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 13 2015, 09:54
Сообщение #25


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



SVN-клиентом...
Ловите архив на сегодняшний день. Q13.1 (последний из 13-х).

Сообщение отредактировал Genadi Zawidowski - Jan 13 2015, 10:03
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 13 2015, 10:34
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(Genadi Zawidowski @ Jan 13 2015, 09:54) *
SVN-клиентом...
Ловите архив на сегодняшний день. Q13.1 (последний из 13-х).

Спасибо!
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 14 2015, 10:05
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 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?
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 14 2015, 10:23
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Имхо для управления лучше поставить altera_avalon_spi, которая имеет шину Avalon-MM. Посмотрите SPI Core в ug_embedded_ip.pdf Altera. Там как раз до 32 бит регистр данных задается. По прерыванию забираются данные из корки. А ST тут как раз не нужен.
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 14 2015, 13:27
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 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 (сигналы на прикрепленной мною картинке).
Зачем нужны эти сигналы?
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 14 2015, 13:35
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Эта корка адаптирована для использования под Qsys с шиной Avalon и Nios. Но можно ее использовать и в обычном RTL проекте. External - это то, что выбрасывается на порты SPI. SPI control port - это Avalon. По нему идет управление и обмен данными. Посмотрите карту регистров корки, там расписаны адреса внутренних регистров. Обмен по SPI происходит посредством чтения/записи по Avalon. Прерывание позволит вам узнать момент приёма очередной порции данных. Я использовал UART, данный SPI не пробовал, но думаю, что там все точно также. Если в вашем проекте Nios'a не будет, то вам нужно будет написать простенький Avalon Master, который будет управлять данной коркой (и другими Avalon MM корками, если они появятся далее)
Go to the top of the page
 
+Quote Post
verali
сообщение Jan 14 2015, 14:41
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Jan 14 2015, 13:35) *
Эта корка адаптирована для использования под Qsys с шиной Avalon и Nios. Но можно ее использовать и в обычном RTL проекте. External - это то, что выбрасывается на порты SPI. SPI control port - это Avalon. По нему идет управление и обмен данными. Посмотрите карту регистров корки, там расписаны адреса внутренних регистров. Обмен по SPI происходит посредством чтения/записи по Avalon. Прерывание позволит вам узнать момент приёма очередной порции данных. Я использовал UART, данный SPI не пробовал, но думаю, что там все точно также. Если в вашем проекте Nios'a не будет, то вам нужно будет написать простенький Avalon Master, который будет управлять данной коркой (и другими Avalon MM корками, если они появятся далее)

А без avalon spi реализовать возможно?
Я не представляю о каком avalon мастере идет речь(
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 14 2015, 14:57
Сообщение #32


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
А без avalon spi реализовать возможно?

Да, написать самому.
Цитата
Я не представляю о каком avalon мастере идет речь

Посмотрите спецификацию на шину Avalon, честное слово, там всё ж просто, это же не AXI4. Если бы был Nios, то функции мастера выполнялись бы им, но т.к. его судя по всему у Вас нет, управлять шиной прийдется вручную.
Удачи.
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 5 2015, 13:57
Сообщение #33


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Jan 14 2015, 15:57) *
Да, написать самому.

Посмотрите спецификацию на шину Avalon, честное слово, там всё ж просто, это же не AXI4. Если бы был Nios, то функции мастера выполнялись бы им, но т.к. его судя по всему у Вас нет, управлять шиной прийдется вручную.
Удачи.

Огромное спасибо за советы!
Всвязи с далеким пониманием как сделать мастер( а так же для чего он нужен и из чего должен состоять) управления шины Avalon, решил управление реализовать на NIOS для понимая и освоения программирования процессора, т.к он в перспективе потребуется.
Собрал я систему в QSYS: NIOS(+on-chip memory) -> Avalon FIFO (для перехода AvMM-AvST) ->NCO(AvST)
Пробую из NIOS загрузить код частоты в NCO, для последующего наблюдения квадратур в QuestaSim, а так же для заливки прошивки в ПЛИС.
Как мне вывести сигналы с NCO на пины ПЛИС, если ip nco требует, чтобы его выход был подключен к Avalon ST sink?
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 6 2015, 07:16
Сообщение #34


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Вы можете вытащить сигналы из Qsys с помощью экспортирования (столбец Export в System Contents). После генерации Qsys компонента они появятся в Verilog/VHDL врапере в списке портов вместе с остальными внешними сигналами.
Go to the top of the page
 
+Quote Post
goodsoul
сообщение Feb 6 2015, 08:43
Сообщение #35


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 3-09-09
Пользователь №: 52 178



Цитата(verali @ Feb 5 2015, 16:57) *
Огромное спасибо за советы!
Всвязи с далеким пониманием как сделать мастер( а так же для чего он нужен и из чего должен состоять) управления шины Avalon, решил управление реализовать на NIOS для понимая и освоения программирования процессора, т.к он в перспективе потребуется.
Собрал я систему в QSYS: NIOS(+on-chip memory) -> Avalon FIFO (для перехода AvMM-AvST) ->NCO(AvST)
Пробую из NIOS загрузить код частоты в NCO, для последующего наблюдения квадратур в QuestaSim, а так же для заливки прошивки в ПЛИС.
Как мне вывести сигналы с NCO на пины ПЛИС, если ip nco требует, чтобы его выход был подключен к Avalon ST sink?


На начальном этапе можно еще SystemConsole использовать. Если в двух словах, то этот инструмент позволяет получать доступ к периферии внутри fpga через jtag.
Цепочка получается такой: SystemConsole (PC) -> USB-Blaster -> Jtag to Avalon Master преобразователь (есть модуль такой) -> периферия. Имея адреса модулей на шине Avalon можете читать и писать в них.
Применение System Console на начальных этапах позволяет не заморачиваться с ниосом или HPS (в случае SoC), а сразу начать отладку ваших блоков в ПЛИС.

http://www.altera.com/products/software/qu...ms-console.html


Сообщение отредактировал goodsoul - Feb 6 2015, 08:44
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 6 2015, 10:53
Сообщение #36


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(serjj @ Feb 6 2015, 08:16) *
Вы можете вытащить сигналы из Qsys с помощью экспортирования (столбец Export в System Contents). После генерации Qsys компонента они появятся в Verilog/VHDL врапере в списке портов вместе с остальными внешними сигналами.

Не понимаю, почему nco ip ругается на reset?
Я же его подключил:
Прикрепленное изображение


Цитата(goodsoul @ Feb 6 2015, 09:43) *
На начальном этапе можно еще SystemConsole использовать. Если в двух словах, то этот инструмент позволяет получать доступ к периферии внутри fpga через jtag.
Цепочка получается такой: SystemConsole (PC) -> USB-Blaster -> Jtag to Avalon Master преобразователь (есть модуль такой) -> периферия. Имея адреса модулей на шине Avalon можете читать и писать в них.
Применение System Console на начальных этапах позволяет не заморачиваться с ниосом или HPS (в случае SoC), а сразу начать отладку ваших блоков в ПЛИС.

http://www.altera.com/products/software/qu...ms-console.html


Спасибо, буду иметь ввиду, сейчас уж начал заниматься nios, если будут проблемы буду обращаться к помощи консоли.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 6 2015, 11:29
Сообщение #37


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Не понимаю, почему nco ip ругается на reset?

Формальная проблема. Вы экспортировали выходной Avalon-ST, если резет произойдет, то приёмник в другой системе ничего об этом не узнает и формально будет считаться, что транзакция на шине продолжается. Если вы не планируете постоянно рулить этим резетом, то можно не обращать внимание на этот ворнинг.
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 16 2015, 11:56
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Продолжаю разбираться с программированием NIOS. Сейчас затруднение вызывает fifo.
FIFO в моем случае выполняет роль моста AvMM-slave - AvST Sourse. Читаю manuals ug_fifo и ug_1085, в последнем есть раздел software programming Model (стр. 16-7) в котором указаны функции для работы с фифо, такие как инициализация фифо, чтения статуса, запись в фифо, чтения из фифо и т.д.
Функций так много, что я запутался в каком порядке из применять.
К сожалению на просторах интернета не нашел примера как правильно инициализировать фифо для отправки одного 32-битного числа из NIOSа.
Может быть у кого-нибудь есть пример?
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 19 2015, 11:23
Сообщение #39


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Идея следующая - из Nios выгружаю число в fifo, а из fifo выгружаю это число на внешние пины.
Соединяю все таким образом:
Прикрепленное изображение

при это выход fifo вывожу наружу(выделено красным)

Код на Си:
CODE
#include "io.h"
#include "altera_avalon_fifo_regs.h"
#include "altera_avalon_fifo_util.h"
#include "system.h"
#include "sys/alt_irq.h"
#include <stdio.h>
#include <stdlib.h>
#define ALMOST_EMPTY 2
#define ALMOST_FULL FIFO_0_IN_CSR_FIFO_DEPTH-3

int main(){
int a, b, c, d;
//initializes the FIFO
a = altera_avalon_fifo_init(FIFO_0_IN_CSR_BASE, //the base address of the FIFO control slave
0, //the value to write to the interruptenable register
ALMOST_EMPTY, //the value for the almost empty threshold (порог) level
ALMOST_FULL); //the value for the most full threshold level

//write a, b into fifo

b = 0xffff;
c = altera_avalon_fifo_write_fifo(FIFO_0_IN_BASE, //the base address of the fifo write slave
FIFO_0_IN_CSR_BASE, //the base address of the fifo control slave
b ); //value to write to address

//read a,b from fifo
d = altera_avalon_fifo_read_fifo(FIFO_0_IN_BASE, //the base address of the fifo read slave
FIFO_0_IN_CSR_BASE); //the base address of the fifo control slave
return 0;
}


Вопрос: как выход fifo вывести наружу так, чтобы это было видно при моделировании?
Go to the top of the page
 
+Quote Post
verali
сообщение Feb 24 2015, 11:51
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Скорее всего неправильно выразился: есть ли возможность выведенную наружу шину Avalon St промоделировать в ModelSim?
Уже неделю борюсь с эти, выслушаю любые советы.
Идея в выводе требуемого числа на внешние пины для моделирования. Для начала хочу вывести одно число через fifo, после подключить nco и вывести синус в modelsim. Fifo использую в качестве перехода Av-MM -> Av-ST.
Если уже ничего не получится, думаю двойной fifo сделать(Av-MM->Av-ST -->Av-St->Av-MM), а потом подключить PIO (тип Av-MM).
Go to the top of the page
 
+Quote Post
Kapsik
сообщение May 29 2015, 07:24
Сообщение #41


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Также как ТС пытаюсь поднять ядро SPI. Почитал спецификацию Avalon и IP-переферию. Ниос использовать не хочу, пытаюсь написать свой мастер на шину. Как я понял необходим Memory-Mapped Master. Описал его сигналы, address, byteenable, read, readdata и т.п. Собрал в QSYS систему из своего мастера и IP-ядра SPI
Прикрепленное изображение

и ...ничего не произошло… Пытаюсь выдавить хоть какой-то отклик, но чет совсем глухо.
Делаю следующее. В Register Map первый адрес адрес – адрес передатчика, выставляю на шину адреса «1», на шину данных число, на write «1», на byteenable «11» так как ширина шины на SPI 16 бит. Смотрю все это дело в ModelSim внутри IP SPI обсалютная тишина, ничего кроме входных сигналов не дрыгается.
Прикрепленное изображение

Прикрепленное изображение

Вопрос, что я делаю не так? Видимо упускаю, что-то важное…

Среда Quartus 14.1
Go to the top of the page
 
+Quote Post
alexadmin
сообщение May 29 2015, 08:38
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(Kapsik @ May 29 2015, 10:24) *
Вопрос, что я делаю не так? Видимо упускаю, что-то важное…


Единственная здравая мысль, приходящая в голову, что если вы не хотите использовать процессор, то шина авалон вам не особо нужна и проще написать за 30 минут свой собственный spi (или взять готовый) с более простым управлением.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение May 29 2015, 08:46
Сообщение #43


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(alexadmin @ May 29 2015, 11:38) *
Единственная здравая мысль, приходящая в голову, что если вы не хотите использовать процессор, то шина авалон вам не особо нужна и проще написать за 30 минут свой собственный spi (или взять готовый) с более простым управлением.

Тут такая интересная штука. SPI написал. А то чем я сейчас занимаюсь я подключу к своему slave и посмотрю, как он работает. Просто мне в дальнейшем надо будет использовать ADС, возможно другие IP ядра, а они все садятся на Avalon, вот я и решил попрактиковаться начав с SPI. Тут сама цель не SPI, а разобраться в целом, на примере SPI...
Go to the top of the page
 
+Quote Post
alexadmin
сообщение May 29 2015, 11:35
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(Kapsik @ May 29 2015, 10:24) *
?


Присмотрелся к картинкам.
reset - он у вас активным 0 сделан ведь?
byteena - он вам совсем не нужен. Если уж делать, то почему он стоит раным 3? для 32-разрядной шины он должен быть тогда уж 0xf. Но лучше убрать.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 1 2015, 11:03
Сообщение #45


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Решил подключить Nios и в ModelSim посмотреть как он дергает шину, но возникла странная ошибка. "Description Resource Path Location Type make: *** [prog.elf] Error 1 prog C/C++ Problem".
Проект в QSYS выглядит как Nios + RAM + SPI. Собирается все без ошибок
Прикрепленное изображение


С кодом особо не мудрил
Код
#include "system.h"
#include "altera_avalon_spi_regs.h"

int main ()
{
        int spi = 0x5;
        IOWR_ALTERA_AVALON_SPI_TXDATA(SPI_0_BASE, spi);
        return 0;
}

При сборке появляется ошибка
Прикрепленное изображение


С этой ошибкой я явно не одинок, обсуждалась и на нашем форуме и на заграничных, но однозначного ответа как исправить я не нашел. Демо от Altera заработала, добавил SPI тоже работает, добавил UART вылезла ошибка. Откатился на состояние без UART, но уже не помогло. Теперь и проект с 0 нормально не собирается.
Среда:
- Nios II 14.1 Software Build Tools for Eclipse
- Quartus II 14.1 (64-bit)

Прикрепляю папку с проектом
Прикрепленный файл  nio.zip ( 1.4 мегабайт ) Кол-во скачиваний: 59
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 1 2015, 16:43
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Попробуйте пересобрать BSP, если не поможет - создайте проект заново.
Для работы с SPI проще использовать функцию
Код
int alt_avalon_spi_command(alt_u32 base, alt_u32 slave,
                           alt_u32 write_length, const alt_u8 * write_data,
                           alt_u32 read_length, alt_u8 * read_data,
                           alt_u32 flags)
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 2 2015, 04:58
Сообщение #47


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(doom13 @ Jun 1 2015, 19:43) *
Попробуйте пересобрать BSP, если не поможет - создайте проект заново.

Спасибо за совет, попробовал. Создание проекта заново не помогает, это и пугает. Не могу удивить зависимость. Собираю проект с PIO, все работает и моделируется, собираю еще раз с теми же действиями и ошибка... К работающему проекту добавляю новую периферию, ошибка вылазит, откатываю назад она не пропадает. Страшно сделать проект, а он потом в самый неудобный момент умрет...
После всех действий в QSYS, в Eclips обновляю BSP.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jun 2 2015, 05:32
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



У вас oпрограмма из ON_CHIP_MEM выполняется? Скорее всего ее просто не хватает. Попробуйте создать "hello world small"
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 2 2015, 06:20
Сообщение #49


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Что при данной ошибке пишет в консоль?
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 2 2015, 06:35
Сообщение #50


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(gosu-art @ Jun 2 2015, 08:32) *
У вас oпрограмма из ON_CHIP_MEM выполняется? Скорее всего ее просто не хватает. Попробуйте создать "hello world small"

да, из on_chip. Тестовые hello world запускаются. Но стоит добавить еще периферии начинаются проблемы. Советы по увеличению памяти встречал на иностранных форумах, пытался увеличивать, но изменений не увидел. Изменения можно проводить "на лету", в существующем блоке подправить объем, а потом перегенерить BSP или пересоздать весь блок?

Цитата(doom13 @ Jun 2 2015, 09:20) *
Что при данной ошибке пишет в консоль?

Вы об этом?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 2 2015, 06:40
Сообщение #51


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Выполние Project->Clean и покажите что выдаст в CDT Global Build Console.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jun 2 2015, 07:16
Сообщение #52


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



если работаете из ON_CHIP то нужно создавать "урезанный" проект.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 2 2015, 07:24
Сообщение #53


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(doom13 @ Jun 2 2015, 09:40) *
Выполние Project->Clean и покажите что выдаст в CDT Global Build Console.

Прикрепляю
Прикрепленный файл  CDT_Global_Build_Console.txt ( 27.84 килобайт ) Кол-во скачиваний: 301


Цитата(gosu-art @ Jun 2 2015, 10:16) *
если работаете из ON_CHIP то нужно создавать "урезанный" проект.

Этого еще не пробовал, спасибо за наводку.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 2 2015, 07:46
Сообщение #54


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Ругается на размер памяти. Если не стоят, поставте галки для BSP enable_small_c_library и enable_reduced_device_drivers. Если не помогает, увеличивайте размер памяти и пересобирайте в Qsys.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 2 2015, 08:07
Сообщение #55


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(doom13 @ Jun 2 2015, 10:46) *
Ругается на размер памяти. Если не стоят, поставте галки для BSP enable_small_c_library и enable_reduced_device_drivers. Если не помогает, увеличивайте размер памяти и пересобирайте в Qsys.

Спасибо! Кажись галки сработали yeah.gif буду продолжать ковыряться.

Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 3 2015, 12:16
Сообщение #56


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Добрый день! Возник еще вопрос по отладке NIOS. Сейчас запускаю симуляцию из Eclipse и все что на создано в QSYS успешно симулируется. А как мне отсимултровать QSYS(NIOS) вместе с моими рукописными модулями?
Я обычно создаю TCL вида:
Код
        vlog -sv -L sv_generic -work work "$src_dir/synt/spi.v"
    vlog -sv -L sv_generic -work work "$src_dir/synt/spi_receiver.v"
    vlog -sv -L sv_generic -work work "$src_dir/synt/pll.v"

Подцепляю к ModelSim, там строкой "vsim -novopt -t ps -L work -L sv_generic work.tb" Запускаю симуляцию и все хорошо.
Сейчас в скрипт компиляции прикрепил все касательно QSYS(NIOS), все компилистя, симуляция стартует. Но не стартует выполнение кода на процессоре. Вопрос, как ModelSim указать на .elf файл? Как я понимаю его надо преобразовать к mif/hex проинициализировать им ROM и симуляция пойдет. Но как это сделать я пока не пойму...

Сообщение отредактировал Kapsik - Jun 3 2015, 12:20
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 3 2015, 12:41
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А зачем это?
Почему в железе то сразу нельзя отлаживать? Жетаг же есть...
А модули рукописные я отдельно обычно симулирую, и потом общие тесты в железе
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Jun 3 2015, 18:40
Сообщение #58


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(Golikov A. @ Jun 3 2015, 15:41) *
А зачем это?
Почему в железе то сразу нельзя отлаживать? Жетаг же есть...
А модули рукописные я отдельно обычно симулирую, и потом общие тесты в железе

К сожалению железа на руках нет, так что пока отлаживаться не получится. Да и начиналось, все с того, что я написал руками интерфейсы, написал тестбенчи, но решил совместит приятное(освоение qsys) с полезным(отладка) и подключить мастера с ниоса к рукописным слейвам. Однажды сталкивался, что процессор симулировался внутри всего дизайна, для этого файл прошивки подсовывали модел симу. Хочу сделать подобное для NIOS. Все таки отладка по частям это одно, а полностью другое, а пока нет железа только модел симом и обхожусь.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 12:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.02115 секунд с 7
ELECTRONIX ©2004-2016