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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Знатоки FPGA, подскажите, проблеммы сонхронизации
Oldring
сообщение Feb 1 2007, 13:29
Сообщение #16


Гуру
******

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



Цитата(sazh @ Feb 1 2007, 13:11) *
Тем что выход первого триггера используется в дальнейшей логике. В классическом синхронизаторе из двух триггеров, предназначенном для борьбы с метастабильностью, выход первого триггера подключают исключительно к входу второго.
////////////////////////////
Наверно имеет смысл при этом добавить - при приеме данных.
Приведенная выше схема под названием синхронный одновибратор давно уже имеено в таком виде озвучена у Тицце и Шенка.
Идея в том что эта схема обычно используется для преобразования именно клока, который сопровождает данные. Gate clk - в enable clk. И если данные, сопровождаемые gate клоком укладываются хотя бы в два периода глобального клока, то уже без разницы, как воспримет второй триггер метастобильность первого. Данные уверенно будут приняты или в первом такте или во втором.
Да и от частоты клока очень многое зависит. В свое время забавно было читать, как два теоретика рассуждали о том , что лучше принимать данные на частоте 20 мГц чем на 40. И их мало интересовало, есть ли у пользователя такие частоты.


Спасибо, но это добавлять было не нужно. Титце с Шенком ничего не пишут про метастабильность, о которой написал я. Действительно, эффекты метастабильности критичны именно для высокочастотных схем, работающих вблизи технологического предела. Если схема работает на частотах, гораздо меньше предельных - то небольшое увеличение времени установления на выходе первого триггера, действительно, не будет для нее существенным, и можно обычно безопасно использовать синхронизатор не из двух, а из одного триггера. Как в обсуждаемой схеме. С другой стороны, то, что используется синхронизатор из двух последовательно включенных триггеров, а не скажем, из пяти, связано только с отношением постоянной времени в законе распределения вероятности для метастабильности к периоду клока. Но вроде бы для применяемых технологий одного такта на предельной частоте клока вполне достаточно для надежного установления логического уровня.


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


Гуру
******

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



Цитата(Alex_vod @ Feb 1 2007, 13:25) *
Я согласен с Вашими замечаниями... В этом вопросе так глубоко не копал (распределение вероятности, экспонента,метастабильность.... сложные вопросы)
Приведённая мной схема очень проста , но в большенстве случаев работает.
Тогда может вы подскажите другое решение.
Что лучше использовать при приёме данных? Какую схему используете вы?


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

В Вашей схеме в качестве синхронизатора используется именно один триггер.


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


Знающий
****

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



Цитата(Oldring @ Feb 1 2007, 11:53) *
Цитата(LeonY @ Feb 1 2007, 12:32) *

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


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

Спасибо за пояснения, но что такое "метастабильность" и как с нею бороться я знаю последние лет 25, а может и больше. Хотя за пояснения все равно спасибо - кому-нибудь точно пригодится. Мои аргументы "за" приведенныю схему ни сном ни духом не утверждают, что она предназначена для борьбы с метастабильностью, но у нее есть свои применения. А вот Shift Reg (как Вы описали - 2-х битовый) делает как раз то, что надо.


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

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


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

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



Раз уж тема о проблеммах синхронизации, хотелось бы узнать ваше мнение по поводу использования глобальных частот. Думаю эти вопросы возникают у многих.
Как вы считаете можно ли глобальную тактовую частоту подавать на ногу ввода вывода?
Например в РLL частота умножается да 60 мегагерц. Могу ли я эту частоту подать на выход ПЛИС??
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 1 2007, 13:59
Сообщение #20


Гуру
******

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



Цитата(LeonY @ Feb 1 2007, 13:52) *
Спасибо за пояснения, но что такое "метастабильность" и как с нею бороться я знаю последние лет 25, а может и больше. Хотя за пояснения все равно спасибо - кому-нибудь точно пригодится. Мои аргументы "за" приведенныю схему ни сном ни духом не утверждают, что она предназначена для борьбы с метастабильностью, но у нее есть свои применения. А вот Shift Reg (как Вы описали - 2-х битовый) делает как раз то, что надо.


