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

 
 
> Клоки в Altera Arria V
verali
сообщение Sep 14 2016, 09:42
Сообщение #1


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

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Добрый день! Собрал проект на ПЛИС из IP-блоков:
Прикрепленное изображение

После компиляции TimeQuest показывает, что максимальная скорость около 90 МГц, что для Arria V является очень низкой.
Прикрепленное изображение

В информационных сообщениях появляются Warnings:
Прикрепленное изображение

1) 1 input pin(s) will use non-dedicated clock routing.
Как я понял, мой клок использует путь(пин) не предназначенный для клока. В Connection Guidelines есть два типа клока - clk и pll.
Прикрепленное изображение

Логично предположить, что только ко второму можно подключить pll.
Но в pin assignment pll является дополнительной опцией:

Прикрепленное изображение

Следовательно делаю вывод, что в любому clk я могу подключить pll.
Верны ли мои предположения?
2) Node: clk was determinated to be a clock but was found without an associated clock assignment.
Warning требует от меня где-то (может быть в assignment editor?) указать что этот пин используется как клок(так как клок может быть и клоком и обычным I/O)? Не могу найти, где это указать. Буду благодарен за наводку.
3) PLL cross checking found inconsistent PLL clock settings: was found missing 1 generated clock that corresponds to be a base clock with a period of: 10.000
Тут warning мне говорит, что я не подключил(потерял) клок, который идет на вход ФАПЧ, хотя из первого вложения видно, что внешний клок идет напрямую на ФАПЧ. Сразу скажу - внешний клок 100 МГц идет на ФАПЧ и выходят все те же 100 МГц. В институте так советовал делать преподаватель, ссылаясь на то, что увеличивается надежность всей системы, из-за того, что внешний клок может быть зашумленным, а выход ФАПЧ является чуть ли не прецизионным.
4)В TimeQuest есть так называемый altera_reserved_clock. Что это такое и почему его частота 33 МГц? Связан ли он какие-либо образом с SignalTap?
Прикрепленное изображение


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
andrew_b
сообщение Sep 14 2016, 10:21
Сообщение #2


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(verali @ Sep 14 2016, 12:42) *
2) Node: clk was determinated to be a clock but was found without an associated clock assignment.
Warning требует от меня где-то (может быть в assignment editor?) указать что этот пин используется как клок(так как клок может быть и клоком и обычным I/O)? Не могу найти, где это указать. Буду благодарен за наводку.
Этот варнинг говорит о том, что ваш слок не описан должным образом: не указана частота вашего клока и всё, что связано с PLL. Что у вас в sdc?

Если вы используете PLL, то в качестве сброса для всех блоков используйте её выход Locked, а не входной reset_n.
Go to the top of the page
 
+Quote Post
verali
сообщение Sep 15 2016, 08:43
Сообщение #3


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

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(andrew_b @ Sep 14 2016, 11:21) *
Этот варнинг говорит о том, что ваш слок не описан должным образом: не указана частота вашего клока и всё, что связано с PLL. Что у вас в sdc?

Сейчас описал sdc (ранее был не знаком с тем, что надо описывать клоки) - warning пропали. Посмотрите пожалуйста, все ли я описал в sdc.
Листинг моего sdc:
CODE
#**************************************************************
# Time Information
#**************************************************************

set_time_format -unit ns -decimal_places 3



#**************************************************************
# Create Clock
#**************************************************************

create_clock -name {altera_reserved_tck} -period 33.333 -waveform { 0.000 16.666 } [get_ports {altera_reserved_tck}]
create_clock -name {clk} -period 10.000 -waveform { 0.000 5.000 } [get_ports {clk clk(n)}]


#**************************************************************
# Create Generated Clock
#**************************************************************

create_generated_clock -name {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]} -source [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|refclkin}] -duty_cycle 50.000 -multiply_by 6 -divide_by 2 -master_clock {clk} [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]}]
create_generated_clock -name {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk} -source [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|vco0ph[0]
}] -duty_cycle 50.000 -multiply_by 1 -divide_by 3 -master_clock {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]} [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}]


