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

 
 
> Знатоки 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
 
Start new topic
Ответов
Alex_vod
сообщение Feb 1 2007, 13:25
Сообщение #2


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

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



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


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

Группа: Свой
Сообщений: 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
leevv
сообщение Feb 2 2007, 03:39
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сообщение #5


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

Группа: Свой
Сообщений: 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
Oldring
сообщение Feb 2 2007, 10:17
Сообщение #6


Гуру
******

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



Цитата(Boris_TS @ Feb 2 2007, 09:33) *
Насколько я изучил ПЛИС, логика в них работает как фильтр нижних частот, т.е. ее конечное быстродействие несколько ниже, чем у триггера. А при метостабильном состоянии у триггера на выходе достаточно высокочастотные колебания, которые в чистом виде через логику пройти не могут. Но это пол дела.

В добавок в моей схеме, у триггера F2_FD1 заложено время на выход из метастабильного режима = 1T CLK2 - (Troutes delay + Txor delay). Если для вас этого мало - модифицируйте схему под свои нужды.


Не обращая внимание на результаты -тестирования (каждый программист знает, что никакое тестирование не находит всех ошибок) должен заметить, что схема представляется вполне работоспособной. Более того, по устойчивости к метастабильности она не сильно хуже обычной схемы их двух последовательных триггеров - время задержки в логике перед триггером мало по сравнению со временем разводки. При нормальной работе логики эта схема не может залипнуть - но если есть сомнения, XOR можно наменить на "D1 and not D2".

И еще мысль. Учитывая, что в современных FPGA время разводки часто превышает все остальное - имеет смысл в синхронизаторах жестко констрейнить время распространения сигнала с выхода первого триггера на вход второго, чтобы его не развели через весь кристалл по диагонали. biggrin.gif


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


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

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



Цитата(Oldring @ Feb 2 2007, 10:17) *
При нормальной работе логики эта схема не может залипнуть - но если есть сомнения, XOR можно наменить на "D1 and not D2".

XOR использовался в XPLA3 (там он аппаратный XOR с своими специфическими свойствами).

Цитата(Oldring @ Feb 2 2007, 10:17) *
И еще мысль. Учитывая, что в современных FPGA время разводки часто превышает все остальное - имеет смысл в синхронизаторах жестко констрейнить время распространения сигнала с выхода первого триггера на вход второго, чтобы его не развели через весь кристалл по диагонали. biggrin.gif

А в FPGA (Spartan-IIE) я плотно обкладываю RLOC'ом все узлы и схемы синхронизыции (строки с RLOC я вырезал из предоставленного исходника, чтобы не загромождать код).

Цитата(Oldring @ Feb 2 2007, 10:17) *
Не обращая внимание на результаты -тестирования (каждый программист знает, что никакое тестирование не находит всех ошибок)

