4)赋值行为的不同: 信号赋值延迟更新数值、时序电路 变量赋值立即更新数值、组合电路 5)信号的多次赋值 a.一个进程:最后一次赋值有效 b.多个进程:多源驱动 线与、线或、三态
6 4)赋值行为的不同: 信号赋值延迟更新数值、时序电路; 变量赋值立即更新数值、组合电路。 5)信号的多次赋值 a. 一个进程:最后一次赋值有效 b. 多个进程:多源驱动 线与、线或、三态
例:信号的多次赋值 architecture rtl of ex is architecture rtl of ex is signal a: std logic signal a: std logic; begin egin orocess process(.) begin a <=b begin a<=b end process; a <= c process(….) begin end process a C end rtl end process; end ex
7 例:信号的多次赋值 architecture rtl of ex is signal a : std_logic; begin process(…) begin a <= b; … a <= c; end process; end rtl; architecture rtl of ex is signal a : std_logic; begin process(…) begin a <= b; … end process; process(…) begin a <= c; ... end process; end ex;
例:信号赋值与变量赋值的比较 信号赋值: architecture rtl of sig is signal a, b: std_logic;-定义信号 begin process(a, b) egIn a<= b b<= a end process; end rtl;--结果是a和b的值互换
8 例:信号赋值与变量赋值的比较 信号赋值: architecture rtl of sig is signal a,b : std_logic; -- 定义信号 begin process(a, b) begin a <= b ; b <= a ; end process ; end rtl ; -- 结果是 a 和 b 的值互换
变量赋值: architecture rt of var is begin process variable a, b: std_logic;-定义变量 begin a = b b::= a end process end rtl 结果是a和b的值都等于b的初值
9 变量赋值: architecture rtl of var is begin process variable a,b:std_logic; -- 定义变量 begin a := b ; b := a ; end process ; end rtl; -- 结果是a和b的值都等于b的初值
例:变量赋值实现循环语句功能 process(indicator, sig) variable temp: std_logic begin temp: =0 for i in 0 to 3 loop temp: =temp xor(sig(i) and indicator() end loop output < temp end process
10 例:变量赋值实现循环语句功能 process(indicator, sig) variable temp : std_logic; begin temp := ‘0’ ; for i in 0 to 3 loop temp:=temp xor (sig(i) and indicator(i)); end loop ; output <= temp; end process;