VHDL:编写一个与函数

VHDL:编写一个与函数,vhdl,Vhdl,所以我想写一个函数来执行AND门,intput是门输入的向量,输入的数量。但由于某种原因,编译器给了我一个错误,它无法识别我出于某种原因在内部使用的“and”逻辑运算符。有人能发现这个问题吗 p、 这是一个更大项目的一部分,它是一个16计数器(0-15),由4个链式JK触发器和2个与门组成(使用我的“myand”函数) 编译器错误为: Error (10327): VHDL error at counter16.vhd(16): can't determine definition of ope

所以我想写一个函数来执行AND门,intput是门输入的向量,输入的数量。但由于某种原因,编译器给了我一个错误,它无法识别我出于某种原因在内部使用的“and”逻辑运算符。有人能发现这个问题吗

p、 这是一个更大项目的一部分,它是一个16计数器(0-15),由4个链式JK触发器和2个与门组成(使用我的“myand”函数)

编译器错误为:

Error (10327): VHDL error at counter16.vhd(16): can't determine definition of operator ""and"" -- found 0 possible definitions

我甚至尝试使用“+”而不是“and”,但这是同样的错误。

VHDL的内置库没有定义一个运算符
,它接受一个
整数
标准逻辑

如何解决此问题:
  • 结果
    应该是
    标准逻辑
    而不是
    整数
  • 结果
    应初始化为
    '1'
    ,而不是
    0

VHDL的内置库没有定义一个运算符
,它接受一个
整数
标准逻辑

如何解决此问题:
  • 结果
    应该是
    标准逻辑
    而不是
    整数
  • 结果
    应初始化为
    '1'
    ,而不是
    0

VHDL的内置库没有定义一个运算符
,它接受一个
整数
标准逻辑

如何解决此问题:
  • 结果
    应该是
    标准逻辑
    而不是
    整数
  • 结果
    应初始化为
    '1'
    ,而不是
    0

VHDL的内置库没有定义一个运算符
,它接受一个
整数
标准逻辑

如何解决此问题:
  • 结果
    应该是
    标准逻辑
    而不是
    整数
  • 结果
    应初始化为
    '1'
    ,而不是
    0

如果在
x
上使用
'range
属性来获取索引值,则可以通过删除“n”参数来简化函数接口。如果std_逻辑_向量的子范围用作参数,则只能使用该子范围调用
myand
函数。包括sharth建议,功能是:

function myand (x : std_logic_vector) return std_logic is
    variable result : std_logic := '1';
begin
    for i in x'range loop
        result := result and x(i);
    end loop;
    return result;
end function;

如果在
x
上使用
'range
属性来获取索引值,则可以通过删除“n”参数来简化函数接口。如果std_逻辑_向量的子范围用作参数,则只能使用该子范围调用
myand
函数。包括sharth建议,功能是:

function myand (x : std_logic_vector) return std_logic is
    variable result : std_logic := '1';
begin
    for i in x'range loop
        result := result and x(i);
    end loop;
    return result;
end function;

如果在
x
上使用
'range
属性来获取索引值,则可以通过删除“n”参数来简化函数接口。如果std_逻辑_向量的子范围用作参数,则只能使用该子范围调用
myand
函数。包括sharth建议,功能是:

function myand (x : std_logic_vector) return std_logic is
    variable result : std_logic := '1';
begin
    for i in x'range loop
        result := result and x(i);
    end loop;
    return result;
end function;

如果在
x
上使用
'range
属性来获取索引值,则可以通过删除“n”参数来简化函数接口。如果std_逻辑_向量的子范围用作参数,则只能使用该子范围调用
myand
函数。包括sharth建议,功能是:

function myand (x : std_logic_vector) return std_logic is
    variable result : std_logic := '1';
begin
    for i in x'range loop
        result := result and x(i);
    end loop;
    return result;
end function;

哦,天哪,我真不敢相信我竟然没有注意到试图在其中输入两种不同的类型:P谢谢!希望其余的也能起作用哦,天哪,我真不敢相信我没有注意到尝试在其中输入两种不同的类型:P谢谢!希望其余的也能起作用哦,天哪,我真不敢相信我没有注意到尝试在其中输入两种不同的类型:P谢谢!希望其余的也能起作用哦,天哪,我真不敢相信我没有注意到尝试在其中输入两种不同的类型:P谢谢!希望其余部分现在也能起作用,而不是贬低sharth的答案或您自己的努力,IEEE Std 1076-2008(VHDL-2008)为and、or、nand、nor、xor和xnor提供了一元逻辑运算符,称为逻辑归约运算符。std_logic_vector(std_ulogic_vector的子类型)支持这些工具,特定供应商的合成工具可能支持这些工具,也可能不支持这些工具。Recend Modelsim和Aldec VHDL模拟器将支持这些VHDL-2008运算符。IEEE Std 1076-2008(VHDL-2008)为and、or、nand、nor、xor和xnor提供了一元逻辑运算符,称为逻辑缩减运算符,根本不反对sharth的答案或您自己的努力。std_logic_vector(std_ulogic_vector的子类型)支持这些工具,特定供应商的合成工具可能支持这些工具,也可能不支持这些工具。Recend Modelsim和Aldec VHDL模拟器将支持这些VHDL-2008运算符。IEEE Std 1076-2008(VHDL-2008)为and、or、nand、nor、xor和xnor提供了一元逻辑运算符,称为逻辑缩减运算符,根本不反对sharth的答案或您自己的努力。std_logic_vector(std_ulogic_vector的子类型)支持这些工具,特定供应商的合成工具可能支持这些工具,也可能不支持这些工具。Recend Modelsim和Aldec VHDL模拟器将支持这些VHDL-2008运算符。IEEE Std 1076-2008(VHDL-2008)为and、or、nand、nor、xor和xnor提供了一元逻辑运算符,称为逻辑缩减运算符,根本不反对sharth的答案或您自己的努力。std_logic_vector(std_ulogic_vector的子类型)支持这些工具,特定供应商的合成工具可能支持这些工具,也可能不支持这些工具。Recend Modelsim和Aldec VHDL模拟器将支持这些VHDL-2008运算符。