【发布时间】:2012-04-18 09:40:50
【问题描述】:
非常基本的问题:
我如何知道端口/信号/值应该放在箭头的哪一侧?
我注意到通过切换
port_a => x 到 x <= port_a 似乎非常相等,我遇到了一个错误。
另外,x => port_a 不工作
我什至不知道箭头应该指向哪个方向。
非常感谢您的回答!
【问题讨论】:
非常基本的问题:
我如何知道端口/信号/值应该放在箭头的哪一侧?
我注意到通过切换
port_a => x 到 x <= port_a 似乎非常相等,我遇到了一个错误。
另外,x => port_a 不工作
我什至不知道箭头应该指向哪个方向。
非常感谢您的回答!
【问题讨论】:
<= 是一个赋值 - 特别是一个信号赋值,驱动一个具有来自其他地方的值的信号。对于物理类比,右侧的事物将值驱动到左侧。
=> 是一个从引脚到信号的端口映射。这不是一项任务 - 物理类比可能是将引脚焊接到电线上。
您只能对实例进行“焊接”,因此=> 映射只发生在port map 内。在那里,“大头针”总是在左边(因为这是语言规则所说的),这就是为什么你不能在 port map 中使用 x <= port_a。
【讨论】:
使用<= 从右到左分配信号。
右侧必须是来自实体的输入信号或在进程中声明的信号。
左侧可以是来自实体的输出信号(或输入/缓冲区)、进程中声明的信号或进程中声明的变量。
除了其他答案中提到的端口映射之外,=> 箭头还用于完全不同的事情 - 构造向量。
例如,如果 v 是一个 4 位向量,那么 v <= (others => '0') 会将“0000”分配给 v。括号内的 ``=>` 是在向量内不同位置分配不同值的快捷方式。
【讨论】:
if => 用于端口列表,那么这怎么可能?请注意,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
重置
【讨论】: