Перейти к содержанию
    

Доброго времени суток. Вопрос к специалистам по Xilinx. Решил использовать Microblaze в системе сбора данных. Добавил в проект EDK свое периферийное устройство с интерфейсом PLB, суть которого получать данные с параллельного ацп. На другой строне у меня стоит контроллер памяти. Еще к шине, помимо проца, подключен контроллер BRAM, в которой храниться моя программа и UART, для передачи данных на PC. По логике вещей когда память заполнится, проц может приступить к обработке. Вроде в даташите написано, что шина мультиплексируемая, но когда я посмотрел что творится с шиной в Modelsim, пришел в ужас. Судя по диаграммам шина обычная, разделяемая, и если проц обращается к BRAM, то данные из ацп в Sdram уже не поступают. Но более того, меня поразила низкая производительность шины. Сначала 10 тактов - цикл адреса, потом еще 10 - цикл данных, потом еще 10 тактов ждем непонятно что. Вообщем с 8-битного 100Mhz ацп непрерывно данные получать невозможно. Работать напрямую тоже не хочется, проц нужен однозначно. Реализовывать пакетные передачи по шине пробовал, потратил уйму времени, не помогло (хотя и стало работать быстрее). Кто-нибудь сталкивался с этой шиной. Может быть я где-то косячу, не понимаю, почему такая низкая производительность. Работал с Альтерой, там шина Avalon куда шустрее была.

Заранее спасибо!

 

Может быть существует возможность подключения проца напрямую, но тогда нужно реализовать собственную шину. Есть ли реализация чего-нибудь подобного. Хотелось бы так же найти информация по шинам, принципам реализации на HDL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть существует возможность подключения проца напрямую, но тогда нужно реализовать собственную шину. Есть ли реализация чего-нибудь подобного. Хотелось бы так же найти информация по шинам, принципам реализации на HDL

 

а что вы хотите, все таки это PLB от самой IBM, а не Avalon от какой то альтеры %)))

 

если вам нужно быстро и в одну сторону, почему бы вам не воспользоваться FSL линками + DWC с 8 ми до 36 бит. они как раз для этого и были придуманы.

 

Или как вариант MPMC и качать данные через один из его портов в память.

 

Шина реализуется просто, основных архитектур 2 shared bus / cross bar switch + арбитр с вашим алгоритмом. Ну а дальше берете стандарт на шину и делаете. Кстати у альтеры про это очень хорошо написано в доках, зачем же искать чего то более, тем более что вы с Avalon Switch Fabric работали

 

Удачи !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и если проц обращается к BRAM, то

 

А почему BRAM подключен к процессору через PLB ? Ведь для этого есть отдельная шины LMB.

А посмотреть к примеру DMA ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое быстрое - сделать ядро, работающее с АЦП и подключенное к отдельному NPI порту MPMC и качать напрямую в память. Мы так и делаем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем большое спасибо за ответы

 

Дмитрий Мазунин

Подключить АЦП к NPI порту MPMC: такая идея уже возникла, да вот только на плату память поставили такую, что MPMC с ней неработает. Вот пришлось делать свой контроллер.

 

Теперь передо мной задача, либо использовать вариант предложенный des00 с FSL-линками, либо попытаться реализовать свой MPMC(к счастью в EDK нашел его исходники!).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит - MPMC не работает с Вашей памятью ?

Ее нет в списке MPMC ? Или уже собранный проект не работает в железе ? Какая память у Вас ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит - MPMC не работает с Вашей памятью ?

Ее нет в списке MPMC ? Или уже собранный проект не работает в железе ? Какая память у Вас ?

 

МПМС чето с СДРАМ не желает работать. Я решил эту проблему переходником на ОПБ и ОПБ_СДРАМ контроллером. Если У Вас с МПМС работает СДРАМ - я был бы благодарен за совет. Версия сапра 9.2, а плиска виртекс5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

МПМС чето с СДРАМ не желает работать. Я решил эту проблему переходником на ОПБ и ОПБ_СДРАМ контроллером. Если У Вас с МПМС работает СДРАМ - я был бы благодарен за совет. Версия сапра 9.2, а плиска виртекс5

Что значит не работает ?

В 10.sp3 есть MPMC v4. Так в ней есть sdram & ddr. В свой проект заложил MPMC + sdram + spartan3e. Проект собирается. Будет печать посмотрим на результат.

Да и в 9.2 MPMC + sdram тоже было. см в pdf.

А opb шина мне видится ещё более тормознее чем plb.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит не работает ?

