3

非常基本的问题:

我怎么知道端口/信号/值应该放在箭头的哪一侧?我注意到通过切换 port_a => xx <= port_a看起来非常相等的,我得到了一个错误。另外,x => port_a不要工作

我什至不知道箭头应该指向哪个方向。

答案非常感谢!

4

3 回答 3

6

<=是一个赋值 - 特别是一个信号赋值,从其他地方驱动一个带有值的信号。对于物理类比,右侧的事物将值驱动到左侧。

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

您只能对实例进行“焊接”,因此=>映射只发生在port map. 在那里,“pin”总是在左边(因为这是语言规则所说的),这就是为什么你不能x <= port_aport map.

于 2012-04-18T13:06:18.200 回答
2

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

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

于 2012-04-18T09:47:33.300 回答
0

如果 => 用于端口列表,那么这怎么可能?请注意,clk_40Mhz_i 是一个引脚。

COMPONENT clk_wiz_v3_5 is 

港口

(-- 端口时钟

CLK_IN1:在标准逻辑中;

-- 时钟输出端口

CLK_OUT1:输出标准逻辑;

-- 状态和控制信号

重置:在 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);

于 2015-08-21T05:44:45.163 回答