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

 
 
> Магический пин P143 на spartan 6, Крайне странное поведение схемы, или я сделал что-то очень глупое...
Golikov A.
сообщение Oct 16 2013, 17:54
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Всем привет!

Имеется платка со Spartan 6 (XC6SLX9), в 144 ногом корпусе.
В ней есть прошивка полностью рабочая. На ПЛИС идет клок 50 МГц, внутри он поднимается до 100 МГц.

Понадобилось добавить управление внешним ключом, который подключен к 143 ноге. Просто один из сигналов что шел внутри плис с инверсией вывели на ружу на эту ногу, и понеслось....

если пишем на эту ногу 1, 0, инверсию внутренего сигнала, ПЛИС перестает работать. Не загорается диодик подтверждения LOCKED PLL. Более того появляется сообщение о какой-то комбинаторной логике на сигнале получаемом делением основного клока.

в куске кода
Код
output port143;

assign port143 = ~reset;

if (reset)
  CLK<=1'b0;
else
  begin
    if(clk_dev < DEVIDER)
      clk_dev <= clk_dev + 1;
   else
      begin
        clk_dev <=0;
        CLK<=~CLK;
      end
  end

вот на этот CLK жалуется синтезатор.

При этом в пустом проекте на эту ногу можно вывести частоту и она будет шевелится

Также если вывести желаемый нам сигнал управления ключом на другую ногу, то опять же все работает.

Если выводит на 143 ногу уровни, они задаются, но плис все равно мертвая....

Пробовали не включать ПЛЛ, подали внешний клок, и результат тот же

143 нога по совместительству еще и VREF 0 банка, но в нем используется уровни по умолчанию, другие сигналы на других ногах VREFE этого банка есть и работают.


Вообщем либо я сделал что-то очень глупое, либо это какая - то магия. И главное что я не представляю что можно еще проверить, что покрутить, как диагностировать в чем косяк... Не резать же из-за такой глупости дорожку, и не паяться же на другие ноги соплей...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Oct 17 2013, 18:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Ура! ну вообщем победа.
Как собственно и думал, любая магия - это следствие какой - то большой глупости.

Оставленный без присмотра пин глобального ресета всего и вся (этож надо было именно этот пин без присмотра оставить) изначально как раз выходил на 143 порт, а на нем держится ноль, плюс подтяжка и все работало.

с выводом другого сигнала на 143 пин, глобальный ресет перевесился на ножку входную от внешнего устройства, которая на данный момент никуда не назначена. Внешнее устройство решили не использовать в этом проекте. Там какая - то оптическая развязка, наверняка в свободном положении она дает 1 и держит схему в ресете (Я не очень хочу сейчас лазить с тестером по плате, это немного не удобно). Ну и со всеми вытекающими схема в вечном ресете.


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

На сладкое осталось понять почему после вывода ресета наружу пин стал комбинаторной логикой, и как это победить.





Цитата(ASN @ Oct 17 2013, 20:59) *
Golikov A
Дайте, пожалуйста, ссылочку на где есть схема клок форвардинга предложенная xilinx.
IMHO, У Spartan 6 достаточно выходов PLL, чтобы не задействовать для формирования частот ещё и логику.
Как тогда контролировать сдвиг частот при трассировке ?


дело было так:

написал я делитель клока по обоим фронтам входного клока работающий и вывел его на ножку. После чего получил то ли варнинг, то ли еррор что так нельзя и не есть правильно, и предложение прям в этом же сообщении использовать DDR для клок форвардинга. После чего было написано в яндексе и гугле clock forward DDR, и получены ссылки типа
http://forums.xilinx.com/t5/Spartan-Family...-IO/td-p/212825
я не помню точно какую их них тыкал, но сути не меняет.
там я нашел рецеп
Verilog > Synthesis Constructs > Coding Examples > Misc > Output Clock Forwarding Using DDR

вот...
Как я понимаю проблему: даже сделав клок на ПЛЛ чтобы выдать его на ружу будет задействован глобальный клоковый буфер, которых не так много. А вот ДДР на выходе стоит на каждой ножке, так чего не использовать его?....

