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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Нужен ARM7 или Cortex с максимально быстрым GPIO, Задача: как можно быстрее "дергать" ножками и считывать их сос
kovigor
сообщение Dec 27 2011, 15:48
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Нужно, например, иметь возможность генерировать на GPIO импульсы с частотой порядка 10 МГц, и читать состояния ножек с такой же примерно частотой. Как я понимаю, ARM7/9 здесь не годятся, нужен как минимум CORTEX, и то не факт, что он подойдет. Кто что посоветует ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 27 2011, 16:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Вам просто нужен процессор с GPIO на быстрой шине. Такое есть у NXP (как ARM7, так и M3) и у новых STM32, если ничего не путаю.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 27 2011, 16:36
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(aaarrr @ Dec 27 2011, 19:00) *
Вам просто нужен процессор с GPIO на быстрой шине. Такое есть у NXP (как ARM7, так и M3) и у новых STM32, если ничего не путаю.


Спасибо. Особенно интересны достижения в данной области других специалистов. Наверняка многие решали подобную задачу. Хотелось бы услышать о достигнутых результатах, это поможет сориентироваться. Я понимаю, что подобных "таблиц производительности" я не найду, но все же ...
Go to the top of the page
 
+Quote Post
ChipKiller
сообщение Dec 27 2011, 16:49
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-12-11
Пользователь №: 69 097



Цитата("kovigor")
Особенно интересны достижения в данной области других специалистов.
... сомнительно, что специалисты используют CORTEX ради "ногодрыганья". Конечно можно выдать "трель" с помощью bit-banding_а, но зачем тогда 32 разряда?
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 27 2011, 19:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Вот реальный пример. В микроконтроллерах STM32F2xx и STM32F4xx GPIO сидит на шине AHB, и доступ туда на частоте ядра, без задержек.
Go to the top of the page
 
+Quote Post
topkin
сообщение Dec 28 2011, 05:15
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476



Цитата(scifi @ Dec 27 2011, 23:22) *
Вот реальный пример. В микроконтроллерах STM32F2xx и STM32F4xx GPIO сидит на шине AHB, и доступ туда на частоте ядра, без задержек.

Но на установление ножки в определенное состояние необходимо 2 такта, т.е. при тактировании AHB 120 МГц, максимальная частота программного ногодрыганья будет 60 МГц, это что касаемо F2/F4. С STM32F1x ситуация хуже
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 28 2011, 05:45
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(topkin @ Dec 28 2011, 09:15) *
Но на установление ножки в определенное состояние необходимо 2 такта, т.е. при тактировании AHB 120 МГц, максимальная частота программного ногодрыганья будет 60 МГц, это что касаемо F2/F4. С STM32F1x ситуация хуже

Вообще-то 1 такт.
1 такт - "0", 1 такт - "1" и т.д. Вот и получается 2 такта на период, то есть 60 МГц.
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 28 2011, 06:45
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата
Нужен ARM7 или Cortex с максимально быстрым GPIO, Задача: как можно быстрее "дергать" ножками и считывать их состояние

В чипах lpc17xx есть возможность подключать DMA к GPIO. При этом время доступа к пину 1 такт. Если учесть тактовую частоту до 100 Мгц. то.....
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Dec 28 2011, 10:41
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Автор топика написал, что требуется не только выдать на пин частоту порядка 10 МГц, но еще и мониторить состояние некоторых ног с входными частотами такого же порядка... Если работа с GPIO на таких частотах принципиально возможна (как уже написали выше авторитетные люди), то времени на какую либо обработку получаемых с входных ног данных по моему просто нет - что можно успеть за несколько единиц тактов? Сохранить состояние ноги где то в RAM, переключить какой нибудь выход?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 28 2011, 10:51
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Юрий Санвальд @ Dec 28 2011, 14:41) *
Автор топика написал, что требуется ...


