非常基本的问题:VHDL:信号和端口在其上“箭头”的侧=>
如何知道其中端口/信号/值应该被放置在箭头的哪一侧? 我注意到,通过切换 port_a => x
到x <= port_a
看起来非常平等,我得到了一个错误。 另外,x => port_a
不工作
我甚至不知道箭头应该指向哪个方向。
答案真的很感激!
非常基本的问题:VHDL:信号和端口在其上“箭头”的侧=>
如何知道其中端口/信号/值应该被放置在箭头的哪一侧? 我注意到,通过切换 port_a => x
到x <= port_a
看起来非常平等,我得到了一个错误。 另外,x => port_a
不工作
我甚至不知道箭头应该指向哪个方向。
答案真的很感激!
<=
是一项任务 - 特别是一个信号分配,用来自其他地方的值驱动一个信号。对于物理比喻,右边的东西将驱动一个值到左边。
=>
是从引脚到信号的端口映射。这不是一项任务 - 物理比喻可能是将一个引脚焊接到电线上。
您只能对实例进行“焊接”,因此=>
映射只发生在port map
内。在那里,“pins”总是左边(因为这就是语言规则说的),这就是为什么你不能在port map
中做x <= port_a
。
信号分配从右到左使用<=
。 右侧必须是来自实体的输入信号或过程中声明的信号。 左侧可以是实体的输出信号(或输入/缓冲区),过程中声明的信号或过程中声明的变量。
除了在其他答案中提到的端口映射,=>
箭头也用于完全不同的事情 - 构建向量。例如,如果v是一个4位向量,则v <= (others => '0')
将为v赋值“0000”。圆括号内的“=>”是在向量内不同位置分配不同值的快捷方式。
非常感谢您快速回答(s)! – chwi 2012-04-18 10:00:53
if =>是针对端口列表的,那怎么可能?请注意,clk_40Mhz_i是一个引脚。
COMPONENT clk_wiz_v3_5 is
PORT
( - 时钟在端口
CLK_IN1:在STD_LOGIC;
- 时钟输出端口
CLK_OUT1:出STD_LOGIC;
- - 状态和控制信号
RESET:in std_logic;
LOCKED: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);
reset < = not(clk_locked);
谢谢汤普森先生! – chwi 2012-05-16 07:35:28