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

 
 
> Констрейны для регистрирования данных от АЦП
R6L-025
сообщение Jul 11 2013, 18:57
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Доброго времени суток.
помогите с вопросом: какие констрейны нужно задавать для АЦП тактируемого от клока с ПЛИС?
Есть отладочная плата на stratix_IV и два мезанина с 2-мя АЦП на каждом, тактирую их от входящего на ПЛИС клока (125 МГц) без преобразований, через виртуальную дифф. пару (подаю прямой и инвертированный клок). Для регистрирования входных данных использую выходящие от 4-х АЦП клоки DCO. Если использую только 2 АЦП - всё хорошо, как только добавляю ещё 2 в проект, начинаются непонятки. TimeQuest говорит что всё нормально, но в SignalTap-е вместо принимаемого тестового синуса появляется всякий мусор.
Я задавал такие констрейны:

CODE
set_time_format -unit ns -decimal_places 3
#**************************************************************
# Create Clock
#**************************************************************

create_clock -name "clk" -period 8.000ns [get_ports {clk}]
create_clock -name altera_reserved_tck -period 100.000 -waveform {0.000 50.000} [get_ports altera_reserved_tck]

derive_pll_clocks -create_base_clocks

# Описание клоков, выдаваемых АЦП:
create_generated_clock -name clk_112_0A -source [get_ports {clk}] [get_ports {clk_112_0A}]
create_generated_clock -name clk_112_1A -source [get_ports {clk}] [get_ports {clk_112_1A}]
create_generated_clock -name clk_112_0B -source [get_ports {clk}] [get_ports {clk_112_0B}]
create_generated_clock -name clk_112_1B -source [get_ports {clk}] [get_ports {clk_112_1B}]

# Описание задержки выходного DCO клока на АЦП, относительно входного:
set_clock_latency -source 4.5 [get_clocks {clk_112_0A}]
set_clock_latency -source 4.5 [get_clocks {clk_112_1A}]
set_clock_latency -source 4.5 [get_clocks {clk_112_0B}]
set_clock_latency -source 4.5 [get_clocks {clk_112_1B}]

# Описание созданных клоков, идущих на АЦП:
create_generated_clock -name chanel_0A_clk_112 -source [get_ports {clk}] [get_ports {chanel_0A_clk_112}]
create_generated_clock -name chanel_0A_clk_112n -invert -source [get_ports {clk}] [get_ports {chanel_0A_clk_112n}]
create_generated_clock -name chanel_1A_clk_112 -source [get_ports {clk}] [get_ports {chanel_1A_clk_112}]
create_generated_clock -name chanel_1A_clk_112n -invert -source [get_ports {clk}] [get_ports {chanel_1A_clk_112n}]
create_generated_clock -name chanel_0B_clk_112 -source [get_ports {clk}] [get_ports {chanel_0B_clk_112}]
create_generated_clock -name chanel_0B_clk_112n -invert -source [get_ports {clk}] [get_ports {chanel_0B_clk_112n}]
create_generated_clock -name chanel_1B_clk_112 -source [get_ports {clk}] [get_ports {chanel_1B_clk_112}]
create_generated_clock -name chanel_1B_clk_112n -invert -source [get_ports {clk}] [get_ports {chanel_1B_clk_112n}]

#**************************************************************
# Set Clock Uncertainty
#**************************************************************
derive_clock_uncertainty

#**************************************************************
# Set Multicycle
#**************************************************************
set_multicycle_path -from clk_112_0A -to clk_112_0A -setup 1
set_multicycle_path -from clk_112_0A -to clk_112_0A -hold 1
set_multicycle_path -from clk_112_1A -to clk_112_1A -setup 1
set_multicycle_path -from clk_112_1A -to clk_112_1A -hold 1
set_multicycle_path -from clk_112_0B -to clk_112_0B -setup 1
set_multicycle_path -from clk_112_0B -to clk_112_0B -hold 1
set_multicycle_path -from clk_112_1B -to clk_112_1B -setup 1
set_multicycle_path -from clk_112_1B -to clk_112_1B -hold 1


#**************************************************************
# Set Input Delay
#**************************************************************
set_input_delay -add_delay -clock [get_clocks {altera_reserved_tck}] 20.000 [get_ports {altera_reserved_tdi}]
set_input_delay -add_delay -clock [get_clocks {altera_reserved_tck}] 20.000 [get_ports {altera_reserved_tms}]

set ext_Tsu_typ 2.9
set ext_Th_typ 3.0

