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

port map как сделать в case

Нужно подключать разные модули по команде из мк думал сделать в case что то не соображу как сделать?

case     command_in_from_mc is            
    when "0000001"  =>   
DD3: entity work.adc(adc_conv)port map(
data1,data2);

    when "0000011"  =>   
DD3: entity work.dac(dac_conv)port map(
data1,data2);
.....

when others => data1 <= null; data2<= null;                               
            
end case;

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


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

Нужно подключать разные модули по команде из мк думал сделать в case что то не соображу как сделать?

Для того что бы определиться как делать, нужно ответить на вопрос : "что такое инстанс модуля?". Как только на него ответите, сразу поймете как делать %)

 

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


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

Как правильно это сделать? (ключевое слово дайте) :)

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


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

Как правильно это сделать? (ключевое слово дайте) :)

Еще раз. Что такое инстанс модуля? Что именно вы делаете когда его описываете? Тут даже не надо стандартны на HDL знать, это же логика здравого смысла.

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


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

Что такое инстанс модуля

Не знаю, мало красивых слов знаю :)

Думаю описание его интерфейса ?

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


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

Думаю описание его интерфейса ?

в таком случае что же такое port map ?

 

вот вам подсказка.

 

IEEE Standard VHDL Language Reference Manual -> IEEE Std 1076, 2000 Edition -> 9.6 Component instantiation statements

9.6 Component instantiation statements

A component instantiation statement defines a subcomponent of the design entity in which it appears, associates signals or values with the ports of that subcomponent, and associates values with generics of that subcomponent. This subcomponent is one instance of a class of components defined by a corresponding component declaration, design entity, or configuration declaration.

теперь вам более понятно что вы делаете, когда вставляете инстанс объекта (entity)?

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


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

теперь вам более понятно что вы делаете, когда вставляете инстанс объекта (entity)?

Да немного, создаю экземпляр компонента :) ?

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


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

Да немного, создаю экземпляр компонента :) ?

Можете расшифровать более подробно, своими словами, что вы понимаете под этим %)

 

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

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


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

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

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

Наверно если словами своими, то если представить схему то на схеме добавляется модуль dd3 с всеми входами и выходами назначенными в entity port.

 

Сейчас сделал так

with command_in_from_mc select

x <= data1 when "00",data2 when "01",(others => ‘X’) when others;

 

Так правильно или как то по другому лучше сделать?

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


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

Наверно если словами своими, то если представить схему то на схеме добавляется модуль dd3 с всеми входами и выходами назначенными в entity port.

бинго!!! оказалось совсем не сложно. значит всё переходит от вопроса как динамически подставлять в компонент другую архитектуру, к вопросу, как с разных модулей мультипликсировать данные %) Судя по тому что вы сделали, этим вопросом вы хорошо владете и делаете все правильно %)

 

 

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


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

бинго!!! оказалось совсем не сложно. значит всё переходит от вопроса как динамически подставлять в компонент другую архитектуру, к вопросу, как с разных модулей мультипликсировать данные %) Судя по тому что вы сделали, этим вопросом вы хорошо владете и делаете все правильно %)

Не пока не чего не понимаю, весь перепутался в сигналах :)

 

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

case command_in_from_mc is

when "0000001"

"0000010" => x<=a;

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


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

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

вы же правильно пишете, откуда такая неуверенность ?

 

8. Sequential statements -> 8.8 Case statement

case_statement ::=

[ case_label : ]

case expression is

case_statement_alternative

{ case_statement_alternative }

end case [ case_label ] ;

case_statement_alternative ::=

when choices =>

sequence_of_statements

 

ЗЫ. рекомендую поставить альдек и пошариться у него в VHDL Templates. там много интересного для тех кто начинает рыть HDL.

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


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

Если одна команда

when "0000001" => x<=a;

то все нормально.

Если две константы( Команды )

when "0000001"

"0000010"

=> x<=a;

то ошибка.

 

Error (10482): VHDL error at proba.vhd(118): object ""0000010"" is used but not declared

 

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


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

Если одна команда

when "0000001" => x<=a;

то все нормально.

Если две константы( Команды )

when "0000001"

"0000010"

=> x<=a;

то ошибка.

 

Error (10482): VHDL error at proba.vhd(118): object ""0000010"" is used but not declared

а квалификаторы чисел кто будет ставить ? это что, binary, oct, dec, hex, string ? хотя бы минимальное введение в язык прочитайте %)

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


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

Не хочется перечислять все подряд

when "0000001"=> x<=a;

when "0000010"=> x<=a;

....

 

Тоже ошибка пробовал

Error (10500): VHDL syntax error at proba.vhd(118) near text "B"0000010""; expecting "!", or "=>"

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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