详解VHDL进程内外信号赋值区别

1. VHDL信号赋值的基本概念

1.1 非阻塞赋值(<=

  • 信号赋值:在VHDL中,<= 用于信号的非阻塞赋值。这意味着赋值操作不会立即改变信号的值,而是将新的值调度到当前时钟周期结束后生效。
  • 变量赋值:相对的,:= 用于变量的阻塞赋值,仅在进程内部使用,且立即生效。

1.2 进程(Process)与并发语句(Concurrent Statements)

  • 进程内部:一组顺序执行的语句,受到敏感列表或触发条件(如时钟边沿)的控制。
  • 进程外部:并发语句,始终处于活动状态,类似于硬件中的并行逻辑。

2. 进程内部与进程外部的 <= 操作符

2.1 进程内部的 <= 操作

process(clk)
begin
    if rising_edge(clk) then
        a <= b;
        c <= a;
    end if;
end process;

特点:

  • 顺序执行:语句按顺序执行,模拟顺序逻辑。
  • 非阻塞赋值a <= b;c <= a; 都是非阻塞赋值,意味着 c 会在本时钟周期结束后接收 a 的旧值,而不是新赋值的 b
  • 时序行为
    • a 被调度为 b 的值,但在本时钟周期内,a 仍然保持旧值。
    • c 被赋值为 a 的旧值。

仿真示例:

时钟周期ba(更新后)c(更新后)
1000
2110
3001
4110

2.2 进程外部的 <= 操作

a <= b;
c <= a;

特点:

  • 并发执行:这些赋值语句始终处于活动状态,类似于组合逻辑电路。
  • 非阻塞赋值:每当 b 变化时,a 会立即跟随 b 的变化;同时,c 会立即跟随 a 的变化。
  • 时序行为
    • a 始终等于 b
    • c 始终等于 a,也即等于 b

仿真示例:

时钟周期ba(赋值后)c(赋值后)
1000
2111
3000
4111

3. 关键区别总结

特性进程内部 <=进程外部 <=
执行方式顺序执行,受进程的触发条件控制并发执行,始终处于活动状态
赋值时机信号在时钟周期结束后更新信号随输入变化立即更新
信号赋值的依赖性后续赋值语句读取的是赋值前的旧值后续赋值语句读取的是赋值后的新值
应用场景顺序逻辑,如寄存器、状态机组合逻辑,如加法器、多路复用器
赋值影响范围赋值仅在进程内部影响其他语句赋值对所有并发语句可见
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可知可知不可知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值