В 10.sp3 есть MPMC v4. Так в ней есть sdram & ddr. В свой проект заложил MPMC + sdram + spartan3e. Проект собирается. Будет печать посмотрим на результат.

Да и в 9.2 MPMC + sdram тоже было. см в pdf.

А opb шина мне видится ещё более тормознее чем plb.

А я и не говорил, что МПМС+СДРАМ в 9.2 нет. Просто чего то не желает работать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вот думаю, может и у меня mpmc не коректно работает с DDR2 по PLB из-за ее глючности? Не пойму в чем причина: пишу - читаю из памяти, и получаю "немного не то" что писал. Менял и частоту шины и размер загружаемых данных (32,16 бит), - ничего не помагает.

На картинке приведена BlockDiagram моей системы.

 

Может память нельзя так подключать?

 

В моей ветке о проблеме немного подробнее: http://electronix.ru/forum/index.php?showtopic=50288

post-33895-1225287838_thumb.jpg

Изменено пользователем zherdiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вот думаю, может и у меня mpmc не коректно работает с DDR2 по PLB из-за ее глючности? Не пойму в чем причина: пишу - читаю из памяти, и получаю "немного не то" что писал. Менял и частоту шины и размер загружаемых данных (32,16 бит), - ничего не помагает.

На картинке приведена BlockDiagram моей системы.

 

Может память нельзя так подключать?

 

В моей ветке о проблеме немного подробнее: http://electronix.ru/forum/index.php?showtopic=50288

Несколько замечаний:

1) У меня сложилось ощущение что s3an + EDK10.2 сыроват. Я пытался сделать один и тот же проект на s3an и на s3e. Так вот на s3an компиляция не прошла (а может у меня руки кривые).

2) возможны глюки при использовании кеша. (если его не правильно сконфигурить)

3) Было много исправлений в mpmc с версии 3 по 4

4) Я так думаю, что если есть демо плата то где-то должен быть заведомо исправный проект.

5) Воспользоваться отладчиком в SDK ?

6) Если пользоваться "волшебником" в EDK 9 почему-то не всегда правильно формируется C_MEM_DM_WIDTH в MPMC

7) кроме всего прочего доступ к памяти должен быть выравнен на границу данных. Если писать / читать слово (4 байта) то и адрес должен быть кратен 4. (или я ошибаюсь ?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) У меня ISE 9.2.04i и то со Spartan3AN "сыроват" - урезана практическии вся база в создавалке корок IP(Coregen&ArhitectureWizard).

2) какого еще кеша?

4) полного проекта нигде не нашел

5) а как пользоваться отладчиком SDK? В общем?

7) пробовал задавать даже так:

pMem[32] = 33264;

pMem[132] = 44332211; - не помогло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) У меня ISE 9.2.04i и то со Spartan3AN "сыроват" - урезана практическии вся база в создавалке корок IP(Coregen&ArhitectureWizard).

2) какого еще кеша?

4) полного проекта нигде не нашел

5) а как пользоваться отладчиком SDK? В общем?

7) пробовал задавать даже так:

pMem[32] = 33264;

pMem[132] = 44332211; - не помогло.

 

2) в процессоре

4) К примеру http://www.xilinx.com/products/boards/s3as...nce_designs.htm

5) Дык в хелпе написано

 

А посмотреть можно ?

*.mhs

*.mss

*.xmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) в процессоре

4) К примеру http://www.xilinx.com/products/boards/s3as...nce_designs.htm

5) Дык в хелпе написано

 

А посмотреть можно ?

*.mhs

*.mss

*.xmp

В догонку:

*.ucf

 

Число IP-core что в 9.2.2 и 10.1.3 практически одно и тоже.

 

Может пригодится

http://www.xilinx.com/support/answers/29221.htm

 

Я пользуюсь только EDK/SDK.

ISE я не использую т.к. хватает возможностей EDK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Число IP-core что в 9.2.2 и 10.1.3 практически одно и тоже.

Не для всех вариантов Плис. Для Spartan3AN с чипом XC3S700AN FGG484 они (разрабы) зачем-то закрыли кучу полезного, но это полезное перенесенное из другого проекта под другую ПЛИС работает и в S3AN. Спращивается - зачем мне лишние головняки?

 

В примерах нету нормального проекта для Microblaze+MMPC. Что-то близко к теме есть в проекте с Web-сервером, попробую что-то выудить оттуда. Никто не в курсе что за шина XCL?

 

Файлы прикрепил. В *.ucf у меня названия выводов соответствуют выводам проекта верхнего уровня (ISE), так что они немного отличаются от тех выводов, что в *.mhs, но соответствуют им функционально.

test92_03.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...