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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Знатоки FPGA, подскажите, проблеммы сонхронизации
Kazap
сообщение Jan 30 2007, 20:08
Сообщение #1


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

Группа: Свой
Сообщений: 93
Регистрация: 8-05-06
Пользователь №: 16 880



Доброго всем времени суток
До настоящего момента работал только с CPLD, особых проблем не было. Но для текущего проекта ресурсов CPLD не хватает
Проект -офисная миниАТС,- в FPGA (подошла acex1k), коммутационная матрица, синхронный порт,
тональные генераторы и много чего другого. Наблюдаю следующую картину-отлаживаю один узел, другой, берусь за третий отлаживаю,- начинает сбоить первый, вношу какие -то изменения в один узел- почему влияет на второй, и так замкнутый круг. Это что, нормальная ситуация с FPGA? Или я что-то не так делаю?
Go to the top of the page
 
+Quote Post
papasha
сообщение Jan 30 2007, 22:28
Сообщение #2


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

Группа: Свой
Сообщений: 122
Регистрация: 25-06-04
Из: Москва
Пользователь №: 185



Временные ограничения установлены?
Go to the top of the page
 
+Quote Post
Самурай
сообщение Jan 30 2007, 22:40
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(Kazap @ Jan 30 2007, 20:08) *
Доброго всем времени суток
До настоящего момента работал только с CPLD, особых проблем не было. Но для текущего проекта ресурсов CPLD не хватает
Проект -офисная миниАТС,- в FPGA (подошла acex1k), коммутационная матрица, синхронный порт,
тональные генераторы и много чего другого. Наблюдаю следующую картину-отлаживаю один узел, другой, берусь за третий отлаживаю,- начинает сбоить первый, вношу какие -то изменения в один узел- почему влияет на второй, и так замкнутый круг. Это что, нормальная ситуация с FPGA? Или я что-то не так делаю?


Нет, это явно НЕ нормальная ситуация. Скорее всего это связано с тем, что у Вас не синхронный (или частично не синхронныйsmile.gif) проект. Особеность проектирования на ПЛИС (да и не только на ПЛИС) - это одна глобальная тактовая частота, по переднему (или заднему) фронту которой происходит стробирование ВСЕХ данных и во ВСЕХ узлах/блоках проекта. И как минимум ВСЕ входы ВСЕХ модулей должны иметь регистровый вход, с защелкиванием данных по фронту глобального клока. А еще лучше и все выходы. То же самое относиться к входам/выходам ПЛИС.
Go to the top of the page
 
+Quote Post
chan
сообщение Jan 30 2007, 22:41
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 8-05-05
Пользователь №: 4 846



Посмотрите в сторону Cyclone, по цене дешевле и есть поддержка Signal Tap - незаменимая вещь при отработке на железе.
Go to the top of the page
 
+Quote Post
ybd
сообщение Jan 30 2007, 22:57
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 15-05-06
Пользователь №: 17 123



Бывало такое при использовании более 70% ресурсов FPGA - сбоило то, что нормально работало при меньшей загрузке. Думаю, что причина - в ухудшении скоростных характеристик FPGA из-за удлиннения трасс сигналов. Количество трасс внутри микросхемы ограничено, и в определенный момент фиттер не сможет разместить проект, даже если требуется менее 100% логических ячеек. Обычно проблемы сбоев решались нахождением не совсем корректных схемотехнических решений (например, использование выхода логического элемента (AND, OR, XOR и т.д.) в качестве синхросигнала для триггера, даже (или особенно ;-)) если входы ЛЭ изменяются синхронно)). При значительном использовании ресурсов синхронные изменения перестают быть таковыми и на выходе ЛЭ появляются просечки. В качестве профилактики проблем размещения и сбоев я стараюсь использовать как можно меньше различных синхросигналов, при этом выходы логических схем применять только для управления сбросом, установкой, и разрешением.
Go to the top of the page
 
+Quote Post
dmivs
сообщение Jan 30 2007, 23:16
Сообщение #6


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

