|
|
  |
NIOS для начинающих |
|
|
|
Mar 2 2011, 09:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(vadimuzzz @ Mar 2 2011, 11:44)  пожалуй, проще начать с tristate bridge. посмотрите эту тему, я там описывал создание компонента из шаблона. при добавлении такого компонента-заглушки и бриджа, сигналы шины Avalon будут выведены наружу, прицепите их к памяти. Спасибо, что-то получаться стало. ....... вот мой тсл Код # TCL File Generated by Component Editor 10.1 # Wed Mar 02 13:46:07 YEKT 2011 # DO NOT MODIFY
# +----------------------------------- # | # | DAC_memOut "DAC_memOut" v1.0 # | Anisimov 2011.03.02.13:46:07 # | # | # +-----------------------------------
# +----------------------------------- # | request TCL package from ACDS 10.1 # | package require -exact sopc 10.1 # | # +-----------------------------------
# +----------------------------------- # | module DAC_memOut # | set_module_property NAME DAC_memOut set_module_property VERSION 1.0 set_module_property INTERNAL false set_module_property OPAQUE_ADDRESS_MAP true set_module_property GROUP "Memories and Memory Controllers/SDRAM" set_module_property AUTHOR Juvf set_module_property DISPLAY_NAME DAC_memOut set_module_property INSTANTIATE_IN_SYSTEM_MODULE false set_module_property EDITABLE true set_module_property ANALYZE_HDL AUTO # | # +-----------------------------------
# +----------------------------------- # | files # | # | # +-----------------------------------
# +----------------------------------- # | parameters # | # | # +-----------------------------------
# +----------------------------------- # | display items # | # | # +-----------------------------------
# +----------------------------------- # | connection point avalon_tristate_slave # | add_interface avalon_tristate_slave avalon_tristate end set_interface_property avalon_tristate_slave activeCSThroughReadLatency false set_interface_property avalon_tristate_slave associatedClock clock set_interface_property avalon_tristate_slave explicitAddressSpan 0 set_interface_property avalon_tristate_slave holdTime 0 set_interface_property avalon_tristate_slave isMemoryDevice true set_interface_property avalon_tristate_slave isNonVolatileStorage false set_interface_property avalon_tristate_slave maximumPendingReadTransactions 0 set_interface_property avalon_tristate_slave printableDevice false set_interface_property avalon_tristate_slave readLatency 0 set_interface_property avalon_tristate_slave readWaitStates 0 set_interface_property avalon_tristate_slave readWaitTime 0 set_interface_property avalon_tristate_slave setupTime 0 set_interface_property avalon_tristate_slave timingUnits Cycles set_interface_property avalon_tristate_slave writeWaitTime 0
set_interface_property avalon_tristate_slave ENABLED true
add_interface_port avalon_tristate_slave addr address Input 10 add_interface_port avalon_tristate_slave data data Bidir 16 add_interface_port avalon_tristate_slave rd read Input 1 add_interface_port avalon_tristate_slave wr write Input 1 add_interface_port avalon_tristate_slave cs chipselect_n Input 1 # | # +-----------------------------------
# +----------------------------------- # | connection point clock # | add_interface clock clock end set_interface_property clock clockRate 0
set_interface_property clock ENABLED true
add_interface_port clock clk clk Input 1 # | # +----------------------------------- add_interface_port avalon_tristate_slave addr address Input 10 - десяти разрядная шина адреса. почему в графически ниос показывает 11 разрядную шину? бага? Чем тактировать внеешнее озу? клоками ядра?
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 2 2011, 15:19
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(juvf @ Mar 2 2011, 15:02)  почему в графически ниос показывает 11 разрядную шину? бага? это для побайтовой адресации. просто игнорируйте младший разряд Цитата Чем тактировать внеешнее озу? клоками ядра? да
|
|
|
|
|
Mar 3 2011, 09:16
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Доброго времени суток Уважаемые гуру. Прошу о помощи. С 2009 года занимаюсь учебной исследовательской работой в университете на теме: "Диагностика и тестирования ПЛИС", мною были самостоятельно изучены основы работы в Quartus II 8.0 собственно в нём год и прошёл. Теперь поступило новое задание, переписать всё что было сделано на Verilog(е) за год под Nios II С/С++.
И тут прям со старта я наткнулся на проблемы... на ПК стоит Quartus II 8.0 Web Edition и Nios II EDS 8.0, в теме нашел много полезной литературы для обучения, но везде предлагается создавать проект Nios II Application and BSP from Template, который у меня отсутствует в меню >Создать. Осмелюсь предположить, что это из-за того, что установлен Nios II 8.0 IDE, а нужен Nios II 8.0 SBT, но это лишь моё предположение. К сожалению на мой запрос о данной версии Nios(а) гугл ничего толкового не дал, на сайте Alter(ы) я увидел мою же версию но по новее 10.1 (боюсь что моя лицензия не подойдёт), на сайте Eclipse тоже пусто... Прошу о помощи.
Заранее благодарен, с Уважением Дмитрий.
|
|
|
|
|
Mar 3 2011, 09:38
|

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

