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

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


Гуру
******

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


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

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


Гуру
******

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



XOR использовался в XPLA3 (там он аппаратный XOR с своими специфическими свойствами).
/////////////////////////////////////////////////////////////////////////////
Причем тут аппаратный xor. Его здесь рядом не лежало. Писать наглядно надо. Чтобы потом не вспоминать, что это на самом деле ложиться на триггер со входом enable.
Да и спорить не о чем. ДА. Это схема полностью рабочая. Только вот действительно мертвая зона в три такта clk2 за счет петли обратной связи. А корректировать можно до бесконечности. Например зачем clk1.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity sync_clk is port (
START: 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 (START, F2_FD2)
begin
if F2_FD2 = '1' then
F1_FD0 <= '0';
elsif rising_edge(START) then
F1_FD0 <= '1';
end if;
end process;

process (CLK_2)
begin
if rising_edge(CLK_2) then
F2_FD1 <= F1_FD0;
if (F2_FD1 = '1') then
F2_FD2 <= not F2_FD2;
end if;
end if;
end process;

Q <= F2_FD2;
end architecture;

Что интересно, что бы Вы не делали, лучше Тицце и Шенка все равно не сделаете. Вот его реализация без петли обратной связи.

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

entity sync_clka is port (
START: in std_logic;
CLK_2: in std_logic;
Q: out std_logic );
end entity;

architecture sync_clk_body of sync_clka is

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

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

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

Q <= not F2_FD2 and F2_FD1;
end architecture;
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 11:13
Сообщение #34


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 10:58) *
Что интересно, что бы Вы не делали, лучше Тицце и Шенка все равно не сделаете. Вот его реализация без петли обратной связи.


Уважаемый sazh!

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

Цитата(Boris_TS @ Feb 2 2007, 10:45) *
XOR использовался в XPLA3 (там он аппаратный XOR с своими специфическими свойствами).


Обладает - но не факт, что путь через него быстрее пути через LUT.
Я когда-то исследовал один тестовый пример - меня удивляло, почему синтезатор использует LUT вместо такого хорошего встроенного XORF. Написал использование элемента явно. Получил слегка большее время. biggrin.gif


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


Гуру
******

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



To Oldring.
///////////////////////////////////////////
Вашу мысль я не понял. Потому что аппаратного xor я здесь не вижу.
Что касается Тицце и Шенка, Вы сами заметили, что их схема без учета метастабильности. Вы рекомендовали еще один триггер. Нет проблем. Я поставлю. Хотя когда мыслил самостоятельно, я этого не делал.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 11:27
Сообщение #36


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 11:25) *
To Oldring.
///////////////////////////////////////////
Вашу мысль я не понял. Потому что аппаратного xor я здесь не вижу.
Что касается Тицце и Шенка, Вы сами заметили, что их схема без учета метастабильности. Вы рекомендовали еще один триггер. Нет проблем. Я поставлю. Хотя когда мыслил самостоятельно, я этого не делал.


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


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


Гуру
******

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



Я на триггерах не экономлю. (В реальности уже давно ставлю дополнительный буфер. Я тут тексты выкладывал. Уверен, Вы даже не взглянули на них). Для меня важней простота, наглядность. Читаемость схемы сходу пользователем любой квалификации.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 11:40
Сообщение #38


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 11:34) *
Я на триггерах не экономлю. (В реальности уже давно ставлю дополнительный буфер. Я тут тексты выкладывал. Уверен, Вы даже не взглянули на них). Для меня важней простота, наглядность. Читаемость схемы сходу пользователем любой квалификации.


Простите, но если ресь идет об этом тексте (других Ваших текстов я в топике не вижу):

Код
process (CLK_2)
begin
if rising_edge(CLK_2) then
F2_FD1 <= F1_FD0;
F2_FD2 <= F2_FD1;
end if;
end process;

Q <= not F2_FD2 and F2_FD1;
end architecture;


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


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


Гуру
******

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



Ничего если я замечу, что чтение njgbrf не заменяет самостоятельных размышлений?


Имелось ввиду топика
Go to the top of the page
 
+Quote Post
Alex_vod
сообщение Feb 2 2007, 11:50
Сообщение #40


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

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



Я пока пишу в AHDL и только собираюсь переходить на Verilog, а с VHDL не знаком вовсе.А то что то сложно за Вашими мыслями угнаться. Думаю не я один такой.
Вы бы не могли рисунками показывать свои идеи, ведь схемы не сложные, да и наглядней получается. Простота ведь она сестра таланта и понятно всем станет........ и интересно.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 11:51
Сообщение #41


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 11:45) *
Ничего если я замечу, что чтение njgbrf не заменяет самостоятельных размышлений?


Имелось ввиду топика


Ничего - но не могу понять, к каким выводам я должен прийти после размышлений. Торможу, наверное. Не подскажете? Вы же не будете оспаривать, что Ваш код в том виде, в котором он опубликован, не обладает свойством устойчивости к метастабильности, в отличие от исходного кода, несмотря на то, что Вы утверждали, что исходный код можно заменить Вашим?


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


Гуру
******

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



Функционально можно заменить. Что касается текста, я имел ввиду файлы *.zipб которые все уже посмотрели кроме Вас. Поэтому с метастабильностью вопрос у всех уже закрыт.
Если все в совокупности польностью рассмореть, все и так уже понятно.
Единственное, что печалит, после Ваших высказываний я уже врядли дождусь чего то от авторов текстов. Мне ведь действительно интересно их мнение.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 12:12
Сообщение #43


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 12:07) *
Функционально можно заменить. Что касается текста, я имел ввиду файлы *.zipб которые все уже посмотрели кроме Вас. Поэтому с метастабильностью вопрос у всех уже закрыт.
Если все в совокупности польностью рассмореть, все и так уже понятно.
Единственное, что печалит, после Ваших высказываний я уже врядли дождусь чего то от авторов текстов. Мне ведь действительно интересно их мнение.


Файлы?

Возможно, я действительно что-то упустил. Я видел только один zip - вчера с именем ________________.zip. Его я сразу же просмотрел. Вы имеете в виду какой-то другой zip, который я постоянно пропускаю? И какие-то Ваши вопросы, мнение по поводу которых Вас интересует?

И потом, что означает "заменить функционально"? Это как - заменить все-таки можно, наплевав на то, что в железе с новым кодом могут возникнуть проблемы, которые в исходной схеме возникнуть не могут?


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


Гуру
******

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



Недавно фильм Павлв Лунгина посмотрел. Остров называется. Рекомендую.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Feb 2 2007, 13:01
Сообщение #45


Гуру
******

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



Цитата(sazh @ Feb 2 2007, 12:56) *
Недавно фильм Павлв Лунгина посмотрел. Остров называется. Рекомендую.


Знаете, это уж совсем bb-offtopic.gif

Или Вы всегда так возражаете когда Вас ловят на ошибках?


--------------------
Пишите в личку.
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 Текстовая версия Сейчас: 10th July 2025 - 10:23
Рейтинг@Mail.ru


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