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

 
 
> последовательный интерфейс, между ПЛИС и МК
skilful
сообщение Sep 11 2012, 06:44
Сообщение #1


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Добрый день.

Имеется ПЛИС Циклон (питание 3.3 В) и микроконтроллер AVR (питание 5 В).
Хочу связать их по SPI.

Хотел затактировать приемник в ПЛИС от микроконтроллера.

По записи данных в ПЛИС хочу поставить двухклоковую фифошку. С этим вроде вопросов вроде не возникает --
контроллер, когда ему надо выставляет бит данных и делает синхронизирующий импульс.
Таким образом, сколько битов передается от МК в ПЛИС столько и будет синхроимпульсов от МК.


По чтению данных из ПЛИС хочу тоже хочу поставить двухклоковую фифошку.
Вот тут вопрос -- когда я логикой ПЛИС запишу в фифо данные -- как мне контроллером узнать, что данные уже есть в фифо?
У фифо есть сигнал "не пустое", но этот сигнал появляется при наличии синхроимпульсов от МК.

То есть мне нужно генерить "пустые" синхроимпульсы для ПЛИС и ждать, когда появится сигнал фифо "не пустое"?

Может быть изначально я неверно начал делать?

Может быть ПЛИС должна тактировать микроконтроллер? Если да, то как быть с преобразованием 3.3 В в 5 В? И сигнал нужно через PLL пускать?


Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skilful
сообщение Sep 11 2012, 09:13
Сообщение #2


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



вот чтобы всяких пересинхронизаций не было -- и думал взять двухклоковое фифо.
ПЛИС работает с ним на своей частоте, МК -- на своей.

То что все прерывания асинхронны я понимаю.
Я не понимаю следующего (может быть повторюсь) -- из "фифо чтения" читает МК на малой частоте, а пишет ПЛИС на бОльшей частоте.
Когда ПЛИС запишет на бОльшей частоте сигнал "фифо не пустое" выставится, но он будет привязан к клоку ПЛИС.

Из описания мегафункции Альтеры:

rdempty -- If asserted, indicates that the dcfifo is empty and disables the rdreq port. Synchronized with rdclk

wrempty -- Indicates that the dcfifo is empty. Delayed version of rdempty that is synchronized with wrclk.
Generated from the rdempty signal with a single synchronization register added to synchronize it to the wrclk clock domain.


Насколько я понял Вы предлагаете завести сигнал wrempty на прерывание МК?

Еще я не понимаю про "ресинхронизаторы (2 тригера)". Как с этим работать?

До этого думал что все "разноклоковые процессы" синхронизируются в двухклоковых фифо или же через PLL

Go to the top of the page
 
+Quote Post
Torpeda
сообщение Sep 11 2012, 11:47
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(skilful @ Sep 11 2012, 12:13) *
вот чтобы всяких пересинхронизаций не было -- и думал взять двухклоковое фифо.
ПЛИС работает с ним на своей частоте, МК -- на своей.

Еще я не понимаю про "ресинхронизаторы (2 тригера)". Как с этим работать?
До этого думал что все "разноклоковые процессы" синхронизируются в двухклоковых фифо или же через PLL

1) двухклоковых фифо, PLL и ресинхронизаторы - это способы как связать асинхронные клок домены.
2) ресинхронизаторы убирают метастабильность. Гдето тут была ветка про метастабильность и способы её подавления - стоит почитать.
В т.ч. и при помощи ФИФО.
http://electronix.ru/forum/index.php?showtopic=93650
3) Что вы будуте делать с ФИФО когда адрес чтения совпадёт с адресом записи?


Цитата(skilful @ Sep 11 2012, 12:13) *
То что все прерывания асинхронны я понимаю.
Я не понимаю следующего (может быть повторюсь) -- из "фифо чтения" читает МК на малой частоте, а пишет ПЛИС на бОльшей частоте.
Когда ПЛИС запишет на бОльшей частоте сигнал "фифо не пустое" выставится, но он будет привязан к клоку ПЛИС.

Это не проблема. МК привяжет асинхронное прерывание к своему клоку.

