Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "addressAlignment" "NATIVE"
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
DASM
Тут задачка такая, вобщем надо mmslave 8 битный повесить на avalon bus. Как я понимаю при записи-чтении произойдет 4-ре обращения к слейву, что мне совсем не надо.
Выхода я вижу два - или указать "addressAlignment" "NATIVE" (кстати а это поможет ? В примерах от Террасика вроде работает именно так)
Вторым вариантом мне видится представить мой слейв таки как с 32 битной шиной, но в вериложном файле оответсвенно корректировать принимаемые адреса и использовать только байт из 32 битного слова (соответственно в НИОСе отсекать при чтении). - а этот вариант подойдет ? Ну и главный вопрос - как все же лучше то ?
torik
А о каких четырех обращениях идет речь?
DASM
If the master is wider than the slave, data bytes in the master address space map to
multiple locations in the slave address space. For example, when a 32-bit master port
performs a read transfer from a 16-bit slave port, the system interconnect fabric
executes two read transfers on the slave side on consecutive addresses, and presents
32-bits of slave data back to the master port.
vadimuzzz
Цитата(DASM @ Nov 12 2010, 16:49) *
If the master is wider than the slave...

я думаю, здесь имеются в виду операции с более чем 1 словом. например, пытаемся прочесть 5 байт, тогда в описанной здесь схеме будет 3 операции по 16 бит. у процессора ведь есть разные инструкции чтения: ldb, ldh,ldw ...
DASM
ммммм.. а я так понял, что если ниос с 32 битной шиной сделает IORD к 8 битному слейву, то прочтет таки 4 байта.....
vadimuzzz
Цитата(DASM @ Nov 12 2010, 18:18) *
ммммм.. а я так понял, что если ниос с 32 битной шиной сделает IORD к 8 битному слейву, то прочтет таки 4 байта.....

посмотрите в сигналтапе, если есть возможность. самому интересно smile.gif
DASM
TAP уже забыл как юзать, просто написал в верилоге счетчик кол-ва стробов RD и выдаю его.. Ан нет, одно обращение за раз делает... Тогда вообще не понимаю как эту фразу понимать
Причем мне даже SOPC дает warning slave0 does not have byteenables from cpu. Narrow (less than 32-bit) writes will result spurios writes...
Попробовал счетчик на write - то же самое - только одно обращение. Потом правда понял свою ошибку - в дизасме то он stw делал по макросу IOWR. Но я поменял запись на такое volatile alt_u8 *ptr = (alt_u8 *)(BRIDGE2MPEG_CNTRL_IF_0_BASE | 0x80000000);
Теперь в дизасме stb уже, но ВСЕ РАВНО только одно обращение... ничо не понимаю...
DASM
Все. Понял. Просто я забыл при NATIVE перекомпилить SOPC
Вобщем если в tcl стоит set_interface_property avalon_slave_0 addressAlignment NATIVE - то обращение будет одно.
Если set_interface_property avalon_slave_0 addressAlignment DYNAMIC - то 4 (в моем случае)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.