gpt4 book ai didi

vhdl - 和 VHDL 中 n 位数组的所有元素

转载 作者:行者123 更新时间:2023-12-04 16:23:16 25 4
gpt4 key购买 nike

假设我有一个 n 位数组。我想对数组中的所有元素进行 AND 运算。类似于将每个元素连接到 n 位与门。

我如何在 VHDL 中实现这一点?

注意:我正在尝试使用可重用的 VHDL 代码,所以我想避免像这样的硬编码

    result <= array(0) and array(1) and array(2)....and array(n); 

谢谢
奥沙拉

最佳答案

解决方案 1:使用一元运算符

VHDL-2008 定义了一元运算符,如下所示:

outp <= and "11011";
outp <= xor "11011";
outp <= and inp; --this would be your case

但是,您的编译器可能尚不支持它们。

解决方案 2:使用纯组合(和传统)代码

因为在并发代码中,您不能多次为信号分配一个值,所以您可以创建一个具有“额外”维度的临时信号。在您的情况下,输出是一位,因此临时信号应该是一维数组,如下所示。
-------------------------------------------
entity unary_AND IS
generic (N: positive := 8); --array size
port (
inp: in bit_vector(N-1 downto 0);
outp: out bit);
end entity;
-------------------------------------------
architecture unary_AND of unary_AND is
signal temp: bit_vector(N-1 downto 0);
begin
temp(0) <= inp(0);
gen: for i in 1 to N-1 generate
temp(i) <= temp(i-1) and inp(i);
end generate;
outp <= temp(N-1);
end architecture;
-------------------------------------------

推断电路如下图所示。
enter image description here

解决方案 3:使用顺序码

这比解决方案 2 更简单,尽管您现在使用顺序代码来解决纯组合问题(但硬件将相同)。您可以编写类似于解决方案 2 中的代码,但使用 流程循环 (后者代替 生成 )或使用 功能 .因为在顺序代码中,您可以多次为信号赋值,所以这里不需要解决方案 2 的临时信号。

关于vhdl - 和 VHDL 中 n 位数组的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com