Это так - свои применения у схемы есть. Но не для всякой синхронизации асинхронных сигналов её можно использовать не задумываясь - об этом и было замечание. То есть совет использовать эту схему в качестве синхронизатора мог оказаться вредным. Вот если на вход этой схему подключить еще один триггер - то совет будет гораздо безопаснее для начинающих. biggrin.gif


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


Гуру
******

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



Если набрать слово метастабильность в конференции, можно многое чего узнать.
Прикрепленные файлы
Прикрепленный файл  ________________.zip ( 281.18 килобайт ) Кол-во скачиваний: 76
 
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 1 2007, 14:02
Сообщение #22


Гуру
******

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



Цитата(Alex_vod @ Feb 1 2007, 13:55) *
Раз уж тема о проблеммах синхронизации, хотелось бы узнать ваше мнение по поводу использования глобальных частот. Думаю эти вопросы возникают у многих.
Как вы считаете можно ли глобальную тактовую частоту подавать на ногу ввода вывода?
Например в РLL частота умножается да 60 мегагерц. Могу ли я эту частоту подать на выход ПЛИС??


Конечно можно. Только учесть дополнительные задержки, правильно развести плату и поаккуратнее законстрейнить дтизайн.


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


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Alex_vod @ Feb 1 2007, 13:55) *
Например в РLL частота умножается да 60 мегагерц. Могу ли я эту частоту подать на выход ПЛИС??


Желательно уточнить тип ПЛИС к которой отностися вопрос.
Выводить можно, только надо учитывать несколько неприятных моментов:

1. В ПЛИС с которыми я работал нет "прямого" пути дял Global Clock на вход I в I/O Block, тогда имплементатор пропускает Global Clock через несколько коммутаторов, добавляя, тем самым, некоторую (в общем случае неодинаковую) транспортную задержку. Если у вас несколько выходов с этим Global Clock, то желательно довавить соответствующий Constaint (у Xilinx это Skew).

2. Видел я какой-то XAPP (найти его сейчас не смог), там была применена такая идея: Global Clock не может быстро попасть на на вход I в I/O Block, но может попасть на вход OCLK в I/O Block и быстро, и синхронно с остальными выходами. Тогда можно запитать в ПЛИС с DDR выходом этим клоком DDR коммутатор, который будет мультиплексировать две константы '1' и '0', эмулируя, тем самым, выход Global Clock.

3. При работе ФАПЧ неизбежно появляется jitter. Если PLL цифровой, то jitter может быть весьма "большим" (в десятки пикосекунд) - что для некоторых высокоточных задач - неприемлемо.
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Feb 1 2007, 15:16
Сообщение #24


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

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



Да действительно , не конкретный вопрос я задал ...
Плисс у меня Cyclone II. Я знаю у этих микросхемм есть специальные выводы тактовых частот наружу. Называются они в документации PLL<#>_OUT, привязываются они к специальным ногам плисы. Но при разводке платы я это не учел. Если просто подавать Global Clock на выход плис,то получается криво... мы имею не только плохую частоту на выходе плисс, но и все схемы тактируемые этим Global Clock ведут себя странно.
Наверное лучше спросить по другому .
Можно ли сигналы Global Clock выводить наружу плис без специальных выводов. Если можно то как?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 1 2007, 15:27
Сообщение #25


Гуру
******

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



Цитата(Alex_vod @ Feb 1 2007, 15:16) *
мы имею не только плохую частоту на выходе плисс, но и все схемы тактируемые этим Global Clock ведут себя странно.


Если все тактируемые схемы ведут себя странно - то дело скорее всего в разводке рлаты...
Есть такой термин - Signal Integrity. Обратите на него пристальное внимание - для клоков он особенно критичен.


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


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Alex_vod @ Feb 1 2007, 13:25) *
Тогда может вы подскажите другое решение.
Что лучше использовать при приёме данных? Какую схему используете вы?


Я для приема данных использу FIFO, в случае когда данных очень много оно организуется на двух внешних ОЗУ'шках (одну читает потребитель, и пока она полностью не прочитанна, в другую пишет источник данных), если ОЗУ надо мало, то вполне для FIFO подходит и блоки внутреннего ОЗУ. Как работают счетчики на запись/чтение данных в/из FIFO - зависит от конкретной задачи. Главное, что блок синхронизации я применяю один и тот же.