#**************************************************************
# Set Clock Latency
#**************************************************************



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

set_clock_uncertainty -rise_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -setup 0.050
set_clock_uncertainty -rise_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -hold 0.030
set_clock_uncertainty -rise_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -setup 0.050
set_clock_uncertainty -rise_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -hold 0.030
set_clock_uncertainty -fall_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -setup 0.050
set_clock_uncertainty -fall_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -hold 0.030
set_clock_uncertainty -fall_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -setup 0.050
set_clock_uncertainty -fall_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -hold 0.030
set_clock_uncertainty -rise_from [get_clocks {altera_reserved_tck}] -rise_to [get_clocks {altera_reserved_tck}] -setup 0.050
set_clock_uncertainty -rise_from [get_clocks {altera_reserved_tck}] -fall_to [get_clocks {altera_reserved_tck}] -setup 0.050
set_clock_uncertainty -fall_from [get_clocks {altera_reserved_tck}] -rise_to [get_clocks {altera_reserved_tck}] -setup 0.050
set_clock_uncertainty -fall_from [get_clocks {altera_reserved_tck}] -fall_to [get_clocks {altera_reserved_tck}] -setup 0.050


#**************************************************************
# Set Input Delay
#**************************************************************



#**************************************************************
# Set Output Delay
#**************************************************************



#**************************************************************
# Set Clock Groups
#**************************************************************

set_clock_groups -asynchronous -group [get_clocks {altera_reserved_tck}]


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

set_false_path -from [get_keepers {altera_reserved_tdi}] -to [get_keepers {pzdyqx*}]


#**************************************************************
# Set Multicycle Path
#**************************************************************



#**************************************************************
# Set Maximum Delay
#**************************************************************



#**************************************************************
# Set Minimum Delay
#**************************************************************



#**************************************************************
# Set Input Transition
#**************************************************************



Цитата(andrew_b @ Sep 14 2016, 11:21) *
Если вы используете PLL, то в качестве сброса для всех блоков используйте её выход Locked, а не входной reset_n.

Спасибо за совет. Как я понимаю locked используется для синхронизации внешнего сброса с выходной частотой pll?

В TimeQuest Timing Analyzer появились три частоты.
1)altera_reserved_tck
2)clk
3)pll_user
Максимальные частоты 78, 195 и 262 соответственно.Правильно ли я понимаю, что в зависимости от того, чем я буду тактировать внутреннюю логику ПЛИС (без/с pll) меняется максимальная частота работы ПЛИС?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 15 2016, 14:11
Сообщение #4


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(verali @ Sep 15 2016, 11:43) *
Сейчас описал sdc (ранее был не знаком с тем, что надо описывать клоки) - warning пропали. Посмотрите пожалуйста, все ли я описал в sdc.
Я не вижу в вашем дизайне altera_reserved_tck. Уберите его и всё, что с ним связано, из sdc.
У вас в дизайне нет других входов кроме клока и сброса. Поэтому sdc будет простейшим:
Код
set_time_format -unit ns -decimal_places 3

create_clock -name {clk} -period 10.000 [get_ports {clk clk(n)}]

derive_pll_clocks -create_base_clocks

derive_clock_uncertainty


Цитата
Как я понимаю locked используется для синхронизации внешнего сброса с выходной частотой pll?

Locked используется для того, чтобы использовать правильный клок с выхода PLL. Она же не мгновенно начинает входит в режим захвата. Пока она не в захвате, выходной клок использовать нельзя.

Цитата
Правильно ли я понимаю, что в зависимости от того, чем я буду тактировать внутреннюю логику ПЛИС (без/с pll) меняется максимальная частота работы ПЛИС?
Вас должно волновать, выполняются ли ваши временные ограничения, а не максимальная частота.
Go to the top of the page
 
+Quote Post

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

 


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


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