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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Клоки, Использование нескольких синх. сиг. в пр
sazh
сообщение Oct 2 2010, 11:53
Сообщение #16


Гуру
******

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



Цитата(Guest @ Jul 23 2004, 20:41) *
есть такое понятие как синхронизаторы (блок из триггеров) нужен вот для чего: если есть схема в которой есть разные тактовые домены работающие на одной частоте но не факт что фазы совпадают,а надо передавать данные из одного в другой и чтоб голова не болела по поводу проскальзываний или метасостояний, то делаем так:
(вых данных, и такты1) -> триггер1
(выход триггер1, такты2) ->триггер2
(выход триггер2, такты2) ->триггер3
с выхода триггера3 уже имеем стабильные данные но нужным нам тактам.


Хочется поговорить об этом. В свете используемого симулятора.
Моделсим определяет временной интервал (симуляция на gate уровне в терминах Альтеры), где при переходе из одного клокового домена в другой не выполняются времена установки и удержания данных. Но эту неопределенность распространяет на всю цепочку триггеров.
В результате по сформированному неопределенному сигналу в нужном временном интервале реакции на входное воздействие не происходит.
Получается, в симуляторе нет анализа метастабильности, и все эти ниже перечисленные статьи - дань научному мировозрению?
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  ________________.zip ( 618.3 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 2 2010, 13:02
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



а пользовался ли кто-нибудь этим:
http://www.mentor.com/products/fv/0-in-cdc/ ?
тут про нее рассказывали:
http://mentor1.na5.acrobat.com/p87035116/?...p;pbMode=normal
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2010, 13:22
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(sazh @ Oct 2 2010, 06:53) *
Получается, в симуляторе нет анализа метастабильности

вскройте модель используемого триггера, там всё написано %)
Цитата
и все эти ниже перечисленные статьи - дань научному мировозрению?

занятный вывод biggrin.gif

ЗЫ. можете поправить модель триггера добавив туда модель метастабильности, потом незабудьте поделится.


--------------------
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 2 2010, 13:48
Сообщение #19


Гуру
******

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



Цитата(des00 @ Oct 2 2010, 16:22) *
занятный вывод


Это случайно вырвалось. Уж слишком много чужих проектов пришлось на своем веку перевидать.
Там этим не заморачивались.
P. S. Хотелось бы ясных исчерпывающих ответов.
Хотя осознаю, что манеры общения на конференциях, проводимых западными партнерами и нашими родными, частенько разнятся.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2010, 13:56
Сообщение #20


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(sazh @ Oct 2 2010, 07:48) *
P. S. Хотелось бы ясных исчерпывающих ответов.

если мне память не изменяет нет там модели метастабильности. контроль временного нарушения есть, а выхода из него нет. Для этого менторовцы предлагают использовать софт, который привел vadimuzzz.


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 2 2010, 16:48
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Модель метастабильности нет смысла делать, потому что давно известно, как делать схему, толерантную к метастабильности. А чтобы первый триггер в цепочке синхронизаторов не гадил иксами в модели - ему генерацию иксов отключают (в моделях это обычно указывается параметром, что делать при нарушении setup/hold: выдавать X или какое-то значение, старое/новое/случайное).
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2010, 17:01
Сообщение #22


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(DmitryR @ Oct 2 2010, 11:48) *
Модель метастабильности нет смысла делать....

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


--------------------
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 3 2010, 06:38
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Поясните пожалуйста, какой именно анализ метастабильности Вы имели в виду:
Цитата(sazh @ Oct 2 2010, 15:53) *
Моделсим определяет временной интервал (симуляция на gate уровне в терминах Альтеры), где при переходе из одного клокового домена в другой не выполняются времена установки и удержания данных.

Цитата(sazh @ Oct 2 2010, 15:53) *
Получается, в симуляторе нет анализа метастабильности, и все эти ниже перечисленные статьи - дань научному мировозрению?

То, что Вы упомянули - и есть анализ метастабильности: при её возникновении выход модели триггера переводится в "x" - а дальше он уже распространяется по логике в соответствии с обычными правилами симуляции.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 3 2010, 10:22
Сообщение #24


Гуру
******

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



Цитата(Intekus @ Oct 3 2010, 09:38) *
дальше он уже распространяется по логике в соответствии с обычными правилами симуляции.


Все так. И в результате я не получаю соответствия между функциональным и временным моделировании при использовании в проекте сетки входных клоков.
Теперь я понимаю, почему альтерщики при встроенном моделировании пользовали только временное (по умолчанию, по лени), а моделсимщики - только RTL (функциональное).
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 3 2010, 12:28
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Видимо, голова работает в режиме выходного дня smile.gif - никак не могу уразуметь, что же вы ожидаете от симулятора.
Цитата(sazh @ Oct 3 2010, 14:22) *
Все так. И в результате я не получаю соответствия между функциональным и временным моделировании при использовании в проекте сетки входных клоков.
Теперь я понимаю, почему альтерщики при встроенном моделировании пользовали только временное (по умолчанию, по лени), а моделсимщики - только RTL (функциональное).

А каким, по-вашему, должно быть в идеале это соответствие? При каждом подозрении на метастабильность делить симуляцию на 2 ветки, соответствующие восприятию состояния "проблемного" триггера как "0" и "1" соответственно, да ещё и рассчитывать вероятности каждого исхода? Точнее даже делить не на 2 ветки, а на 2^n, если выход триггера подключён к n различным цепям.
Или Вам нужно просто, чтоб не появлялись x-ы? Так опция, заставляющая игнорировать при симуляции метастабильность и выдавать на выход строго 0 или 1 может быть установлена (по крайней мере у Xilinx) как для любого триггера индивидуально, так и для проекта в целом.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 4 2010, 06:00
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(sazh @ Oct 3 2010, 14:22) *
Все так. И в результате я не получаю соответствия между функциональным и временным моделировании при использовании в проекте сетки входных клоков.

