Vin*_*ura 2 comparison synthesis vhdl hardware-programming vivado
我是VHDL/FPGA编程的初学者.我想比较两个32位std_logic_vector的.我目前正在使用:
if ( RX_FRAME(to_integer(s_data_counter)).Data /= REF_FRAME(to_integer(s_data_counter)).Data ) then
s_bad_frame <= '1';
state <= DONE;
end if;
Run Code Online (Sandbox Code Playgroud)
这里RX_FRAME和REF_FRAME是2个的阵列std_logic_vector(31 downto 0)
我想知道综合工具如何转化/=为硬件.是否可以使用它?或者我应该做一个XOR有关的向量并检查结果向量对零?如果我执行XOR并检查零,是否会增加所需的硬件数量?我使用的是Vivado Design Suite 2015.3.
你应该做比较,/=真正受益于像VHDL这样的语言和Xilinx Vivado等高级综合工具.
然后,综合工具将使用FPGA中的内部LUT实现此功能,可能具有类似于用于变量参数的XOR门的功能,或者如果其中一个参数评估为常数,则为AND/NOT门.查看实际实现的最佳方法是在显示已实现设计的工具中显示GUI视图.
但是,通过自己做XOR门来开始双重猜测该工具通常是一个坏主意,因为该工具通常更好地确定最佳实现.但是,如果您遇到该工具无法识别特定构造并选择有效的实现,那么在编码样式附近引导该工具可能是一个好主意,但是对于这样的比较/=很少这样.