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

 
 
> Пересечение сигналом разных клоковых доменов, нужны ли синхронизаторы?
ig_f
сообщение Dec 10 2014, 13:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 18-11-11
Пользователь №: 68 381



Доброго времени суток!
Есть управляющий автомат работающий на частоте 400 кГц и есть логика обработки данных работающая на частоте 120 МГц. Соответственно автомат управления посылает различные сигналы в остальную логику. Частота 400 кГц формируется из основной частоты 120 МГц (без использования PLL, с помощью обыкновенного счетчика), т.е. клоки в общем-то связанные.
Вопросы:
1) Правильно ли я мыслю, что в моем случае можно обойтись без синхронизаторов(тех самых, что используются для борьбы с метастабильностью)?
2) Если так, то что для этого нужно сделать?

Заранее спасибо!

ps
Cyclone III

Сообщение отредактировал ig_f - Dec 10 2014, 13:47
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SM
сообщение Dec 12 2014, 16:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Он должен был туда и derive_clocks записать. Видимо, вопрос опций. А Synplify + Diamond все это делают сами молча и по умолчанию.

Отчет покажите таймквеста, про междоменный переход.
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Dec 12 2014, 16:27
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(SM @ Dec 12 2014, 19:23) *
Он должен был туда и derive_clocks записать. Видимо, вопрос опций. А Synplify + Diamond все это делают сами молча и по умолчанию.

Именно как create_generated_clock создаёт с root=CLK, и с такойже частотой как и root ?
Интересно...Quartus вот протупил....

А как оно generated_clock к глобальному клоковому дереву подключает? или не подключает....
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 12 2014, 16:48
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Torpeda @ Dec 12 2014, 19:27) *
Именно как create_generated_clock создаёт с root=CLK, и с такойже частотой как и root ?
Интересно...Quartus вот протупил....

А как оно generated_clock к глобальному клоковому дереву подключает? или не подключает....


Вот по порядку:

1) исходный код.

CODE

module tst (clk, in, out);
input clk, in;
output reg out;

reg ckff;
always @(posedge clk)
ckff <= ~ckff;

reg ff_a;
always @(posedge clk)
ff_a <= in;

always @(posedge ckff)
out <= ff_a;

endmodule


Констрейны:
Код
BLOCK RESETPATHS;
BLOCK ASYNCPATHS;

FREQUENCY PORT clk 125 MHZ;


Синплифаю запретил clock conversion, иначе он, шибко умный, убьет второй клок и преобразует в работу с сигналом разрешения.
Смотрим лог синтеза:
CODE

#### START OF CLOCK OPTIMIZATION REPORT #####[

Clock optimization not enabled
1 non-gated/non-generated clock tree(s) driving 2 clock pin(s) of sequential element(s)
1 gated/generated clock tree(s) driving 1 clock pin(s) of sequential element(s)
0 instances converted, 1 sequential instance remains driven by gated/generated clocks

=========================== Non-Gated/Non-Generated Clocks ============================
Clock Tree ID Driving Element Drive Element Type Fanout Sample Instance
---------------------------------------------------------------------------------------
@K:CKID0002 clk port 2 ckff
================================================================================
=======
==================================================== Gated/Generated Clocks ====================================================
Clock Tree ID Driving Element Drive Element Type Fanout Sample Instance Explanation
--------------------------------------------------------------------------------------------------------------------------------
@K:CKID0001 ckff FD1S3AX 1 out_0io FF-derived clock conversion disabled
================================================================================
================================================


##### END OF CLOCK OPTIMIZATION REPORT ######]


Ага, он увидел генерацию клока триггером. Дальше PAR:

Код
WARNING - par: The following clock signals will be routed by using generic routing resource and may suffer from excessive delay and/or skew.
   Signal=clk_c loads=2 clock_loads=2
   Signal=ckff loads=2 clock_loads=1

Ну, логично. Чтобы ОНО его автозапихала в глобальное клокодерево, 1-2 load-ов это крайне мало. Надо 10-15 хотя бы. Но, уверяю, если будет достаточно разветвлений, оно его заведет в глобальное дерево.

