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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблема с WebPackISE, Не выводится сигнал на pin FPGA
sergeeff
сообщение Feb 20 2010, 19:00
Сообщение #1


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Мой коллега на работе мучается с Xilinx WEBpack 11 версии. Столкнулся с проблемой. Для теста нарисовал делитель входной частоты, выход которого подается на pin FPGA, объявленный как выход. Все ОК! Но если он этот же сигнал в параллель пробует вывести на соседний pin - там тишина. Он уже тихо звереет. Может кто подскажет, в какую сторону двигаться, чтобы победить такой bug (программы или своей головы)?
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Feb 21 2010, 12:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



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

11-я версия вообще очень чувствительна к таким моментам, как
сигнал с комбинационной логики на тактовый вход синхронного элемента,
Если ваш коллега собрал стандартную делилку с помощью триггеров с инверсной обратной связью,
и убрал пунк об остановке синтеза при ошибке, то есть вероятность, что эта схема не синтезировалась вообще.
Используйте ДЦМ для операций с таковым сигналом. Ну и посмотрите даташит, может ваш вывод питательный или
позетивное плече диф пары.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 21 2010, 14:42
Сообщение #3


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Вообще говоря, пробовали и на 8 и на 10 версиях. Делитель работает, т.к. на первый pinxx1, описанный как выход, сигнал выводится. Соседний pinxx2 ничем от первого не отличается по своим свойствам. Тем не менее, если на схеме соединить pinxx1 и pinxx2 на выходе pinxx1 сигнал есть, а втором - нет. Может тут что-то с оптимизацией соединений не то?
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Feb 21 2010, 15:30
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата(sergeeff @ Feb 21 2010, 17:42) *
Вообще говоря, пробовали и на 8 и на 10 версиях. Делитель работает, т.к. на первый pinxx1, описанный как выход, сигнал выводится. Соседний pinxx2 ничем от первого не отличается по своим свойствам. Тем не менее, если на схеме соединить pinxx1 и pinxx2 на выходе pinxx1 сигнал есть, а втором - нет. Может тут что-то с оптимизацией соединений не то?

Ну не может быть такого, сами понимаете.
Сделайте поиск в отсчетах синтезатора, транслятора и мапера по имени ваших выходных цепей.
Хоть какой-то варнинг должен быть, который подскажет, что не так с этими цепями.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Feb 21 2010, 18:02
Сообщение #5


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Может, конечно, несколько банальное предложение: посмотрите FPGA Editor'ом, что же именно у Вас получается в обоих случаях - обычно эта процедура помогала.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 21 2010, 18:32
Сообщение #6


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Спасибо за советы. Сами понимаем, что бред какой-то и быть такого не может. Но тем не менее. Завтра посмотрим еще повнимательнее.
Go to the top of the page
 
+Quote Post
b32b
сообщение Feb 25 2010, 00:37
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821



Цитата(sergeeff @ Feb 21 2010, 22:32) *
Спасибо за советы. Сами понимаем, что бред какой-то и быть такого не может. Но тем не менее. Завтра посмотрим еще повнимательнее.


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

Сообщение отредактировал b32b - Feb 25 2010, 00:39
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 25 2010, 12:04
Сообщение #8


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

Прошу прощения может за тривиальные вопросы. Всем этим занимаюсь не я, а мой коллега. Но он здорово тормозит наш общий проект, поэтому пытаюсь ему как-то помочь.
Go to the top of the page
 
+Quote Post
BSV
сообщение Feb 26 2010, 10:47
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



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


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 26 2010, 11:12
Сообщение #10


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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


Спасибо, все проверим и попробуем.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 27 2010, 11:48
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sergeeff @ Feb 25 2010, 15:04) *
Поясню, что имеет место быть. Есть некоторый блок, реализованный на Verilog. Он отображается на схеме. Теперь мой коллега тянет от выхода этого модуля wire до выходного пира. Над эти wire устанавливает LOC=P77 (к примеру).
А для второго пина он туда дописал еще один LOC? rolleyes.gif
Маппер, при упаковке схемы атоматически вставляет выходные буфера в разрыв проводов, идущих наружу кристала. При этом он им приписывает атрибуты, которые были у самого провода (именно так попадает LOC на выход).
Если надо подсоединить wire к 2м выходным пинам, то надо ЯВНО вставить 2 выходных буфера (OBUF, если не ошибаюсь), и прописать им (а не проводам) атрибуты LOC

Цитата
С другой стороны, я нашел в inet'e, что если блок реализован в Verilog, то надо вызывать PACE и в открывшемся окне прописывать какие цепи на какие pin'ы выводятся.
PACE сделает из этого красивую табличку и вставит ее в UCF файл. Так что результат будет одинаковый - фитеру всеравно откуда брать констрейны - из UCF файла или наследовать из атрибутов в сорцах
Цитата
Может в этом кроется отгадка?
Нет
Цитата
Еще. Таблица constrait'ов не заполнялась (т.е. все по умолчанию). Может из за этого оптимизатор все разводит как ему вздумается?
Если где то LOC был прописанн, то значит, что таблица констрейнов все же не совсем пустая rolleyes.gif

Сообщение отредактировал XVR - Feb 27 2010, 11:49
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 3 2010, 18:11
Сообщение #12


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

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

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