Группа: Свой
Сообщений: 101
Регистрация: 7-09-05
Из: Riga, LV
Пользователь №: 8 333



Уточните, какой тип FPGA вы используете - вам ответят соответствующие специалисты.
Я например, работал только с Xilinx.


--------------------
Go to the top of the page
 
+Quote Post
maior
сообщение Jan 31 2007, 01:30
Сообщение #7


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

Группа: Свой
Сообщений: 177
Регистрация: 21-10-04
Пользователь №: 948



Общие рекомендации:
1. Синхронный дизайн. Если есть много клоков - использовать для них глобальные линии и специальные методы перевода сигналов из одного клокового домейна в другой, а также синхронизировать клоки по фазе используя PLL/DCM, или синтезируя клоки от одного источника.
2. Максимально использовать пайп-лайн для передачи сигналов между функциональными блоками, пусть даже всего на один триггер/регистр.
3. Для приема и выдачи сигналов максимально использовать входные и выходные IOB регистры.
Для включеия этих фичей использовать соответствующие записи в констрейнт файле.
4. Поставить констрейнты на все клоки. Как минимум, указать их величину. Как максимум - для
критических путей или групп сигналов добавить констрейнты на Tsu (setup), Tco (clock-to-output).
5. Постоянно проверять логи P&R на предмет прошли ваши констрейнты или нет.

И Xilinx и Altera имеют как GUI средства введения констрейнтов, так и формальное их описание (mnl_qsf_reference.pdf для Altera, cgd.pdf для Xilinx) для непосредственного их введения в констрейнт файлы (.ucf для Xilinx, .qsf для Altera).

Хотя, конечно, реальность куда богаче на сюрпризы и выдумки чем любые теоретические построения...
Go to the top of the page
 
+Quote Post
Kazap
сообщение Jan 31 2007, 08:30
Сообщение #8


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

Группа: Свой
Сообщений: 93
Регистрация: 8-05-06
Пользователь №: 16 880



Большое спасибо за подсказки. Дествительно, в дизайне есть "асинхронности". Попробую все простробировать global clock. Просто я исходил из того что имея отностильно низкую частоту(8 МГЦ имеет толь коммутационная матрица, все остальное работает на 2 МГц), имею колосальный запас по задержкам и предустановкам, и допустил некоторые вольности, которые на больших частотах не прошли бы точно. Прийдется переаботать дизайн
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Jan 31 2007, 17:03
Сообщение #9


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

Группа: Свой
Сообщений: 123
Регистрация: 20-11-05
Пользователь №: 11 121



В своё время многие проблеммы с синхронизацией решила вот такая простенькая схемма. Нашёл её в quartusii_handbook
Все триггеры в проекте тактируются глобальной тактовой. А на вход разрешения триггера(ENA) подается с выхода этой схеммы. Т е это просто схемма укорочения импульса, синхронная!!!
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
EugeneS
сообщение Feb 1 2007, 00:04
Сообщение #10


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

Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557



Цитата(Alex_vod @ Jan 31 2007, 18:03) *
В своё время многие проблеммы с синхронизацией решила вот такая простенькая схемма. Нашёл её в quartusii_handbook
Все триггеры в проекте тактируются глобальной тактовой. А на вход разрешения триггера(ENA) подается с выхода этой схеммы. Т е это просто схемма укорочения импульса, синхронная!!!


Это не синхронизация, а rise detection. При приходе асинхронного сигнала бесполезна.

blink.gif
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Feb 1 2007, 11:18
Сообщение #11


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

Группа: Свой
Сообщений: 123
Регистрация: 20-11-05
Пользователь №: 11 121



"то не синхронизация, а rise detection. При приходе асинхронного сигнала бесполезна."
тогда как же поступают при приходе асинхронного сигнала, что бы вписать его в синхронную систему???
Go to the top of the page
 
+Quote Post
LeonY
сообщение Feb 1 2007, 12:32
Сообщение #12


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Цитата(EugeneS @ Jan 31 2007, 23:04) *
Цитата(Alex_vod @ Jan 31 2007, 18:03) *

