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

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


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



такой вопрос возникает часто, поэтому в архиве могут быть лучшие объяснения

у меня вопрос: это описание устройства или описание теста?
(не могу понять по картинкам, в какой системе моделируете - активхдл или вендорский симулятор?) они скорее всего предполагают, что описываете устройство

описание устройство не может поддерживать присвоение одному сигналу из двух процессов (независимо от языка проектирования), потому что нет такого "физического" элемента
рекомендуется почитать главу RTL coding style в документации на тул/микросхему, и писать описания устройств в сооттветствии с документом

для VHDL я считаю правильным описание в виде двух процессов - в одном с помощью локальных переменных (variable) производится описание комбинаторной логики (список чувствительности процесса включает все входные сигналы)
на выходе сигналу присваивается значение переменной

а в тактируемом или тактируемых процессах (список чувствительности только тактовый сигнал, и возможно, сброс) производится описание триггеров

----------

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



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

 


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


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