|
Скорость чтения Microblaze'ом по шине PLB, помогите пожалуйста разобраться |
|
|
|
Jan 19 2011, 08:48
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Здавствуйте, это мой первый топик на вашем форуме. Так что прошу сильно не пинать  Мой вопрос таков: У меня имеется 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). Правда ли это? Спасибо.
|
|
|
|
|
 |
Ответов
(1 - 9)
|
Jan 21 2011, 13:58
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK? Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже
|
|
|
|
|
Jan 22 2011, 12:26
|
Знающий
   
Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219

|
Цитата(powerc @ Jan 21 2011, 16:58)  Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK? Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже  MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB. Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины. Про 71 такт на запись - мне кажется либо у вас сама программа расположена в медленной памяти (при отключённом кешировании) и много времени уходит на чтение инструкций из памяти, либо вы невключили/отключили оптимизацию в компиляторе и он у вас генерит очень медленный код. Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли. В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить.
|
|
|
|
|
Jan 23 2011, 10:28
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
VladimirB, Mad_max, спасибо за ответы! Да, я отключил вовсе оптимизацию, т.к. использовал в программе бесконечный цикл, а если не отключить оптимизацию, то бесконечный цикл компилятором исключается. Программист из меня - как из какашки пуля.  Как раз в пятницу включил в проект СDMA- контроллер и начал читать его описание. Насчет шины AXI - она еще народом особо не изучена, версия реализации сыренькая, и если встретятся какие-то глюки, то мы просто завалим нашу задачу. Да и, насколько я понимаю уже для ARMов предназначена, хотя и может быть использована и в проекте с MB. >> Plb_ipif поддерживает DMA, как простое, так и Scatter Gather с кольцом дескрипторов. Никак не возму в толк. DMA я могу добавить в IPIF интерфейс только custon IP или же я могу как-то добавить DMA в IPIF уже готового (допустим EMC) контроллера? Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь. На очереди FSL
|
|
|
|
|
Apr 5 2011, 11:22
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 16-06-09
Пользователь №: 50 327

|
Почему [часто] народ пишет что-то вреде Цитата Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь. А на следующей неделе, да и через неделю "не отписывается". Это ж как оборвать на середине книжки словами КОНЕЦ.
|
|
|
|
|
Apr 12 2011, 14:59
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275

|
Дварфик, да, извиняюсь. Отписываю.
CDMA я попробовал, снял временные диаграммы. Работает все равно медленно (для моей задачи). Он врубает на шине режим burst (как раз-таки) но читает побайтно и поэтому выкачивает одно 32-разрядное слово за 12 тактов CLK. FSL пока что не попробовал, занимаюсь сейчас попытками захватить шину PLB интерфейсом Master. Заодно пытаюсь разобраться как моделировать взаимодействие между шиной и своим модулем Master, но пока что ничего путного не накопал. BFM? Да, наверное, но пока не знаю. Если кто знает как моделировать в EDK подскажите или дайте ссыль на туториал, а то я что-то закопался опять...
|
|
|
|
|
May 14 2011, 21:22
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(VladimirB @ Jan 22 2011, 16:26)  MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB.
Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины.
Про 71 такт на запись - мне кажется либо у вас сама программа расположена в медленной памяти (при отключённом кешировании) и много времени уходит на чтение инструкций из памяти, либо вы невключили/отключили оптимизацию в компиляторе и он у вас генерит очень медленный код.
Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли. В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить. Тоже сталкивался с этой проблемой только на PowerPC. Чтение занимало порядка 70-80 тактов. Вы мне глаза открыли кэширование надо было включить.
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|