VHDL目标大小

VHDL目标大小,vhdl,xilinx-ise,Vhdl,Xilinx Ise,我的作业有问题,无法解决。在本部分代码中: KS1 <= regA when Y(5)='0' else not regA(0) & not regA(0) & regA(1 to 3) & "000" when (Y(5)='1' and regA(0)='1') else (not(regA(0) & regA) +'1') & "000"; 错误:进程内操作单元。vhd

我的作业有问题,无法解决。在本部分代码中:

KS1 <= regA when Y(5)='0' else 
                  not regA(0) & not regA(0) & regA(1 to 3) & "000" when (Y(5)='1' and regA(0)='1') else
                  (not(regA(0) & regA) +'1') & "000";
错误:进程内操作单元。vhd:94 数组维度0的目标大小8和源大小12不匹配


您需要在assigns中查看目标和源的大小,因为有几个地方存在大小不匹配,例如第42行的assign to regA:

A : in STD_LOGIC_VECTOR (0 to 7);
...
signal regA : std_logic_vector(0 to 7); -- Register А
...
regA <= A & "0000";
目标大小为8位信号regA:in标准逻辑向量0至7,源大小为8位A:in标准逻辑向量0至7;+4位0000=12位


ISim的编译中可能会有一些关于所有大小不匹配的地方的警告。

请告诉我们您想要实现的目标。在信号更新期间,要求驱动值和有效值之间存在匹配元素IEEE Std 1076-2008 14.7.3.4信号更新。这是一个模拟错误。RegA有8个元素,else条件波形notregA0&RegA+'1'&000中的条件赋值为12。注:代码中关于RegA和RegB的声明中的注释包含IEEE Std 1076-2002 13.1字符集,-2008 15.2中明确允许的ISO 8859-1无效字符。ISE的isim据称符合-1993标准。在VHDL中,维度从1开始按顺序计算。请参阅-2008 16.2.3数组的预定义属性。显示维度0的错误消息不准确,对于具有单个维度的数组来说是多余的。isim可以说是在ISE中发展,最终被Vivado模拟器取代。
A : in STD_LOGIC_VECTOR (0 to 7);
...
signal regA : std_logic_vector(0 to 7); -- Register А
...
regA <= A & "0000";