Vhdl 需要知道是否组合
我已经编写了一个代码,用于在给定的4位Vhdl 需要知道是否组合,vhdl,Vhdl,我已经编写了一个代码,用于在给定的4位std\u logic\u向量中计算1的数量,并且输出必须以2位向量显示。我编写了如下代码: count <= A + "01" when input(0) = '1' else A; A <= B + "01" when input(1) = '1' else B; B <= C + "01" when input(2) = '1' else C; C <= "01" when input(3) =
std\u logic\u向量中计算1的数量,并且输出必须以2位向量显示。我编写了如下代码:
count <= A + "01" when input(0) = '1' else A;
A <= B + "01" when input(1) = '1' else B;
B <= C + "01" when input(2) = '1' else C;
C <= "01" when input(3) = '1' else "00";
count这个+
操作符是组合的,可以合成。+
可以运行
直接在整数
和实数
上操作,并在标准逻辑向量
上操作
需要使用软件包才能包含必要的功能。从您的代码来看,您似乎使用了:
library ieee;
use ieee.std_logic_unsigned.all;
即使有这个名称,这也是一个非IEEE标准的软件包,并且是另一个选择
IEEE标准包是IEEE.numeric\u std
请注意,根据您的代码,看起来您正在使用一个2位向量
计算4位向量中1的数量,因此如果所有4位都是1,则2位
向量将溢出并显示值0
计数1的另一个实现是生成一个函数,该函数使用
ieee.numeric_std软件包,结果长度为3位,看起来
比如:
该函数也是可合成的,因为循环被展开以实现
所需的硬件量,就像问题中的显式代码一样。这个
然后,可以使用函数使计数
:
count <= cnt_1s(input);
计数
count <= cnt_1s(input);