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

 
 
> Автомат передачи данных по 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, 17:23
Сообщение #2


Гуру
******

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



да мне не исключить надо, мне бы как раз добавить...

у меня есть FIFO оно выдает сигнал VALID когда на выходе появляются данные.

старший бит этих данных через мультиплексор идет на выходной пин FPGA (spi data out).
Младшие биты идут в сдвиговый регистр, который защелкивается по клоку SPI и дальше двигается.
С первым клоком SPI выходной пин (spi data out) переключается со старшего бита данных из FIFO на старший бит сдвигового регистра.

то есть мне надо
1. задать чтобы время за которое сигнал старшего бита идет с выхода FIFO на ножку ПЛИС было не более 10 нСек (например), тогда выдержав паузу 1 клок после появления сигнала валид, я могу гарантировать что на пине уже стоят данные.
2. задать чтобы время за которое сигнал идет от младших битов выхода фифо, до регистра SPI было не более 10нСек (например), тогда выдержав паузу 1 клок после появления сигнала валид до первого рывка клока SPI я могу гарантировать что сдвиговый регистр SPI защелкнет правильные данные
3. Наверное надо задать время распространения сигнала от старшего бита сдвигового регистра до выхода на ножку FPGA (spi data out) не более полуклока SPI. Учтет ли это время переключения мультиплексора?...

можно кстати это как-то обконстреинить не в общем файле констраинов, а именно в verilog модулях как время путей данных или это уже совсем глупость?
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
- - Golikov A.   мне же fifo надо, можно следить куда положено, отк...   Feb 26 2015, 09:05
|- - 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
|- - 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 Текстовая версия Сейчас: 25th July 2025 - 01:10
Рейтинг@Mail.ru


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