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

 
 
> проблема с клоками в spartan-6
novartis
сообщение Jul 3 2015, 05:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Добрый день.
Имеется плис Spartan-6 xc6slx16-2csg324.
В плис приходит тактовая clk = 25MHz. Приходит на dedicated clock pin.
К плис подключен датчик.
От плис к датчику уходит клок dclk и сигнал старта работы. По даташиту dclk может быть 0.1 - 120МГц.
От датчика в плис возвращается dclk_out, data_valid, data[9:0].
Плату делали универсальную, с разъемом, к которому можно было бы подключать разные датчики,
какие то dedicated clock pin для этого разъема не предусмотрели.
Поэтому dclk и dclk_out попадают на обычные io ноги.

Проект я создал, все работает, данные от датчика приходят.
Но остаются сомнения о правильности работы с dclk и dclk_out.

Сейчас clk подаю на clk_wiz. Из него выходит клок clk_wiz_out. Пока 5 мгц, но в планах поднять до 240МГц.
Выходной клок clk_wiz_out подать на dclk не удалось, так как clk_wiz_out проходит через BUFG, а BUFG клок нельзя подать на io ногу.
ISE ругается
Код
    ERROR:Place:1136 - This design contains a global buffer instance,
   <clk_wiz_v3_6_inst/clkout1_buf>, driving the net, <dclk_OBUF>, that is
   driving the following (first 30) non-clock load pins.
   < PIN: dclk.O; >
   This is not a recommended design practice in Spartan-6 due to limitations in
   the global routing that may cause excessive delay, skew or unroutable
   situations.  It is recommended to only use a BUFG resource to drive clock
   loads. If you wish to override this recommendation, you may use the
   CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
   this message to a WARNING and allow your design to continue.
   < PIN "clk_wiz_v3_6_inst/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >

Поэтому сформировал новый клок
process(clk_wiz_out)
begin
if (rising_edge(clk_wiz_out)) then
clk_int <= not clk_int;
end if;
end process;

Его то и выдаю как dclk.

Та же беда с dclk_out. Хотел тактировать им процесс и в нем работать с data_valid и data[9:0].
Но если написать
process(dclk_out)
begin
if (rising_edge(dclk_out)) then
...
end if;
end process;
то ISE опять ругается
Код
   ERROR:Place:1108 - A clock IOB / BUFGMUX clock component pair have been found
   that are not placed at an optimal clock IOB / BUFGMUX site pair. The clock
   IOB component <dclk_out> is placed at site <L14>. The corresponding BUFG
   component <dclk_out_BUFGP/BUFG> is placed at site <BUFGMUX_X2Y10>. There is
   only a select set of IOBs that can use the fast path to the Clocker buffer,
   and they are not being used. You may want to analyze why this problem exists
   and correct it. If this sub optimal condition is acceptable for this design,
   you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote
   this message to a WARNING and allow your design to continue. However, the use
   of this override is highly discouraged as it may lead to very poor timing
   results. It is recommended that this error condition be corrected in the
   design. A list of all the COMP.PINs used in this clock placement rule is
   listed below. These examples can be used directly in the .ucf file to
   override this clock rule.
   < NET "dclk_out" CLOCK_DEDICATED_ROUTE = FALSE; >

Поэтому data_valid и data[9:0] обрабатываю под clk_int. Но это не правильно.

Кто что посоветует?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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