首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 浅谈高速FPGA设计的一些要点
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
浅谈高速FPGA设计的一些要点
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-12-2 22:22
|
只看该作者
浅谈高速FPGA设计的一些要点
设计师
,
设计者
,
知识
大家在做FPGA设计时,首先肯定追求功能是否满足要求,等Behavior Simulation通过后,就开始布局布线的考虑,如果时序方面达不到设计指标要求,就要对设计做调整修改,有时这种调整修改比较容易做到,但很多时候,并不是那么简单,有时侯甚至要重新确定设计方案。如果设计者一开始就能对那些有可能关系到时序的因素做考虑,那么就减少了后期的烦恼。关于高速FPGA的设计,牵涉到很深的知识,需要设计师具备深厚扎实的理论知识(算法)与长期的实践经验的积累,同时我觉得也是FPGA相对于DSP最有魅力的地方——细节的地方你必须也要注意到,否则你仍然完成不了。
后面我会把自己知道的一点东西与大家分享,由于自己能力有限,希望能起到抛砖引玉的作用。
我们考虑的高速设计主要有三个方面:
(1)模块每单位时间处理的数据量;
(2)系统关键路径的延时,有建立时间、组合逻辑延时、布线延时等组成;
(3)输出数据相比数据输入的延时。
下面分别介绍可能采用的策略:
关于提高系统每单位时间处理的数据量(吞吐量),需要提到流水线(pipeline)的概念。假设输入的数据X(1bit)需要经过三个运算模块A,B,C,才能输出如下图所示:
假设每个单元的处理都在时钟的驱动下完成,且延迟一个时钟就能得到输出,那么输入需要经过3个CLK才能输出,每输入一个数据就要等3个CLK才能再次输入,即每个时钟平均处理1/3(bit)的数据量,实际上我们可以看到,当B单元在工作时,A、C单元都处于闲置状态,假如A、C也能处于工作状态是不是效率就提高了呢?答案是肯定的,我们用三个寄存器将各个单元拆开,如下图所示:
虽然现在每输入一个数据要6个CLK的处理流程,但数据可以持续地输入,持续地输出,从整体看,每个CLk平均处理1bit的数据量,这就是我们所说的流水线操作,当然所付出的代价就是增加了几个寄存器(面积),但从系统的角度看,这样做是值得的。
系统的关键路径就是限制系统能跑多高速度(及CLK周期的限制)的那些路径,即在系统中任意两个时序元件间的延时的最大值决定了系统的时钟速率。CLK能达到的最大值为:
其中Tcomb为组合延时,若关键路径的组合延时太大势必会影响到时钟的提高,一般可以采用寄存器分割的方法将组合逻辑拆分成几个部分。那么如何拆分组合逻辑呢?譬如说,如果你的FPGA是基于4输入LUT的,那么如果第一个REG的输出经过判断逻辑与第二个REG的输入相连,而且判断逻辑条件大于四个输入,那就要由多个LUT级联组合才能完成,这就引入一级组合逻辑延迟,我们要减少组合逻辑,无非就是要输入条件尽可能的少,逻辑层次尽可能少,这样就可以使级联的LUT更少,从而减少了组合逻辑引起的时延。我的一个清晰的印象是自己在写代码时发现,如果if语句嵌套了许多层那么在做仿真的时候能够明显地看到延迟增加了许多。看一个简单的例子,假如只有一层判断逻辑如下:
综合出来的RTL为
Place&Route后的仿真波形如下,注意延时为6027ps
现在我让它通过3层判断逻辑:
RTL模型与布局布线后仿真分别如下,注意延时为6033ps
我们看到判断逻辑的层次增加导致延时的增加。注意如果判断逻辑之间要经历几个模块,那么延时会急剧增加。即,我们能将关键路径拆分成两个更小的路径(可以通过添加寄存器来实现)可以改善时序。
当然为达到高速设计的目的,需要付出的代价是增加面积,本来可以复用的模块现在做了多块,当然减轻了对时序的压力(即关键路径的延时能降低的更多)。实现时,设计者需找到关键路径,合理调整逻辑,使之最小化。这是一个需要在实践中慢慢体会才会掌握的技能,可以说每个具体的问题的解决方法都不相同,特别要注意,实际的逻辑是如何运作的,这对时序的改善有直接的影响,否则虽然时序被你“改善”了,功能却不对了!
附件大小附件大小
pipeline1.JPG
7.35 KB
pipeline2.JPG
9.28 KB
clk_max.JPG
7.36 KB
yiceng.JPG
10.41 KB
rtl1.JPG
54.01 KB
wave1.JPG
24.28 KB
3ceng.JPG
14.77 KB
rtl2.JPG
77.73 KB
wave2.JPG
34.5 KB
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议