《数字信号处理的FPGA实现》读书笔记文档格式.docx

上传人:b****6 文档编号:18998284 上传时间:2023-01-02 格式:DOCX 页数:6 大小:21.34KB
下载 相关 举报
《数字信号处理的FPGA实现》读书笔记文档格式.docx_第1页
第1页 / 共6页
《数字信号处理的FPGA实现》读书笔记文档格式.docx_第2页
第2页 / 共6页
《数字信号处理的FPGA实现》读书笔记文档格式.docx_第3页
第3页 / 共6页
《数字信号处理的FPGA实现》读书笔记文档格式.docx_第4页
第4页 / 共6页
《数字信号处理的FPGA实现》读书笔记文档格式.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

《数字信号处理的FPGA实现》读书笔记文档格式.docx

《《数字信号处理的FPGA实现》读书笔记文档格式.docx》由会员分享,可在线阅读,更多相关《《数字信号处理的FPGA实现》读书笔记文档格式.docx(6页珍藏版)》请在冰豆网上搜索。

《数字信号处理的FPGA实现》读书笔记文档格式.docx

所以关键还是画好状态转移图,其他就相对简单了。

visualhdl+ISE+synplifyPro+modelsim!

1.设计输入

1)设计的行为或结构描述。

2)典型文本输入工具有UltraEdit-32和Editplus.exe.。

3)典型图形化输入工具-Mentor的Renoir。

4)我认为UltraEdit-32最佳。

2.代码调试

1)对设计输入的文件做代码调试,语法检查。

2)典型工具为Debussy。

3.前仿真

1)功能仿真

2)验证逻辑模型(没有使用时间延迟)。

3)典型工具有Mentor公司的ModelSim、Synopsys公司的VCS和VSS、Aldec公司的Active、Cadense公司的NC。

4)我认为做功能仿真Synopsys公司的VCS和VSS速度最快,并且调试器最好用,Mentor公司的ModelSim对于读写文件速度最快,波形窗口比较好用。

4.综合

1)把设计翻译成原始的目标工艺

2)最优化

3)合适的面积要求和性能要求

4)典型工具有Mentor公司的LeonardoSpectrum、Synopsys公司的DC、Synplicity公司的Synplify。

5)推荐初学者使用Mentor公司的LeonardoSpectrum,由于它在只作简单约束综合后的速度和面积最优,如果你对综合工具比较了解,可以使用Synplicity公司的Synplify。

5.布局和布线

1)映射设计到目标工艺里指定位置

2)指定的布线资源应被使用

3)由于PLD市场目前只剩下Altera,Xilinx,Lattice,Actel,QuickLogic,Atmel六家公司,其中前5家为专业PLD公司,并且前3家几乎占有了90%的市场份额,而我们一般使用Altera,Xilinx公司的PLD居多,所以典型布局和布线的工具为Altera公司的QuartusII和MaxplusII、Xilinx公司的ISE和Foudation。

4)MaxplusII和Foudation分别为Altera公司和Xilinx公司的第一代产品,所以布局布线一般使用QuartusII和ISE。

6.后仿真

1)时序仿真

2)验证设计一旦编程或配置将能在目标工艺里工作(使用时间延迟)。

3)所用工具同前仿真所用软件。

7.时序分析

4)一般借助布局布线工具自带的时序分析工具,也可以使用Synopsys公司的PrimeTime软件和MentorGraphics公司的Tautiminganalysis软件。

8.验证合乎性能规范

1)验证合乎性能规范,如果不满足,回到第一步。

9.版图设计

1)验证版版图设计。

2)在板编程和测试器件。

FPGAtoASIC有很多问题都要重新考虑。

随便举几个例子:

1。

时钟设计:

FPGA一般使用全局时钟资源,严格避免使用门控时钟。

而ASIC考虑到功耗等因素,应该建立时钟树结构。

2。

RAM,FIFO等基本模块;

FPGA设计一般用vendor提供的IP,认为vendor的IP的效率、稳定性、健壮性都很好。

但是ASCI中除非你购买,一般是没有免费的RAM,FIFO等IP,自己用HDL语言描述,要考虑很多问题,比如bist等,要对RAM的健壮性等加以测试,保障。

3。

同步时序设计:

FPGA提倡使用全同步时序设计,因为FPGA的基本可编程单元都是由固定比例的FF和4-LUT构成的。

而ASCI一切都是用逻辑门实现的,一个D触发器大概要消耗7个门左右(最少),而一个与非门用一个逻辑门就够了,所以大量使用FF,会造成规模的大幅度膨胀。

所以ASCI经常要使用大面积的组合逻辑。

4。

实现约束和设计思想,由于3所述的原因,ASIC与FPGA在时序约束和设计思想上都有很大的差异。

