Jump to content

    
Sign in to follow this  
SergeyVas

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

Recommended Posts

Нужно подключать разные модули по команде из мк думал сделать в 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;

Share this post


Link to post
Share on other sites
Нужно подключать разные модули по команде из мк думал сделать в case что то не соображу как сделать?

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

 

Share this post


Link to post
Share on other sites
Как правильно это сделать? (ключевое слово дайте) :)

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

Share this post


Link to post
Share on other sites
Думаю описание его интерфейса ?

в таком случае что же такое 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)?

Share this post


Link to post
Share on other sites
теперь вам более понятно что вы делаете, когда вставляете инстанс объекта (entity)?

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

Share this post


Link to post
Share on other sites
Да немного, создаю экземпляр компонента :) ?

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

 

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

Share this post


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

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

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

 

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

with command_in_from_mc select

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

 

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

Share this post


Link to post
Share on other sites
Наверно если словами своими, то если представить схему то на схеме добавляется модуль dd3 с всеми входами и выходами назначенными в entity port.

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

 

 

Share this post


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

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

 

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

case command_in_from_mc is

when "0000001"

"0000010" => x<=a;

Share this post


Link to post
Share on other sites
Подскажите по синтаксису, как сделать что бы цепь присваивалась при разных командах

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

 

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.

Share this post


Link to post
Share on other sites

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

when "0000001" => x<=a;

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

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

when "0000001"

"0000010"

=> x<=a;

то ошибка.

 

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

 

Share this post


Link to post
Share on other sites
Если одна команда

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 ? хотя бы минимальное введение в язык прочитайте %)

Share this post


Link to post
Share on other sites

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

when "0000001"=> x<=a;

when "0000010"=> x<=a;

....

 

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

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this