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

 
 
> Множественный доступ к одному сигналу, Проблема (VHDL)
Muscat
сообщение Apr 12 2010, 12:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



В начале пути изучения VHDL, пишу простенькую программу следующего содержания

По приходу инициирующего сигнала запускается чтение битов из последовательной памяти. Инициируются клоки ROM-request, считываются данные по падающему фронту,которые затем выдаются на шину вывода,и далее устанавливается флаг Ready в положение '1'.

Собственно с этим и возникла проблема.
Сигнал объявляется в entity как

ready: inout STD_LOGIC:='0';

Далее в процессе ROM_clockong он ставится в положение 1

if (j=7) then ready<='1';

Ну и в процессе Read_complete, по приходу заднего фронта с шины, означающее что данные прочитаны, он снова сбрасывается в 0

ready<='0';

Если убрать процеес Read_complete, то все выполняется прекрасно, как надо (см. Graph2)

Если этот процесс раскомментировать, то сигнал получает значение Х (явно неопределенный).

Таким образом суть проблемы.
Если в сигнал Ready могут писать 2 процесса, то возникает ошибка. Если один — все в порядке. Прочитал про resolved и solved сигналы, но у меня то как раз вроде все правильно — STD_Logic resolved типа,в него могут писать разные процессы, STD_uLogic – solved, если описать ready так, то компилятор сам напомнит об этом.
Starter.vhd : (89, 0): Signal "ready" has two sources, but is not resolved signal

Что я делаю не так?


В мануалах приводятся примеры, в которых несколько процессов одновременно обращаются в переменной, в этом случае для решения конфликта один из них присваивает 1 или 0, другой слабые - H или L. Но в моем то случае происходит изменение сигнала в разное время.


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Muscat
сообщение Apr 14 2010, 14:31
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



все понял, на одну шину несколько процессов писать не могут. Спасибо

Тогда я не понял, зачем вообще нужны Resolved сигналы?

1) Некий процесс_1 обращается к шине выставляя слабые значения, работает с ней. Если есть процесс_2 выставляющие свои слабые значения в этот сигнал, то они конфилктуют, на выходе U

2) Тут к сигналу обращается процесс_3 и выставляет сильное значение. И все, теперь уже кроме этого процесса никто с этим сигналом работать не сможет, иначе ошибка

Правильно ли я понял, что физически функция отключения драйвера сигнала не синтезируется? Если что, микросхемы
http://www.actel.com/products/pa3l/default.aspx

И да, в учебниках по VHDL очень много разных констуркций, которые не реализуемы физически. Где можно прочитать ограничия по физической реализации на конкретном кристалле?


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
SFx
сообщение Apr 15 2010, 11:03
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



Цитата(Muscat @ Apr 14 2010, 18:46) *
Где можно прочитать ограничия по физической реализации на конкретном кристалле?

Скорее всего это вам нужно документация на тот кристалл, который вы будете использовать, но есть как бы правило, внутри плис не делать тристейт шин. все тристейт шины только , тк у плис выводы тристейтовые есть. а внутри кристалла нет необходимости экономить "на проводах" - единственное что могу сказать, что все таки надо стараться делать берсты пореже.это жрет ресурсы очень, но писать легче. имхо.
а вообще говоря это все становится понятно после просмотра схем в RTL режиме...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 5th August 2025 - 00:31
Рейтинг@Mail.ru


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