Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Триггер упр-я Z-состоянием в Spartan-3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
kaktus
Не могу заставить ISE (10.1) упаковать триггер который управляет 3-м состоянием непосредственно в IOB. Оно его упорно располагает где-то снаружи.

Хочу сюда: Нажмите для просмотра прикрепленного файла

Может быть общественность подскажет как его уговорить.
DmitryR
Для начала - проверить, что после триггера до буфера нет никакой логики. Если это уже так, то поставить LOC констрейн.
Gothard
Проверьте так же, что:
1) триггер, формирующий сигнал для перевода в Z состояние работает от того же клока, что и триггер, выдавающий сами данные на буфер
2) сигнал перевода в 3-е состояние не идет "веером" на несколько буферов. если так - то дублируйте триггера
kaktus
Логики нет. CLK один и тот же.
Веера нет. Веер на предыдущем этапе. От одного на 8, а эти 8 каждый дергает свой BUFT. По ходу упаковки 8 не минимизируются - на FPGA Editor'е все на месте, только не на том smile.gif, где хотелось.
В исходнике на эти 8 стоят атрибуты KEEP(чтоб в 1 не схлопнул) и IOB. IOB поставлен также и на триггеры данных, и, как видно по картинке, тут он действует.
LOC попробую завтра. Правда хочется обойтись.
RobFPGA
Приветствую!

А reset на тригеры разрешения приходит?

Если да - то из за этого тоже может не размещать в IOB если например reset асинхронный

Успехов! Rob.
Boris_TS
Цитата(kaktus @ May 27 2009, 15:03) *
В исходнике на эти 8 стоят атрибуты KEEP(чтоб в 1 не схлопнул) и IOB.

Думаю проблема именно в KEEP - обычно этот constraint вынуждает MAP/PAR так вывернуть схему, чтобы сигнал, на который навешен KEEP, был либо выходом LUT, либо выходом Slice FF (что мы и имеем в Вашем случае).
Замените KEEP на equivalent_register_removal = false. LOC Вам не нужен - конечно, с LOC получается железобетонно, но от этого страдает гибкость проекта.

В подобных случаях я используютолько пару constraint'ов: equivalent_register_removal = false и iob = true.
SM
На мой взгляд должно хватить лишь глобальных опций:

Register Duplication: разрешено.
Equivalent Register Removal: запрещено.
Boris_TS
Цитата(SM @ May 27 2009, 17:02) *
На мой взгляд должно хватить лишь глобальных опций:
Register Duplication: разрешено.
Equivalent Register Removal: запрещено.

Да, их хватит, но в случае, если действительно есть что оптимизировать по делу, то тогда остальной проект может стать субоптимальным. Посему я советую всё-таки использовать Equivalent Register Removal локально.
kaktus
Цитата(Boris_TS @ May 27 2009, 18:00) *
Думаю проблема именно в KEEP - обычно этот constraint вынуждает MAP/PAR так вывернуть схему, чтобы сигнал, на который навешен KEEP, был либо выходом LUT, либо выходом Slice FF (что мы и имеем в Вашем случае).
Замените KEEP на equivalent_register_removal = false. LOC Вам не нужен - конечно, с LOC получается железобетонно, но от этого страдает гибкость проекта.

В подобных случаях я используютолько пару constraint'ов: equivalent_register_removal = false и iob = true.


Спасибо! Помогло! (KEEP убрал эквивалент добавил)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.