Дальше. Самое главное!!!!

Код
Hold time optimization iteration 0:
There are 1 hold time violations, the optimization is running ...
End of iteration 0
8 successful; 0 unrouted;  real time: 10 secs

Hold time optimization iteration 1:
All hold time violations have been successfully corrected in speed grade M

Это говорит о том, что PAR правильно понял генерацию клока - и ему пришлось исправлять HOLD на междоменном переходе, вставляя туда задержку.

Ну и, наконец, САМОЕ ГЛАВНОЕ, STA:
CODE

Passed: The following path meets requirements by 7.178ns

Logical Details: Cell type Pin type Cell/ASIC name (clock net +/-)

Source: FF Q ff_a_0io (from clk_c +)
Destination: FF Data in out_0io (to ckff +)

Delay: 1.929ns (20.3% logic, 79.7% route), 1 logic levels.

Constraint Details:

1.929ns physical path delay in_MGIOL to out_MGIOL meets
8.000ns delay constraint less
-1.217ns skew and
0.110ns ONEG0_SET requirement (totaling 9.107ns) by 7.178ns

IOL_B7A attributes: FINE=FDEL0

Physical Path Details:

Data path in_MGIOL to out_MGIOL:

Name Fanout Delay (ns) Site Resource
C2OUT_DEL --- 0.391 IOL_B8A.CLK to IOL_B8A.INFF in_MGIOL (from clk_c)
ROUTE 1 1.538 IOL_B8A.INFF to IOL_B7A.ONEG0 ff_a (to ckff)
--------
1.929 (20.3% logic, 79.7% route), 1 logic levels.

Clock Skew Details:

Source Clock Path clk to in_MGIOL:

Name Fanout Delay (ns) Site Resource
PADI_DEL --- 1.063 36.PAD to 36.PADDI clk
ROUTE 2 1.653 36.PADDI to IOL_B8A.CLK clk_c
--------
2.716 (39.1% logic, 60.9% route), 1 logic levels.

Destination Clock Path clk to out_MGIOL:

Name Fanout Delay (ns) Site Resource
PADI_DEL --- 1.063 36.PAD to 36.PADDI clk
ROUTE 2 1.038 36.PADDI to R25C2C.CLK clk_c
REG_DEL --- 0.404 R25C2C.CLK to R25C2C.Q0 SLICE_0
ROUTE 2 1.428 R25C2C.Q0 to IOL_B7A.CLK ckff
--------
3.933 (37.3% logic, 62.7% route), 2 logic levels.

Report: 823.723MHz is the maximum frequency for this preference.


ВНИМАТЕЛЬНО смотрим Source Clock Path clk to in_MGIOL и Destination Clock Path clk to out_MGIOL !!!!
Первый идет от пада clk через разводку, и все.
Второй - тоже от пада clk, через разводку, регистр (REG_DEL), и опять разводку (ckff).

Короче, усё у полном у порядке!
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Dec 12 2014, 17:25
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(SM @ Dec 12 2014, 19:48) *
PADI_DEL --- 1.063 36.PAD to 36.PADDI clk
ROUTE 2 1.038 36.PADDI to R25C2C.CLK clk_c
REG_DEL --- 0.404 R25C2C.CLK to R25C2C.Q0 SLICE_0

Короче, усё у полном у порядке!

Похоже.... А SDC ваша тулза не пишет?

---
У квартуса таки не впорядке....
generated_clock с выхода делителя начинает отсчёт с НУЛЕВОЙ source_latency, если он create_clock
Тайминги считает как будто оба на одной частоте.

Если задать как положено - create_generated_clock, то в репорте generated_clock тоже с выхода делителя начинает отсчёт но с НЕНУЛЕВОЙ source_latency
Ну и тайминги считает как один быстрый а второй медленее.

