Перейти к содержанию
    

пожалуй, проще начать с 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 разрядную шину? бага? Чем тактировать внеешнее озу? клоками ядра?

post-49045-1299056526_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему в графически ниос показывает 11 разрядную шину? бага?

это для побайтовой адресации. просто игнорируйте младший разряд

Чем тактировать внеешнее озу? клоками ядра?

да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток Уважаемые гуру. Прошу о помощи.

С 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 тоже пусто... Прошу о помощи.

 

Заранее благодарен, с Уважением Дмитрий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И тут прям со старта я наткнулся на проблемы...

До девятых версий термин "BSP" Альтера не использовала. Вместо него пользовались понятием "System Library".

В Вашем случае проект нужно создавать так - File - New - Project - Altera Nios II - Nios II C/C++ Application.

При создании проекта указать "Create a new system library"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SBT появился в 9-й версии (по-моему 9.1). лицензия на ниосовские IDE не нужна, они бесплатные. да и на квартус веб-эдишн тоже

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени. Подключил к 2-хпортовому озу ниос. вопрос - как из ниоса достучатся до озу? как писать туда? В эклипсе в BSP создал секцию памяти и разместил её на своем Avalon Memory Mapped Tristate Slave. теперь из кода программы пытаюсь записать в озу что-нибудь. пишу так

__attribute__ ((section (".dac"),used)) unsigned int dacData[512];
....
while(1)
{
dacData[16] = 0x55aa;
pauseMm(1000);
}

смотрю сигналТапом сигнал WR- нету. В нуле всегда. на шине данных и шине адреса что-то меняется. а WR - нет. Может я не правильно dacData[512] разместил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во млин!!! Удалось записать в озу данные, и даже тайминги все правильно расставленны. Пишу с помощю 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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-й бит был взведен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал простейшую систему в 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 нашел кучу присваиваний, но конкретных имён линий не увидел.

 

Простите за глупые вопросы, я самоучка и спросить у других специолистов возможности нет, приходится спотыкаться на элементарных вещах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файл со своим текстом программы создавать в (1) или (2)?

(1)

2. В файле с программой каким образом можно обратится к первым восьми линиям PIO?

В файле system.h нашел кучу присваиваний, но конкретных имён линий не увидел.

подключаете altera_avalon_pio_regs.h и читаете через макрос IORD_ALTERA_AVALON_PIO_DATA, потом маску накладываете. base address в system.h смотрите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, вот стряпал кое что.

 

 

#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. Это можно как-нибудь исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только почему то не хочет подключать указанные в INCLUDE файлы, если они находятся не в одной папке с главным файлом.

Приходится перетаскивать всё в одну папку с _bsp. Это можно как-нибудь исправить?

Странно, стандартные должны находиться. А вообще, свойства проекта -> c/c++build->general->include paths плюсиком добавляете нужные пути.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...