首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA/CPLD设计中的逻辑复制

FPGA/CPLD设计中的逻辑复制

FPGA/CPLD设计中的逻辑复制

  逻辑复制时一种通过增加面积而改善时序条件的优化手段。逻辑复制最常使用的场合时调整信号的扇出。如果某个信号需要驱动后级很多单元,换句话说,也就是其扇出非常大,那么为了增加这个信号的驱动能力,就必须插入很多级Buffer,这样就在一定程度上增加了这个信号的路径延时。这时可以复制生成这个信号的逻辑,用多路同频同相的信号驱动后续电路,使平均到每路的扇出变低,这样不需要插入Buffer就能满足驱动能力增加的要求,从而节约该信号的路径延时。
  先来做个实验吧:
  EX1:
  input a,b,c,d;
  input sel;
  output dout;
  assign dout = sel ? (a+b)c+d);

  从综合出来的来看,ADDER内部应该是使用了两个加法器,分别做好了(a+b)和(c+d)的运算,然后把结果送到后端2选1选择器的输入,所以此代码的设计时综合出了两个加法器和一个2选1选择器。
  EX2:
  input a,b,c,d;
  input sel;
  output dout;
  wire ab,cd;
  assign ab = sel ? a:c;
  assign cd = sel ? b:d;
  assign dout = ab+cd;

  从这个视图看出,综合出来的斯两个2选1选择器和一个加法器。相比较两个不同的设计语法(其目的是一样的),EX1占用的资源多一些,但是速度快些;而EX2恰恰时相反。
  相对于EX2来说,我们似乎更倾向于这种设计方式,因为它节约资源。但是另一方面来说,EX1就是一种逻辑复制的设计方法,因为本来我们在这个设计中只要一个加法器就可以了(如EX2),但是为了加快速度,我们就需要逻辑复制这个设计方法(如EX1),这个实验中就是利用两个加法器,用增加面积为代价换来了速度。从另一个角度说,逻辑复制也可以说是面积换速度的一个特例。
  需要说明的时,现在很多综合工具都可以自动设置最大扇出值,如果某个信号的扇出值大于最大扇出值,则该信号将会自动被综合工具复制。
继承事业,薪火相传
返回列表