VHDL中的块语句和过程语句之间的区别

时间:2018-07-05 12:46:09

标签: vhdl

我最近遇到了有关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;

1 个答案:

答案 0 :(得分:0)

主要区别在于关键字guarded。如果不编写代码,整个逻辑将是常规的 combinational 。因此,我想,如果您想使用某些顺序逻辑编写大多数并发代码,则可以谨慎地使用block语句,并在需要顺序时使用guarded。我问过在FPGA设计方面具有丰富背景的同事,他们说block有点过时,几乎没有人使用它,但是它仍然是标准的设计人员。