Идея блока такова:
Есть CLK_1 и есть некое событие, на которое надо отреагировать импульсом длинной в один такт на CLK_2. Наличие события кодируется импульсом, длинной в один такт CLK_1 на линии START. Исходник блока синхронизации (разработал сам):


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity sync_clk is port (
START: in std_logic;
CLK_1: in std_logic;
CLK_2: in std_logic;

Q: out std_logic );
end entity;

architecture sync_clk_body of sync_clk is

signal F1_FD0: std_logic := '0';
signal F2_FD1: std_logic := '0';
signal F2_FD2: std_logic := '0';

begin
process (CLK_1, F2_FD2)
begin
if F2_FD2 = '1' then
F1_FD0 <= '0';
elsif rising_edge(CLK_1) then
if (START = '1') then
F1_FD0 <= '1';
end if;
end if;
end process;

process (CLK_2)
begin
if rising_edge(CLK_2) then
F2_FD1 <= F1_FD0;
F2_FD2 <= F2_FD1 xor F2_FD2;
end if;
end process;

Q <= F2_FD2;
end architecture;

Эта схема используется в (БСС) Блоках Сетевой Синхронизации Первого и Второго "сортов" в STM (телефонии). За все время тестирований и измерений ни разу не пропустила ни одного импульса. (любой пропушенный умпульс, в данных системах, тут же отзывется плавным, но быстрым, набегом фазы на 1 такт) В БСС второго сорта схема закатана в XCR3256-7TQ144. Работает с частотами около 131.072 МГЦ (практически на предельном быстродействии XPLA3). В Spartan-2E в менее скоростной задачи, за год эксплуатации пока тоже сбоев не обнаружено.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Feb 1 2007, 16:06
Сообщение #27


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Alex_vod @ Feb 1 2007, 15:16) *
мы имею не только плохую частоту на выходе плисс, но и все схемы тактируемые этим Global Clock ведут себя странно.

С Altera не работаю, архиректуру Cyclone II не представляю.
Но ловил подобный глюк в Spartan-IIE при GCLK более 200 МГц. Дело было исправлено добавлением к каждому блокировочному конденсатору 0.1 мкФ (Murata X7R) еще и 0.01 мкФ (Murata X7R). После этого все стало работать нормально. В том проекте 0.1 мкФ конденсаторы стояли на каждой ноге питания ПЛИС. В описании конденсаторов Murata для X7R обнуружил, что конденсаторы 0.1 мкФ более или менее хорошо работают на частотах до 20 МГц.
Хоть у Вас частота только 60 Мгц, но все-же может быть дело с блокировочными конденсаторами (?), попробуйте - дорого не выйдет.
Если вы применяете Y5V конденсаторы, то может быть поможет такая наводка: у некоторых из Y5V мы обнаруживали пъезо эффект, т.е. любой удар по плате отзывается небольшим броском напряжения - очень забавно выглядит при просмотре данных с 12-разрядного АЦП, оцифровывающего высокостабильное постоянное напряжение. Если ваше устройство работаете в условиях вибраций... то в таком случае итог будет печален.

Может конечно, дело еще в чем-то...
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Feb 1 2007, 16:06
Сообщение #28


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

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



Цитата(Oldring @ Feb 1 2007, 15:27) *
Цитата(Alex_vod @ Feb 1 2007, 15:16) *

мы имею не только плохую частоту на выходе плисс, но и все схемы тактируемые этим Global Clock ведут себя странно.


Если все тактируемые схемы ведут себя странно - то дело скорее всего в разводке рлаты...
Есть такой термин - Signal Integrity. Обратите на него пристальное внимание - для клоков он особенно критичен.


спасибо , сейчас бегло просмотрел в quartusii_handbook, штука интересная. Раньше об этом не знал.
Вечерком попробую разобраться что к чему.
Go to the top of the page
 
+Quote Post
leevv
сообщение Feb 2 2007, 03:39
Сообщение #29


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

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



Цитата(Boris_TS @ Feb 1 2007, 07:36) *
Цитата(Alex_vod @ Feb 1 2007, 13:25) *

Тогда может вы подскажите другое решение.
Что лучше использовать при приёме данных? Какую схему используете вы?


