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

 
 
> Реально достижимая скорость по SPI, Программно-аппаратные трюки для достижения максимальной скорости перед
=GM=
сообщение Jul 12 2006, 13:34
Сообщение #1


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Тема была навеяна $ilent, но она была закрыта прежде, чем я успел в ней поучаствовать :-).

Интересует, прежде всего, потенциально достижимая скорость как в аппаратном исполнении, так и в программном.

Какие требования в "железном" исполнении? Необходимо передать по SPI nByte байт из буфера txBuffer (ОЗУ МК) и одновременно принять массив байт такой же длины в rxBuffer (ОЗУ МК). Моя программа выполняется за 8МЦ, т.е. ровно один такт на 1 бит. Интересно, можно ли добиться большего? Что скажут эксперты?

Программа $ilent работает в полудуплексе, следовательно можно снизить требования к программной реализации SPI, а именно, необходимо программно формировать только биты данных и синхронизацию на передачу ИЛИ принимать биты данных по положительным фронтам импульсов синхронизации на прием. Моя программа передает один байт за 36МЦ, т.е. за 4,5 такта на 1 бит. Как добиться большего?

Народ, не воспринимайте топик слишком сурово, это мой первый на этом сайте...


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
unichorn
сообщение Jul 14 2006, 12:39
Сообщение #2


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

Группа: Участник
Сообщений: 96
Регистрация: 24-09-05
Пользователь №: 8 901



Интересный подход. А остальная программа в момент приёма/передачи пакета ничего неделает.
smile.gif
PC.
Вафли ловит.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 14 2006, 13:25
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(unichorn @ Jul 14 2006, 11:39) *
Интересный подход. А остальная программа в момент приёма/передачи пакета ничего не делает.
smile.gif
PC.
Вафли ловит.

Да, ничего не делает, она сильно занята(:-)!
Отсюда вытекает интереснейший вопрос. Щас я его попробую сформулировать, может его надо бы в отдельную ветку вынести, чтобы не перегружать, ну да ладно.

Есть некая микроконтроллерная система, состоящая из нескольких МК, обменивающихся между собой, скажем по SPI. Как лучше сделать обмен, с точки зрения экономии производительности МК, по прерываниям или максимально быстрый программно-аппаратный обмен, как описано мною выше?

Поясню на примере, что имею ввиду. Хотим передать 128 байт. При программно-аппаратном обмене мы потеряем 16*128=2048 МЦ. При обмене по прерываниям мы должны учесть вызов прерывания, сохранение/восстановление временного регистра и статуса, возврат из прерывания, плюс такое же тело подпрограммы, если ничего не забыл, то получается не менее 22 МЦ (это если регистры указателей закреплены за данным прерыванием!). Все это надо делать для каждого байта, так что, в сумме будет 22*128=2816 МЦ на каждый обмен. Еще надо учесть, что прерывания должны следовать каждые 22 МЦ, значит максимальная скорость передачи будет ниже. чем при программно-аппаратном обмене! Да еще не забыть, что есть запасные 8 МЦ в каждом цикле, стоит ими грамотно распорядиться(:-). Конечно, экономия копеешная, но иногда ее так не хватает!

Вот такой философский вопрос по использованию и НЕ использованию прерываний где попало. Думайте сами, решайте сами, прерывать или не прерывать.

И еще, маленькая просьба, пжлст, не пишите РС, если нет подписи, это моветон, не обижайтесь. Okey-dokey?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- =GM=   Реально достижимая скорость по SPI   Jul 12 2006, 13:34
- - Yura_K   А что значит программа выполняется за 8МЦ? Передае...   Jul 12 2006, 14:52
- - SpiritDance   Ничего не понял. Толи у меня башка уже не варит то...   Jul 12 2006, 15:15
|- - =GM=   Цитата(SpiritDance @ Jul 12 2006, 14:15) ...   Jul 12 2006, 16:14
- - KRS   Может вы имели ввиду не мегагерцы а такты? т.е про...   Jul 12 2006, 16:08
|- - =GM=   Цитата(KRS @ Jul 12 2006, 15:08) Может вы...   Jul 12 2006, 16:31
- - Yura_K   А какие ограничения на использование регистров? Об...   Jul 13 2006, 15:57
|- - =GM=   Цитата(Yura_K @ Jul 13 2006, 14:57) А как...   Jul 13 2006, 21:51
|- - ksv198   Цитата(Yura_K @ Jul 13 2006, 19:57) 2) от...   Jul 14 2006, 07:00
|- - =GM=   Цитата(ksv198 @ Jul 14 2006, 06:00) Цитат...   Jul 14 2006, 11:59
|- - zltigo   Цитата(=GM= @ Jul 14 2006, 14:59) Как я у...   Jul 14 2006, 12:12
||- - =GM=   Цитата(zltigo @ Jul 14 2006, 11:12) Цитат...   Jul 14 2006, 12:30
||- - rezident   Цитата(=GM= @ Jul 14 2006, 18:30) Я приве...   Jul 14 2006, 13:01
||- - =GM=   Цитата(rezident @ Jul 14 2006, 12:01) Цит...   Jul 14 2006, 13:40
|- - rezident   Цитата(=GM= @ Jul 14 2006, 17:59) Посколь...   Jul 14 2006, 12:19
|- - ksv198   Цитата(=GM= @ Jul 14 2006, 15:59) Как я у...   Jul 14 2006, 12:47
|- - ksv198   2'=GM= Пришел домой, подумал внимательно и пон...   Jul 15 2006, 06:02
|- - =GM=   Цитата(ksv198 @ Jul 15 2006, 05:02) 2...   Jul 15 2006, 17:21
- - GetSmart   Да врут они все тут. Всё будет работать в тех рамк...   Jul 14 2006, 13:06
- - GetSmart   Код <nop x 8 раз или другая задача на 8МЦ...   Jul 14 2006, 13:53
- - rezident   =GM=, есть несколько нюансов в описываемой вами сх...   Jul 14 2006, 13:55
|- - =GM=   Цитата(rezident @ Jul 14 2006, 12:55) =GM...   Jul 14 2006, 14:50
- - GetSmart   ЦитатаНормально, Григорий(:-). Хотя у вас 10 МЦ, а...   Jul 14 2006, 14:58
|- - =GM=   Цитата(GetSmart @ Jul 14 2006, 13:58) Цит...   Jul 14 2006, 15:16
- - GetSmart   1. А кто тогда Георгий? 2. А когда у вас в цикле ...   Jul 14 2006, 15:32
|- - =GM=   Цитата(GetSmart @ Jul 14 2006, 14:32) 1. ...   Jul 14 2006, 15:57
- - GetSmart   ЦитатаНадеюсь, передается индивидуальная для каждо...   Jul 14 2006, 16:16
|- - =GM=   Цитата(GetSmart @ Jul 14 2006, 15:16) Цит...   Jul 14 2006, 16:27
- - GetSmart   Делитель тока 1/4. Это обычный делитель синхросигн...   Jul 14 2006, 16:40
- - Yura_K   2 ksv198 ЦитатаПоэтому все правильно - сначала пиш...   Jul 14 2006, 17:21
- - GetSmart   Ошибок вроде нету. Этот вариант идеально подходит ...   Jul 14 2006, 17:44


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

 


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


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