Перейти к содержанию
    

Мой коллега на работе мучается с Xilinx WEBpack 11 версии. Столкнулся с проблемой. Для теста нарисовал делитель входной частоты, выход которого подается на pin FPGA, объявленный как выход. Все ОК! Но если он этот же сигнал в параллель пробует вывести на соседний pin - там тишина. Он уже тихо звереет. Может кто подскажет, в какую сторону двигаться, чтобы победить такой bug (программы или своей головы)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мой коллега на работе мучается с Xilinx WEBpack 11 версии. Столкнулся с проблемой. Для теста нарисовал делитель входной частоты, выход которого подается на pin FPGA, объявленный как выход. Все ОК! Но если он этот же сигнал в параллель пробует вывести на соседний pin - там тишина. Он уже тихо звереет. Может кто подскажет, в какую сторону двигаться, чтобы победить такой bug (программы или своей головы)?

11-я версия вообще очень чувствительна к таким моментам, как

сигнал с комбинационной логики на тактовый вход синхронного элемента,

Если ваш коллега собрал стандартную делилку с помощью триггеров с инверсной обратной связью,

и убрал пунк об остановке синтеза при ошибке, то есть вероятность, что эта схема не синтезировалась вообще.

Используйте ДЦМ для операций с таковым сигналом. Ну и посмотрите даташит, может ваш вывод питательный или

позетивное плече диф пары.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще говоря, пробовали и на 8 и на 10 версиях. Делитель работает, т.к. на первый pinxx1, описанный как выход, сигнал выводится. Соседний pinxx2 ничем от первого не отличается по своим свойствам. Тем не менее, если на схеме соединить pinxx1 и pinxx2 на выходе pinxx1 сигнал есть, а втором - нет. Может тут что-то с оптимизацией соединений не то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще говоря, пробовали и на 8 и на 10 версиях. Делитель работает, т.к. на первый pinxx1, описанный как выход, сигнал выводится. Соседний pinxx2 ничем от первого не отличается по своим свойствам. Тем не менее, если на схеме соединить pinxx1 и pinxx2 на выходе pinxx1 сигнал есть, а втором - нет. Может тут что-то с оптимизацией соединений не то?

Ну не может быть такого, сами понимаете.

Сделайте поиск в отсчетах синтезатора, транслятора и мапера по имени ваших выходных цепей.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, конечно, несколько банальное предложение: посмотрите FPGA Editor'ом, что же именно у Вас получается в обоих случаях - обычно эта процедура помогала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы. Сами понимаем, что бред какой-то и быть такого не может. Но тем не менее. Завтра посмотрим еще повнимательнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы. Сами понимаем, что бред какой-то и быть такого не может. Но тем не менее. Завтра посмотрим еще повнимательнее.

 

простите, а на схеме вы соединяете не означает ли то что вы соединяете в схемном редакторе все?

Если так, нужно посмотреть в сторону использования выходных буферов - OBUF (OBUFT) и соединять не их выходы а входы.

Если соединить выходные пины ISE обязан ругнуться и либо прекратить синтез либо что-то отрубить.

Изменено пользователем b32b

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поясню, что имеет место быть. Есть некоторый блок, реализованный на Verilog. Он отображается на схеме. Теперь мой коллега тянет от выхода этого модуля wire до выходного пира. Над эти wire устанавливает LOC=P77 (к примеру). С другой стороны, я нашел в inet'e, что если блок реализован в Verilog, то надо вызывать PACE и в открывшемся окне прописывать какие цепи на какие pin'ы выводятся. Может в этом кроется отгадка?

Еще. Таблица constrait'ов не заполнялась (т.е. все по умолчанию). Может из за этого оптимизатор все разводит как ему вздумается?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя бы Pad report (файл с расширением pad или вида xxx_pad.txt) посмотрите - там будет написано на какой пин отправлен Ваш сигнал - там его и ищите. А вообще, конечно желательно в .ucf - файле назначения пинов задавать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя бы Pad report (файл с расширением pad или вида xxx_pad.txt) посмотрите - там будет написано на какой пин отправлен Ваш сигнал - там его и ищите. А вообще, конечно желательно в .ucf - файле назначения пинов задавать.

 

Спасибо, все проверим и попробуем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поясню, что имеет место быть. Есть некоторый блок, реализованный на Verilog. Он отображается на схеме. Теперь мой коллега тянет от выхода этого модуля wire до выходного пира. Над эти wire устанавливает LOC=P77 (к примеру).
А для второго пина он туда дописал еще один LOC? :rolleyes:

Маппер, при упаковке схемы атоматически вставляет выходные буфера в разрыв проводов, идущих наружу кристала. При этом он им приписывает атрибуты, которые были у самого провода (именно так попадает LOC на выход).

Если надо подсоединить wire к 2м выходным пинам, то надо ЯВНО вставить 2 выходных буфера (OBUF, если не ошибаюсь), и прописать им (а не проводам) атрибуты LOC

С другой стороны, я нашел в inet'e, что если блок реализован в Verilog, то надо вызывать PACE и в открывшемся окне прописывать какие цепи на какие pin'ы выводятся.
PACE сделает из этого красивую табличку и вставит ее в UCF файл. Так что результат будет одинаковый - фитеру всеравно откуда брать констрейны - из UCF файла или наследовать из атрибутов в сорцах

Может в этом кроется отгадка?
Нет

Еще. Таблица constrait'ов не заполнялась (т.е. все по умолчанию). Может из за этого оптимизатор все разводит как ему вздумается?
Если где то LOC был прописанн, то значит, что таблица констрейнов все же не совсем пустая :rolleyes:
Изменено пользователем XVR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После перерыва вернулись к разбирательству с WebISE. Чтобы понять почему у нас проблемы начали все с начала. Самый простой проект. Только schematic. Один pin - входной clk. Дальше нарисовали делитель. С выхода 0 делителя - D-триггер. Его выход - на выходной pin, на который повесили LED. Скомпилировали, зашили, запустили - OK! Моргает.

 

Расширяем проект. Добавляем на 1-выход делителя все аналогично. Второй LED вместе в первым в два раза медленее. OK.

Добавляем еще на 2 выход. Все OK!

Добавляем на 3-выход - крах проекта. Все диоды перестали нормально моргать. Последний D-триггер, отсоединяем от выходного pin'a - три первых работают. Убираем 1, возвращаем 3. Работают. Все четыре вместе - ни в какую.

 

Прозвонили все используемые выводы FPGA. Коротышей нет. Ума не приложу, что за мистика.

 

Есть ли какие соображения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли какие соображения?
Попробуйте поставить OBUF перед каждым выходом (по штуке на выход)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После перерыва вернулись к разбирательству с WebISE. Чтобы понять почему у нас проблемы начали все с начала. Самый простой проект. Только schematic.

 

Помнится в схематике просто так проводом выходы ПЛИС соединять нельзя - надо (как вам уже сказали) OBUFы ставить.

 

Но почему именно ISEшный схематик? В нём же не возможно работать, символы какие-то кривые, текст непропорционально маленький, проблемы постоянные. Наши эксперименты с ним закончились после первого же проекта - проще книжку прочитать по VHDL чем бороться с ним.

Попробуйте тоже самое написать на HDL и посмотрите что будет с глюками на практике и схемой в FPGA editore.

 

P.S. Если уж и использовать схематик, то лучше юзать ActiveHDL, там всё красиво и удобно сделано, проблем поменьше и есть бесплатная студенческая версия (ограничение числу элементов в схеме - не более 20 - что легко снимается построением иерархического проекта).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

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

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...