Нужно вот что. Внешнее устройство (им я управлять не могу) выставляет на некоторые линии GPIO 32-разрядный адрес (получается своеобразная шина адреса, реализованная в виде набора линий GPIO) и стробирует его коротким (~100 нС или даже короче) импульсом (тоже по одной из линий GPIO). Я должен при получении этого строба прочитать упомянутый адрес и как можно быстрее выдать соответствующее ему 32-разрядное слово данных на отдельную шину данных, реализованную, опять же, в виде набора линий GPIO. Т.е., надо сэмулировать микроконтроллером работу микросхемы ПЗУ (или статического ОЗУ, если хотите, но только в режиме чтения). Читаю описание LPC17xx и все больше убеждаюсь в том, что это, похоже, нереализуемо на таких скоростях ...
Go to the top of the page
 
+Quote Post
Flexz
сообщение Dec 28 2011, 11:01
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Главная проблема тут имхо - 32 разряда, на LPC17xx порты хоть и 32битные, но целых нету. Если б 16, еще можно попробовать успеть, но только на STM32F4 (168МГц), либо новые LPC43xx (204МГц), у этих порты 16битные.
Вообще, конечно, для ПЛИСки задача.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 28 2011, 11:09
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Flexz @ Dec 28 2011, 14:01) *
Главная проблема тут имхо - 32 разряда, на LPC17xx порты хоть и 32битные, но целых нету. Если б 16, еще можно попробовать успеть, но только на STM32F4 (168МГц), либо новые LPC43xx (204МГц), у этих порты 16битные.
Вообще, конечно, для ПЛИСки задача.


Да, очень похоже на утопию. Просто заотелось на микросхемке памяти сэкономить и реализовать ее функции на МК ...
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 28 2011, 11:24
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(kovigor @ Dec 28 2011, 14:51) *
Нужно вот что. Внешнее устройство (им я управлять не могу) выставляет на некоторые линии GPIO 32-разрядный адрес (получается своеобразная шина адреса, реализованная в виде набора линий GPIO) и стробирует его коротким (~100 нС или даже короче) импульсом (тоже по одной из линий GPIO). Я должен при получении этого строба прочитать упомянутый адрес и как можно быстрее выдать соответствующее ему 32-разрядное слово данных на отдельную шину данных, реализованную, опять же, в виде набора линий GPIO. Т.е., надо сэмулировать микроконтроллером работу микросхемы ПЗУ (или статического ОЗУ, если хотите, но только в режиме чтения). Читаю описание LPC17xx и все больше убеждаюсь в том, что это, похоже, нереализуемо на таких скоростях ...

Я бы сделал так (STM32F2xx): строб на триггер таймера, таймер генерит триггер для DMA и запускает обработчик, DMA читает из GPIO (пусть даже двумя кусками по 16 бит), обработчик ждёт окончания пересылки DMA, формирует данные и выдаёт в порт. Может получиться весьма шустро.
Только если МК должен при этом делать что-то ещё, то надо смотреть подробнее: возможны задержки на Bus Matrix.
Go to the top of the page
 
+Quote Post
ChipKiller
сообщение Dec 28 2011, 11:58
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-12-11
Пользователь №: 69 097



Цитата("kovigor")
Просто заотелось на микросхемке памяти сэкономить и реализовать ее функции на МК ...
... такая экономия ИМХО обернется "головной болью". В прежние времена всевозможные эмуляторы ПЗУ делали на связке CPLD+RAM.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 28 2011, 16:16
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ChipKiller @ Dec 28 2011, 15:58) *
... такая экономия ИМХО обернется "головной болью". В прежние времена всевозможные эмуляторы ПЗУ делали на связке CPLD+RAM.


Да, похоже, вы правы. Идея неудачная, мягко говоря. Если бы адреса увеличивались последовательно, думаю, DMA решил бы проблему. Но доступ к памяти возможен как раз по произвольным адресам ...
Go to the top of the page
 
+Quote Post

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

 


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


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