以前由于工作的需要,花了一些时间看了加法器设计方面的资料,当时就想稍为整理一下,只是太忙顾不上。

前几天有网友想讨论一下加法器的设计问题,我觉得讨论最好有个基础,于是整理出《加法器介绍》一文,希望起到抛砖引玉的作用,请大家批评指正。

加法器设计介绍

(1)

随着大规模、高速度FPGA的广泛应用,基于FPGA的定制DSP应用日渐普遍,与传统DSP处理方法相比较具有更高的速度、设计灵活、易于更改等优点。

常常应用于对设计方案和关键算法的验证。

定制DSP应用使设计者可以为特定的设计提供最佳的实现方案并缩短了开

发周期与成本。

在DSP运算中,加法是最常用的,如何设计好加法器是FPGA/ASIC设计的一个重要问题。

加法器的种类非常多,根据加数个数的不同,可以分为两个加数的加法器和多个加数的加法器;

根据进位的处理方式不同,可以分为进位传播加法器、进位保存加法器等,其中进位传播加法器又有很多不同的实现方式,例如行波进位加法器、超前进位加法器、carry-skip加法器、carry-select加法器等,各种加法器之间的关系入图1所示。

图1把加法器分为1-bit加法器、进位传播加法器(Carry-propagateadders)、进位保存加法器(Carry-saveadders)和多操作数加法器(multi-operandadders)等4大类。

其中1-bit加法器完成两个位宽为1比特的操作数相加,包括半加器(HA,HalfAdder)、全加器(FA,FullAdder)等类型。

进位传播加法器的种类比较多,有行波进位加法器(RCA,ripple-carryadder)、进位skip加法器(CSKA,carry-skipadder)、进位选择加法器(CSKA,carry-selectadder)、进位递增加法器(CIA,carry-incrementadder)、超前进位加法器(CLA,carry-lookaheadadder)、并行前缀加法器(PPA,parallel-prefixadder)、条件累加加法器(COSA,conditional-sumadder)等,这样划分的根据是进位的处理方法不同。

众所周知,加法器的关键路径在进位链上,例如为了实现一个32比特的加法器,如果不考虑来自低位的进位,那么可以用32个1-bit加法器,把两个操作数按位相加,经过1-bit加法器的延迟就可以得到加法的结果,这样的“加法器”面积小、速度快。

但是实际情况却不是那么理想,高位的结果和低位的进位是密切相关的,因此在得到低位的进位之前,高位无法输出相加结果,也就是说第1位进位产生后,才能产生结果的第2比特和进位,然后产生第3比特的结果和进位,如此类推,可见,需要很长时间才能得到第32位的结果和进位。

在这个过程中,由于进位传播的存在严重影响了加法器的速度,为了解决这个问题,人们设计了多种不同的进位传播方式,希望减小关键路径的长度,相应地产生了很多中不同地进位传播加法器。

进位保存加法器(CSA)是一种特殊的加法器,它把进位作为加法的输出结果,而不作为中间结果并传递到高位去,从而避免了进位的传播过程。

例如使用CSA实现10110+00111时,相加的结果包括两个部分,一是不考虑进位的按位相加结果10001,第二部分是进位00110,最终的结果是把这两个部分加起来,即10001+(00110&

&

1),但是把“两个部分加起来”这个操作不是CSA的一部分。

CSA加法器由3个输入(即两个操作数和1个进位输入),或者2个输入(只有两个操作数,没有进位输入)。

CSA可以用多个全加器实现,CSA的延迟是个常数,与操作数的位数无关,这是一个很重要的特点。

多操作数加法器(multi-operandadders)完成3个或以上操作数的相加,包括阵列加法器和树状加法树等,其中阵列加法器一般用CSA实现,CSA做多操作数的加法具有很大的优势。

下次进一步介绍各种加法器的特点、结构和实现方法。

亚稳态与设计可靠性

设计数字电路时大家都知道同步是非常重要的,特别当要输入一个信号到一个同步电路中,但是该信号由另一个时钟驱动时,这是要在接口处采取一些措施,使输入的异步信号同

步化,否则电路将无法正常工作,因为输入端很可能出现亚稳态(Metastability),导致采样错误。

这里我们对亚稳态的起因、危害、对可靠性的影响和消除仿真做一些介绍。

1.亚稳态发生的原因

在同步系统中,如果触发器的setuptime/holdtime不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值。

这段之间成为决断时间(resolutiontime)。

经过resolutiontime之后Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。

2.亚稳态的危害

由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出0~1之间的中间电压值还会使下一级产生亚稳态(即导致亚稳态的传播)。

逻辑误判有可能通过电路的特殊设计减轻危害(如异步FIFO中Gray码计数器的作用),而亚稳态的传播则扩大了故障面,难以处理。

