Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: можно ли обойти ошибку при синтезе в ISE
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
serg_k1
в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом. в симуляторе это проходит. а при синтезе в ISE - нет. возникает ошибка "...connected to following multiple drivers:". можно ли это как-то это обойти? настройками ,желательно для конкретного сигнала. типа в UCF файле- PIN "ххх" CLOCK_DEDICATED_ROUTE = FALSE;. а то приходится вводить промежуточные сигналы.
iosifk
Цитата(serg_k1 @ Jul 25 2013, 15:22) *
в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом.

Это как?
И зачем они нужны, разные? Это что, сигналы разных клоковых доменов?


serg_k1
Цитата(iosifk @ Jul 25 2013, 15:47) *
Это как?
И зачем они нужны, разные? Это что, сигналы разных клоковых доменов?

допустим нужно взвести по переднему фронту частоты , а сбросить по заднему.

Цитата(iosifk @ Jul 25 2013, 15:47) *
Это как?
И зачем они нужны, разные? Это что, сигналы разных клоковых доменов?

мало того . иногда (это , конечно, неправильно так делать) просто один и тот же always @(posedge clk ) написан в разных местах. ну так получилось. и это та же ошибка.
andrew_b
Цитата(serg_k1 @ Jul 25 2013, 15:22) *
в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом
Написать можно всё, что угодно. Но вы пишете не программу, а схему. И у вас не переменные, а сигналы. У сигнала может быть только один источник.
SemperAnte
Разрабатывал когда-то небольшой проект под CPLD Xilinx, нюанс был в том, что на вход поступала частота 8 МГц, а на выходе нужно было сформировать управляющие сигналы с точностью 1/16 МГц. Пришлось использовать следующий топорный рабоче-крестьянский метод: часть внутренних сигналов формировал по переднему фронту, часть - по заднему, и уже на выходе объединял эти внутренние сигналы через связующую логику.
iosifk
Цитата(serg_k1 @ Jul 25 2013, 15:57) *
допустим нужно взвести по переднему фронту частоты , а сбросить по заднему.


мало того . иногда (это , конечно, неправильно так делать) просто один и тот же always @(posedge clk ) написан в разных местах. ну так получилось. и это та же ошибка.


Это распространенная ошибка.
В проекте есть входные сигналы, работающие на своих частотах. Но они всегда ниже, чем внутренняя системная частота в проекте. Все входные сигналы переводятся в клоковый домен системной частоты и там происходит обработка. Как это делается? Найдите у меня на сайте "Краткий Курс", главу CDC.
А вот сбрасывать триггер по заднему фронту тактовой частоты можно только в том случае, если сам триггер это умеет делать. Но в FPGA таких триггеров нет. Так что тут компилятор не перехитрить...
Просто Вам надо пересмотреть саму методику ведения проекта. В этом Ваша ошибка, а не в "always @(posedge clk ) написан в разных мест"..
Удачи!
Dr.Alex
Ошибка-то ошибка, но вообще-то это возможно. Иначе нельзя было бы, к примеру, двупортовую память написать.

В вэрилоге не знаю, а в вхдл для этого есть слово shared, то есть можно объявить shared variable и драйвить её в разных процессах.
Sombre
Цитата(Dr.Alex @ Jul 26 2013, 11:47) *
В вэрилоге не знаю, а в вхдл для этого есть слово shared, то есть можно объявить shared variable и драйвить её в разных процессах.

Объявить то можно. Только вот shared variable не синтезируемы.
alexadmin
Цитата(Sombre @ Jul 29 2013, 15:01) *
Объявить то можно. Только вот shared variable не синтезируемы.


На самом деле немного синтезируемы wink.gif Их используют (и для синтеза) для описания как раз-таки двухпортовой памяти. Другое дело, что в реальной FPGA только для такой памяти и ни для чего больше...

Sombre
Цитата(alexadmin @ Jul 29 2013, 15:36) *
На самом деле немного синтезируемы wink.gif Их используют (и для синтеза) для описания как раз-таки двухпортовой памяти. Другое дело, что в реальной FPGA только для такой памяти и ни для чего больше...

А... Ну тут дело в том, что синтезатор понимает, что определенная конструкция - это описание двухпортовой памяти. А как ее синтезировать он знает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.