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

 
 
> Автомат передачи данных по SPI slave, Фифо на много слов, оптимизация
Golikov A.
сообщение Feb 25 2015, 16:07
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Всем привет!

задача такая, надо по SPI slave передать данные размером 32+64+6*32 бита и контрольная сумма (итого 37-38 байт)

SPI - slave, на частоте сравнимой с основным клоком, потому асинхронный, синхронизация по CS

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

Посылка важна целиком, то есть если мастер бросил принимать в середине посылку, она должна быть отброшена разом, и следующая опять должна быть целиком.

В результате у меня получается такая схема:

SPI - передатчик, которому надо на вход выставить 8 битное данные, а он их выдавит асинхронно на выход. Он сигналом отмечает как забрал данные, и внешняя схема может выставлять следующие данные.

FIFO сделал параллельное, которое засасывает сразу всю посылку. Сделал его не одним фифо на (32+64+6*32) бит, а поставил 1+2+6 32 битных отдельных FIFO.

И вот теперь самое интересное. Надо как -то данные с выхода FIFO перепихать на вход SPI передатчика. И что-то у меня ничего умнее чем огромный мультиплексор на 9 8-битных слов в одно не получается. А еще по ходу перещелкивания он будет подсчитывать контрольную сумму, и добавить ее в конце, то есть мультиплексор 10-11 в 1. Ресурсы не жмут, но как-то не красиво выходит, может кто предложит какое-то более изящное решение?


Может 90 битный SPI будет более правильным решением?


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Feb 26 2015, 09:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



мне же fifo надо, можно следить куда положено, откуда уже забрано...

В итоге образовалось еще одно FIFO на входе SPI.

данные идут в группу параллельных FIFO по которым продвигаются посылками на выход (благо у меня дофига брамовsm.gif)

потом по падению cs из этой группы фифо извлекаются очередные данные и по 8 бит пихаются в выходное фифо SPI, считается контрольная сумма и кладется туда же в след. Данные выходного FIFO выдавливаем наружу по SPI. Сигнал CS используется также как сброс выходного фифо. Таким образом если мастер решает что он устал, он поднимает CS, выходное фифо сбрасывается и тем самым откидывается хвост не забранной посылки.


Теперь мне осталось правильно обконстраинить переход FIFO-SPI

SPI асинхронный со своим клоком, данные для него готовит FIFO с другим клоком. По идее надо обеспечить чтобы до любых действий с клоком SPI, на его входе данные уже стояли. Достаточно ли выждать паузу в 1 клок после появления данных на выходе FIFO, до первого клока SPI, чтобы быть уверенным что данные до него дошли?

я использую сигнал valid - который показывает что на выходе FIFO верные данные, как обконстраинить время за которое данные с выхода FIFO должны дойти до входа SPI. Ведь setup констраина не хватает, клоки SPI и FIFO же независимы.


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Golikov A.   Автомат передачи данных по SPI slave   Feb 25 2015, 16:07
- - blackfin   Цитата(Golikov A. @ Feb 25 2015, 19:07) ....   Feb 25 2015, 16:39
- - SM   Если там 37-38 байт, то сделать FIFO на байт, так,...   Feb 25 2015, 17:03
- - Golikov A.   ЦитатаА зачем такой изврат? Нужно сделать один отд...   Feb 25 2015, 17:17
|- - des00   Цитата(Golikov A. @ Feb 26 2015, 01:17) к...   Feb 25 2015, 17:27
|- - blackfin   Цитата(Golikov A. @ Feb 25 2015, 20:17) Э...   Feb 25 2015, 17:30
||- - des00   Цитата(blackfin @ Feb 26 2015, 00:30) Вам...   Feb 25 2015, 17:35
|- - SM   Цитата(Golikov A. @ Feb 25 2015, 20:17) к...   Feb 25 2015, 17:48
- - Golikov A.   ЦитатаВам не знакомо такое явление, как регистр сд...   Feb 25 2015, 18:58
|- - blackfin   Цитата(Golikov A. @ Feb 25 2015, 21:58) т...   Feb 25 2015, 19:11
|- - SM   Цитата(Golikov A. @ Feb 25 2015, 21:58) В...   Feb 25 2015, 19:14
|- - des00   Цитата(Golikov A. @ Feb 26 2015, 02:58) а...   Feb 26 2015, 06:17
- - Golikov A.   ЦитатаНе все, конечно. Я бы сделал на трех счетчик...   Feb 25 2015, 20:39
|- - blackfin   Цитата(Golikov A. @ Feb 25 2015, 23:39) м...   Feb 26 2015, 04:40
- - Golikov A.   1. не обязательно, можно, но с учетом что клок SPI...   Feb 26 2015, 05:46
|- - des00   Цитата(Golikov A. @ Feb 26 2015, 16:05) м...   Feb 26 2015, 15:39
- - Timmy   Цитата(Golikov A. @ Feb 25 2015, 19:07) Д...   Feb 26 2015, 09:42
- - Golikov A.   отбрасывается предыдущий пакет, заменяется на новы...   Feb 26 2015, 10:22
- - Golikov A.   Не все как раз наоборот. Быстро сляпать как раз н...   Feb 26 2015, 16:57
|- - blackfin   Цитата(Golikov A. @ Feb 26 2015, 19:57) О...   Feb 26 2015, 17:14
- - Golikov A.   да мне не исключить надо, мне бы как раз добавить....   Feb 26 2015, 17:23
|- - Timmy   Цитата(Golikov A. @ Feb 26 2015, 20:23) д...   Feb 26 2015, 20:29
- - Golikov A.   он не то что может быть, а он 100% не активен. пос...   Feb 26 2015, 20:36
- - SM   Вообще, междоменные переходы объявляют как set_fal...   Feb 27 2015, 09:22
- - Golikov A.   не работает оно 2 клоковое. Клок то у SPI не посто...   Feb 27 2015, 13:49
|- - SM   Цитата(Golikov A. @ Feb 27 2015, 16:49) в...   Feb 27 2015, 15:41
- - SM   Вдогонку - такое FIFO придется делать на распредел...   Feb 27 2015, 17:04
- - Golikov A.   спасибо погляжу.   Feb 27 2015, 21:39


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

 


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


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