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

 
 
> Констрейн для простого derived clock, Spartan 6, UCF, constraints
AVR
сообщение Jan 15 2017, 13:41
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Есть проект, в котором выполняется одновременно умножение и суммирование за один такт двух многоразрядных регистров. На частоте 50 МГц констрейны выполнялись, теперь встала необходимость повысить частоту до 75 МГц. Вся схема на более высокой частоте работает, но вот конкретно это место не проходит.
Есть три вопроса:

1) В принципе, дальнейшая работа с результатом этого действия была специально мной отложена на три такта. Могу я ожидать что за эти три такта (с запасом) значение установится без каких-либо сбоев?

2) Можно ли это как-то "узаконить" в глазах анализатора таймингов? Что вот это место может обрабатываться три такта и не обязательно влезать в один такт 75 МГц.

3) Я могу поместить это действие в отдельный модуль, который будет работать на пониженной частоте в два или даже в 4 раза:
Код
reg [1:0] mclock_div;
initial mclock_div = 0;
always @(posedge main_clock)
mclock_div <= mclock_div + 1;
wire mclock = !mclock_div[1];
Тут main_clock это 75 Мгц, а mclock это вдвое меньшая частота, фронт которой совпадает с фронтом main_clock - верно?
Xilinx_constraints_guide.pdf содержит раздел Specifying Derived Clocks, но там не очень ясные примеры. Я могу предположить что это задается так:
Код
TIMESPEC "mclock" = PERIOD "main_clock" TS_main_clock / 2 PHASE + 0 ns;
Правильно ли я понимаю что /2 будет означать что частота понижена вдвое, и что не возникает увеличения фазы. Или тут стоит задать не 0 ns - но какое?

P.S. Честно осуществил поиск по форуму перед созданием темы, такой простой случай почему-то не попался.

Код
Period for clock doubled and phase-shifted forward by 180 degrees (which is 90 degrees relative to TS01):
TIMESPEC ”TS04” = PERIOD "clk180" TS01 / 2 PHASE + 2.5 nS;
Можно подумать что /2 означать что период увеличен вдвое, а можно что он наоборот поделен на два и частота стала в 2 раза выше. Непонятное место в документации.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
makc
сообщение Jan 15 2017, 17:21
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Читайте про FROM:TO (Multi-Cycle) Constraints.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 28 2017, 15:51
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(makc @ Jan 15 2017, 20:21) *
Читайте про FROM:TO (Multi-Cycle) Constraints.

В документе ug612.pdf есть раздел по этой теме, и есть вот такой пример:
Код
INST */gen_dqs*.u_iob_dqs/u_iddr_dq_ce TNM = TNM_DQ_CE_IDDR;
INST */gen_dq*.u_iob_dq/gen_stg2_*.u_iddr_dq TNM = TNM_DQS_FLOPS;
TIMESPEC TS_DQ_CE = FROM TNM_DQ_CE_IDDR TO TNM_DQS_FLOPS TS_SYS_CLK * 2;
Я так понимаю, это означать что эти пути могут быть в два раза медленнее чем основная логика (TS_SYS_CLK).

Мой код таков (begin end - просто лишнее между удалено):
Код
34: begin
    temp <= (sum2 * r_cos);
end
37: begin
    temp <= temp - (sum1 * r_sin);
end
40: begin
где
Код
reg signed [64:0] temp;
reg signed [33:0] sum1, sum2;
reg signed [22:0] r_sin;
reg signed [22:0] r_cos;

Сначала хотелось бы понять как это описать для первого действия temp <= (sum2 * r_cos). Предположительно, констрейн я должен писать так:
Код
NET "adc_clkout" TNM_NET = clkout_pin;
TIMESPEC TS_clkout_pin = PERIOD clkout_pin 75000 kHz;

INST /temp TNM = TNM_TEMP;
INST <???> TNM = TNM_SUM2_COS;
TIMESPEC TS_MC1 = FROM TNM_SUM2_COS TO TNM_TEMP TS_clkout_pin * 3;

Вопрос: как описать TNM_SUM2_COS, который бы характеризовал это действие: sum2 * r_cos???
Я пока думаю что могу описать это как wire [65:0] sum2_cos = sum2 * r_cos; и тогда в констрейн я укажу:
Код
INST /sum2_cos TNM = TNM_SUM2_COS;


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVR   Констрейн для простого derived clock   Jan 15 2017, 13:41
- - andrew_b   Цитата(AVR @ Jan 15 2017, 16:41) 2) Можно...   Jan 15 2017, 16:55
|- - AVR   Цитата(andrew_b @ Jan 15 2017, 19:55) Мул...   Jan 15 2017, 17:03
|- - andrew_b   Цитата(AVR @ Jan 28 2017, 18:51) Предполо...   Jan 28 2017, 17:37
|- - AVR   Цитата(andrew_b @ Jan 28 2017, 20:37) Есл...   Jan 28 2017, 17:48
|- - andrew_b   Попробую немного по-другому. У вас есть два регист...   Jan 29 2017, 06:08
|- - AVR   Цитата(andrew_b @ Jan 29 2017, 09:08) Пос...   Jan 29 2017, 16:43
|- - andrew_b   Цитата(AVR @ Jan 29 2017, 19:43) Кодreg c...   Jan 30 2017, 11:19
|- - AVR   Цитата(andrew_b @ Jan 30 2017, 14:19) Так...   Jan 30 2017, 11:26
- - OM-S   Про мультицикл уже ответили. Когда я разбирался, ...   Jan 15 2017, 17:56
|- - AVR   Цитата(OM-S @ Jan 15 2017, 20:56) Пр...   Jan 15 2017, 18:21
|- - DuHast   Цитата(AVR @ Jan 15 2017, 21:21) Да, спас...   Jan 15 2017, 19:42
- - Shivers   Самое главное с малтисайклом, это что по сетапу ук...   Jan 15 2017, 20:05
|- - andrew_b   Цитата(Shivers @ Jan 15 2017, 23:05) Само...   Jan 16 2017, 05:22
|- - Shivers   Цитата(andrew_b @ Jan 16 2017, 08:22) Нет...   Jan 16 2017, 06:24
|- - andrew_b   Цитата(Shivers @ Jan 16 2017, 09:24) Там ...   Jan 16 2017, 06:47
- - Bad0512   Цитата(AVR @ Jan 15 2017, 20:41) Есть про...   Jan 16 2017, 00:55
- - lastpoint   А что мешает реализовать умножение и вычитание чер...   Jan 31 2017, 10:17
- - AVR   Цитата(lastpoint @ Jan 31 2017, 13:17) А ...   Jan 31 2017, 12:04


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:05
Рейтинг@Mail.ru


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