2012-04-18 7 views
3

非常に基本的な質問:VHDL:信号とポート「矢印」のどちら側に=>

は、どのように私は知っているポート/信号/値は矢印のどちら側に配置する必要がありますか? 非常に等しいと思われる port_a => xx <= port_aに切り替えると気づきました。 また、x => port_aは役に立たない

矢印がどのように指すべきかわかりません。

回答は本当にありがとうございます!

答えて

5

<=は割り当てです。具体的には信号割り当てで、他のどこかの値で信号を駆動します。物理的な類推のために、右側のものが左側に値を移動させます。

=>は、ピンから信号へのポートマッピングです。これは割り当てではありません。物理的な類推は、ピンをワイヤにハンダ付けすることです。

=>マッピングはport mapの内部でのみ発生するため、インスタンシエーションには「はんだ付け」しかできません。そして、「ピン」は常にのように左に移動します(なぜなら、それは言語ルールの意味なのです)。port mapx <= port_aを実行できないのはこのためです。

+0

Mr Thompsonありがとう! – chwi

2

信号割り当ては、右から左へ<=を使用して行います。 右側はエンティティからの入力信号またはプロセスで宣言された信号でなければなりません。 左側は、エンティティからの出力信号(または入力/バッファ)、プロセスで宣言されたシグナル、またはプロセスで宣言された変数です。

他の答えに記載されているポートマッピングの横にある=>矢印は、ベクターを構築するために全く別のものにも使用されます。 たとえば、vが4ビットベクトルの場合、v <= (others => '0')はvに "0000"を割り当てます。カッコ内の `=>`は、ベクトル内の異なる場所に異なる値を割り当てるためのショートカットです。

+0

すぐに回答いただきありがとうございます。 – chwi

0

もし=>がポートリストの場合、これはどのように可能ですか? clk_40Mhz_iはピンです。

COMPONENT clk_wiz_v3_5 is 

PORT

( - ポートにクロック

CLK_IN1:STD_LOGICにおいて、

- クロックアウトポート

CLK_OUT1:アウトSTD_LOGIC;

- - ステータス信号と制御信号

リセット:in std_logic;

ロック:out std_logic

);

end component;

xclk_wiz_v3_5:clk_wiz_v3_5

PORT MAP(

CLK_IN1   => clk_40Mhz_i, 

-- Clock out ports 

CLK_OUT1   => clk_40Mhz, 

-- Status and control signals 

RESET   => pic_fpga_reset, 

LOCKED   => clk_locked 

)。

pic_fpga_reset < = not(processor_fpga_resetn_i);

リセット< = not(clk_locked);