【发布时间】:2017-09-18 16:08:00
【问题描述】:
有谁知道为什么这个 VHDL 代码没有编译? (我用的是modelsim)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.NUMERIC_STD.all;
Entity PartC IS
Generic (constant N: natural := 1);
Port
( A : IN std_logic_vector(15 downto 0);
S0,S1,Cin : IN std_logic;
F : OUT std_logic_vector(15 downto 0));
End Entity PartC;
Architecture CCC of PartC IS
Begin
F <= std_logic_vector(unsigned(A) srl N) when S1='0' And S0='0'
Elsif std_logic_vector(unsigned(A) ror N) when S1='0' And S0='1'
Elsif std_logic_vector(unsigned(A) ror Cin) when S1='1' And S0='0'
Elsif std_logic_vector(unsigned(A) sra N);
End CCC;
enter code here
这是 16 位 ALU 的一部分,它接受两个 16 位输入值 A 和 B
并提供16位输出F。
【问题讨论】:
-
错误信息是什么?
-
(vcom-1078) 标识符“无符号”不直接可见。无法解析中缀表达式的表达式类型。 ** 错误:(vcom-1583) 从“未知”到“ieee.std_logic_1164.STD_LOGIC_VECTOR”的非法类型转换(操作数类型未知)。
-
非标准库太多,隐藏 numeric_std.unsigned。删除 std_logic_arith 和 std_logic_unsigned。 (另外,Else 和 Elsif 之间有些混淆)