首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for-generate实现OR门

使用for-generate实现OR门
EN

Stack Overflow用户
提问于 2014-05-14 03:08:54
回答 1查看 1.2K关注 0票数 1

我已经实现了一个带有泛型参数的OR门,但我目前在使用for-generate实现它时遇到了一些问题。

代码语言:javascript
复制
entity OR_gate is
generic( n : natural := 2);
port(x : in std_logic_vector(1 to n);
      z : out std_logic);
end OR_gate;
architecture Behavioral of OR_gate is
begin
    process(x)
    variable temp : std_logic;
    begin
    temp := '0';
    G1: for i in 1 to N loop
        temp := temp or x(i);
    end generate G1;
z <= temp;
end process;
end Behavioral;

我有一个指示循环的G1参数,但是到目前为止,我还是迷路了。

EN

回答 1

Stack Overflow用户

发布于 2014-05-14 03:41:45

当在进程内执行时,它不是一个生成(并发)循环。在本例中,它只是一个常规循环,其语法没有generate,因此如下所示:

代码语言:javascript
复制
process(x)
  variable temp : std_logic;
begin
  temp := '0';
  G1 : for i in 1 to N loop
    temp := temp or x(i);
  end loop G1;
  z <= temp;
end process;

该过程的另一种选择是创建一个函数,然后进行并发函数调用以生成z,如:

代码语言:javascript
复制
architecture Behavioral of OR_gate is

  function or_reduct(slv : in std_logic_vector) return std_logic is
    variable res_v : std_logic;
  begin
    res_v := '0';
    for i in slv'range loop
      res_v := res_v or slv(i);
    end loop;
    return res_v;
  end function;

begin

  z <= or_reduct(x);

end Behavioral;

最后,如果工具支持VHDL-2008定义的逻辑归约运算符,那么您可以将其简化为:

代码语言:javascript
复制
z <= or x;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23639586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档