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

 
 
> Множественный доступ к одному сигналу, Проблема (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 16 2010, 05:02
Сообщение #2


Местный
***

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



Понял, внутри делать шины с тремя состояниями.
А как сделать такую шину на выход?


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


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 8-03-06
Из: степей Украины
Пользователь №: 15 069



Цитата(Muscat @ Apr 16 2010, 08:17) *
А как сделать такую шину на выход?

Примеры из Xilinx ISE:

using When/Else:
<output> <= <input> when <enable> ='1' else 'Z';

Using Process:
process (<enable>, <input>)
begin
if (<enable>='1') then
<output> <= <input>;
else
<output> <= 'Z';
end if;
end process;
Go to the top of the page
 
+Quote Post



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

 


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


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