Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9XXXXX-S3E
Подружить ПЛИС с ARM
Alexandr
Добавлено 22.10.2010 16:41
0
Сообщение: 1
Alexandr
0

Пункты: 234
Регистрация: 13.01.2010
Доброго времени суток господа.

Не подскажите в следующем вопросе:
Есть ПЛИС (Spartan-3E), которая формирует определенный буфер, микроконтроллер (ARM9) - считывающий данный буфер. При попытке считать микроконтроллером данные из ПЛИС - буфер принимается битый, за счет разницы частот микросхем. Увеличив частоту ПЛИС буфер читается корректно, правда появилась следующая загвоздка. Примерно из 1000 попыток чтения, 2 - 3 раза буфер не читается. Может ли в данном случае помочь тайминг?
И есть ли путь подать частоту ARM (примерно около 200 Мгц) на вход ПЛИС, вместо частоты тактового генератора, не прибегая к написанию драйвера (по схеме ножки это позволяют сделать).
Буду признателен за любой совет.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.10.2010 04:36 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
И есть ли путь подать частоту ARM (примерно около 200 Мгц) на вход ПЛИС, вместо частоты тактового генератора, не прибегая к написанию драйвера (по схеме ножки это позволяют сделать).

сильно в доке не копался, но полагаю, что пресловутые 200МГц - это частота ядра и врядли она наружу выходит. Все что можно сколхозить из стабильного - полистать раздел Timer/Counter документации арма. посмотреть - сколько в блок таймера можно задуть частоту и посчитать выходную при минимальном делителе. Дальше выбрать нужный режим, настроить пин и подать это на тактовый вход FPGA. Сможет ли плис нормально тактироваться - не могу сказать. Только опыты и осциллограф.
А может проще использовать "штатный" генератор для плис и задействовать pll в плис - чем не устраивает?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Alexandr
Добавлено 24.10.2010 08:43 Сообщение: 3
Alexandr
0

Пункты: 234
Регистрация: 13.01.2010
Не подскажите, что такое pll для плис???
Спуститься к концу Подняться к началу
Персональная информация
Alexandr
Добавлено 24.10.2010 10:45 Сообщение: 4
Alexandr
0

Пункты: 234
Регистрация: 13.01.2010
Поинтересовавшись у Google, понял что PLL - это phase locked loop. Его может использовать только ПЛИС Virtex-5 (((
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 24.10.2010 19:07 Сообщение: 5
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Поинтересовавшись у Google, понял что PLL - это phase locked loop. Его может использовать только ПЛИС Virtex-5 (((

(цыкая зубом) а это.. о каком камне тогда речь ведем?
если о Spartan, то их там есть:

http://www.starterkit.ru/html/index.php?name=forum&op=view&id=7050&num=5#7389

я его (PLL) так называю по привычке, а в тамошнем пакете он зовется DCM
на вход задуваем некий меандр, задаем делители/умножители и на выходе имеем например из 10МГц входящих 200МГц выходящих

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
lexalambin
Добавлено 25.11.2010 16:29 Сообщение: 6
lexalambin
4

Пункты: 131
Регистрация: 23.12.2009
Не знаю, актуально ли еще.
Я делал так. Хранил буфер значений во встроенной SRAM FPGA. Точнее сделал 2хпортовую память, на один порт повесил запись значений, второй практически напрямую соединил с линиями шины адреса и данных от проца. В результате проц считывает данные из внутренней памяти FPGA когда ему вздумается. На память эту подавал 200 МГц клок, который получил с помощью DCM из входных 50 МГц.
В результате практически добился стабильного чтения на 100 МГц клоке процессора в режиме Null Setup & Hold. Ну т.е. при ширине шины данных 16 бит у меня теоретически была пропускная способность 200 МБайт/с. Иногда считывались кривые данные, а разбираться почему у меня не было времени. Поэтому просто перешел на такой же режим, но с циклом не в 1 MCK, а в 3 (т.е. 100/3=33 МГц).

В принципе, ничего не мешает вообще отказаться от использования встроенной SRAM и реализовать FSM, который будет отвечать на запросы чтения от процессора. Только мне кажется, что там в результате получится гораздо меньше 33 Мгц.
Если бы была возможность получать частоту MCK в FPGA, то это очень, очень упростило бы жизнь и избавило от кучи проблем. Но нет так нет - можно обойтись и без нее :)
Спуститься к концу Подняться к началу
Персональная информация
Alexandr
Добавлено 04.12.2010 12:32 Сообщение: 7
Alexandr
0

Пункты: 234
Регистрация: 13.01.2010
Еще как актуально ))
Немного поделюсь опытом тестирования. Первоначально был принят аналогичный вариант построения связки ARM - SRAM - FPGA. С помощью DCM получил рабочую частоту ПЛИС 200МГц, на которой и осуществлял запись в SRAM. Расширяя проект под FPGA на частоте 200МГц, возникли определенные сложности между предполагаем алгоритмом и реализуемым на ПЛИС. В результате чего пришлось понизить рабочую частоту до 150МГц, из-за чего теряюсь в догадках (заявленная частота ПЛИС 250-300МГц).
Следующей проблемой оказалась кривая передача данных (видимо как и у вас). Тут то и гачались догадки. Связка была сокращена до ARM-FPGA. Для избегания конфликтов, ARM позволил считывать данные только в определенные интервалы времени - но ошибка осталась. Причем избавиться от нее не получилось (она может быть 1 раз на 100Мб, а может 1 раз на 1Мб).

Если не затрудник подскажите как поиграться с частотой микроконтроллера - этот вариант я не рассматривал? Мои перевые предположения были, что он работает на частоте 200МГц. Буду благодарен за любой совет.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9XXXXX-S3E