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

 
 
> SOPC builder + AVALON, Подключения "своего" устройства к шине авалон
Alezi
сообщение Sep 27 2008, 11:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 8-07-08
Из: Хабаровск
Пользователь №: 38 795



Приветствую!
Тружусь над подключением своего устройства к шине авалон, но пока безрезультатно.(( Идея заключается в разработке и подключении контроллера памяти (SRAM) к софт процессору NIOSII с последующим управлением чтением/записью)) Может кто занимался подобными вещами?
Вопрос в следующем:
1) как в файле проекта (пишу контроллер на VHDL) сделать привязку к авалон, надо ли?
2) подключать пробовал (SOPC builder->create new component) через Avalon-MM, стоит ли через Avalon-Tristate Bridge?
Спецификацию по шине авалон штудирую))
Пока делал через Avalon-MM Slave, настраивал шины данных, адреса и управления. В итоге при написании программы управления в NIOS EDS и RUN AS возникает проблема, не может загрузить данные в процессор, в итоге ставит процессор в ожидание.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alezi
сообщение Sep 29 2008, 02:14
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 8-07-08
Из: Хабаровск
Пользователь №: 38 795



Смысл сией затеи научится работать ручками... smile.gif
Дальнейшая работа будет много сложней, плануруется подключение кодера JPEG 2000 AD202. Поэтому хочется разобраться во всех тонкостях Avalona... smile.gif
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Sep 29 2008, 05:25
Сообщение #3


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Alezi @ Sep 29 2008, 11:14) *
Смысл сией затеи научится работать ручками... smile.gif
Дальнейшая работа будет много сложней, плануруется подключение кодера JPEG 2000 AD202. Поэтому хочется разобраться во всех тонкостях Avalona... smile.gif

сей агрегат адв202 как раз и подключали так как я вам сказал smile.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Alezi
сообщение Sep 29 2008, 22:34
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 8-07-08
Из: Хабаровск
Пользователь №: 38 795



Цитата(Postoroniy_V @ Sep 29 2008, 09:25) *
сей агрегат адв202 как раз и подключали так как я вам сказал smile.gif

Хотелось бы поинтересоваться результатами, успешно? Может подкините идейку по подключению... smile.gif
Буду благодарен! Заранее спасибо! smile.gif

Цитата(Stewart Little @ Sep 29 2008, 10:36) *
Блок подключения внешнего статического ОЗУ (не поворачивается язык назвать его контроллером) для этого мало годится, так как прост как грабли. Использовать для него шаблон гораздо удобнее, т.к. при этом будет проще с адресацией разобраться smile.gif
Ну а если очень хочется врукопашную, то так :

Код
architecture rtl of async_sram_256kx32 is

begin
  cos_addr <= ats_address;
  cos_read_n <= ats_read_n;
  cos_write_n <= ats_write_n;
  cos_chipselect_n <= ats_chipselect_n;
  cos_byteenable_n <= ats_byteenable_n;

end rtl;


Извинияюсь Уважаемый, но в приведенном примере не нашел передачи данных с выхода Авалона на выхоы ПЛИС. С тем же успехом можно было в SOPC билдере создать систему и передавать все сигналы через I/O PIO.
Как я понимаю "Блок подключения внешнего статического ОЗУ " должен формировать временную диаграмму чтения/записи, что равносильно системе с I/O PIO с использование написанных в NIOS IDE функции доступа к внешней памяти (чтения/записи), за исключением меньшего быстродействия в последнем случае.
Кстати последний вариант был мною успешно реализован. Осталось сделать это первым способом. smile.gif
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 30 2008, 08:33
Сообщение #5


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Alezi @ Sep 30 2008, 02:34) *
Извинияюсь Уважаемый, но в приведенном примере не нашел передачи данных с выхода Авалона на выхоы ПЛИС. С тем же успехом можно было в SOPC билдере создать систему и передавать все сигналы через I/O PIO.

Взаимно извиняюсь, но Вы спецификацию авалона до конца дочитали? А доку на SOPC Builder посмотрели? Про стандартные префиксы ats (avalon tristate slave) и cos (conduit output start)???
В моем примере сигналы с префиксом cos - это и есть выход из FPGA во внешний мир.

