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

 
 
 
Reply to this topicStart new topic
> можно ли обойти ошибку при синтезе в ISE
serg_k1
сообщение Jul 25 2013, 11:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом. в симуляторе это проходит. а при синтезе в ISE - нет. возникает ошибка "...connected to following multiple drivers:". можно ли это как-то это обойти? настройками ,желательно для конкретного сигнала. типа в UCF файле- PIN "ххх" CLOCK_DEDICATED_ROUTE = FALSE;. а то приходится вводить промежуточные сигналы.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jul 25 2013, 11:47
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(serg_k1 @ Jul 25 2013, 15:22) *
в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом.

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




--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jul 25 2013, 11:57
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



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

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

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

мало того . иногда (это , конечно, неправильно так делать) просто один и тот же always @(posedge clk ) написан в разных местах. ну так получилось. и это та же ошибка.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jul 25 2013, 12:06
Сообщение #4


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(serg_k1 @ Jul 25 2013, 15:22) *
в проекте нужно чтобы сигнал взводился в одном always, а сбрасывался в другом
Написать можно всё, что угодно. Но вы пишете не программу, а схему. И у вас не переменные, а сигналы. У сигнала может быть только один источник.
Go to the top of the page
 
+Quote Post
SemperAnte
сообщение Jul 26 2013, 06:24
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 24-10-10
Из: Санкт-Петербург
Пользователь №: 60 386



Разрабатывал когда-то небольшой проект под CPLD Xilinx, нюанс был в том, что на вход поступала частота 8 МГц, а на выходе нужно было сформировать управляющие сигналы с точностью 1/16 МГц. Пришлось использовать следующий топорный рабоче-крестьянский метод: часть внутренних сигналов формировал по переднему фронту, часть - по заднему, и уже на выходе объединял эти внутренние сигналы через связующую логику.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jul 26 2013, 07:34
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(serg_k1 @ Jul 25 2013, 15:57) *
допустим нужно взвести по переднему фронту частоты , а сбросить по заднему.


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


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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jul 26 2013, 08:47
Сообщение #7


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Ошибка-то ошибка, но вообще-то это возможно. Иначе нельзя было бы, к примеру, двупортовую память написать.

В вэрилоге не знаю, а в вхдл для этого есть слово shared, то есть можно объявить shared variable и драйвить её в разных процессах.
Go to the top of the page
 
+Quote Post
Sombre
сообщение Jul 29 2013, 11:01
Сообщение #8





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



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

Объявить то можно. Только вот shared variable не синтезируемы.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jul 29 2013, 12:36
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



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


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

Go to the top of the page
 
+Quote Post
Sombre
сообщение Jul 29 2013, 13:02
Сообщение #10





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



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

А... Ну тут дело в том, что синтезатор понимает, что определенная конструкция - это описание двухпортовой памяти. А как ее синтезировать он знает.
Go to the top of the page
 
+Quote Post

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

 


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


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