VHDL:信号和端口,“箭头”的一侧=>

时间:2012-04-18 09:40:51

标签: vhdl fpga xilinx

非常基本的问题:

如何知道端口/信号/值应放在箭头的哪一侧? 我注意到通过切换 port_a => xx <= port_a似乎非常平等,我收到了错误。 此外,x => port_a无效

我甚至不知道箭头指向哪个方向。

非常感谢答案!

3 个答案:

答案 0 :(得分:5)

<=是一项任务 - 特别是一项信号分配,用来自其他地方的值驱动信号。对于物理类比,右侧的东西将值驱动到左侧。

=>是从引脚到信号的端口映射。这不是一项任务 - 物理类比可能是将引脚焊接到电线上。

您只能对实例化进行“焊接”,因此=>映射仅发生在port map内。在那里,“pins”总是在左侧(因为这是语言规则所说的),这就是为什么你不能在x <= port_a中进行port map。< / p>

答案 1 :(得分:2)

使用<=从右到左进行信号分配。 右侧必须是来自实体的输入信号或过程中声明的信号。 左侧可以是实体的输出信号(或输入/缓冲区),过程中声明的信号或过程中声明的变量。

除了在其他答案中提到的端口映射之外,=>箭头也用于完全不同的东西 - 构造向量。 例如,如果v是4位向量,则v <= (others => '0')将“0000”分配给v。括号内的“=>”是用于在向量内的不同位置分配不同值的快捷方式。 / p>

答案 2 :(得分:0)

if =&gt;是一个端口列表,那么这怎么可能?请注意,clk_40Mhz_i是一个引脚。

COMPONENT clk_wiz_v3_5 is 

PORT

( - 端口时钟

CLK_IN1:在std_logic中;

- 时钟输出端口

CLK_OUT1:输出std_logic;

- 状态和控制信号

重置:在std_logic;

已锁定:输出std_logic

);

END COMPONENT;

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&lt; = not(processor_fpga_resetn_i);

重置&lt; = not(clk_locked);