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

|
Цитата(Копейкин @ Dec 22 2014, 10:06)  Если вы для сборки системы используете QSYS или SOPC builder, то соединения посредством шины Авалон будут сгенерированы автоматом. Если есть несовместимость сигналов - будут выданы ошибки и предупреждения. Если вы делали свой собственный компонент, то рекомендую использовать мастер, для генерации шаблона. Для сборки системы я использовал Quartus. Делал step by step: последовательно соединял ip ядра и моделировал их. Получается что данную системы (цифровой приемник) правильнее сделать в Qsys или Sopc builder?
|
|
|
|
|
Dec 22 2014, 10:27
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Если вы планируете использовать шину Авалон и готовые IP (типа NIOSII, DDR(1,2,3), Ethernet и т.п. ), то следует использовать Qsys или Sopc builder. Для создания шаблонов компонентов и затем создания системы. Также последняя версия Квартуса поддерживает не только Авалон. Если вы создаёте собственную систему "с нуля" "врукопашную", то всё равно, что использовать.
|
|
|
|
|
Dec 22 2014, 14:44
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Копейкин @ Dec 22 2014, 11:27)  Если вы планируете использовать шину Авалон и готовые IP (типа NIOSII, DDR(1,2,3), Ethernet и т.п. ), то следует использовать Qsys или Sopc builder. А чем отличается Qsys от SOPC Builder?
|
|
|
|
|
Dec 22 2014, 16:53
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(verali @ Dec 22 2014, 18:44)  А чем отличается Qsys от SOPC Builder? Версии Квартуса после 10 (если правильно помню), для построения систем, имеют в составе QSYS. Более ранние - SOPC builder.
|
|
|
|
|
Dec 22 2014, 18:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
Смотря что этой шиной делать. Сигналы у вас streaming или memory-mapped? Если надо данные через неё загонять куда-нибудь (может, например, в DDR2/3 ?) - это одно. Если надо по этой шине всего-лишь управление организовать - это другое. Другими словами, нужно для начала понять - для чего она используется: для передачи данных или для управления?
Выходы видятся следующие: 1) если нужно гибкое управления - то напрашивается микроконтроллер, и, как следствие, Nios2, который в свою очередь, тянет qsys, который требует аккуратного заворачивания всех субмодулей в qsys-обёртки. 2) если гибкость не требуется, вы понимаете что и куда, и писать объемные компоненты не предвидится, а нарисовать небольшой конечный автомат для вас не проблема - то можно плюнуть на qsys, и наваять один-два недостающих компонента врукопашную.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Dec 23 2014, 09:56
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 24 2014, 12:10
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(verali @ Dec 24 2014, 11:09)  Кто-нибудь соединял блоки DSP в Qsys? Требуется отдельная лицензия на ip ядра в qsys, чтобы их активировать? С этими блоками не сталкивался. Другие TSE, DDR, NIOS позволяли собрать timelimited систему, которая работала, пока к схеме подключен программатор или только 1 час. Возможно с вашими IP есть какие-то нюансы, почитайте подробное описание.
|
|
|
|
|
Dec 24 2014, 13:14
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Копейкин @ Dec 24 2014, 13:10)  С этими блоками не сталкивался. Другие TSE, DDR, NIOS позволяли собрать timelimited систему, которая работала, пока к схеме подключен программатор или только 1 час. Возможно с вашими IP есть какие-то нюансы, почитайте подробное описание. Описание полностью идентично, как для ip ядра в Визарде, так и для ядра в qsys - они имеют только временные ограничения по работе.
|
|
|
|
|
Jan 3 2015, 12:23
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(serjj @ Dec 25 2014, 09:49)  В Quartus 14.1 для Cyclone V доступны перечисленные вами ядра. Если хотите использовать их через QSys, обновите софтину и все появится  . Обратите внимание, что Авалон у фильтров имеет тип Streaming, тогда как у большинства компонентов (в т.ч. Nios) он Memory mapped. Соответсвенно, если вы хотите передать результат фильтрации/децимации в Nios для дальнейшей обработки, вам интерфейсы нужно будет согласовать, поставив преобразование Streaming-MM. SPI так же имеет интерфейс Memory mapped, следовательно что бы передать данные из SPI в NCO нужно будет реализовать преобразование MM-Streaming. Спасибо за ответ! Скажите пожалуйста зачем в ядре spi нужен сигнал data_in?
|
|
|
|
|
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 (сигналы на прикрепленной мною картинке). Зачем нужны эти сигналы?
|
|
|
|
|
Jan 14 2015, 14:41
|
Частый гость
 
