реклама на сайте
подробности

 
 
> mt32 под EP3C25 не работает в режиме Burst, Проблема организации пакетного режима
xxxmatrixxx
сообщение Jun 19 2012, 13:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Здравствуйте

У меня такая проблема:
Сделал программу на Verilog, которая принимает данные из вне, а потом перекидывает их на сторону PCI(работал, как таргет, считывали с меня по прерыванию)... но такой вариант был слишком затратен по времени, т.к. верхнее ПО было написано под Linux, а сам чипсет компа не давал возможности с меня считывать пакетно... что только не пробовал, ничего не выходило, прочитал на форуме ELECTRONIX, подсказали, что придется реализовывать мастера...

Так вот поставил mt32 core для Альтеры с возможностью работы в режиме 66Мгц...

Прога под Linux пока не подправлена, но я попробовал выходить на шину мастером и писать данные в меня... я увидел, что я пишу так же, т.е. одиночными посылками, а не пакетно....

Вопрос: что необходимо указать в установках core(я пробовал менять конфигурацию баров с non - prefetchable на prefetchable), либо как организовывать обмен по PCI так, чтобы я работал в пакетном режиме???

Спасибо...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Jun 29 2012, 08:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Вопрос: как необходимо вести обмен между мною и ПК? какой адрес памяти ПК, выделенный для меня, должен передаваться мне(просто там 64 бита, а мне передается старшая часть 64го слова)
Если там 64 бита, то вы и должны передавать 64 бита. Т.е. у вас должна быть PCI64. Если же у вас PCI32, то со стороны Linux'а вы должны заказывать себе буфер для обмена в нижней части памяти (в 32х битах)

Скажите своему програмисту, что бы позвал pci_set_dma_mask(pdev, DMA_32BIT_MASK) перед pci_alloc_consistent
Отдавать на плату нужно будет младшую часть 64х битного адреса (от pci_alloc_consistent)
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 6 2012, 09:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(XVR @ Jun 29 2012, 12:35) *
Если там 64 бита, то вы и должны передавать 64 бита. Т.е. у вас должна быть PCI64. Если же у вас PCI32, то со стороны Linux'а вы должны заказывать себе буфер для обмена в нижней части памяти (в 32х битах)

Скажите своему програмисту, что бы позвал pci_set_dma_mask(pdev, DMA_32BIT_MASK) перед pci_alloc_consistent
Отдавать на плату нужно будет младшую часть 64х битного адреса (от pci_alloc_consistent)


XVR, Не мог бы скинуть код под Линукс, если есть конечно, где ты работаешь как таргет, а в тебя пишут.... буду очень признателен
мыло: petrov3372@yandex.ru
Go to the top of the page
 
+Quote Post
XVR
сообщение Jul 6 2012, 13:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(xxxmatrixxx @ Jul 6 2012, 13:25) *
XVR, Не мог бы скинуть код под Линукс, если есть конечно, где ты работаешь как таргет, а в тебя пишут.... буду очень признателен

Запись в таргет под управлением CPU возможна только словами. Для записи блоками нужен мастер.
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 9 2012, 07:50
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(XVR @ Jul 6 2012, 17:57) *
Запись в таргет под управлением CPU возможна только словами. Для записи блоками нужен мастер.


Так комп работает как таргет, а я со стороны своего модуля как мастер...

У меня виснет, когда я захватываю шину, становлюсь мастером на шине и пишу в ПК... вероятнее всего, что проблема в работе со стороны ПК,
либо адрес, который определяет linux и мне выдает, неверный, либо сконфигурирована память на стороне ПК не правильно...

Просто я грешу на неправильную работу проги под Linux...
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jul 9 2012, 09:01
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



