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

 
 
> FIFO на CoolRunner-II, Или как без него жить?
DMax
сообщение Dec 30 2008, 10:20
Сообщение #1


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

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Сразу оговорюсь, в программируемой логике я зелен как огурец. Но встала задача, а мне интересно сделать её самому.

Имеется CPLD CoolRunner-II, в который данные закачиваются контроллером по SPI, который тактируется тоже контроллером. Задача принять по нему байт и далее произвести обработку. Проблема в том, что клок SPI не совпадает с клоком, на котором работает все остальное. Подсказывают взять асинхронный FIFO, но в Xilinx Core Generator не хочет его генерировать для CoolRunner'а.

Отсюда вопрос, как грамотно и с наименьшим геморроем перекинуть данные из регистра с одного клока на другой?

P.S.: Всех с наступающим smile.gif

Сообщение отредактировал DMax - Dec 30 2008, 10:20
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kuzmi4
сообщение Dec 30 2008, 11:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 DMax - под рукой нету этого дока - поройтесь по форуму или по инету - в принципе вам помогут ключевые слова
Цитата
*migrating*clock domain*


А так на пальцах - в идеале вам нужно былоб поставить 2-х клоковое асинхроннойе фифо (клок на запись и клок на чтение) и слева загружать в неё данные по своему клоку - а справа по FullFlag смотреть когда загружено и вычитывать по своему клоку (как всё вычитаете - выставится EmptyFlag и слева логика опять начнёт загрузку данных - и так по кругу).

В прицнипе можно пойти другим путём - цифровать входные данные по своему клоку (ставите 2-3 тригера в цепочку а на вход первого подаёте свои данные а с выхода последнего забираете). Этот вопрос вроде как раз детально рассматривался в каком то апноте хилых который я вспоминал выше..

В обсчем гугЁл в помосч smile.gif

Вас так же с наступаюсчим santa2.gif
Go to the top of the page
 
+Quote Post
DMax
сообщение Dec 30 2008, 14:07
Сообщение #3


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

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Цитата(Kuzmi4 @ Dec 30 2008, 14:08) *
А так на пальцах - в идеале вам нужно былоб поставить 2-х клоковое асинхроннойе фифо (клок на запись и клок на чтение) и слева загружать в неё данные по своему клоку - а справа по FullFlag смотреть когда загружено и вычитывать по своему клоку (как всё вычитаете - выставится EmptyFlag и слева логика опять начнёт загрузку данных - и так по кругу).


Ну так я об этом и написал. Проблема только в том, что ядра для асинхронного фифо нет. Или асинхронный фифо - это то, что должен уметь писать каждый ламмер? Я просто, ей богу, первый раз за это взялся.


Цитата(LordVader @ Dec 30 2008, 16:04) *
Как я понимаю, поток данных не очень большой?

Ну где-то в 4 раза медленней, чем клок CPLD.

Цитата(LordVader @ Dec 30 2008, 16:04) *
По клоку СПИ данные грузятся в регистр и перекидывается строб на принимающий клок.
На принимающем клоке строб захватывается через 2 триггера и ловится факт изменения его состояния (итого 3 триггера). По этой отмашке с регистра, который на клоке СПИ, данные подхватываются и начинается обработка.


А триггеры эти какими клоками запитывать?

Чего-то погуглил по кузьмичевским ключевым словам. Сходу ничего полезного не нашлось sad.gif(
Go to the top of the page
 
+Quote Post
LordVader
сообщение Dec 30 2008, 14:12
Сообщение #4


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

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(DMax @ Dec 30 2008, 17:07) *
А триггеры эти какими клоками запитывать?

На клоке СПИ схема грузит данные в регистр и перекидывает строб
На принимающем клоке строб ресинхронизируется (2 триггера) и ловится изменение его состояния (ещё один). Ну и грузятся выходы регистра на клоке СПИ. Предполагается, что выход регистра СПИ не изменяется в течение всего процесса ресинхронизации.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:37
Рейтинг@Mail.ru


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