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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> SOPC component builder
Stewart Little
сообщение Mar 5 2010, 10:01
Сообщение #16


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

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



Цитата(DASM @ Mar 5 2010, 12:27) *
В чем не так ?

Во всем smile.gif
Avalon - это системная шина. На нее могут подключаться разные устройства - ведущие (master) и ведомые (slave). Мастер может инициировать транзакцию на шине, а слейв может только реагировать на транзакцию мастера, адресованную именно этому слейву.
Мастеров и слейвов на шине может быть много. Для того, чтобы определять нужный слейв на Avalon'е, служит шина адреса. Тут все абсолютно аналогично стандартной микропроцессорной схемотени.
Т.е. адресовать слейв нужно обязательною (в исходнике предусмотрите порт адреса, и дешифровку, если нужно). А SOPC Builder на этапе сборки системы привяжет базовый адрес этого слейва к конкретному адресу на авалоне.

Поскольку ресурсы ПЛИСа хочется сэкономить, Avalon всегда создается неким оптимальныс с точки зрения SOPC Builder'a способом - а именно каждый мастер соединяется только с теми слейвами, с которыми он может организовать транзакции.

И еще один момент - при создании нового модуля в Component Editor'е можно указать, что этот модуль является памятью (там нужно спец. галку установить) - тогда с этим модулем можно будет общаться через указатели.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 5 2010, 10:06
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



да, все всегда пересобираю.. Как-то странно, out <= 8'haa или другие, отличные нуля числа ; - на выходе 0xFC , только если ь out <= 8'h00 - тогда ноль читается. То есть читаю, похоже оттуда, но почему-то все портится. Мож времянка какая не того ? Тактовая у циклона 27 Мгц PLL нету, то есть частоты то невысокие. До сигналтапа еще не проэрудировался smile.gif
PS Оппа... просто регистр был 8-битный, а читал я видимо его как 8-битный. Полагал что это не страшно. Однако какой эффект... сделал его 32 битным - все OK
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Mar 5 2010, 10:11
Сообщение #18


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

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



Цитата(DASM @ Mar 5 2010, 13:06) *
да, все всегда пересобираю.. Как-то странно, out <= 8'haa или другие, отличные нуля числа ; - на выходе 0xFC , только если ь out <= 8'h00 - тогда ноль читается. То есть читаю, похоже оттуда, но почему-то все портится. Мож времянка какая не того ? Тактовая у циклона 27 Мгц PLL нету, то есть частоты то невысокие. До сигналтапа еще не проэрудировался smile.gif

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


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 5 2010, 10:16
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Разве Avalon не рулит этим ? Не к адресам же модуля обращаются
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Mar 5 2010, 10:29
Сообщение #20


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

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



Цитата(DASM @ Mar 5 2010, 13:16) *
Разве Avalon не рулит этим ? Не к адресам же модуля обращаются

Да, что-то я погорячился... Сорри... laughing.gif

Цитата(DASM @ Mar 5 2010, 13:06) *
PS Оппа... просто регистр был 8-битный, а читал я видимо его как 8-битный. Полагал что это не страшно. Однако какой эффект... сделал его 32 битным - все OK

Тогда понятно. Вопросы выравнивания.
Забейте на макросы и переходите на работу с указателями.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 5 2010, 12:59
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(Stewart Little @ Mar 5 2010, 13:29) *
Забейте на макросы и переходите на работу с указателями.


а меня заодно проинформируйте - как определить - кэшед или ан-кэшед обращение сгенерирует та или иная конструкция (конструкция HAL-а или API альтеровского - то есть высокоуровневая) ?
проц без ММУ

то, что это определяется 31-м битом я знаю, и по коду могу посмотреть
собственно IOWR / IORD тем и хороши, что ан-кешед аксес генерят и думать не надо, я их и использую

а с указателем надо 0х80000000 добавить к базовому адресу или как-то по другому?

-------------------------------------

2DASM по поводу многопроцессорных ниосов

я вопроса не нашел, а то что я разбирался - мне показалось проще иметь несколько независимых проектов для SOPC (для каждого процессора свой)

при этом плюсы - при изменении одного SOPC не надо пересобирать софтверные проекты для остальных процессоров, ну и квартус быстрее собирает
ну и мне всегда казалось, что двумя половинками проще оперировать чем одним целым,
в моем случае разные программисты программируют разные процессоры, поэтому организационно это проще - каждому свой ptf файл - меньше проблем

так как с именами там проблема (SOPC генерит верилог с одинаковыми именами), то надо для каждой системы свою директорию, которую включить для сборки в квартус

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

upd: у меня разделяемой периферии не было, передача данных через conduit-ы вытащенные на топ-левел, причем кондуиты к Avalon-ST (а не ММ)

ну и еще есть вопросы работы шины - лень влезать.
минус аппаратный семафор не поставить, но как сделать семафор на общей памяти без блокировки Дейкста еще в 50-е придумал

в обоих случаях столкнулся с проблемой отладки/загрузки/программирования флаш - тулзы не могут правильно определить какой процессор используешь, поэтому вручную надо праставлять --instance (в дополнительных параметрах, если из gui)
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 7 2010, 02:35
Сообщение #22


Гуру
******

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



Цитата(yes @ Mar 5 2010, 18:59) *
а меня заодно проинформируйте - как определить - кэшед или ан-кэшед обращение сгенерирует та или иная конструкция (конструкция HAL-а или API альтеровского - то есть высокоуровневая) ?
проц без ММУ
то, что это определяется 31-м битом я знаю, и по коду могу посмотреть
собственно IOWR / IORD тем и хороши, что ан-кешед аксес генерят и думать не надо, я их и использую
а с указателем надо 0х80000000 добавить к базовому адресу или как-то по другому?

в HAL API есть соотв. функции. например, alt_remap_uncached(void* ptr, alt_u32 len) преобразует область памяти по адресу ptr для некэшированного доступа.
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 10 2010, 10:13
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(vadimuzzz @ Mar 7 2010, 05:35) *
в HAL API есть соотв. функции. например, alt_remap_uncached(void* ptr, alt_u32 len) преобразует область памяти по адресу ptr для некэшированного доступа.

если не лень - объясните, как она работает?
то есть 1) как использовать, 2) как устроено в софте

UPD :

посмотрел, зачем же там параметр len,
вобщем-то разумно, почистить кэш,
хотя с другой стороны кэш - write-through, поэтому зачем флашить его - непонятно
Код
volatile void* alt_remap_uncached (void* ptr, alt_u32 len)
{
  alt_dcache_flush (ptr, len);
  return (volatile void*) (((alt_u32) ptr) | BYPASS_DCACHE_MASK);
}


Сообщение отредактировал Omen_13 - Apr 1 2010, 15:54
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 10 2010, 15:01
Сообщение #24


Гуру
******

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



дык код alt_dcache_flush посмотрите, сбрасываются только строки, которые лежат по нужному адресу.
по поводу использования гляньте в sgdma и в ethernet. при передаче данных(дескриптора) от ЦП к контроллеру DMA вызывается alt_remap_uncached. обратная операция (делается в драйвере ethernet, например) использует вызов alt_remap_cached.
Go to the top of the page
 
+Quote Post
yura-w
сообщение Mar 19 2010, 12:30
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617



Подскажите,
можно ли в SOPC Builder, для вложенных в top файл модулей, использовать массивы портов?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 10:00
Рейтинг@Mail.ru


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