VHDL中两个有符号向量的长度均衡

VHDL中两个有符号向量的长度均衡,vhdl,Vhdl,我一直在尝试用VHDL编写一个代码,它将接收2个有符号向量,然后比较它们,如果一个向量的长度比另一个短,它将调用一个函数,使较短的向量与另一个向量的长度相同。我得到了错误的答案。我的调整大小的数组B1始终显示值U。我正在粘贴我的代码供您参考。如果我缺少一些逻辑,请帮助我。谢谢你的时间和考虑 IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 使用IEEE.NUMERIC_STD.ALL; 实体equi是泛型的( num1:自然值:=8; num2:自然值:=4 ); 港口( a:

我一直在尝试用VHDL编写一个代码,它将接收2个有符号向量,然后比较它们,如果一个向量的长度比另一个短,它将调用一个函数,使较短的向量与另一个向量的长度相同。我得到了错误的答案。我的调整大小的数组B1始终显示值U。我正在粘贴我的代码供您参考。如果我缺少一些逻辑,请帮助我。谢谢你的时间和考虑

IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.NUMERIC_STD.ALL;
实体equi是泛型的(
num1:自然值:=8;
num2:自然值:=4
); 港口(
a:在有符号((num1-1)中向下到0);
b:带符号((num2-1)下至0);
a1:无符号((num1-1)下降到0);
b1:无符号((num1-1)向下至0)
);
末端等电位;
equi is的体系结构
函数eqq(num:signed)返回已签名
变量结果:有符号(num1下降到1);
开始
结果:=调整大小(num,8);
返回结果;
端函数eqq;
信号b11:有符号(num1向下至1);
信号a11:有符号(num1向下至1);
信号组件:已签名(num1向下至1);
信号comp1:已签名(num2减至1);
开始
过程(a、b)
开始
如果a>b,那么

comp1如果您正确缩进代码,将有助于您查看子程序中出现第一个错误的信号声明的位置。错误1)子程序中不允许出现的信号声明是由
end
before
返回结果引起的在函数eqq主体中,将其删除。第二个错误是第一个错误的结果。代码中存在语义问题(长度不匹配和边界声明),这将在信号分配期间导致模拟错误,目标表达式和右侧表达式必须具有复合数组类型的匹配元素。发生隐式子类型转换。numeric_std中的'>'运算符为您执行此操作。现在我对if语句有一个问题。我将其更改为“if a>b then”,但它仍然显示if附近的语法错误。必需的保留字
begin
将流程语句声明部分(即使是空的)与流程语句部分中的语句序列分开。将
begin
添加到process语句中if语句的前面。