Цитата(skilful @ Sep 11 2012, 12:13) *
Из описания мегафункции Альтеры:
rdempty -- If asserted, indicates that the dcfifo is empty and disables the rdreq port. Synchronized with rdclk
wrempty -- Indicates that the dcfifo is empty. Delayed version of rdempty that is synchronized with wrclk.
Generated from the rdempty signal with a single synchronization register added to synchronize it to the wrclk clock domain.
Насколько я понял Вы предлагаете завести сигнал wrempty на прерывание МК?

http://electronix.ru/redirect.php?http://w...8Boston_CDC.pdf
Читать п.5.8.2 - Ваш случай.

Цитата(skilful @ Sep 11 2012, 13:05) *
Подал один и тот же клок на клоки чтения и записи. Сигнал wrempty изменяется при первой же записи.
Сигнал rdempty изменяется аж после 7 такта.
Значит пауза после получения прерывания все-таки нужна, если использовать двухклоковое фифо?

похоже тут не тупая задержка нужна, а надо 7 раз клок чтения передёрнуть, чтобы rdempty получить....

-----
Не тратьте время - выкинте все ФИФО, привяжите SPI к клоку ПЛИС и спокойно работайте.

================================================================================

Цитата(troiden @ Sep 11 2012, 12:40) *
Чуть подумав, 40 тактов превратилось в 16 - в случае, если за командой записи следует команда чтения.

Т.е. в вашем случае - конвеер. Чтобы прочитать данные надо выдать команду чтения, а потом какую-то другую, чтобы забрать данные.
Ну для вычетки массива - вариант, а для роботы с одиночными командами - только затраты на 2-е повторение.... Не всегда гут.
Может лутше SPI.CLK в 2 раза понизить?

Цитата(troiden @ Sep 11 2012, 12:40) *
Зависит от кристалла. Шестой спартан 100 МГц примет без вопросов.

100МГц на SPI.CLK означает что у вас есть полтакта (5нс) на все задержки распространения сигнала от [МК -to -FPGA.PAD- to - внутренний флоп FPGA ]....
Какая величина задержки на плате (при дорожке 10см напр)?
Какое минимальное её значение, а какое максимальное (это критично для сетап-холд таймингов)?
Какой реальный розбросс задержек на плате (skew)?
Какое сетап\холд требование для MISO на МК?

Цитата(troiden @ Sep 11 2012, 12:40) *
Отнюдь. См выше - у нас минимум 16 тактов стабильных данных. На внутреннюю частоту пересинхривается только признак приема команды, из него формируется импульс в один такт внутренней частоты, от которого и срабатывает дальнейшая логика.

А что если внутренняя частота меньше SPI.CLK? Хватит на ресинхронизацию и на обработку команды?
----------
Ну это на засыпку... sm.gif А ваше решение с конвеером в принципе хорошее. Но лутше всётаки отработать за одну команду команду.
Go to the top of the page
 
+Quote Post
skilful
сообщение Sep 11 2012, 12:28
Сообщение #4


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Цитата(Torpeda @ Sep 11 2012, 14:47) *
1) двухклоковых фифо, PLL и ресинхронизаторы - это способы как связать асинхронные клок домены.
2) ресинхронизаторы убирают метастабильность. Гдето тут была ветка про метастабильность и способы её подавления - стоит почитать.
В т.ч. и при помощи ФИФО.
http://electronix.ru/forum/index.php?showtopic=93650
3) Что вы будуте делать с ФИФО когда адрес чтения совпадёт с адресом записи?



Это не проблема. МК привяжет асинхронное прерывание к своему клоку.


http://electronix.ru/redirect.php?http://w...8Boston_CDC.pdf
Читать п.5.8.2 - Ваш случай.


похоже тут не тупая задержка нужна, а надо 7 раз клок чтения передёрнуть, чтобы rdempty получить....

-----
Не тратьте время - выкинте все ФИФО, привяжите SPI к клоку ПЛИС и спокойно работайте.

================================================================================


Т.е. в вашем случае - конвеер. Чтобы прочитать данные надо выдать команду чтения, а потом какую-то другую, чтобы забрать данные.
Ну для вычетки массива - вариант, а для роботы с одиночными командами - только затраты на 2-е повторение.... Не всегда гут.
Может лутше SPI.CLK в 2 раза понизить?


