【问题标题】:How FPGA inferrs the VHDL constatns in the Design after synthesis综合后 FPGA 如何推断设计中的 VHDL 常量
【发布时间】:2019-08-14 15:29:14
【问题描述】:

综合后我无法识别 FPGA 中的 VHDL 常量。 在综合后,我能够在网表中识别我的逻辑。但不适用于常量参数。 FPGA 中是否真的会推断出常量?

【问题讨论】:

  • 我投票结束这个问题,因为它不是关于编程的。 (这是关于硬件设计的。)电子堆栈交换网站会更合适。
  • 这是关于合成器的工作原理,我认为这是 RTL 的基本关键之一。

标签: vhdl fpga


【解决方案1】:

合成器可简化您的设计。
合成器减少逻辑方程以去除常数并使用更少的 LUT。
因此,您的常量包含在 LUT 中。

一个例子,当你写的时候:

constant C_CONSTANT : std_logic_vector(3 downto 0) := "1111"
...
if a = C_CONSTANT then
  b <= '1';
else
  b <= '0';
end if;

逻辑方程为:

   b = eq(a(0),C_CONSTANT(0)).eq(a(1),C_CONSTANT(1)).eq(a(2),C_CONSTANT(2)).eq(a(3),C_CONSTANT(3))  
=> b = (a(0).C_CONSTANT(0) + /a(0)./C_CONSTANT(0)).(a(1).C_CONSTANT(1) + /a(1)./C_CONSTANT(1)).(a(2).C_CONSTANT(2) + /a(2)./C_CONSTANT(2)).(a(3).C_CONSTANT(3) + /a(3)./C_CONSTANT(3))
=> b = (a(0).1 + /a(0).0).(a(1).1 + /a(1).0).(a(2).1 + /a(2).1).(a(3).1 + /a(3).0)
=> b = a(0).a(1).a(2).a(3)

常数已因逻辑简化而消失。合成器的作用完全相同:
用这个 LUT 的真值表:

【讨论】:

  • LUT 如何存储常量静态参数。其中 LUT 用于正确开发算术方程。
  • 我已经编辑了我的答案。您对这些细节了解吗?您可以将 LUT 视为可编程存储器。他们来这里是为了实现逻辑方程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多