我最近遇到了有关VHDL块和过程结构的问题,在教科书或互联网论坛中找不到任何解释。
下面的代码中的块和流程语句之间有什么区别吗?
library IEEE;
use IEEE.std_logic_1164.all;
entity example is
port ( a, b, clock : in std_logic;
c : out std_logic);
end entity;
architecture rtl of example is
begin
test_block : block (clock'event and clock = '1')
begin
c <= guarded a and b;
end block test;
end rtl;
和
library IEEE;
use IEEE.std_logic_1164.all;
entity example is
port ( a, b, clock : in std_logic;
c : out std_logic);
end entity;
architecture rtl of example is
begin
test_proc : process (clock)
begin
if (clock'event and clock = '1') then
c <= a and b;
end if;
end process test_proc;
end rtl;
答案 0 :(得分:0)
主要区别在于关键字guarded
。如果不编写代码,整个逻辑将是常规的 combinational 。因此,我想,如果您想使用某些顺序逻辑编写大多数并发代码,则可以谨慎地使用block
语句,并在需要顺序时使用guarded
。我问过在FPGA设计方面具有丰富背景的同事,他们说block
有点过时,几乎没有人使用它,但是它仍然是标准的设计人员。