华为FPGA设计高级技巧xilnx篇-阅读笔记2

  • 设计技巧
    • 合理选择加法电路
      • 串行进位与超前进位
      • 使用圆括号处理多个加法器
    • IF语句和Case语句:速度与面积的关系。
    • 减少关键路径的逻辑级数
      • 通过等效电路,赋予关键最高优先级
      • 调整if语句中条件的先后次序
      • 合并if语句,提高设计速度
    • 组合逻辑与时序逻辑分离
    • 利用电路的等价特性,巧妙地分配延时
    • 复制电路,减小扇出(fanout),提高设计速度
    • 高效利用IOB

设计技巧

设计技巧主要从处理速度和面积着手,其中处理速度与面积的一个原则是:向关键路径(部分)要时间,向非关键部分(部分)要面积
为了获得更高的速度,应当尽量减少关键路径上的LUT级数,尽量压缩线延时;为了获得更小的面积,在非关键路径(部分)上尽量优化电路结构,压缩面积

合理选择加法电路

串行进位与超前进位

串行进位加法结构如图

超前进位加法器结构

由上图可以知道串行进位加法结构的面积较小,但速度较慢,超前进位加法结构虽然速度较快,但是面积相较来说较大。另外FPGA底层结构可知,进位链是FPGA专有的资源,因此通过FPGA专有的资源设计,比用逻辑设计得到的串行进位加法速度要快很多。

使用圆括号处理多个加法器

控制设计结构的另一种方法是使用圆括号来定义逻辑分组。
例如 z<=A+B+C+D;
电路 结构如图:

用圆括号重构后的加法如下:
Z<=(A+B)+(C+D);
电路结构如图:

上面两种方法在速度和面积上都有差别
第一种方法:面积小,但速度较慢。但是,如果信号D是关键路径,其他信号是非关键路径;或者,设计中关键路径与A,B,C,D无关,应当采用这种方法。
第二种:面积较大,但是速度较快。如果对A,B,C,D的时序都要求比较苛刻,应当采用这种方法。

IF语句和Case语句:速度与面积的关系。

if语句指定了一个优先级编码逻辑,而case语句生成的逻辑是==并行的,不具有优先级,==因此case语句速度较if语句速度较快。但是面积较if语句较高。另外if-else可以实现嵌套,但是不正确的使用嵌套会导致使用的设计需要更大的延时。在用IF语句实现对延时要求苛刻的路径时,应将最高优先级给最迟到达的关键信号(critical signal)。有时为了兼顾面积和速度,可以将IF和Case语句结合来用。

减少关键路径的逻辑级数

在FPGA设计中,关键路径(critical path)上的每一级逻辑增加延时。为了确保能满足时间约束,就必须对设计的行为进行描述时考虑逻辑级数。减少关键路径延时的最常用方法是给最迟到达的信号最高的优先级,这样可以减少关键路径的逻辑级数

通过等效电路,赋予关键最高优先级

例如经过两级逻辑的cirtical信号结构如图:


修改code 减少critical路径的逻辑级数,电路结构如图:

该方法对FPGA影响较小,对ASIC设计有效。

调整if语句中条件的先后次序

在使用if-else 语句时将关键路径的优先级设置为最高。例如

if 条件1 do action1
else if 条件2do action2
else if 条件3do action 3........

如果条件3是关键路径信号,则可以调整为

if 条件3 do action1
else if 条件2do action2
else if 条件1do action 1........

合并if语句,提高设计速度

例如

if 条件1
信号置1
else if条件2
信号置0
else if 条件3
信号置1
else if条件4
信号置0
......

如果上述条件没有优先级,为了获得更高的速度,可以将if语句中的条件合并例如:

if 条件1 || 条件3
信号置1
else if 条件2 || 条件4
信号置0
.....

组合逻辑与时序逻辑分离

包含寄存器的同步存储电路和异步组合逻辑应分别在独立的进程中完成,组合逻辑中关联性强的信号应放在一个进程中,这样在综合后面积和速度指标较高,例如在三段式状态机中通常逻辑部分是与时序部分的状态转换,输出分别在不同的部分进行设计的。例如

利用电路的等价特性,巧妙地分配延时

在功能等价的情况下,可以根据时序需要,安排组合逻辑电路在寄存器前后的位置,合理分配延时。
例如组合逻辑在寄存器之后
其中a,b信号的延时非常大 电路结构如图

组合逻辑放在寄存器之前
如果a,b信号的延时并不大,而寄存器c信号经过的逻辑较多,延时大,则
电路结构如图

这种处理的本质是将关键路径中的部分延时挪到其他非关键路径上

复制电路,减小扇出(fanout),提高设计速度

提高关键路径速度的一个常用方法就是复制电路,减少关键路径的扇出。当一个信号网络所带负载增加时,其路径延时也相应的增加。

高效利用IOB