У меня mt32 на Cyclone III работает как в Линук, так и в ДОС.
BAR0 и BAR1 проецируются на память ПК, а BAR2 и BAR3 на регистры ввода-вывода в mt32. Один из последних используется для приема начального адреса (через запрос на прерывание), по которому потом в память ПК начинает записываться массив. Правда я записываю в память ПК последовательно по слову, может быть и для того, чтобы не занимать надолго PCI-шину, были сомнения, что иначе ограничивается производительность программы на ПК…
Заметил, что Ваша программа работает с ClkPCI и Clk50. У меня тоже две частоты, обошел коллизии тем, что работаю с внутренним ОЗУ на одной более высокой в процессе подготовки данных, а потом при работе с шиной переключаю на ClkPCI. Ну и соответственно два банка для подготовки данных, работающих по принципу «пинг-понг»…
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 9 2012, 09:25
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(Serhiy_UA @ Jul 9 2012, 13:01) *
У меня mt32 на Cyclone III работает как в Линук, так и в ДОС.
BAR0 и BAR1 проецируются на память ПК, а BAR2 и BAR3 на регистры ввода-вывода в mt32. Один из последних используется для приема начального адреса (через запрос на прерывание), по которому потом в память ПК начинает записываться массив. Правда я записываю в память ПК последовательно по слову, может быть и для того, чтобы не занимать надолго PCI-шину, были сомнения, что иначе ограничивается производительность программы на ПК…
Заметил, что Ваша программа работает с ClkPCI и Clk50. У меня тоже две частоты, обошел коллизии тем, что работаю с внутренним ОЗУ на одной более высокой в процессе подготовки данных, а потом при работе с шиной переключаю на ClkPCI. Ну и соответственно два банка для подготовки данных, работающих по принципу «пинг-понг»…


Я использую очередь для согласования частот, а так же по функциональности она больше подходит....

У меня просьба, не смогли бы скинуть код, часть кода, где видно, как работаете с корой как с мастером,
какие настройки для коры ставите, чтобы работать как мастер....

Может у вас будет код под Линукс, где выделяете память, конфигурируете ее под линукс...

Я буду очень благодарен... просто мучаюсь уже 2ю неделю, а копать не очень понимаю где...
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jul 9 2012, 10:00
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(xxxmatrixxx @ Jul 9 2012, 12:25) *
..какие настройки для коры ставите, чтобы работать как мастер....

По поводу корки PCI_bb, как черного ящика. Не нашел в Вашей программе определения параметров для mt32. Мои, в приложении. Правда, в предыдущем посте я ошибся по BAR3, но это не принципиально...
Программы на ПК под PCI-шину не пишу, пока только синтез ПЛИС...
Прикрепленные файлы
Прикрепленный файл  PCI_bb___defparam.zip ( 5.81 килобайт ) Кол-во скачиваний: 39
 
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 9 2012, 12:08
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(Serhiy_UA @ Jul 9 2012, 14:00) *
По поводу корки PCI_bb, как черного ящика. Не нашел в Вашей программе определения параметров для mt32. Мои, в приложении. Правда, в предыдущем посте я ошибся по BAR3, но это не принципиально...
Программы на ПК под PCI-шину не пишу, пока только синтез ПЛИС...


вот параметры:
CODE
pci_mt32_inst.CLASS_CODE = 24'hff0000,
pci_mt32_inst.DEVICE_ID = 16'h0005,
pci_mt32_inst.REVISION_ID = 8'h01,
pci_mt32_inst.SUBSYSTEM_ID = 16'h0000,
pci_mt32_inst.SUBSYSTEM_VENDOR_ID = 16'h0000,
pci_mt32_inst.TARGET_DEVICE = "NEW",
pci_mt32_inst.VENDOR_ID = 16'h1172,
pci_mt32_inst.MIN_GRANT = 8'h00,
pci_mt32_inst.MAX_LATENCY = 8'h00,
pci_mt32_inst.CAP_PTR = 8'h40,
pci_mt32_inst.CIS_PTR = 32'h00000000,
pci_mt32_inst.BAR0 = 32'hfff00008,
pci_mt32_inst.BAR1 = 32'hfff00008,
pci_mt32_inst.BAR2 = 32'hfff00000,
pci_mt32_inst.BAR3 = 32'hfff00000,
pci_mt32_inst.BAR4 = 32'hfff00000,
pci_mt32_inst.BAR5 = 32'hfff00000,
pci_mt32_inst.NUMBER_OF_BARS = 32'h00000002,
pci_mt32_inst.HARDWIRE_BAR0 = 32'h00000000,
pci_mt32_inst.HARDWIRE_BAR1 = 32'h00000000,
pci_mt32_inst.HARDWIRE_BAR2 = 32'h00000000,
pci_mt32_inst.HARDWIRE_BAR3 = 32'h00000000,
pci_mt32_inst.HARDWIRE_BAR4 = 32'h00000000,
pci_mt32_inst.HARDWIRE_BAR5 = 32'h00000000,
pci_mt32_inst.HARDWIRE_EXP_ROM = 32'h00000001,
pci_mt32_inst.EXP_ROM_BAR = 32'hfff00000,
pci_mt32_inst.PCI_66MHZ_CAPABLE = "YES",
pci_mt32_inst.INTERRUPT_PIN_REG = 8'h01,
pci_mt32_inst.ENABLE_BITS = 32'h00000000;
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jul 9 2012, 12:33
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(xxxmatrixxx @ Jul 9 2012, 15:08) *
pci_mt32_inst.BAR0 = 32'hfff00008,
pci_mt32_inst.BAR1 = 32'hfff00008,