100МГц на SPI.CLK означает что у вас есть полтакта (5нс) на все задержки распространения сигнала от [МК -to -FPGA.PAD- to - внутренний флоп FPGA ]....
Какая величина задержки на плате (при дорожке 10см напр)?
Какое минимальное её значение, а какое максимальное (это критично для сетап-холд таймингов)?
Какой реальный розбросс задержек на плате (skew)?
Какое сетап\холд требование для MISO на МК?


А что если внутренняя частота меньше SPI.CLK? Хватит на ресинхронизацию и на обработку команды?
----------
Ну это на засыпку... sm.gif А ваше решение с конвеером в принципе хорошее. Но лутше всётаки отработать за одну команду команду.


вот примерная схемка, которую думал сделать

Прикрепленное изображение
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- skilful   последовательный интерфейс   Sep 11 2012, 06:44
- - Lmx2315   Вы по SPI хотите связать мк и плис, значит у вас о...   Sep 11 2012, 06:55
- - skilful   для примера, допустим, внутри ПЛИС 10 регистров по...   Sep 11 2012, 07:22
|- - Lmx2315   ..разделите регистры , пусть плис пишет в свои а м...   Sep 11 2012, 07:26
- - stu   правильно по поводу: "надо опрашивать состоян...   Sep 11 2012, 07:26
- - skilful   а как мне "разделенные" регистры связать...   Sep 11 2012, 07:41
|- - Lmx2315   пусть ПЛИС пишет в счётные регистры, а МК их считы...   Sep 11 2012, 07:54
|- - Torpeda   Цитата(skilful @ Sep 11 2012, 10:41) а ка...   Sep 11 2012, 08:09
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 12:09) - Вс...   Sep 11 2012, 08:19
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 11:19) Эмм....   Sep 11 2012, 08:25
||- - troiden   Цитата(Torpeda @ Sep 11 2012, 12:25) синх...   Sep 11 2012, 08:31
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 11:31) SPI ...   Sep 11 2012, 08:49
||- - troiden   Попорядку Цитата(Torpeda @ Sep 11 2012, 12...   Sep 11 2012, 09:01
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 12:01) У на...   Sep 11 2012, 09:12
||- - troiden   Цитата(Torpeda @ Sep 11 2012, 13:12) Вот ...   Sep 11 2012, 09:40
|- - skilful   Цитата(Torpeda @ Sep 11 2012, 11:09) В де...   Sep 11 2012, 08:43
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 15:47) Т.е....   Sep 11 2012, 12:41
|- - Torpeda   Цитата(troiden @ Sep 11 2012, 15:41) В сл...   Sep 11 2012, 13:41
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 17:41) 1) ...   Sep 11 2012, 14:13
|- - Torpeda   Цитата(troiden @ Sep 11 2012, 17:13) А эт...   Sep 11 2012, 14:49
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 18:49) нуда...   Sep 11 2012, 14:58
|- - Александр77   Цитата(troiden @ Sep 11 2012, 18:58) Посл...   Sep 11 2012, 18:28
|- - troiden   Цитата(Александр77 @ Sep 11 2012, 22:28) ...   Sep 11 2012, 19:28
- - skilful   Просимулировал в МоделСиме двухклоковую фифо (LPM_...   Sep 11 2012, 10:05
- - skilful   исключаться должно программно. МК набил фифо запис...   Sep 11 2012, 13:52
|- - Torpeda   Цитата(skilful @ Sep 11 2012, 16:52) искл...   Sep 11 2012, 14:33
- - Alexey K   Вопрос. Зачем один и тот же регистр делать доступ...   Sep 11 2012, 14:00
- - skilful   там я выше приводил пример -- если он в роли тайме...   Sep 11 2012, 14:14
|- - troiden   Цитата(skilful @ Sep 11 2012, 18:14) там ...   Sep 11 2012, 14:17
- - skilful   Так я смотрю триггера 3 ? // sync SCK to the FPGA...   Sep 11 2012, 14:42


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

 


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


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