Ну я не программист... Без эксперимента (т.е. по теоретическим выкладкам) я не могу сказать будет ли какая-либо метастабильная схема работать на "больших" частотах в ПЛИС - поэтому без экспериментов - никуда (только ведь эксперименты разные бывают...)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kazap   Знатоки FPGA, подскажите   Jan 30 2007, 20:08
- - papasha   Временные ограничения установлены?   Jan 30 2007, 22:28
- - Самурай   Цитата(Kazap @ Jan 30 2007, 20:08) Доброг...   Jan 30 2007, 22:40
- - chan   Посмотрите в сторону Cyclone, по цене дешевле и ес...   Jan 30 2007, 22:41
- - ybd   Бывало такое при использовании более 70% ресурсов ...   Jan 30 2007, 22:57
|- - dmivs   Уточните, какой тип FPGA вы используете - вам отве...   Jan 30 2007, 23:16
- - maior   Общие рекомендации: 1. Синхронный дизайн. Если ест...   Jan 31 2007, 01:30
|- - Kazap   Большое спасибо за подсказки. Дествительно, в диз...   Jan 31 2007, 08:30
- - Alex_vod   В своё время многие проблеммы с синхронизацией реш...   Jan 31 2007, 17:03
|- - EugeneS   Цитата(Alex_vod @ Jan 31 2007, 18:03) В с...   Feb 1 2007, 00:04
|- - LeonY   Цитата(EugeneS @ Jan 31 2007, 23:04) Цита...   Feb 1 2007, 12:32
|- - Oldring   Цитата(LeonY @ Feb 1 2007, 12:32) Чем же ...   Feb 1 2007, 12:53
|- - LeonY   Цитата(Oldring @ Feb 1 2007, 11:53) Цитат...   Feb 1 2007, 13:52
|- - Oldring   Цитата(LeonY @ Feb 1 2007, 13:52) Спасибо...   Feb 1 2007, 13:59
- - Alex_vod   "то не синхронизация, а rise detection. При п...   Feb 1 2007, 11:18
- - sazh   Тем что выход первого триггера используется в даль...   Feb 1 2007, 13:11
|- - Oldring   Цитата(sazh @ Feb 1 2007, 13:11) Тем что ...   Feb 1 2007, 13:29
|- - Oldring   Цитата(Alex_vod @ Feb 1 2007, 13:25) Я со...   Feb 1 2007, 13:39
- - Alex_vod   Раз уж тема о проблеммах синхронизации, хотелось б...   Feb 1 2007, 13:55
|- - Oldring   Цитата(Alex_vod @ Feb 1 2007, 13:55) Раз ...   Feb 1 2007, 14:02
|- - Boris_TS   Цитата(Alex_vod @ Feb 1 2007, 13:55) Напр...   Feb 1 2007, 14:55
- - sazh   Если набрать слово метастабильность в конференции,...   Feb 1 2007, 13:59
- - Alex_vod   Да действительно , не конкретный вопрос я задал .....   Feb 1 2007, 15:16
|- - Oldring   Цитата(Alex_vod @ Feb 1 2007, 15:16) мы и...   Feb 1 2007, 15:27
||- - Alex_vod   Цитата(Oldring @ Feb 1 2007, 15:27) Цитат...   Feb 1 2007, 16:06
|- - Boris_TS   Цитата(Alex_vod @ Feb 1 2007, 15:16) мы и...   Feb 1 2007, 16:06
- - sazh   XOR использовался в XPLA3 (там он аппаратный XOR с...   Feb 2 2007, 10:58
|- - Oldring   Цитата(sazh @ Feb 2 2007, 10:58) Что инте...   Feb 2 2007, 11:13
- - sazh   To Oldring. //////////////////////////////////////...   Feb 2 2007, 11:25
|- - Oldring   Цитата(sazh @ Feb 2 2007, 11:25) To Oldri...   Feb 2 2007, 11:27
- - sazh   Я на триггерах не экономлю. (В реальности уже давн...   Feb 2 2007, 11:34
|- - Oldring   Цитата(sazh @ Feb 2 2007, 11:34) Я на три...   Feb 2 2007, 11:40
- - sazh   Ничего если я замечу, что чтение njgbrf не заменяе...   Feb 2 2007, 11:45
|- - Oldring   Цитата(sazh @ Feb 2 2007, 11:45) Ничего е...   Feb 2 2007, 11:51
- - Alex_vod   Я пока пишу в AHDL и только собираюсь переходить н...   Feb 2 2007, 11:50
|- - Boris_TS   Цитата(Alex_vod @ Feb 2 2007, 11:50) Вы б...   Feb 2 2007, 14:40
- - sazh   Функционально можно заменить. Что касается текста,...   Feb 2 2007, 12:07
|- - Oldring   Цитата(sazh @ Feb 2 2007, 12:07) Функцион...   Feb 2 2007, 12:12
- - sazh   Недавно фильм Павлв Лунгина посмотрел. Остров назы...   Feb 2 2007, 12:56
|- - Oldring   Цитата(sazh @ Feb 2 2007, 12:56) Недавно ...   Feb 2 2007, 13:01
- - sazh   Приношу свои извинения.   Feb 2 2007, 13:17
- - Alex_vod   А нарисовать можно, то о чём вы спорите. У меня ка...   Feb 2 2007, 13:31
|- - Oldring   Цитата(Alex_vod @ Feb 2 2007, 13:31) А на...   Feb 2 2007, 14:13
- - Alex_vod   Спасибо Boris_TS за схемку Конечно же Вы правы, ка...   Feb 2 2007, 15:00
- - sazh   To Boris_TS //////////////////////////////////////...   Feb 2 2007, 15:15
|- - Boris_TS   Цитата(sazh @ Feb 2 2007, 15:15) А как Ва...   Feb 3 2007, 09:55
|- - Oldring   Цитата(Boris_TS @ Feb 3 2007, 09:55) Озна...   Feb 3 2007, 13:51
- - sazh   Что касется xor, я был неправ. Про CPLD слишком по...   Feb 3 2007, 14:33
- - cyclop   Схемы Титце-Шенка (Т-Ц) и Boris_TS (В) различны. С...   Feb 4 2007, 17:53


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

 


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


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