попробуйте эти параметры упростить: запросить поменьше памяти и без "Prefetchable"

Цитата(xxxmatrixxx @ Jul 9 2012, 15:08) *
pci_mt32_inst.PCI_66MHZ_CAPABLE = "YES",

тоже, пока бы с "NO"...
И еще, Вы уже работали с прямым доступом к памяти, хотя бы без режима Burst?

...Еще, вставьте регистр в пространство ввода/вывода и попробуйте записать в него что либо из программы ПК, с выдачей на светодиод. А также считать в ПК... Чтобы увидеть работу корки mt32.
Потом в подобном стиле подергать прерываниями....

...Да, и главное. Регистры в пространстве вводв/вывода должны обязательно быть. Иначе как корка (и за ней FSM) может получить адрес памяти в ПК, назначенный и зарезервированный при инициализации BIOSом, к которому можно обращаться. В заданных Вами параметрах этих регистров нет....
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 10 2012, 06:22
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(Serhiy_UA @ Jul 9 2012, 16:33) *
попробуйте эти параметры упростить: запросить поменьше памяти и без "Prefetchable"


тоже, пока бы с "NO"...
И еще, Вы уже работали с прямым доступом к памяти, хотя бы без режима Burst?

...Еще, вставьте регистр в пространство ввода/вывода и попробуйте записать в него что либо из программы ПК, с выдачей на светодиод. А также считать в ПК... Чтобы увидеть работу корки mt32.
Потом в подобном стиле подергать прерываниями....

...Да, и главное. Регистры в пространстве вводв/вывода должны обязательно быть. Иначе как корка (и за ней FSM) может получить адрес памяти в ПК, назначенный и зарезервированный при инициализации BIOSом, к которому можно обращаться. В заданных Вами параметрах этих регистров нет....


Сделал, как посоветовал, все равно та же тема...

А какие настройки у вас установлены в окне выбора Advanced PCI MegaCore Function Features(3е окно при конфигурировании коры)???
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jul 10 2012, 06:39
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(xxxmatrixxx @ Jul 10 2012, 09:22) *
А какие настройки...

См.приложение...[attachment=69714:Par_PCI_Comp.zip]
Прикрепленные файлы
Прикрепленный файл  Par_PCI_Comp.zip ( 83.12 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 10 2012, 07:01
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(Serhiy_UA @ Jul 10 2012, 10:39) *
См.приложение...[attachment=69714:Par_PCI_Comp.zip]


Спасибо, похоже дело не в настройках коры...

Не могли бы скинуть код, как работаете с корой,т.е. где видно, когда и какие сигналы выставляются на PCIcore...
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jul 10 2012, 07:24
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(xxxmatrixxx @ Jul 10 2012, 10:01) *
Не могли бы скинуть код, ...

Не могу. Труд оказался немалый...
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 10 2012, 07:32
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Цитата(Serhiy_UA @ Jul 10 2012, 11:24) *
Не могу. Труд оказался немалый...


так мне не весь код нужен)))

