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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Шина Avalon
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

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

 


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


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