Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как правильно ассигновать пины?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dmyl
На CPLD-Xilinx разработан проект на 95%, сигналы внешние вообщем уже назначены все. В проекте несколько независимых устройств и порядка 70 сигналов. Разумеется после компиляции ноги раскидало непойми куда. Чтобы двигать проект дальше - пора ноги фиксировать и переходить к реализации в железе. Раньше я просто переназначал ноги более менее группируя их чтобы лучше получилась разводка кристалла на печатной плате.
Сейчас проект больше, какие есть способы заставить компилятор группировать ноги, или возможно есть какая-то стратегия как делать это вручную, чтобы потом при отладке проекта в железе можно было вносить небольшие изменения и не упереться в то что с заданной расстановкой пинов не удастся упаковать кристалл.
AlexB
А каков процент заполнения кристалла? Если меньше 90%, то вероятность "упереться" мала.

А вообще:
http://xgoogle.xilinx.com/search?getfields...site=EntireSite
dmyl
Цитата(AlexB @ Jul 18 2006, 11:43) *
А каков процент заполнения кристалла? Если меньше 90%, то вероятность "упереться" мала.

А вообще:
http://xgoogle.xilinx.com/search?getfields...site=EntireSite

Пока заполнение меньше 80%, но запас не велик.

Есть ли возможно каким-то образом автоматически заставить компилировать и ассигновать пины в назначенные группы.
cornflyer
в проект добавляешь файл с расширением ?.ucf
там ручками прописываешь каждый сигнал соотвествующей ноге... вот пример содержания этого файла:
#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin Assignments
NET "ConvEn" LOC = "P44" ;
NET "CS_DAC" LOC = "P7" ;
NET "DAO<0>" LOC = "P27" ;
NET "DAO<1>" LOC = "P25" ;
NET "DAO<2>" LOC = "P24" ;
NET "DAO<3>" LOC = "P22" ;
NET "DAO<4>" LOC = "P20" ;
NET "DAO<5>" LOC = "P19" ;
NET "DAO<6>" LOC = "P17" ;
NET "DAO<7>" LOC = "P16" ;
NET "DIO<0>" LOC = "P6" ;
NET "DIO<10>" LOC = "P50" ;
NET "DIO<11>" LOC = "P49" ;
NET "DIO<12>" LOC = "P48" ;
NET "DIO<13>" LOC = "P45" ;
NET "DIO<1>" LOC = "P5" ;
NET "DIO<2>" LOC = "P2" ;
NET "DIO<3>" LOC = "P64" ;
NET "DIO<4>" LOC = "P63" ;
NET "DIO<5>" LOC = "P62" ;
NET "DIO<6>" LOC = "P61" ;
NET "DIO<7>" LOC = "P60" ;
NET "DIO<8>" LOC = "P57" ;
NET "DIO<9>" LOC = "P56" ;
NET "DT" LOC = "P36" ;
NET "DTIME" LOC = "P11" ;
NET "EnaRST" LOC = "P35" ;
NET "IACK" LOC = "P39" ;
NET "IORD" LOC = "P43" ;
NET "IRQ" LOC = "P42" ;
NET "LD_DAC" LOC = "P15" ;
NET "RDHB" LOC = "P9" ;
NET "RDLB" LOC = "P10" ;
NET "REQ" LOC = "P8" ;
NET "SLD0" LOC = "P38" ;
NET "SLD2" LOC = "P33" ;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

конец файла )))))))

ЗЫ: "P33" - это значит 33-я нога на корпусе плисины соотвествует сигналу SLD2
AlexB
Цитата(dmyl @ Jul 18 2006, 10:57) *
Пока заполнение меньше 80%, но запас не велик.

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


http://toolbox.xilinx.com/docsan/xilinx7/h..._designhier.htm

http://toolbox.xilinx.com/docsan/xilinx8/h..._strategies.htm

Для страховки от "упереться" применял некоторую избыточность проекта. Таким образом всегда имел запас места.
dmyl
Цитата(cornflyer @ Jul 18 2006, 12:35) *
в проект добавляешь файл с расширением ?.ucf
там ручками прописываешь каждый сигнал соотвествующей ноге... вот пример содержания этого файла:

Это все яснее ясного.

1. Как прописывать не ручками - а автоматом заставить сигналы объединенные в группы расставлять рядом?
2. Даже если ручками писать - как выбрать распиновку, чтобы потом проект при добавлении еще 10% развелся. Какие критерии?


Цитата(AlexB @ Jul 18 2006, 12:39) *
Для страховки от "упереться" применял некоторую избыточность проекта. Таким образом всегда имел запас места.

Это каким это образом? Специально оптимизацию на избыточное отключали.
Или просто речь о том чтобы проект был менее чем 80%?
AlexB
Цитата(dmyl @ Jul 18 2006, 12:01) *
Цитата(AlexB @ Jul 18 2006, 12:39) *

Для страховки от "упереться" применял некоторую избыточность проекта. Таким образом всегда имел запас места.

Это каким это образом? Специально оптимизацию на избыточное отключали.
Или просто речь о том чтобы проект был менее чем 80%?


На свободные пины выводил замысловатую функцию от реальных входных пинов. Когда при отладке места становилось в обрез smile3046.gif квазиунофантазию удалял. Спасало несколько раз.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.