Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скорость чтения Microblaze'ом по шине PLB
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
powerc
Здавствуйте, это мой первый топик на вашем форуме. Так что прошу сильно не пинать sm.gif

Мой вопрос таков:

У меня имеется digilent nexys2 кит. На нем я поднял микроблэйз (EDK 10.1)
Написал под него программку на Си, которая просто записывает данные в какой-либо периферийный модуль на шине PLB (будь то внешняя память, регистр GPIO). В программе просто бесконечный цикл for и через указатели пишу данные по адресам из xparameters.h (код выложу попозже, т.к. не разобрался еще как его тут правильно добавить).

Так вот, когда программа работает, чтение из абонента шины PLB происходит с частотой 23 периода CLK, а запись - 71 такт CLK. Это с учетом того, что я убрал из проекта дебагер.

Вопрос, собсно, таков: такова ли скорость записи и чтения по шине PLB на самом деле? И что я делаю неправильно для оценки периодичности операции записи и чтения по шине PLB?




Есть еще вопрос.

Я наткнулся на такую информацию на форуме Xilinx:

http://forums.xilinx.com/t5/Embedded-Proce...v460/td-p/24478

Посты 6,7 и 8. Там говорится, что ядро микроблэйз не поддерживает блочную запись и чтение (burst mode).

Правда ли это?


Спасибо.
powerc
Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK?

Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже sad.gif
Leka
Цитата(powerc @ Jan 21 2011, 17:58) *

Спрашивать про быстродействие MicroBlaze/Nios - примерно как в СССР - про секс. maniac.gif
VladimirB
Цитата(powerc @ Jan 21 2011, 16:58) *
Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK?

Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже sad.gif


MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB.

Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины.

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

Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли.
В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить.




Mad_max
23 и 71 такт действительно многовато. Причины Вам уже описали.
При выполнение инструкций из bram или кеша, можно добиться скорости
чтения/записи за 5-6 тактов, как опять же Вам уже сказали.

Шина plb burst транзакций не поддерживает.

Но, если необходимо передавать/принимать большой объем данных и процессор помимо этого обрабатывает еще какие-то задачи, то
используйте DMA. Тогда задача по перекидки данных снимется с и без того хрупких плеч mb.

Plb_ipif поддерживает DMA, как простое, так и Scatter Gather с кольцом дескрипторов.
powerc
VladimirB, Mad_max, спасибо за ответы!


Да, я отключил вовсе оптимизацию, т.к. использовал в программе бесконечный цикл, а если не отключить оптимизацию, то бесконечный цикл компилятором исключается. Программист из меня - как из какашки пуля. sm.gif

Как раз в пятницу включил в проект СDMA- контроллер и начал читать его описание.


Насчет шины AXI - она еще народом особо не изучена, версия реализации сыренькая, и если встретятся какие-то глюки, то мы просто завалим нашу задачу. Да и, насколько я понимаю уже для ARMов предназначена, хотя и может быть использована и в проекте с MB.


>> Plb_ipif поддерживает DMA, как простое, так и Scatter Gather с кольцом дескрипторов.


Никак не возму в толк. DMA я могу добавить в IPIF интерфейс только custon IP или же я могу как-то добавить DMA в IPIF уже готового (допустим EMC) контроллера?


Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь. На очереди FSL sm.gif
Дварфик
Почему [часто] народ пишет что-то вреде
Цитата
Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь.
А на следующей неделе, да и через неделю "не отписывается". Это ж как оборвать на середине книжки словами КОНЕЦ.
powerc
Дварфик, да, извиняюсь. Отписываю.

CDMA я попробовал, снял временные диаграммы. Работает все равно медленно (для моей задачи). Он врубает на шине режим burst (как раз-таки) но читает побайтно и поэтому выкачивает одно 32-разрядное слово за 12 тактов CLK.
FSL пока что не попробовал, занимаюсь сейчас попытками захватить шину PLB интерфейсом Master. Заодно пытаюсь разобраться как моделировать взаимодействие между шиной и своим модулем Master, но пока что ничего путного не накопал. BFM? Да, наверное, но пока не знаю.
Если кто знает как моделировать в EDK подскажите или дайте ссыль на туториал, а то я что-то закопался опять...
powerc
Про CDMA отписал в этой теме:

http://electronix.ru/forum/index.php?showt...mp;#entry914662
D-Luxe
Цитата(VladimirB @ Jan 22 2011, 16:26) *
MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB.

Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины.

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

Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли.
В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить.

Тоже сталкивался с этой проблемой только на PowerPC. Чтение занимало порядка 70-80 тактов. Вы мне глаза открыли кэширование надо было включить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.