我在理解vhdl进程内部的顺序语句是如何合成时有些困难。
IEEE标准参考手册Std 1076-2008声明:
顺序语句用于定义用于执行子程序或过程的算法;它们按照它们出现的顺序执行。
易于理解,因为仿真是由CPU完成的,而CPU是为顺序执行而构建的。在这种情况下,最困难的事情是模拟concurrent执行,这是通过delta delays技巧完成的。但是综合呢?我不明白在完全逻辑的体系结构中两个语句怎么可能是顺序的...
有帮助吗?
示例过程:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity example is
Port (clk, rst, A : in STD_LOGIC; B : out STD_LOGIC);
end example;
architecture example_arch of example is
begin
process(clk, rst)
variable C : STD_LOGIC;
begin
if rst = '1' then
C := '0';
B <= '0';
elsif rising_edge(clk) then
if A = '1' then
E := '1';
else
E := '0';
end if;
-- then sequentially ?
if E = '1' then
B <= '1';
else
B <= '0';
end if;
end if;
end process;
end example_arch;
综合工具将分析该过程并将其转换为符合sequential(但也是“即时”)执行过程的方式的闸门和触发器。
例如,您的process
(我假设您要分配给变量C
,而不是E
并检查其值)应转换为(合成)简单的DFF
异步重置。