VHDL信号分配是否设置目标值或参考?

VHDL信号分配是否设置目标值或参考?,vhdl,Vhdl,我为标题问题的冗长措辞道歉,但想不出任何其他简洁的方式。我知道这与传递值与引用二分法有很大不同,但类似。我想知道以下哪段代码的行为相同: 声明: Port (source : in STD_LOGIC); ... signal destination : STD_LOGIC := '0'; #1-设置时钟上的“值” 过程(clk)开始 如果下降沿(clk),则 如果源='1',则 目的地#1 此过程有一个敏感度列表。当灵敏度列表中的任何信号出现事件(值变化)时,进程开始执行。该过程在灵敏度列表

我为标题问题的冗长措辞道歉,但想不出任何其他简洁的方式。我知道这与传递值与引用二分法有很大不同,但类似。我想知道以下哪段代码的行为相同:

声明:

Port (source : in STD_LOGIC);
...
signal destination : STD_LOGIC := '0';
#1-设置时钟上的“值”

过程(clk)开始
如果下降沿(clk),则
如果源='1',则
目的地#1

此过程有一个敏感度列表。当灵敏度列表中的任何信号出现事件(值变化)时,进程开始执行。该过程在灵敏度列表中有一个信号-
clk
,因此当该信号发生变化时,该过程开始执行。如果该更改是上升沿,则
If
语句中的条件计算为
FALSE
,因此不再执行代码行,进程暂停(进入睡眠状态)。但是,如果该更改是一个下降沿,则
If
语句中的条件计算为
TRUE
,因此,根据
的值,将执行两行代码中的一行,为
目标
赋值。以下是真正重要的一点:


当一行代码包含一个信号赋值(
并且如果它的行为确实像#1,是否有办法在过程中导出#2-样行为)时,信号以波形进行评估,赋值。如果没有声明,很难评论#1和#3之间的差异(请参阅).将#2中明显的并发信号分配细化为与源的等效过程(如果源是信号)在灵敏度列表和简单信号分配语句中。所有进程至少执行一次。参见IEEE Std 1076-2008,10.5.2.2执行简单分配语句,11.6并发信号分配语句,11.3进程语句。公平地说,我添加了声明。分配的值是指独立于源的0/1值?你对#2的评论很有意义;它实际上没有“链接”到源信号/端口,但生成的过程使它看起来是这样的。参见IEEE Std 1076-2008 10.5信号分配声明,10.5.1概述,信号分配声明修改一个或多个信号驱动器中包含的投影输出波形(见14.7.2),计划一个或多个信号的力,或计划一个或多个信号的释放(见14.7.3)。无“事件队列”预测输出波形与驱动器关联。10.5.2.2执行简单赋值语句…如果波形元素的after子句不存在,则隐式“0 ns后”你应该考虑标准权威。@ USER 1155120如果你可以通过阅读标准来学习,我就会失业。标准说明,我解释。我可以看到我没有考虑乘法驱动的信号,但是如果有什么我说的是错误的,那么显然我需要纠正它。是吗?n通过阅读标准进行学习。但是,它需要灌输并采用其中包含的语言。您的第一句引用自何处?Verilog有一个事件队列-IEEE Std 1364-2005,您的第二句引用自11.6.4非阻塞分配。VHDL标准中未使用该术语。请注意,缺少标记。正确的位置是1076-2008 10.5.2.2…对于目标为标量类型的简单波形分配语句的执行,首先对其右侧的波形进行评估…最小波形元素是值_表达式。
process (clk) begin 
    if falling_edge(clk) then
       if source = '1' then
            destination <= '1';
        else
            destination <= '0';
        end if;
-- Top-Level
destination <= source;
process (clk) begin 
    if falling_edge(clk) then
        destination <= source;