Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 16 и 32 бит доступ к внешней памяти
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
alexPec
Уважаемые, поясните пожалуйса, не пойму никак.
На плане цыклон3 и 16-ти разрядная sram, подключена к ниосу через avalon-mm tristate bridge, младший адрес к памяти не подключен. Она работает правильно, но не пойму почему:
работает и 8-ми, и 16-ти и (!внимание) 32-х разрядный доступ (еще раз:память снаружи 16-ти разрядная)
Выполняю команду IOWR(RD)_8DIRECT() - пишет/читает по 8 бит, IOWR(RD)_16DIRECT() - пишет/читает по 16 бит, ну думаю щас сделаю 32-х разрядный доступ IOWR(RD)_32DIRECT() - старшее полуслово либо в 0-х либо в единицах будет - нет! пишет и читает по 32 разряда. Другая мысль возникла - драйвером ниос наверно разруливает софтово - написал тест, запись 10 млн.раз один адрес памяти - время абсолютно одинаковое, что при 16-ти, что при 32-х разрядной команде. Посмотрел дизасм - единственная разница при 16 разр. доступе команда sthio, при 32-х команда stwio.
А физически то как это происходит? Ну 8-ми разрядный доступ можно разрулить байт-энейблами, а 32-х как? За два цикла пишет чтоли? Тогда почему время при 16 и 32 битном обращении одно и то же?

Непонятно!

Как то привык я понимать как все происходит, и если не понимаю - боюсь блин! Когда-нибудь непонимание это аукнется ведь!

asoneofus
пАтАму как вАлшеПство (С) Я
А с каких пирогов (чем оценили) что одинаково? неуж встроенные ср-ва отладчика? Аль осцилограммка есть?
PS уровни абстракции чудеса творят
alexPec
Цитата(asoneofus @ Oct 9 2010, 01:56) *
А с каких пирогов (чем оценили) что одинаково? неуж встроенные ср-ва отладчика? Аль осцилограммка есть?

Я ж пишу, во-первых 10 млн. записей в память происходит за 4,3 сек, что при 16, что при 32 разрядном доступе (оценил секундомером незатейливо), во-вторых, код дизасма смотрел, разница между 16 и 32 разрядным доступом - одна команда соответственно sthio и stwio, подозреваю, что за одинаковое количество времени выполняются они, раз нет разницы в общем времени выполнения.
vadimuzzz
Цитата(alexPec @ Oct 9 2010, 01:46) *
А физически то как это происходит? Ну 8-ми разрядный доступ можно разрулить байт-энейблами, а 32-х как? За два цикла пишет чтоли? Тогда почему время при 16 и 32 битном обращении одно и то же?

подозреваю, что даже не 2 такта, а больше. там ведь наверное еще куча слейвов висит на шине. прицепите сигналтап и посмотрите, как транзакции происходят http://www.altera.com/literature/an/an446.pdf. там можно прямо сигналы к памяти смотреть на фоне дизассемблера.
torik
SRAM 16 бит, и пиши в нее хоть 16, хоть 32 слова, ее пропускная способность от этого не меняется. Если пишете 32 бит слова, то где-то появится фифо с входом 32 и выходом 16 бит.
alexPec
Цитата(torik @ Oct 11 2010, 14:02) *
SRAM 16 бит, и пиши в нее хоть 16, хоть 32 слова, ее пропускная способность от этого не меняется. Если пишете 32 бит слова, то где-то появится фифо с входом 32 и выходом 16 бит.


А фифо сопц-билдер сам ставит чтоли? Я то никаких фифо не ставил. И разве фифо не переполнится при постоянной записи (тестовый код, больше проц ничем не занят) 10 млн. раз? Или он wait генерит, пока два полуслова не запишет? Но тогда получается что он и при 16 бит доступе тоже wait генерит - время выполнения одно и тоже. Не рационально как-то. При 16 бит дотсупе wait не нужен по логике то. Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы...
vadimuzzz
Цитата(alexPec @ Oct 11 2010, 19:43) *
Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы...

посмотрите в моделсиме
VladimirB
Цитата(alexPec @ Oct 11 2010, 16:43) *
А фифо сопц-билдер сам ставит чтоли? Я то никаких фифо не ставил. И разве фифо не переполнится при постоянной записи (тестовый код, больше проц ничем не занят) 10 млн. раз? Или он wait генерит, пока два полуслова не запишет? Но тогда получается что он и при 16 бит доступе тоже wait генерит - время выполнения одно и тоже. Не рационально как-то. При 16 бит дотсупе wait не нужен по логике то. Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы...


Я конечно больше по микробам с PLB специалист, но в ниосах я думаю не лучше - авалон тормозит по полной.
Посчитайте сами: 10мегазаписей за 4.3 секунды - это 2.5мегазаписей в секунду. За время пока данные ползут по авалону нормальная SRAM может 20 раз их записать - т.е. как и у микроба всё упирается в производительность шины. Она кстати 32-битная, поэтому на неё разряность данных не влияет. А лишнюю быструю запись в SRAM с секундомером вы не увидите на фоне тормозов.
torik
Цитата
А фифо сопц-билдер сам ставит чтоли?

Да вроде да
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.