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