Группа: Свой
Сообщений: 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 мастере идет речь(
|
|
|
|
|
Jan 14 2015, 14:57
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата А без avalon spi реализовать возможно? Да, написать самому. Цитата Я не представляю о каком avalon мастере идет речь Посмотрите спецификацию на шину Avalon, честное слово, там всё ж просто, это же не AXI4. Если бы был Nios, то функции мастера выполнялись бы им, но т.к. его судя по всему у Вас нет, управлять шиной прийдется вручную. Удачи.
|
|
|
|
|
Feb 5 2015, 13:57
|
Частый гость
 
Группа: Свой
Сообщений: 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?
|
|
|
|
|
Feb 6 2015, 08:43
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 6 2015, 10:53
|
Частый гость
 
Группа: Свой
Сообщений: 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, если будут проблемы буду обращаться к помощи консоли.
|
|
|
|
|
Feb 6 2015, 11:29
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Не понимаю, почему nco ip ругается на reset? Формальная проблема. Вы экспортировали выходной Avalon-ST, если резет произойдет, то приёмник в другой системе ничего об этом не узнает и формально будет считаться, что транзакция на шине продолжается. Если вы не планируете постоянно рулить этим резетом, то можно не обращать внимание на этот ворнинг.
|
|
|
|
|
Feb 19 2015, 11:23
|
Частый гость
 
Группа: Свой
Сообщений: 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 вывести наружу так, чтобы это было видно при моделировании?
|
|
|
|
|
May 29 2015, 07:24
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
May 29 2015, 08:46
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086

|
Цитата(alexadmin @ May 29 2015, 11:38)  Единственная здравая мысль, приходящая в голову, что если вы не хотите использовать процессор, то шина авалон вам не особо нужна и проще написать за 30 минут свой собственный spi (или взять готовый) с более простым управлением. Тут такая интересная штука. SPI написал. А то чем я сейчас занимаюсь я подключу к своему slave и посмотрю, как он работает. Просто мне в дальнейшем надо будет использовать ADС, возможно другие IP ядра, а они все садятся на Avalon, вот я и решил попрактиковаться начав с SPI. Тут сама цель не SPI, а разобраться в целом, на примере SPI...
|
|
|
|
|
May 29 2015, 11:35
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Kapsik @ May 29 2015, 10:24)  ? Присмотрелся к картинкам. reset - он у вас активным 0 сделан ведь? byteena - он вам совсем не нужен. Если уж делать, то почему он стоит раным 3? для 32-разрядной шины он должен быть тогда уж 0xf. Но лучше убрать.
|
|
|
|
|
Jun 1 2015, 11:03
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 1 2015, 16:43
|
Профессионал
    
Группа: Свой
Сообщений: 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)
|
|
|
|
|
Jun 2 2015, 04:58
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086

|
Цитата(doom13 @ Jun 1 2015, 19:43)  Попробуйте пересобрать BSP, если не поможет - создайте проект заново. Спасибо за совет, попробовал. Создание проекта заново не помогает, это и пугает. Не могу удивить зависимость. Собираю проект с PIO, все работает и моделируется, собираю еще раз с теми же действиями и ошибка... К работающему проекту добавляю новую периферию, ошибка вылазит, откатываю назад она не пропадает. Страшно сделать проект, а он потом в самый неудобный момент умрет... После всех действий в QSYS, в Eclips обновляю BSP.
|
|
|
|
|
Jun 2 2015, 06:35
|
Частый гость
 
Группа: Свой
Сообщений: 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)  Что при данной ошибке пишет в консоль? Вы об этом?
|
|
|
|
|
Jun 2 2015, 07:24
|
Частый гость
 
Группа: Свой
Сообщений: 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 то нужно создавать "урезанный" проект. Этого еще не пробовал, спасибо за наводку.
|
|
|
|
|
Jun 2 2015, 08:07
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086

|
Цитата(doom13 @ Jun 2 2015, 10:46)  Ругается на размер памяти. Если не стоят, поставте галки для BSP enable_small_c_library и enable_reduced_device_drivers. Если не помогает, увеличивайте размер памяти и пересобирайте в Qsys. Спасибо! Кажись галки сработали  буду продолжать ковыряться.
|
|
|
|
|
Jun 3 2015, 12:16
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 3 2015, 18:40
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086

|
Цитата(Golikov A. @ Jun 3 2015, 15:41)  А зачем это? Почему в железе то сразу нельзя отлаживать? Жетаг же есть... А модули рукописные я отдельно обычно симулирую, и потом общие тесты в железе К сожалению железа на руках нет, так что пока отлаживаться не получится. Да и начиналось, все с того, что я написал руками интерфейсы, написал тестбенчи, но решил совместит приятное(освоение qsys) с полезным(отладка) и подключить мастера с ниоса к рукописным слейвам. Однажды сталкивался, что процессор симулировался внутри всего дизайна, для этого файл прошивки подсовывали модел симу. Хочу сделать подобное для NIOS. Все таки отладка по частям это одно, а полностью другое, а пока нет железа только модел симом и обхожусь.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|