В своё время многие проблеммы с синхронизацией решила вот такая простенькая схемма. Нашёл её в quartusii_handbook
Все триггеры в проекте тактируются глобальной тактовой. А на вход разрешения триггера(ENA) подается с выхода этой схеммы. Т е это просто схемма укорочения импульса, синхронная!!!


Это не синхронизация, а rise detection. При приходе асинхронного сигнала бесполезна.

blink.gif

Чем же это она бесполезна??? Подобную прибабаху использую уже лет 10 именно для синхронизации асихронных сигналов (если нет требования сохранения длительности) и все прекрасно работает. Типичное применение - запись в синхронное FIFO от чего-то асинхронного или бегущего в другом clock domain. ИМХО - масса вариантов, когда очень удобно использовать... Если надо сохранить длительность (с точностью до клока) - Shift Reg, но принцип тот же самый


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 1 2007, 12:53
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(LeonY @ Feb 1 2007, 12:32) *
Чем же это она бесполезна??? Подобную прибабаху использую уже лет 10 именно для синхронизации асихронных сигналов (если нет требования сохранения длительности) и все прекрасно работает. Типичное применение - запись в синхронное FIFO от чего-то асинхронного или бегущего в другом clock domain. ИМХО - масса вариантов, когда очень удобно использовать... Если надо сохранить длительность (с точностью до клока) - Shift Reg, но принцип тот же самый


Тем что выход первого триггера используется в дальнейшей логике. В классическом синхронизаторе из двух триггеров, предназначенном для борьбы с метастабильностью, выход первого триггера подключают исключительно к входу второго. Идея - в любой технологии при приходе фронта асинхронного сигнала на вход триггера одновременно с приходом клока время установления логического уровня сигнала на выходе триггера может возрастать до бесконечности, но практически лишь слегка, не скажу точно за распределение вероятности - но экспонента в нем была точно. Этот эффект и называется метастабильностью. В большинстве случаев за время одного такта на выходе первого триггера устанавливается логический уровень с очень высокой вероятностью, и поэтому второй триггер его уже быстро защелкивает в пределах времени установления из даташита. Если же выход первого триггера подать на комбинаторную схему, да еще он попадет в критический путь, да еще схема работает на пределе частоты. да еще в констрейнтах ничего не сказано про увеличенное время установления - то даже небольшое связанное с метастабильностью увеличение времени установления сигнала на выходе первого триггера может стать причиной сбоев.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 1 2007, 13:11
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Тем что выход первого триггера используется в дальнейшей логике. В классическом синхронизаторе из двух триггеров, предназначенном для борьбы с метастабильностью, выход первого триггера подключают исключительно к входу второго.
////////////////////////////
Наверно имеет смысл при этом добавить - при приеме данных.
Приведенная выше схема под названием синхронный одновибратор давно уже имеено в таком виде озвучена у Тицце и Шенка.
Идея в том что эта схема обычно используется для преобразования именно клока, который сопровождает данные. Gate clk - в enable clk. И если данные, сопровождаемые gate клоком укладываются хотя бы в два периода глобального клока, то уже без разницы, как воспримет второй триггер метастобильность первого. Данные уверенно будут приняты или в первом такте или во втором.
Да и от частоты клока очень многое зависит. В свое время забавно было читать, как два теоретика рассуждали о том , что лучше принимать данные на частоте 20 мГц чем на 40. И их мало интересовало, есть ли у пользователя такие частоты.
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Feb 1 2007, 13:25
Сообщение #15


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

Группа: Свой
Сообщений: 123
Регистрация: 20-11-05
Пользователь №: 11 121



Я согласен с Вашими замечаниями... В этом вопросе так глубоко не копал (распределение вероятности, экспонента,метастабильность.... сложные вопросы)
Приведённая мной схема очень проста , но в большенстве случаев работает.
Тогда может вы подскажите другое решение.
Что лучше использовать при приёме данных? Какую схему используете вы?
Go to the top of the page
 
+Quote Post

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

 


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


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