Цитата(Alezi @ Sep 30 2008, 02:34) *
Как я понимаю "Блок подключения внешнего статического ОЗУ " должен формировать временную диаграмму чтения/записи, что равносильно системе с I/O PIO с использование написанных в NIOS IDE функции доступа к внешней памяти (чтения/записи), за исключением меньшего быстродействия в последнем случае.

Не совсем правильно. Тут, как говорится, "все украдено до нас" (с).
"Временную диаграмму" формирует Avalon с Avalon-MM Tristate Interface, а Вам нужно только его сигналы наружу вытащить. Задача тривильная.
И еще, насчет "системы с I/O PIO". SOPC Builder'у еще нужно объяснить, что этот компонент должен рассматриваться как память. При использовании шаблонов это делается автоматически (точнее говоря, установкой нужной галки в компонент едиторе). В противном случае нужно врукопашную подкручивать компонентный tcl-файл.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Alezi
сообщение Oct 2 2008, 01:46
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 8-07-08
Из: Хабаровск
Пользователь №: 38 795



Цитата(Stewart Little @ Sep 30 2008, 12:33) *
Взаимно извиняюсь, но Вы спецификацию авалона до конца дочитали? А доку на SOPC Builder посмотрели? Про стандартные префиксы ats (avalon tristate slave) и cos (conduit output start)???
В моем примере сигналы с префиксом cos - это и есть выход из FPGA во внешний мир.
Не совсем правильно. Тут, как говорится, "все украдено до нас" (с).
"Временную диаграмму" формирует Avalon с Avalon-MM Tristate Interface, а Вам нужно только его сигналы наружу вытащить. Задача тривильная.

Сколько хватило терпения переводить спецификацию читал...)) Про то, какие имеются со стороны авалона и внешнего устройства сигналы прочел. Для себя решил следующее: раз я обращаюсь к одному внешнему устройству, то вариант использовать Avalon-MM Tristate Interface отпадает по причине избыточности (дополнителный Tristate мост). Буду обращаться непосредственно к шине Авалона, на которой тоже можно формировать временную диаграмму чтения/записи.

Цитата(Stewart Little @ Sep 30 2008, 12:33) *
И еще, насчет "системы с I/O PIO". SOPC Builder'у еще нужно объяснить, что этот компонент должен рассматриваться как память.

Не понимаю, что надо "объяснять"? Прописываются функции записи и чтения, которые на выходе (PIO) будут формировать временную диаграмму.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 5 2008, 09:16
Сообщение #7


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Alezi @ Oct 2 2008, 05:46) *
Сколько хватило терпения переводить спецификацию читал...))

Видимо, терпения хватило не надолго smile.gif
У авалона две однонаправленных шины данных - одна на запись, другая на чтение. А у стандартной внешней памяти шина двунаправленная. Так что тристейт все равно необходим. SOPC Builder тем и хорош, что всю рутину по организации шин берет на себя. Вы уверены, что сделаете компактнее, чем он ???

Цитата(Alezi @ Oct 2 2008, 05:46) *
Не понимаю, что надо "объяснять"? Прописываются функции записи и чтения, которые на выходе (PIO) будут формировать временную диаграмму.

Временная диаграмма - это еще не все, что нужно для счастья. Кроме этого нужно, чтобы и процессор, и компилятор понимали, что в этом диапазоне адресов находится именно память - в которой можно размещать различные сегменты (кода, данных, стек), и куда можно назначить вектор сброса и перехода по исключению.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Alezi
сообщение Oct 7 2008, 23:25
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 8-07-08
Из: Хабаровск
Пользователь №: 38 795



Цитата(Stewart Little @ Oct 5 2008, 13:16) *
У авалона две однонаправленных шины данных - одна на запись, другая на чтение. А у стандартной внешней памяти шина двунаправленная. Так что тристейт все равно необходим.

В последнем утверждении я с вами не согласен, необходимости в тристейте нет! Из документации к Авалону явно видно , что в основном он используется когда требуется подключить несколько устройств, которые будут использовать одну шину адреса/данных. В моем случае идет подключение напрямую к шине по интерфейсу Avalon-MM Slave. Программный код "блока подключения внешней памяти" в моем примере выгляит так:
Код
module    SRAM
    (
    //    Host Data
    oDATA,iDATA,iADDR,
    iWE_N,iOE_N,
    iCE_N,iCLK,
    //    SRAM
    SRAM_DQ,
    SRAM_ADDR,
    SRAM_WE_N,
    SRAM_CE_N,
    SRAM_OE_N
    );
