非常に基本的な質問:
ポート/信号/値を矢印のどちら側に配置する必要があるかを知るにはどうすればよいですか?port_a => x
非常に同じように見えるものに切り替えるとx <= port_a
、エラーが発生することに気づき
ました。また、x => port_a
働かないでください
矢印がどちらの方向を向いているのかさえわかりません。
答えは本当にありがたいです!
<=
割り当てです。具体的には、信号の割り当てであり、別の場所からの値で信号を駆動します。物理的な類推として、右側にあるものは値を左側に駆動します。
=>
ピンから信号へのポート マッピングです。これは割り当てではありません。ピンをワイヤにはんだ付けするような物理的なアナロジーが考えられます。
インスタンス化への「はんだ付け」しかできないため、=>
マッピングはport map
. そして、「ピン」は常に左側に配置されます (これは、言語規則がそうしているためですx <= port_a
) port map
。
信号の割り当ては、 を使用して右から左に進み<=
ます。右側は、エンティティからの入力信号またはプロセスで宣言された信号でなければなりません。左側は、エンティティからの出力信号 (または入力/バッファー)、プロセスで宣言された信号、またはプロセスで宣言された変数にすることができます。
他の回答で言及されているポートマッピングに加えて、=>
矢印はまったく異なる目的、つまりベクトルを構築するためにも使用されます。たとえば、v が 4 ビット ベクトルの場合、vv <= (others => '0')
に "0000" が割り当てられます。括弧内の ``=>` は、ベクトル内の異なる場所に異なる値を割り当てるためのショートカットです。
=> がポートリストの場合、これはどのように可能ですか? clk_40Mhz_i はピンであることに注意してください。
COMPONENT clk_wiz_v3_5 is
ポート
( -- クロックインポート
CLK_IN1 : std_logic 内。
-- クロックアウト ポート
CLK_OUT1 : out std_logic;
-- ステータスおよび制御信号
RESET : std_logic 内。
LOCKED : out std_logic
);
コンポーネントの終了;
xclk_wiz_v3_5: clk_wiz_v3_5
港マップ (
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);
リセット <= しない (clk_locked);