问题:
是否有比(关于我的情况)
signed
更合适的“超类型”?unsigned
std_logic_vector
可以将输入定义为整数(子类型)还是将其定义为位向量更好?(整数方法是否有任何问题)
我什么时候应该对实体的输入/输出使用已解决或未解决的逻辑?
- 已解决总线驱动程序(因为“高 Z 驱动程序”),否则未解决?
- 始终已解决,因此可以驱动/使用总线作为输入(这似乎是错误的,因为我什么时候会使用未解决的呢?)
实际案例:
我正在声明一个实体,并且想知道输入和输出的正确类型。假设我正在构建一个动态宽度相等。它比较两个输入的前 n 位是否相等。
实体定义将是:
entity comparisonDynWidth is
generic(
width : positive;
min_width : positive;
-- when the tools suport vhdl2008 enough
-- reason for both signed/unsigned => std_logic inputs
--function compareFunc (x: in std_logic_vector; y: in std_logic_vector) return std_logic
);
port (
left, right : in std_logic_vector(width-1 downto 0);
widthControl: in natural range 0 to width-min_width;
result : out std_logic / std_ulogic ??
);
我选择 std_logic_vector 作为输入,因为我希望它看起来像一个通用less than
比较器的端口,对于哪些符号很重要,哪些可以有signed
和unsigned
输入。因为我更容易将宽度定义为我这样做的整数。