Разумеется, потому что если бы на функциональная модель была бы аналогом временной - то в последней не было бы смысла. Как подсказывает нам К.О., функциональная модель нужна для того, чтобы проверить функционал. Она часто бывает платформенно-независима (если не использованы мегафункции) и работает очень быстро. Временная модель полностью аппаратно-зависима и ставит целью проверку времянки, и работает на порядок-другой-третий медленнее функциональной. Назначения этих моделей практически не пересекаются.
Go to the top of the page
 
+Quote Post
judge47
сообщение Nov 9 2010, 08:39
Сообщение #27





Группа: Новичок
Сообщений: 4
Регистрация: 12-09-10
Пользователь №: 59 432



Я понимаю, что в основном на этом форуме сидят мастера своего дела, но ,пожалуйста, покажите графически, как выглядит СХЕМА ЭЛАСТИЧНОГО БУФЕРА
Go to the top of the page
 
+Quote Post
FAE_SKV
сообщение Nov 9 2010, 10:48
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 14-11-07
Пользователь №: 32 325



Цитата(DimaV @ Jul 21 2004, 17:07) *
Ситуация: В большом проекте нужно использовать несколько клоков (не кратных). Есть компоненты которые работают синхронно от разных клоков.
Вопрос: Как грамотно соеденить эти компоненты между собой?

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

Цитата(DimaV @ Jul 21 2004, 17:07) *
Ситуация: В большом проекте нужно использовать несколько клоков (не кратных). Есть компоненты которые работают синхронно от разных клоков.
Вопрос: Как грамотно соеденить эти компоненты между собой?


Вот небольшой пример. Клокбридж для записи данных.
Может осуществляться переход как с большей, так и с меньшей частоты.

CODE
module ClockBridge_BusOut(
Data_IN,
wr_in,
clk_out,
reset,
clk_in,
Data_in_rdy,
Data_Out,
Data_out_rdy
);


// synopsys template
parameter DATA_WIDTH = 16,
T = 1;

// IO port Declarations

input [DATA_WIDTH-1:0] Data_IN;
input wr_in;
input clk_out;
input reset;
input clk_in;
output Data_in_rdy;
output [DATA_WIDTH-1:0] Data_Out;
output Data_out_rdy;

//Internal Declarations


wire [DATA_WIDTH-1:0] #T Data_IN;
wire #T wr_in;
wire clk_out;
wire reset;
wire clk_in;
wire #T o_bsy;
wire [DATA_WIDTH-1:0] #T Data_Out;
wire #T Data_out_rdy;

// Local declarations

// Internal signal declarations

reg reg_rdy_data_in;
reg data_reg_in_rdy;
reg [DATA_WIDTH-1:0] reg_data_in;
reg [DATA_WIDTH-1:0] reg_data_out;
reg data_reg_in_rdy_1;

//---------------------------------------------------------

//Тактовый домен со сторы данных на запись

//Записываем данные во входной регистр

always @(posedge clk_in or posedge reset)
if (reset)
reg_data_in[DATA_WIDTH-1:0] <= #T 0;
else
if (wr_in)
reg_data_in[DATA_WIDTH-1:0] <= #T Data_IN[DATA_WIDTH-1:0];

// Сигнал готовности данных во входном регистре
// Выставляем стробом записи в регистр
//Сбрасывается по сигналу готовности в выходном регистре

always @(posedge clk_in or posedge reset)
if (reset)
reg_rdy_data_in <= #T 1'b0;
else
reg_rdy_data_in <= #T (reg_rdy_data_in | wr_in) & ~data_reg_in_rdy_1;

assign Data_in_rdy = reg_rdy_data_in;

//--------------------------------------------------------

//Тактовый домен со сторы данных на чтение

//Стробируем сигнал готовности данных во входном регистре частотой сос стороны чтения
//Это нужно, чтобы не попасть на фронт сигнала и данные гарантированно были зафиксированы во входном регистре.

always @(posedge clk_out or posedge reset)
if (reset)
data_reg_in_rdy <= #T 1'b0;
else
data_reg_in_rdy <= #T reg_rdy_data_in;


//По сигналу готовности данные со входного регистра записываются в выходной

always @(posedge clk_out or posedge reset)
if (reset)
reg_data_out[DATA_WIDTH-1:0] <= #T 0;
else
if (data_reg_in_rdy)
reg_data_out[DATA_WIDTH-1:0] <= #T reg_data_in[DATA_WIDTH-1:0];

assign Data_Out[DATA_WIDTH-1:0] = reg_data_out[DATA_WIDTH-1:0];

//Сигнал готовности данных в выходном регистре

always @(posedge clk_out or posedge reset)
if (reset)
data_reg_in_rdy_1 <= #T 1'b1;
else
data_reg_in_rdy_1 <= #T data_reg_in_rdy;


assign Data_out_rdy = data_reg_in_rdy_1;

endmodule // ClockBridge_BusOut


Go to the top of the page
 
+Quote Post
judge47
сообщение Nov 18 2010, 09:40
Сообщение #29





Группа: Новичок
Сообщений: 4
Регистрация: 12-09-10
Пользователь №: 59 432



понимаю, что в основном на этом форуме сидят мастера своего дела, но ,пожалуйста, покажите графически, как выглядит СХЕМА ЭЛАСТИЧНОГО БУФЕРА
Go to the top of the page
 
+Quote Post

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

 


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


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