2012-04-22 8 views
2

Я снова и снова запускал WebPack на своей машине и, синтезировав простой дизайн и загрузив его в свою FPGA, столкнулся с довольно сложной проблемой.Как файлы User Constraint действительно работают?

Когда есть строка, как это в файле пользователя ограничения:

NET "W1A<0>" LOC = "P18" ; 

Как именно программное обеспечение синтеза определяют, как этот вывод получает присваивается кодом VHDL?

Например, возьмем этот пример кода я был предоставлен:

entity Webpack_Quickstart is 
Port (
W1A : out STD_LOGIC_VECTOR(15 downto 0); 
rx : in STD_LOGIC; 
tx : inout STD_LOGIC; 
clk : in STD_LOGIC 
); 
end Webpack_Quickstart; 

architecture Behavioral of Webpack_Quickstart is 
signal counter : STD_LOGIC_VECTOR(47 downto 0) := (others => '0'); 
begin 
    W1A(0) <= '1'; 
end; 

Как именно этот код делает WIA0 контактный на моем FPGA включить? Какая ссылка? Это просто имя порта в объявлении сущности, есть ли еще магия?

+1

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

ответ

2

Ваши ограничения .ucf применяются на этапе реализации. На этом этапе ваш проект был синтезирован, и, следовательно, доступные сети верхнего уровня «известны». Так что да, это только вопрос сопоставления одинаково названных сетей с одинаково названными ограничениями.

Синтаксис немного отличается (используя <> вместо () для индексирования векторов, например), но в остальном это просто простое совпадение строк.

Самый простой способ изначально сконфигурировать ваши ограничения контактов, особенно для крупных проектов, - это просто использовать один из графических инструментов (PlanAhead, если он включен в WebPack) для назначения контактов и генерации исходного .ucf-файла , Я считаю, что делать небольшие изменения позже проще всего вручную, используя стандартный текстовый редактор ISE.

+0

BTW, требуемые селектор бит: <> vs() vs [], полностью зависит от настроек, которые вы использовали в вашем синтезаторе; это не является неотъемлемой частью синтаксиса UCF. – wjl