我想将向量的位 OR 在一起。因此,假设我有一个称为向量的向量example(23 downto 0)
,并且我想将所有位 OR 到另一个向量中,有没有什么方法可以做到这一点而不涉及 go example(0) or example(1) or ...example(23)
?
VHDL:将向量的位进行或运算
电器工程
视频文件
2022-01-08 04:56:58
2个回答
or_reduce
是你想要的,它在std_logic_misc
. FPGA 的 A 和 X 均支持。
Verilog 有一个方便的“归约运算符”,它可以完全满足您的要求:|example[23:0]
给出对example
向量的所有位进行 OR 运算的结果。
不幸的是,VHDL 没有这个运算符。不过根据comp.lang.vhdl FAQ
没有预定义的 VHDL 运算符来对向量的所有位执行归约操作(例如,“或”向量的所有位)。但是,归约运算符可以很容易地实现:
[跳过不处理“X”和“Z”值的示例]
function or_reduce( V: std_logic_vector ) return std_ulogic is variable result: std_ulogic; begin for i in V'range loop if i = V'left then result := V(i); else result := result OR V(i); end if; exit when result = '1'; end loop; return result; end or_reduce; ... b <= or_reduce( b_vec );
其它你可能感兴趣的问题