//    Host Side
input    [7:0]    iDATA;
output    [7:0]    oDATA;
input    [5:0]    iADDR;
input            iWE_N,iOE_N;
input            iCE_N,iCLK;

//    SRAM Side
inout    [7:0]    SRAM_DQ;
output    [5:0]    SRAM_ADDR;
output            SRAM_WE_N,
                SRAM_CE_N,
                SRAM_OE_N;

assign    SRAM_DQ     =    SRAM_WE_N ? 8'hzz : iDATA;
assign    oDATA        =    SRAM_DQ;
assign    SRAM_ADDR    =    iADDR;
assign    SRAM_WE_N    =    iWE_N;
assign    SRAM_OE_N    =    iOE_N;
assign    SRAM_CE_N    =    iCE_N;

endmodule


А в NIOS обращение выглядит как:
Код
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"

unsigned char* ptr_byte;
unsigned char a;

int main (void)
{    
     ptr_byte = (unsigned char*)SRAM_INST_BASE;
    while(1)
    {
    IOWR(VYHOD_BASE,0,1);  // использую для синхронизации оциллографа
            
    *ptr_byte = 0x55; //процесс записи

    IOWR(VYHOD_BASE,0,0);// использую для синхронизации оциллографа

    a = *ptr_byte; //процесс чтения

     };
return 0;
}


Непонятен только один вопрос, в процессе чтения на осцллографе наблюдаю 4 сигнала chipselect (идут подряд), причем идет изменение адресов. Такое чувство, что шина данных считается 32 разрядной, хотя указатель *ptr_byte обозначен как unsigned char. При изменении разрядности шины данных с 8 до 16 таких сигналов становится 2! 05.gif
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 9 2008, 11:42
Сообщение #9


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Alezi @ Oct 8 2008, 03:25) *
В последнем утверждении я с вами не согласен, необходимости в тристейте нет!

Ну Вы, блин, даете! (с)
А вот это :
Код
assign    SRAM_DQ     =    SRAM_WE_N ? 8'hzz : iDATA;

у вас не тристейт ???
Вы врукопашную сделали все тоже самое, что и Avalon-MM Trisatе Bridge (с шаблоном), только с большей кривизной. т.к.:
Цитата(Alezi @ Oct 8 2008, 03:25) *
в процессе чтения на осцллографе наблюдаю 4 сигнала chipselect (идут подряд), причем идет изменение адресов. Такое чувство, что шина данных считается 32 разрядной, хотя указатель *ptr_byte обозначен как unsigned char. При изменении разрядности шины данных с 8 до 16 таких сигналов становится 2!

Я Вам уже писал, о том, что при работе врукопашную нужно быть очень внимательным к адресации. Уважаемый vetal Вам подсказал, что нужно сделать.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alezi   SOPC builder + AVALON   Sep 27 2008, 11:20
- - Omen_13   Поиском по форуму смотрели? http://electronix.ru/f...   Sep 27 2008, 19:00
- - Alezi   Просмотрел все ссылки, но решения так и не нашел.   Sep 28 2008, 03:09
|- - Postoroniy_V   Цитата(Alezi @ Sep 28 2008, 12:09) Просмо...   Sep 28 2008, 09:33
- - Alezi   За ссылку конечно спасибо, я уже смотрел. Дело в т...   Sep 28 2008, 12:25
|- - Postoroniy_V   Цитата(Alezi @ Sep 28 2008, 21:25) За ссы...   Sep 28 2008, 13:16
||- - Postoroniy_V   Цитата(Alezi @ Sep 30 2008, 07:34) Хотело...   Sep 30 2008, 00:09
|||- - Alezi   С подключением памяти к Avalon разобрался! В...   Oct 18 2008, 10:42
|||- - Postoroniy_V   Цитата(Alezi @ Oct 18 2008, 19:42) С подк...   Oct 20 2008, 00:56
|- - Stewart Little   Цитата(Alezi @ Sep 29 2008, 06:14) Смысл ...   Sep 29 2008, 06:36
- - vetal   для байтовой шины: output [7:0] SRAM_ADDR; a...   Oct 8 2008, 08:43


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 17:36
Рейтинг@Mail.ru


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