3.亚稳态的解决办法

只要系统中有异步元件,亚稳态就是无法避免的,因此设计的电路首先要减少亚稳态导致错误的发生,其次要使系统对产生的错误不敏感。

前者要靠同步来实现,而后者根据不同的设计应用有不同的处理办法。

用同步来减少亚稳态发生机会的典型电路如图1所示。

在图1中,左边为异步输入端,经过两级触发器同步,在右边的输出将是同步的,而且该输出基本不存在亚稳态。

其原理是即使第一个触发器的输出端存在亚稳态,经过一个CLK周期后,第二个触发器D端的电平仍未稳定的概率非常小,因此第二个触发器Q端基本不会产生亚稳态。

注意,这里说的是“基本”,也就是无法“根除”,那么如果第二个触发器Q出现了亚稳态会有什么后果呢?

后果的严重程度是有你的设计决定的,如果系统对产生的错误不敏感,那么系统可能正常工作,或者经过短暂的异常之后可以恢复正常工作,例如设计异步FIFO时使用格雷码计数器当读写地址的指针就是处于这方面的考虑。

如果设计上没有考虑如何降低系统对亚稳态的敏感程度,那么一旦出现亚稳态,系统可能就崩溃了。

4.亚稳态与系统可靠性

使用同步电路以后,亚稳态仍然有发生的可能,与此相连的是MTBF(MeanTimeBetweenFailure),亚稳态的发生概率与时钟频率无关,但是MTBF与时钟有密切关系。

有文章提供了一个例子,某一系统在20MHz时钟下工作时,MTBF约为50年,但是时钟频率提高到40MHz时,MTBF只有1分钟!

可见降低时钟频率可以大大减小亚稳态导致系统错误的出现,其原因在于,提供较长的resolutiontime可减小亚稳态传递到下一级的机会,提高系统的MTBF,如图2所示。

5.总结

亚稳态与设计可靠性有非常密切的关系,当前对很多设计来说,实现需要的功能并不困难,难的是提高系统的稳定性、可靠性,较小亚稳态发生的概率,并降低系统对亚稳态错误的敏感程度可以提高系统的可靠性。

模块划分非常重要,除了关系到是否最大程度上发挥项目成员的协同设计能力,而且直接决定着设计的综合、实现时间。

下面是一些模块划分的原则。

a.对每个同步设计的子模块的输出使用寄存器(registering)。

也即用寄存器分割同步时序模块的原则。

使用寄存器的好处有:

综合工具在编译综合时会将所分割的子模块中的组合电路和同步时序电路整体考虑。

而且这种模块结构符合时序约束的习惯,便于使用时序约束熟悉进行约束。

b.将相关的逻辑或者可以复用的逻辑划分在同一模块内。

这样做的好处有,一方面将相关的逻辑和可以复用的逻辑划分在同一模块,可以最大程度的复用资源,减少设计消耗的面积。

同时也更利于综合工具优化一个具体功能(操作)在时序上的关键路径。

其原因是,综合工具只能同时考虑一部分逻辑,而所同时优化的逻辑单元就是模块,所以将相关功能划分在同一模块更有利于综合器的优化。

c.将不同优化目标的逻辑分开。

好的设计,在规划阶段,设计者就已经思考了设计的大概规模和关键路径,并对设计的优化目标有一个整体上的把握。

对于时序紧张的部分,应该独立划分为一个模块,其优化目标为“speed”,这种划分方法便于设计者进行时序约束,也便于综合和实现工具进行优化。

比如时序优化的利器Amplify,使用模块进行区域优化更方便一些。

另一类矛盾集中在面积的设计,也应该划分成独立的模块,这类模块的优化目标是“Area”,同样将他们规划到一起,更有利于区域布局与约束。

这种根据优化目标进行优化的方法的最大好处是,对于某个模块综合器仅仅需要考虑一种优化目标和策略,从而比较容易达到较好的优化效果。

相反的如果同时考虑两种优化目标,会使综合器陷入互相制约的困境。

d.将松约束的逻辑归到同一模块。

有些逻辑的时序非常宽松,不需要较高的时序约束,可以将这类逻辑归入同一模块,如多周期路径“multi-cycle”等。

将这些模块归类,并指定松约束,则可以让综合器尽量的节省面积资源。

e.将RAM/ROM/FIFO等逻辑独立划分成模块。

这样做的好处是便于综合器将这类资源类推为器件的硬件原语,同时仿真时消耗的内存也会少些,便于提高仿真速度。

(大多数仿真器对大面积的RAM都有独特的内存管理方式)f.合适的模块规模。

规模大,利于“ResourceSharing”。

但是对综合器同时处理的逻辑量太大,不利于多模块和增量编译模式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1