|
Цитата(W1nneR @ Mar 3 2011, 12:16)  И тут прям со старта я наткнулся на проблемы... До девятых версий термин "BSP" Альтера не использовала. Вместо него пользовались понятием "System Library". В Вашем случае проект нужно создавать так - File - New - Project - Altera Nios II - Nios II C/C++ Application. При создании проекта указать "Create a new system library"
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Mar 3 2011, 10:07
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Благодарю, пошел грызть гранит науки.
|
|
|
|
|
Mar 4 2011, 11:04
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Во млин!!! Удалось записать в озу данные, и даже тайминги все правильно расставленны. Пишу с помощю IOWR_16DIRECT(DAC_MEM_BASE, 10, 0x55aa); - кто бы мог подумать, что доступ к внешнему озу..... через IOWR_16DIRECT. Хотя тут же SDRAM стоит, через альтеровский контроллер подключенна: обращяюсь к ней без всяких IOWR_16DIRECT. ps в порты PIO пишу через IOWR_ALTERA_AVALON_PIO_DATA(IOLED_BASE, led);. По идее, если сделать секцию памяти .myPio в BSP и разместить её по адресу IOLED_BASE ..... яже могу потом обращаться без всяких IOWR_ALTERA_AVALON_PIO_DATA , а как-то Код __attribute__ ((section (".myPio "),used)) unsigned int led; ... //а потом писать в порт led = 0x12; По идее так должно работать?
Сообщение отредактировал juvf - Mar 4 2011, 11:05
|
|
|
|
|
Mar 4 2011, 11:51
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(juvf @ Mar 4 2011, 17:04)  ps в порты PIO пишу через IOWR_ALTERA_AVALON_PIO_DATA(IOLED_BASE, led);. По идее, если сделать секцию памяти .myPio в BSP и разместить её по адресу IOLED_BASE ..... яже могу потом обращаться без всяких IOWR_ALTERA_AVALON_PIO_DATA , а как-то Код __attribute__ ((section (".myPio "),used)) unsigned int led; ... //а потом писать в порт led = 0x12; По идее так должно работать? IOWR_16DIRECT пишет в обход кэша данных. причина непоняток с памятью, видимо, в этом. можете создать указатель с адресом IOLED_BASE и писать/читать, используя разыменование указателя, следите только, чтобы 31-й бит был взведен.
|
|
|
|
|
Mar 9 2011, 14:48
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Создал простейшую систему в SOPC Builder (Nios tiny, On Chip Memory (4k), 3 - PIO, Timer) хотел проверить заработает ли она, и написать некое подобие команды Ping. На PIO загружаю какой то код, делаю проверку первых 8 бит, если они равны - ААh, то [7:31] вываливаю на PIO иначе на PIO нули. Т.к. с Nios(ом) еще пока дел не имел, есть пара вопросов. 1. При создании Nios II Application and BSP from Tample указал файл *.sopcinfo и тот создал мне 2 папки: 1 - Имя проекта; 2 - Имя проекта _ bsp; Файл со своим текстом программы создавать в (1) или (2)? 2. В файле с программой каким образом можно обратится к первым восьми линиям PIO? В файле system.h нашел кучу присваиваний, но конкретных имён линий не увидел.
Простите за глупые вопросы, я самоучка и спросить у других специолистов возможности нет, приходится спотыкаться на элементарных вещах.
|
|
|
|
|
Mar 9 2011, 15:41
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(W1nneR @ Mar 9 2011, 20:48)  Файл со своим текстом программы создавать в (1) или (2)? (1) Цитата 2. В файле с программой каким образом можно обратится к первым восьми линиям PIO? В файле system.h нашел кучу присваиваний, но конкретных имён линий не увидел. подключаете altera_avalon_pio_regs.h и читаете через макрос IORD_ALTERA_AVALON_PIO_DATA, потом маску накладываете. base address в system.h смотрите
|
|
|
|
|
Mar 9 2011, 18:41
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Спасибо, щас опробуем.
|
|
|
|
|
Mar 9 2011, 22:23
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Ну, вот стряпал кое что.
#include <stdio.h> #include <system.h> #include "altera_avalon_pio_regs.h"
void main() { BYTE PING = AA; BYTE COMMAND; BYTE CODE = FF; BYTE ERROR = F0;
COMMAND = IORD_ALTERA_AVALON_PIO_DATA(PIO_0_BASE);
if(COMMAND == PING) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, CODE); } else IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, ERROR);
}
только почему то не хочет подключать указанные в INCLUDE файлы, если они находятся не в одной папке с главным файлом. Приходится перетаскивать всё в одну папку с _bsp. Это можно как-нибудь исправить?
|
|
|
|
|
Mar 10 2011, 17:38
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-11
Пользователь №: 63 360

|
Кто нибудь имел дело с Nios системами ведущих обмен с FTDI?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|