Я для приема данных использу FIFO, в случае когда данных очень много оно организуется на двух внешних ОЗУ'шках (одну читает потребитель, и пока она полностью не прочитанна, в другую пишет источник данных), если ОЗУ надо мало, то вполне для FIFO подходит и блоки внутреннего ОЗУ. Как работают счетчики на запись/чтение данных в/из FIFO - зависит от конкретной задачи. Главное, что блок синхронизации я применяю один и тот же.

Идея блока такова:
Есть CLK_1 и есть некое событие, на которое надо отреагировать импульсом длинной в один такт на CLK_2. Наличие события кодируется импульсом, длинной в один такт CLK_1 на линии START. Исходник блока синхронизации (разработал сам):


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity sync_clk is port (
START: in std_logic;
CLK_1: in std_logic;
CLK_2: in std_logic;

Q: out std_logic );
end entity;

architecture sync_clk_body of sync_clk is

signal F1_FD0: std_logic := '0';
signal F2_FD1: std_logic := '0';
signal F2_FD2: std_logic := '0';

begin
process (CLK_1, F2_FD2)
begin
if F2_FD2 = '1' then
F1_FD0 <= '0';
elsif rising_edge(CLK_1) then
if (START = '1') then
F1_FD0 <= '1';
end if;
end if;
end process;

process (CLK_2)
begin
if rising_edge(CLK_2) then
F2_FD1 <= F1_FD0;
F2_FD2 <= F2_FD1 xor F2_FD2;
end if;
end process;

Q <= F2_FD2;
end architecture;

Эта схема используется в (БСС) Блоках Сетевой Синхронизации Первого и Второго "сортов" в STM (телефонии). За все время тестирований и измерений ни разу не пропустила ни одного импульса. (любой пропушенный умпульс, в данных системах, тут же отзывется плавным, но быстрым, набегом фазы на 1 такт) В БСС второго сорта схема закатана в XCR3256-7TQ144. Работает с частотами около 131.072 МГЦ (практически на предельном быстродействии XPLA3). В Spartan-2E в менее скоростной задачи, за год эксплуатации пока тоже сбоев не обнаружено.



Moget Ja ne sovsem ponimaju no pochemu XOR vo vtorom processe?
Po moemu u Vas F2_FD2 moget zalipnut' v edinice.
Ne proshe li tak?

process (CLK_2)
begin
if rising_edge(CLK_2) then
F2_FD1 <= F1_FD0;
F2_FD2 <= '0';
if F2_FD1='1' then F2_FD2<='1'; end if;
end if;
end process;
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Feb 2 2007, 09:33
Сообщение #30


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



А XOR потому, что:
Цитата
Есть CLK_1 и есть некое событие, на которое надо отреагировать импульсом длинной в один такт на CLK_2.


Как вы должны догадываться, эта выложенная схема, далеко не первая, а результат последовательной оптимизации ряда схем, в т.ч. гибрида схемы leevv(#29) + что-то вроде Alex_vod(#2) - 4 триггера, время реакции не менее 3T CLK2, время релаксации не менее 4T CLK2, по моему в моей схеме с этим получше, а?

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

В добавок в моей схеме, у триггера F2_FD1 заложено время на выход из метастабильного режима = 1T CLK2 - (Troutes delay + Txor delay). Если для вас этого мало - модифицируйте схему под свои нужды. Но все-таки:
Цитата
Эта схема используется в (БСС) Блоках Сетевой Синхронизации Первого и Второго "сортов" в STM (телефонии). За ВСЕ ВРЕМЯ ТЕСТИРОВАНИЙ и измерений ни разу не пропустила ни одного импульса. (любой пропушенный умпульс, в данных системах, тут же отзывется плавным, но быстрым, набегом фазы на 1 такт) В БСС второго сорта схема закатана в XCR3256-7TQ144. Работает с частотами около 131.072 МГЦ (практически на предельном быстродействии XPLA3). В Spartan-2E в менее скоростной задачи, за год эксплуатации пока тоже сбоев не обнаружено.

А время тестирования БСС это не 2 минуты и не час. БСС-1 только в захват застоты входит несколько чавов, а затем его еще и тестируют, как он "фильтрует" эту захваченную частоту, со своей-то постоянной времени. Если бы эта схема глючила в ПЛИС, то это было бы видно - уж поверьте. Тем более зависнуть!
Go to the top of the page
 
+Quote Post

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

 


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


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