В моем случае я делаю клок ручками потому что мне надо синхронизовать с ним поведение еще нескольких сигналов, может я ошибаюсь, но мне показалась такая схема более простой, и я пошел по этому решению. Тем более что в примерах был клок форвардинг, и он же обсуждался на форуме.







Ну вот и с последним разобрался. Это мне синтезатор помог

он увидел что INV_MCLK инверсия MCLK, (как догадался...) и устранил его при оптимизации, а когда дошло до размещения INV_MCLK стал комбинаторным ну и так далее, варнинг выпрыгнул...

оставил MCLK регистром
INV_MCLK сделал
Код
wire INV_MCLK
assign INV_MCLK = ~ MCLK.


теперь все счастливы....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Golikov A.   Магический пин P143 на spartan 6   Oct 16 2013, 17:54
- - count_enable   Можете проверить код на любой другой плате, где эт...   Oct 16 2013, 18:39
- - Golikov A.   не жаловался до появления в проекте 143 ноги, убир...   Oct 16 2013, 18:50
|- - ASN   Golikov A Правильно ругается - gated clock это not...   Oct 17 2013, 05:19
- - count_enable   Добавьте буфер на вход, а еще лучше синхронизатор ...   Oct 16 2013, 21:41
- - Golikov A.   на вход чего!? не можете понять проблему, лучш...   Oct 17 2013, 04:56
- - Bad0512   Цитата(Golikov A. @ Oct 17 2013, 00:54) В...   Oct 17 2013, 05:00
- - Golikov A.   Еще раз! Вы не на том зациклились. я не мог...   Oct 17 2013, 05:54
|- - alexadmin   Цитата(Golikov A. @ Oct 17 2013, 09:54) я...   Oct 17 2013, 06:13
||- - Golikov A.   Цитата(alexadmin @ Oct 17 2013, 10:13) 1....   Oct 17 2013, 07:06
||- - Flood   Цитата(Golikov A. @ Oct 17 2013, 11:06) в...   Oct 17 2013, 15:08
|- - ASN   Golikov A Ещё раз - gated clock это not good desig...   Oct 17 2013, 09:22
- - vladec   Может у Вас какая нибудь "сопля" на плат...   Oct 17 2013, 06:13
- - Raven   На всякий случай добавлю - проверьте по документац...   Oct 17 2013, 07:13
- - ZASADA   еще раз все перечитал, VREF тут не причем. синтеза...   Oct 17 2013, 09:40
|- - Golikov A.   Цитата(ZASADA @ Oct 17 2013, 13:40) еще р...   Oct 17 2013, 13:02
|- - Sergey_Bekrenyov   Цитата(Golikov A. @ Oct 17 2013, 17:02) Н...   Oct 17 2013, 14:41
|- - Golikov A.   Цитата(Sergey_Bekrenyov @ Oct 17 2013, 18...   Oct 17 2013, 15:53
|- - Flood   Цитата(Golikov A. @ Oct 17 2013, 19:53) З...   Oct 17 2013, 16:53
|- - ASN   Golikov A Дайте, пожалуйста, ссылочку на где есть ...   Oct 17 2013, 16:59
- - Shivers   Код не слишком корректный, может поэтому синтезато...   Oct 18 2013, 06:54
- - Golikov A.   CLK и INV_CLK это борьба за 50% дути цикл. Она вес...   Oct 18 2013, 07:41
- - Shivers   Напишу по поводу асинхронного сброса. Если сброс с...   Oct 18 2013, 14:39
- - Golikov A.   Цитата(Shivers @ Oct 18 2013, 18:39) Напи...   Oct 18 2013, 17:51
- - Victor®   Цитата(Golikov A. @ Oct 18 2013, 20:51) н...   Oct 18 2013, 19:34
- - Golikov A.   Цитата(Victor® @ Oct 18 2013, 23:34) Гугл...   Oct 18 2013, 21:02
- - Victor®   Цитата(Golikov A. @ Oct 19 2013, 00:02) т...   Oct 19 2013, 07:04
- - Golikov A.   Цитата(Victor® @ Oct 19 2013, 11:04) Клас...   Oct 19 2013, 12:59


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 17:18
Рейтинг@Mail.ru


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