在IOB中包含有输入寄存器(或锁存器),输出寄存器和输出三态控制寄存器,在设计中应当尽量利用IOB中的寄存器(可在布局布线工具中进行设计),减少CLB的使用量。
在设计中:进入FPGA内部的信号,尽量经过register 从FPGA出来的信号也尽量经过register
1.IOB本身就有register,不用白不用。
2.FPGA内部线延时难以控制,如果不经过register 将增加input delay 和 output delay 对外部寄存器速度的要求更加苛刻,时序容限缩小。
合理利用IOB资源的建议
1.所有的输入输出信号都经过寄存器的处理。这样做能够放宽对外部电路或其他芯片的时序要求,提高单板设计速度,并且,IOB中的寄存器不用白不用。
2.在处理双向口试,为了将三态控制寄存器,输入输出寄存器,三态电路都移入IOB中,减少CLB的使用量,应当:
1.采用同样的始终触发。
2.同样的复位电路。
3.每个输出信号都有独立的三态控制信号。(一个输出对应一个三态控制寄存器)并且三态控制寄存器直接来至急促其。三态控制信号不许共用;
4. 三态控制低电平有效,否则三态寄存器无法引进IOB ,增加信号输出延时。

华为FPGA设计高级技巧xilnx篇-阅读笔记2相关推荐

  1. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一

    阿里云天池大赛赛题解析(深度学习篇)–阅读笔记1 [x]表示遇到不懂的知识,将在[知识补充]给出具体讲解. 文章目录 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1 前言 赛题一 瑞金医院MMC人 ...

  2. 货运服务网络设计:经典文献阅读笔记(3)复现Netplan

    **货运服务网络设计:经典文献阅读笔记(2)**提到说要把Crainic T G(1984年)文献使用的模型复现一下,但是文章给出的通用框架还是太笼统,在尝试后决定使用Jacques Roy & ...

  3. 华为FPGA设计设计规范

    最近看到了一份华为早年的FPGA设计规范文档,分享给大家. 前言 本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证.编写本流程的目的是: 在于规范整个设计流程,实现 ...

  4. 人月神话第一篇阅读笔记

    我先通读了全本书,对整书的大概内容进行了了解.第一遍的阅读中我知道了许多.软件开发的多少人参与和完成时间不成正比的,过多的人参与并不一定能缩短开发时间.如战争,部队多,人多并不是关键,更多需要武器的先 ...

  5. 《NASA对N+3代先进飞行器概念设计最终报告》阅读笔记

    民用航空的爆炸式增长已是未来的必然,灿烂的前景也意味着巨大的挑战,谁能发掘到未来技术的潜力,谁就能称霸下一个30年的天空! 文章目录 总概述 单双争霸 四点发现 方案分析 多维度分析 设计要求 品质因 ...

  6. linux 内存管理优化,Linux性能优化实战 内存篇 阅读笔记

    第十五讲 基础篇:Linux内存是怎么工作的(2020.6.8) 这一讲相关的内容正好之前看csapp的时候总结了一下,可以直接贴出来作为总结了. Linux的内存工作原理,这又是一个特别大的话题.一 ...

  7. 货运服务网络设计:经典文献阅读笔记(1)

    服务网络设计 --(1984,Crainic,Multicommodity, Multimode Freight Transportation: A General Modeling and Algo ...

  8. 《Redis设计与实现》阅读笔记(二)--简单动态字符串

    简单动态字符串 Redis只在一些无需对字符串进行修改的地方使用C字符串,大部分时候使用简单动态字符串(simple dynamic string, SDS),字符串的抽象类型.二进制安全,可以存放任 ...

  9. idl linux运行效率,Linux性能优化实战 CPU篇 阅读笔记

    第十一讲 如何快速分析出CPU的性能瓶颈(2020.6.3) 这一讲干活真是太多了,将之将使用的各种工具串联起来.其实系统出问题之后第一感觉就是感觉就是系统相应变慢了.我们可以使用<> 里 ...

最新文章

  1. 【论文】ICLR 2020 九篇满分论文!!!
  2. 一天中每个小时段我都起来过,都睡过。
  3. .html?t=1a=2类似传递参数到flex中
  4. Apache 2.4配置反向代理
  5. scala中命名参数函数_Scala中带有命名参数的函数
  6. 创建variant二维数组
  7. 蓝桥杯 ALGO-34算法训练 纪念品分组(贪心算法+排序)
  8. Lumerical官方案例、FDTD时域有限差分法仿真学习(五)——液晶(liquid crystal)
  9. Chrome插件--IDM
  10. 【MySQL 09】安装mysql时出现:需要这两个包perl(Data::Dumper),perl(JSON)
  11. docker 容器共享数据_如何在Docker容器之间共享数据
  12. javaScript案例——二级联动、三级联动、省市区三级联动
  13. find()和findIndex()区别和用法
  14. FinalShell 远程工具(即xshell,xftp,远程桌面连接一体)
  15. 【5G RLC】AM模式的数据传输详解
  16. 安装pyltp模块详细教程(windows下python安装)
  17. java图片加气泡文字,动态图片加气泡文字 微信动态图片加文字教程
  18. 丹琦女神出品|开放域问答综述
  19. 2020CCFBDCI通用音频分类CNN方案(0.90+方案)
  20. python爬虫(以简书为例)

热门文章

  1. Python 画图学习入门
  2. 什么样的人适合做项目经理
  3. 海康监控H5 实时视频监控
  4. Mar. 6, 15:00-17:00, 1493, Strichartz analysis for Schrodinger and wave equation I by Chong Chen
  5. 2020年自考专科可以自考本科吗丨自考专科、自考本科能同时考吗
  6. java字符乱码问题_怎么解决java中的字符乱码问题
  7. shell 脚本中求一个字符串的长度
  8. 用python cv2将三维RGB图像转为二维灰度图像的小demo
  9. 汇编 端口 shl和shr指令
  10. [CentOS8+gitlab-ce本地配置手顺]