Перейти к содержанию
    

Как управлять одним сигналом из разных модулей? (VHDL)

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

Ну почему сразу неверно? Можно собрать все модули в один и уж тогда легко менять требуемый сигнал. Но читабельность проекта снизится.

Самый правильный вариант как уже предложили - это создать еще один модуль и подцепить к нему остальные.

 

 

А мультиплексоры уже отменили?

 

А вообще автору топика следует основательно подучить VHDL либо заплатить тому, кто сделает этот девайс за пару дней.

 

Я бы посоветовал начать с рисования схемы на бумаге используя базовые примитивы Счетчик, Дешифратор, Логический_элемент_Х и тд. Каждый из них без труда создается на VHDL (настоятельно советую пользоваться Active HDL). Верхний уровень пишите на VHDL сами или (предпочтительнее) создавайте в виде схематики в том же ActiveHDL. Избежите множества ошибок. Плюс отличная тренировка - разглядывать, как ActiveHDL создает базовые элементы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тип данных, - такой же.

 

SRAM_ADRESS : INTEGER RANGE 0 TO 524286;

 

Что-то мне подсказывает, что нужно сделать так:

 

SRAM_ADRESS : std_logic_vector (8 dowto 0):="000000000";

 

SRAM_ADRESS <= conv_xxx(SRAM_ADRESS_s);

 

где conv_xxx - функция конвертации из integer в std_logic_vector. Точно не помню как называется.

 

А мультиплексоры уже отменили?

 

Не отменили. Но по большому счету - это и есть третий дополнительный модуль ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как-нибудь изменить один сигнал, находящийся в одном модуле и одной архитектуре, но который необходимо менять из двух разных процессов?

На вскидку

1. Объединить процессы.

2. Подавать некий управляющий сигнал из одного процесса в другой. И уже второй процесс будет сам менять требуемый сигнал

3. Согдать третий процесс и подавать туда управляющие сигналы от двух процессов

Спасибо. В принципе, я и использую второй вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Alexandr, спасибо за идею, прийду домой обязательно попробую :)

 

Gorby, помоему вы слишком котегоричны в высказываниях :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.altera.com/support/examples/vhd...ck-syncram.html Altera не заморачивалась с написанием мультиплексоров :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Alexandr, спасибо за идею, прийду домой обязательно попробую :)

 

Gorby, помоему вы слишком котегоричны в высказываниях :))

 

Попробую оправдаться :glare:

 

Во первых, помощи попросили Вы, а не я. :help:

Во вторых, вместо невнятных строчек кода, выдранных неизвестно откуда (никого не хочу обидеть!) , я Вам даю намного более ценное: стратегию.

Слишком часто вижу, как люди уходят с головой в мелочи и не видят глобальных вещей.

Вы же видите, как дискуссия плавно перешла совсем в другую плоскость.

Не пытайтесь написать микропроцессор в одном процессе. (по кр. мере сейчас)

Один процесс - одна простая сущность.

Тогда и не придется разруливать один сигнал от двух процессов.

Потому как есть третий процесс - а уж он может быть мультиплексором или чем угодно.

 

А насчет категоричности...

Вам мама каким тоном говорила не совать пальцы в розетку?

Вежливо рекомендовала или... :-)

 

Помните у Жванецкого?

- "Я остановлю мотор, но пусть он мне сначала докажет..."

 

Это реакция моториста на команду с мостика "Стоп машина". А катер неумолимо несется к берегу...

 

Если бы Вы знали ответ на свой вопрос, Вы бы его не задавали. Если же Вы задали его, то это дает мне право на некоторую категоричность: "Делай вот так!". Потому что несколько лет назад я сам прошел все стадии того, как делать НЕ надо.

 

Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.altera.com/support/examples/vhd...ck-syncram.html Altera не заморачивалась с написанием мультиплексоров :)

 

Ну-ну...

 

PROCESS (clock)

BEGIN

IF (clock'event AND clock = '1') THEN

IF (we = '1') THEN

ram_block(to_integer(unsigned(write_address))) <= data;

END IF;

 

q <= ram_block(to_integer(unsigned(read_address)));

END IF;

END PROCESS;

 

Это не скрытый ли мультиплексор там внутри засел?!

 

А вообще это только обертка для синтезатора. Вы посмотрите в RTL что там на самом деле стоит на шинах адреса. Если что-то сделано неявно, это не значит что оно не сделано.

 

"Все не так, как кажется..." :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну-ну...

 

PROCESS (clock)

BEGIN

IF (clock'event AND clock = '1') THEN

IF (we = '1') THEN

ram_block(to_integer(unsigned(write_address))) <= data;

END IF;

 

q <= ram_block(to_integer(unsigned(read_address)));

END IF;

END PROCESS;

 

"ткни пальцем", где здесь мультиплексор??? Что мультиплексирует? ram_block - двунаправленная линия с одним драйвером или q и data ? :)

 

А вообще, герой, снизошедший до нас грешных... если знаешь, подскажи как ("правильный" листинг из 3 процессов) , а если пальцы гнуть, или пятак чесать(это я о твоем "фото") то не стоит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините что влазию :)

может он имел ввиду мультиплексор на линиях адреса?!? :blink:

 

Спасибо, что влезли :)

Ведь очевидно, что без мультиплексора на шине адреса там никак не обошлось?

А мой оппонент так и не увидел.

 

А вообще вот история в тему.

 

Больница. Обход. Пациент с болью в животе. Профессор и группа студентов-третьекурсников. Старый профессор уже минут двадцать сидит возле пациента, то пощупает ему живот, то еще что-то сделает. Наконец поднимается и говорит: аппендицит. На заднем плане один студент другому :

- Ну и баран этот профессор!

- А шо такое?

- Так я за десять секунд тот же диагноз поставил : симптом Щеткина-Блюмберга - положительный, значит и коню понятно, что аппендицит.

 

Молодому человеку невдомек было, сколько ДЕСЯТКОВ других возможных диагнозов перебрал и отбросил за те двадцать минут профессор.

 

to mag: ребята, честное слово, я помочь хочу таким как вы. Но блин, вы столько еще не знаете и главное, не хотите знать, что просто волосы дыбом.

 

"Вот видишь там мультиплексор?

-Неееа...

-И я не вижу. Но он там есть!"

 

Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...