# Входная задержка данных от АЦП по исходящему от АЦП клоку:
set_input_delay -clock "clk_112_0A" -add_delay -max [expr $ext_Tsu_typ] [get_ports {chanel_0A_dat_112[*]}]
set_input_delay -clock "clk_112_0A" -add_delay -min [expr $ext_Th_typ] [get_ports {chanel_0A_dat_112[*]}]
set_input_delay -clock "clk_112_1A" -add_delay -max [expr $ext_Tsu_typ] [get_ports {chanel_1A_dat_112[*]}]
set_input_delay -clock "clk_112_1A" -add_delay -min [expr $ext_Th_typ] [get_ports {chanel_1A_dat_112[*]}]
set_input_delay -clock "clk_112_0B" -add_delay -max [expr $ext_Tsu_typ] [get_ports {chanel_0B_dat_112[*]}]
set_input_delay -clock "clk_112_0B" -add_delay -min [expr $ext_Th_typ] [get_ports {chanel_0B_dat_112[*]}]
set_input_delay -clock "clk_112_1B" -add_delay -max [expr $ext_Tsu_typ] [get_ports {chanel_1B_dat_112[*]}]
set_input_delay -clock "clk_112_1B" -add_delay -min [expr $ext_Th_typ] [get_ports {chanel_1B_dat_112[*]}]

#**************************************************************
# Set Output Delay
#**************************************************************
set_output_delay -add_delay -clock [get_clocks {altera_reserved_tck}] 20.000 [get_ports {altera_reserved_tdo}]

#**************************************************************
# Set Clock Groups
#**************************************************************
set_clock_groups -asynchronous -group {clk}
set_clock_groups -asynchronous -group {clk_112_0A}
set_clock_groups -asynchronous -group {clk_112_1A}
set_clock_groups -asynchronous -group {clk_112_0B}
set_clock_groups -asynchronous -group {clk_112_1B}
set_clock_groups -asynchronous -group {altera_reserved_tck}

#**************************************************************
# Set False Path
#**************************************************************

# Исключаем анализ путей сигналов разрешения:
set_false_path -from * -to [get_ports chanel_0A_OE_n]
set_false_path -from * -to [get_ports chanel_1A_OE_n]
set_false_path -from * -to [get_ports chanel_0B_OE_n]
set_false_path -from * -to [get_ports chanel_1B_OE_n]
set_false_path -from * -to [get_ports chanel_0A_SPI_CS_n]
set_false_path -from * -to [get_ports chanel_1A_SPI_CS_n]
set_false_path -from * -to [get_ports chanel_0B_SPI_CS_n]
set_false_path -from * -to [get_ports chanel_1B_SPI_CS_n]


Кроме того, подскажите:
- Нужно ли задавать задержки клока и данных на плате, или при условии их равенства они компенсируются? (при приведённых констрейнах я пробовал их описывать, но это ничего не дало, к тому же я их мерил вручную осциллографом, и весьма не уверен в их точности);
- Как лучше задавать задержку выходящего от АЦП клока DCO, относительно входящего clk - через clock latency или прописывать через параметр -offset?
- По поводу задержки на портах, как я понимаю, для min/max входной задержки нужно указывать min/max Tco. В даташите на АЦП я нашёл только параметры Tso и Th, могу ли я использовать их в этих целях?
- Правильно ли я понимаю, что если Th для группы входного клока ~ 0.3 ns, это не есть хорошо?
В приведённом sdc файле я использовал мультициклы. Без них Th~ 0.3 ns, с ними ~ 8 ns, но проект всё равно нормально не работает (

Если есть какие соображения у кого - поделитесь пожалуйста!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- - R6L-025   Заметил ещё одну интересную вещь: при отсутствии с...   Jul 13 2013, 08:41
- - ViKo   RE: Констрейны для регистрирования данных от АЦП   Jul 13 2013, 09:20
|- - Toptijka   Есть необходимость описать путь, задержка на котор...   Aug 2 2013, 09:28
- - R6L-025   Спасибо! Попробую   Jul 13 2013, 10:33
- - novartis   Посмотрите в Chip Planner'е по периметру крист...   Jul 16 2013, 06:50
- - R6L-025   Всем спасибо, вроде разобрался. Когда собирал этот...   Jul 16 2013, 07:54
- - R6L-025   А вы уверены что то, что вы описываете, имеет тип ...   Aug 2 2013, 11:32
|- - Toptijka   Цитата(R6L-025 @ Aug 2 2013, 15:32) ...   Aug 2 2013, 11:43
- - R6L-025   А Вы RTL Wiewer проверяли существование вашего пор...   Aug 2 2013, 12:02
|- - Toptijka   Цитата(R6L-025 @ Aug 2 2013, 16:02) ...   Aug 2 2013, 12:09
|- - Toptijka   Цитата(R6L-025 @ Aug 2 2013, 16:02) ...   Aug 2 2013, 13:51
- - Toptijka   Проблема решена. Подсказка нашлась тут: http://www...   Aug 6 2013, 12:05
- - _Anatoliy   Цитата(Toptijka @ Aug 6 2013, 13:05) Т.е....   Aug 6 2013, 12:36
- - Toptijka   Цитата(_Anatoliy @ Aug 6 2013, 16:36) Ищи...   Aug 6 2013, 12:46


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

 


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


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