---
Автоматическое распознавание чегото + констрейны по умолчанию = ЗЛО

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ig_f   Пересечение сигналом разных клоковых доменов   Dec 10 2014, 13:46
- - Kuzmi4   2 ig_f вообще то всегда надо ставить переходники, ...   Dec 10 2014, 14:09
- - TRILLER   Цитата(ig_f @ Dec 10 2014, 16:46) 1) Прав...   Dec 10 2014, 16:08
|- - des00   Цитата(TRILLER @ Dec 11 2014, 00:08) Нет,...   Dec 10 2014, 16:30
|- - TRILLER   Цитата(des00 @ Dec 10 2014, 19:30) ..Но в...   Dec 10 2014, 19:28
- - SM   Цитата(ig_f @ Dec 10 2014, 16:46) т.е. кл...   Dec 10 2014, 16:55
- - Maverick   Цитата(ig_f @ Dec 10 2014, 15:46) Доброго...   Dec 10 2014, 18:21
- - ig_f   ЦитатаПрошу прощения, если ненароком оскорбил ТС. ...   Dec 10 2014, 21:37
|- - Bad0512   Делать клоки низкой частоты без использования PLL ...   Dec 11 2014, 05:32
|- - SM   Цитата(ig_f @ Dec 11 2014, 00:37) Нет ник...   Dec 11 2014, 08:50
- - ig_f   ЦитатаДелать клоки низкой частоты без использовани...   Dec 11 2014, 08:36
|- - Bad0512   Цитата(ig_f @ Dec 11 2014, 14:36) А вообщ...   Dec 11 2014, 11:53
|- - SM   Цитата(Bad0512 @ Dec 11 2014, 14:53) это ...   Dec 11 2014, 12:01
||- - Bad0512   Цитата(SM @ Dec 11 2014, 18:01) Может, но...   Dec 11 2014, 12:09
||- - SM   Цитата(Bad0512 @ Dec 11 2014, 15:09) поэт...   Dec 11 2014, 12:37
|- - ig_f   Цитата(Bad0512 @ Dec 11 2014, 14:53) Про ...   Dec 11 2014, 14:41
|- - blackfin   Цитата(ig_f @ Dec 11 2014, 17:41) Что-то ...   Dec 11 2014, 14:49
- - dxp   В каком-то альтеровском документе видел описание п...   Dec 11 2014, 13:19
|- - SM   Цитата(dxp @ Dec 11 2014, 16:19) ну, чтоб...   Dec 11 2014, 13:26
||- - des00   Цитата(SM @ Dec 11 2014, 20:26) А вот кст...   Dec 11 2014, 13:40
||- - SM   Цитата(des00 @ Dec 11 2014, 16:40) CLKCTR...   Dec 11 2014, 13:46
||- - des00   Цитата(SM @ Dec 11 2014, 21:46) Хм. А где...   Dec 12 2014, 05:53
|- - blackfin   Цитата(dxp @ Dec 11 2014, 16:19) В каком-...   Dec 11 2014, 13:44
- - Torpeda   Цитата(ig_f @ Dec 10 2014, 17:46) 1) Прав...   Dec 12 2014, 10:05
|- - SM   Цитата(Torpeda @ Dec 12 2014, 13:05) каки...   Dec 12 2014, 10:10
|- - Torpeda   Цитата(SM @ Dec 12 2014, 14:10) Где Вы ту...   Dec 12 2014, 10:16
|- - SM   Цитата(Torpeda @ Dec 12 2014, 13:16) хмм....   Dec 12 2014, 10:54
|- - Torpeda   Цитата(SM @ Dec 12 2014, 14:54) 2) в корн...   Dec 12 2014, 14:44
|- - SM   Цитата(Torpeda @ Dec 12 2014, 17:44) PS. ...   Dec 12 2014, 15:34
|- - Torpeda   Цитата(SM @ Dec 12 2014, 18:34) Вот именн...   Dec 12 2014, 16:13
- - SM   Цитата(Torpeda @ Dec 12 2014, 20:25) Похо...   Dec 12 2014, 17:45


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:34
Рейтинг@Mail.ru


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