Есть ли какие соображения?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 3 2010, 19:00
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Есть ли какие соображения?
Попробуйте поставить OBUF перед каждым выходом (по штуке на выход)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 3 2010, 21:53
Сообщение #14


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



OK! Попробуем после праздников.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Apr 3 2010, 22:43
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(sergeeff @ Apr 3 2010, 22:11) *
После перерыва вернулись к разбирательству с WebISE. Чтобы понять почему у нас проблемы начали все с начала. Самый простой проект. Только schematic.


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

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

P.S. Если уж и использовать схематик, то лучше юзать ActiveHDL, там всё красиво и удобно сделано, проблем поменьше и есть бесплатная студенческая версия (ограничение числу элементов в схеме - не более 20 - что легко снимается построением иерархического проекта).
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 4 2010, 07:22
Сообщение #16


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



правильно говорят 1 сигнал один пин напишите строки в уцф наоборот и получете всё наоборот. вро де так
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 4 2010, 09:25
Сообщение #17


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(rv3dll(lex) @ Apr 4 2010, 11:22) *
правильно говорят 1 сигнал один пин напишите строки в уцф наоборот и получете всё наоборот. вро де так


Нельзя ли прояснить. Что скрывается за фразой "напишите строки в ucf наооборот и получите наоборот".

Второй вопрос. Что, schematic настолько по-идиотски написан, что прямое соединение одного выхода триггера с одним выходным pin'ом не гарантируют однозначного поведения схемы?

ActivHDL можно с 3-spartan'ом скрестить?
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Apr 4 2010, 11:56
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(sergeeff @ Apr 4 2010, 13:25) *
Нельзя ли прояснить. Что скрывается за фразой "напишите строки в ucf наооборот и получите наоборот".

Второй вопрос. Что, schematic настолько по-идиотски написан, что прямое соединение одного выхода триггера с одним выходным pin'ом не гарантируют однозначного поведения схемы?

ActivHDL можно с 3-spartan'ом скрестить?


Schematic, как и всю GUI ISE писали не сильно умные индусы - поэтому они глючат.
А так как очень мало разработчиков пользуются Schematicом, то его глюки никто не исправляет.
Вот самые важные "утилитки" Xilinx, которые в ISE вызываются из командной строки: синтезатор (XST), маппер (MAP), пласе&роутер (PAR) писали люди поумнее, и они работают достаточно хорошо.

Поэтому если использовать чистый ISE, то лучше использовать текстовый ввод данных на HDL. В 9-10 ISE даже текстовый редактор кривовато сделан, но текст можно и в блокноте набивать + имеется куча удобных редакторов HDL.

ActiveHDL легко скрестить с ПЛИС Xilinx, хоть с виртексом хоть со спартаном. Нужно только установить ISE и указать в свойствах проекта путь к ISE и его версию, для того чтобы он смог вызывать из командной строки те самые "утилитки". А схематик, редактор HDL и симулятор у него свои и очень удобные (правда в студенческой версии симулятор сильно замедлен).

P.S. Кстати в старых версиях ISE, что то типа 3й или 4й, был нормальный Схематик, как в ActiveHDL и делали его теже самые люди из Aldeca. Потом из-за денег они разошлись и пришлось Ксилинку нанимать индусов и срочно приделывать вместо него костыль для галочки. Вот этот костыль до сих пор и живёт в неизменном виде.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 4 2010, 12:03
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(VladimirB @ Apr 4 2010, 14:56) *
Schematic, как и всю GUI ISE писали не сильно умные индусы - поэтому они глючат.
А так как очень мало разработчиков пользуются Schematicом, то его глюки никто не исправляет.


Ну да. Одноименный сигнал на 3 пина через выходные буфера не вывести.
И никто делом помочь не в состоянии.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 4 2010, 15:51
Сообщение #20


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Может я невнятно написал. Дело то в том, с каждого триггера в тестовом проекте его (триггера) выход соединяется исключительно с одним пином. То есть один выход триггера - один выходной пин. Ничего в параллель не соединяется. Вот в чем загвоздка.
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Apr 5 2010, 18:10
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Месяца полтора назад я Вам предлагал воспользоваться DCM. для генерации
тактового сигнала, Вы пробывали? Скорее всего дело не в этом, но все равно это порочная
практика заводить на тактовый вход сигнал с комбинационной логики.
В ИСЕ в схематике сидят только самоубийцы. Вам тут уже советовали перейти на ActiveHDL
если так хочется работать со схемным редактором. Все кристаллы ActiveHDL поддерживает,
тем более древний spartan3, и DCM там есть библиотечным элементом.
Пробуйти и отпишитесь, если опять ничего не получится, то я Вам лично напишу эти несчастные три строчки кода,
отлажу biggrin.gif благо spartan3e лежит на столе, откоменчу и вышлю Вам на почту,
не дело это по полтора месяца чертей ловить.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 6 2010, 07:04
Сообщение #22


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Действительно, при ручной установке ibuf/obuf все заработало.

За предлагаемую помощь отдельное спасибо. Но я уже какт-то писал ранее, что не я fpga'шным проектом занимаюсь, а мой коллега. Меня просто достало, что он нас всех тормозит по-черному.

Еще раз всем спасибо за советы.
Go to the top of the page
 
+Quote Post

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

 


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


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