а именно часть код, где видно только когда выставляются lm_framen, lm_rdyn, lm_last...

интересен сам алгоритм работы с корой, как с мастером... просто хочется сравнить, понять, что я делаю не так... а если все верно, то выкатить программисту под linux...
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 11 2012, 13:56
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Нашел в чем ошибка)))))))Причем только сейчас))))

Всем спасибо, кто откликнулся на мою просьбу!!! ОЧень помогли!!!

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

Короче, очень глупая ошибка,которую начинаешь рассматривать только когда все перероешь)))

Но слава Богу хоть так - 2 недели работы и 2 мин после того, как обнаружил ошибку))))

Всем спасибо)))

Сообщение отредактировал xxxmatrixxx - Jul 12 2012, 11:53
Go to the top of the page
 
+Quote Post
xxxmatrixxx
сообщение Jul 12 2012, 11:57
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 28-03-12
Из: Санкт-Петербург
Пользователь №: 71 050



Извините за поспешные выводы...

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

Возникли следующие проблемы:

1. Почему-то передается только 64 32х битных слова... потом lm_ackn защелкивается на 1 и заканчивает работу... это по станларту так положено, что при мультизаписи передается только 64 слова???

2. Программист под линукс читает только 0... хотя видно, что от меня все данные уходят, сопровождаемые соответствующими сигналами...

Кто-нибудь сталкивался с такими проблемами?????
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- xxxmatrixxx   mt32 под EP3C25 не работает в режиме Burst   Jun 19 2012, 13:25
- - Serhiy_UA   Цитата(xxxmatrixxx @ Jun 19 2012, 16:25) ...   Jun 20 2012, 05:30
|- - xxxmatrixxx   Цитата(Serhiy_UA @ Jun 20 2012, 09:30) По...   Jun 21 2012, 05:53
|- - Serhiy_UA   lm_tsr[9..0] от SignalTap показывает, что что-то н...   Jun 21 2012, 09:10
|- - xxxmatrixxx   Цитата(Serhiy_UA @ Jun 21 2012, 13:10) lm...   Jun 22 2012, 06:12
|- - Serhiy_UA   Цитата(xxxmatrixxx @ Jun 22 2012, 09:12) ...   Jun 22 2012, 09:08
|- - xxxmatrixxx   Цитата(Serhiy_UA @ Jun 22 2012, 13:08) на...   Jun 28 2012, 12:23
|- - xxxmatrixxx   RE: mt32 под EP3C25 не работает в режиме Burst   Jul 4 2012, 09:11
||- - 608   А запись одного слова в память компьютера, по выде...   Jul 4 2012, 12:38
||- - xxxmatrixxx   Цитата(608 @ Jul 4 2012, 16:38) А запись ...   Jul 4 2012, 14:38
||- - Serhiy_UA   Цитата(xxxmatrixxx @ Jul 12 2012, 14:57) ...   Jul 12 2012, 12:16
||- - xxxmatrixxx   Цитата(Serhiy_UA @ Jul 12 2012, 16:16) pc...   Jul 12 2012, 13:28
||- - XVR   Цитата(xxxmatrixxx @ Jul 12 2012, 17:28) ...   Jul 12 2012, 17:16
||- - xxxmatrixxx   RE: mt32 под EP3C25 не работает в режиме Burst   Jul 15 2012, 08:35
|- - XVR   Цитата(xxxmatrixxx @ Jul 9 2012, 11:50) У...   Jul 9 2012, 09:09
- - XVR   Цитата[ 57.282589] e_bus: First word: 24h (36) fro...   Jul 15 2012, 08:45
|- - xxxmatrixxx   Цитата(XVR @ Jul 15 2012, 12:45) Странно ...   Jul 16 2012, 06:39
- - XVR   Все вроде правильно, НО - обратите внимание - у ва...   Jul 16 2012, 08:11
- - xxxmatrixxx   Цитата(XVR @ Jul 16 2012, 12:11) Все врод...   Jul 17 2012, 11:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01578 секунд с 7
ELECTRONIX ©2004-2016