在vhdl中添加两个5位数字向量

在vhdl中添加两个5位数字向量,vhdl,Vhdl,我是vhdl新手,我正在尝试添加2个5位无符号数的向量。在下面的代码中,信号firstsum在波形中给出正确的输出,但向量和不显示任何输出,我使用的是quartus ii。这段代码中的错误是什么 library IEEE; use IEEE.STD_LOGIC_1164.all; use ieee.numeric_std.all; package UVEC is subtype UINT5 is std_logic_vector (4 downto 0); type UVEC5 is arr

我是vhdl新手,我正在尝试添加2个5位无符号数的向量。在下面的代码中,信号firstsum在波形中给出正确的输出,但向量和不显示任何输出,我使用的是quartus ii。这段代码中的错误是什么

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.numeric_std.all;

package UVEC is 
subtype UINT5 is std_logic_vector (4 downto 0);
type UVEC5 is array (2 downto 0) of UINT5;
subtype UINT6 is std_logic_vector (5 downto 0);
type UVEC6 is array (2 downto 0) of UINT6;
end UVEC;

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.numeric_std.all;
use work.UVEC.all;

entity FP_Vecsum1 is
    port(
    a,b : in UVEC5;
    sum : out UVEC6;
    firstsum : out UINT6
    );
end FP_Vecsum1;

architecture FP_Vecsum1_MX of FP_Vecsum1 is
begin


    firstsum <= std_logic_vector(('0'&unsigned(a(0)))+('0'&unsigned(b(0))));
    sum(0) <= std_logic_vector(('0'&unsigned(a(0)))+('0'&unsigned(b(0))));
    sum(1) <= std_logic_vector(('0'&unsigned(a(1)))+('0'&unsigned(b(1))));
    sum(2) <= std_logic_vector(('0'&unsigned(a(2)))+('0'&unsigned(b(2))));

end FP_Vecsum1_MX;
IEEE库;
使用IEEE.STD_LOGIC_1164.all;
使用ieee.numeric_std.all;
包装UVEC为
子类型UINT5是标准逻辑向量(4到0);
UVEC5型是UINT5的阵列(2至0);
子类型UINT6是标准逻辑向量(5到0);
UVEC6型是UINT6的阵列(2至0);
结束UVEC;
图书馆IEEE;
使用IEEE.STD_LOGIC_1164.all;
使用ieee.numeric_std.all;
使用work.UVEC.all;
实体FP_Vecsum1是
港口(
a、 b:在UVEC5中;
sum:输出UVEC6;
第一个总数:OUNT6
);
结束FP_Vecsum1;
FP_Vecsum1的体系结构FP_Vecsum1_MX是
开始

firstsum欢迎来到VHDL世界

我也没有发现您的代码有任何错误,但您可以尝试以下方法,也许这会有所帮助:

首先,在进行数学运算之前,尝试在架构开始时将信号强制转换为unsigned:

a_us(0) <= unsigned(a(0));
a_us(1) <= unsigned(a(1));
a_us(2) <= unsigned(a(2));

a_us(0)您的包上下文子句缺少library子句
library;使
ieee`可见。没有名为
\vector sum\`的信号,你是说
sum`?你在模拟过程中(或在硬件中)提供了什么样的输入刺激?有。您的问题可能在其他地方,注意到缺少一个@user1155120,我已经添加了这个库,这是一个打字错误。我使用模型sim生成测试台,并将增量输入输入a和b。我看到firstsum给出了适当的o/p。将sum定义为UVEC6是否有任何错误?如果您遇到Modelsim问题,则有一个标记。您是否在波形中展开了数组sum?
sum(0) <= std_logic_vector(resize(a_us(0),sum(0)'length) + resize(b_us(0),sum(0)'length));
sum(0) <= std_logic_vector( to_unsigned(0,sum(0)'length) + a_us(0) + b_us(0) );