时序设计规范1V0教材Word格式.docx
- 文档编号:19228603
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:51
- 大小:1.54MB
时序设计规范1V0教材Word格式.docx
《时序设计规范1V0教材Word格式.docx》由会员分享,可在线阅读,更多相关《时序设计规范1V0教材Word格式.docx(51页珍藏版)》请在冰豆网上搜索。
目标器件的硬件架构及推荐设计
我们常用的目标器件主要来自XILINX和ALTERA两家公司,2者之间存在结构上的差异,各有各的优势,本文挑选两家公司各2款器件进行介绍,一款是当前大量使用的,另一款为下一代产品,因目标器件硬件构成单元众多,无法全面覆盖,仅挑选与我们设计关联度较高的几个部分进行介绍——逻辑宏单元,块存储器资源、时钟树结构和IO块资源。
1、XILINX宏单元为CLB,ALTERA为LAB,2者为逻辑器件的最小颗粒,下表为SPARTAN6(以下简称S6)和CYCLONE4(以下简称C4)最小颗粒的资源比较。
表1.1逻辑宏单元比较
S6
C4
CLB
LAB
SLICE*2
LE*16
6-inputLUTS
4*2
4-inputLUTS
1*16
REG
8*2
总体而言,XILINX的宏单元功能更强大,其LUT可映射为分布式RAM/FIFO的同步存储单元,且SLICE中含有多个路由选通功能,可实现更复杂的逻辑功能。
ALTERA则相对简单,所有的LE都是一样的结构(XILINX的SLICE分为3种不同结构),进位链资源更丰富(XILINX的CLB中仅有1/2的SLICE具有进位链资源),一定程度上弥补了4输入相较于6输入的劣势。
2、在BRAM资源上,2者差异如表1.2所示,
表1.2BRAM资源对比
容量
18K
9K
SDP(简单双端口)模式最大位宽
36bit
支持拆分
等于2个独立的9K存储器
等于2个独立的4.5K存储器
其他
无
可作为移位寄存器使用
XILINX在最新的7系列器件中,进一步加大了BRAM的容量(36K),且支持Built_in模式FIFO,不再需要调用逻辑生成FIFO的控制逻辑,具有更好时序性能。
3、时钟树的结构上,XILINX比ALTERA更复杂,表1.3列出了部分对比关系。
表1.3时钟资源对比
BUF资源
BUFG/BUFIO/BUFH
BUFG
时钟管理单元
PLL+DCM
PLL
在实际应用中,很多差异都由软件屏蔽了,需要注意的是,XILINX支持区域时钟这个概念,而且在它最新的7系列产品中,区域时钟被强化,这有利于超大资源器件更好地收敛时序。
4、XILINX的IOE比ALTERA的多了串并转换单元,延迟线控制更方便,表1.4为对比关系表。
表1.4IOE资源对比
单沿采样寄存器(SDR)
有
双沿采样寄存器(DDR)
延迟线资源
有,可例化,参数配置延迟
自动配置或chip_planner手动设置
串并转换器
无(此处非指GXP资源)
1.1、XILINX器件
1.1.1、SPARTAN6
1.1.1.1、CLB结构及推荐设计
S6的CLB结构和C4的LAB有很大的差异,S6采用6输入查找表,C4为4输入,S6的CLB进一步分为SLICE,布局上如图1.1分别置于2个角,而C4的LAB由16个LE组成,LE都是垂直排列,详见相应章节。
图1.1CLB结构图
同一CLB的2个SLICE功能不同,SLICE0的功能更强,具有进位链、支持分布式RAM、移位寄存器SRL等功能,SLICE1仅有LUT基本功能。
SLICE分为三种,一个CLB至少含有1个SLICEX,另一个根据产品或者位置不同而不同,分布式RAM和移位寄存器SRL仅SLICEM支持。
表1.5SLICE分类
表1.6CLB资源
查找表LUT是FPGA与CPLD的主要区别之一,FPGA的组合逻辑实现在LUT里,CPLD则直接使用其富含的与非门等组合逻辑资源实现。
查找表可以近似的看做一片存储空间(分布式RAM正是基于此实现的),输入脚A[6:
1]看做这片空间的地址,多个信号之间的组合逻辑关系(真值表)可以存储到这片空间中,从而实现组合逻辑功能。
图1.2是S6的6输入查找表结构图,可见其是由2个5输入查找表构成的,以此类推,7输入/8输入的查找表也可以由6输入查找表组合而来。
图1.3为SLICEM的结构图,一个SLICE里含有4个LUT和8个REG,其他SLICE类型的结构图请参考文献1。
图1.26输入查找表结构图
图1.3SLICEM结构图
SLICEM是分布式RAM资源,表1.3为单个SLICEM可以配置的RAM类型,其详细的配置结构图见参考文献1。
从中可发现分布式RAM的最大深度应不超过256。
表1.7单个SLICEM可配置分布式RAM类型
表1.8单个SLICEM可配置分布式ROM类型
SLICEM还可以用来实现移位寄存器,图1.4为其结构图,一个LUT可实现一个32SRL,一个SLICE则可级联实现最大128SRL。
另外一个要注意的地方是,SRL不支持复位操作,故RTL代码中不要使用复位操作,否则可能无法调用SRL来实现,而是用REG实现。
图1.4移位寄存器SRL结构图
综上所述,根据S6的结构特点,为保持良好的时序性能,应遵守如下规则:
1、单个SLICE最大可配置为8输入LUT,做CASE或组合逻辑运算时对象应该不超过8;
2、RAM或FIFO的深度不超过64时,应调用分布式资源,64-128深度时需考虑下述条件:
a、需要异步读功能时,调用分布式资源;
b、宽度大于16bit时,调用blockRAM资源;
c、较小的Tco和布局限制,调用分布式资源;
3、尽量使用SRL移位寄存器资源,使用时,不要添加复位功能,其硬件上不支持复位,如果添加,综合工具最后可能不会调用SRL资源;
4、单个SLICE使用相同的控制信号(clk,clk_en,SR(set/reset)),对同一个always块里的信号使用相同的控制(信号极性一致/复位置位行为一致/使能一致);
5、XILINX推荐不使用全局复位信号进行初始化,而采用其GSR全局复位信号进行复位,GSR复位信号在配置阶段有效,而初值在申明信号的时候指定,如(Regdin=1’b0;
),但我们的代码都带有全局复位信号,如果复位时序无法通过,则需要考虑此推荐,同时如果使用了上述GSR模式,本地的复位要与GSR设定的值一致,即GSR复位为1,本地也应该复位为1;
6、SLICE中控制信号都是高电平有效,因此尽可能使用高电平有效信号,减少反向操作(消耗LUT资源);
1.1.1.2、BRAM结构及推荐设计
S6的BLOCKRAM为TRUEDUALPORTRAM真双端口RAM,ALTERA某些系列的产品采用假双端口RAM,同样容量的真双端口RAM,A需使用2倍资源才能实现。
下面是S6的BRAM特点,例化时应结合应用考虑这些特性:
1、最大容量18Kbit,其由2个独立的9Kbit组成,可单独例化9KbitBRAM;
2、truedualport(每个端口可读可写)模式时位宽最高18bit,但采用simpledualport(每个端口仅支持读或写一种操作)模式时,位宽可扩展至36bit,一般我们设计都是采用后者——简单双端口模式;
3、写操作有3种模式,写优先,读优先,不变。
分别定义写操作时,输出latch的值,写优先将最新的值输出,读优先将原来的值输出,不变模式下只要有写操作,值被锁定,不改变,默认是写优先;
4、如图1.5所示,可例化一个输出寄存器到BRAM中,以提高性能,但这样会额外增加一级延时。
Latch输出直接连到下一级逻辑,一般为CLB,因Latch相对于时钟有一定的延时,此延时应比寄存器的Tco大很多,当资源使用较多时,BRAM与逻辑之间可能相隔较远,很可能出现无法布通的情形,因此,加入一级寄存器做流水可提高时序性能。
5、复位管脚仅对输出LATCH或REG有效,对RAM里面的内容不起作用,必须通过写的方式进行刷新才能达到复位的效果,上电初始化可添加初始化文件配置RAM,不添加默认RAM内容为0,或进入BRAM_SDP_MACRO模块手动修改各bit值;
图1.5BRAM输出寄存器
1.1.1.3、时钟树结构及推荐设计
S6的时钟资源由4种类型的连接组成:
1、全局时钟输入管脚;
2、全局时钟缓冲/选通器(BUFG,BUFGMUX);
3、I/O时钟缓冲器(BUFIO2,BUFIO2_2CLK,BUFPLL);
4、水平时钟布线缓冲器(BUFH);
S6的2种时钟网络:
1、全局时钟网络:
向逻辑提供低偏移时钟布线;
2、IO区域时钟网络:
向SelectIO资源(SDR/DDR/IOSERDES)提供高性能、低偏移时钟布线;
S6的2种时钟配置资源:
1、DCM:
数字时钟管理单元
2、PLL:
锁相环
图1.6时钟网络架构
逻辑开发过程中,对时钟资源的设计一般只是将外部时钟资源进行倍频/分频操作,得到系统想要的时钟,时钟BUF等调用都是软件生成的,开发人员一般不操作,需要注意的地方并不多。
1、全局时钟输入管脚为专用管脚,不作为时钟管脚时可以当做普通IO管脚;
2、PLL资源够用的情况下尽量使用PLL,因其为模拟器件,输出时钟的质量(抖动)会更好,同时其输出时钟的个数/类型更多;
3、使用IOSERDES/DDR/SDR等IO块内的资源时,注意调用BUF的类型(应使用BUFIO2等专用资源);
4、非专用时钟管脚信号也能进入到DCM/PLL,但时钟抖动将增大;
1.1.1.4、IO资源及推荐设计
IO资源指的是靠近输入输出引脚布置的一些专用逻辑资源,XILINX将这类资源命名为SelectIO资源,主要包括以下几种:
1、延迟线资源;
2、ILOGIC/OLOGIC资源:
主要是SDR或DDR输入输出接口;
3、ISERDES/OSERDES资源:
并串转换资源;
图1.7SelectIO资源结构图
IOdelay资源可用于源同步采样时对数据或时钟路径进行延迟,以匹配建立保持时间。
比如说,一般时钟进入FPGA后需上全局网络,其延时比数据大很多,如果在FPGA入口处2者的相位关系已经匹配好,此时就需要使用延迟线资源对数据进行而外延迟,使其与时钟的相位关系利于采样。
例化名IODELAY2,详情参考文献2。
ILOGIC是一个SDR/DDR寄存器,常应用于源同步采样,例化名为IDDR2。
OLOGIC则正好相反,可用作源同步输出,例化名为ODDR2。
2者具体的使用请参考文献2。
图1.8ILOGIC结构图
图1.9OLOGIC结构图
SERDES串并转换模块在某些高速接口常被用到,其能在进入FPGA内部逻辑之前将高速串行信号转换为较低速的并行信号,如500M串行信号输入,经转换为4位并行信号后,速率将为125M,此时再提供给内部逻辑,可提高逻辑设计的可靠性。
详细使用方法见参考文献2。
图1.10ISERDES2结构图
图1.11OSERDES2结构图
IO资源的调用能提高资源的利用率,同时也会显著提高时序性能,因为作为专用器件,其性能要比调用CLB逻辑资源高,且其布置在IO口附近,极大降低了布线延迟和困难,因此要尽可能的使用这些资源。
1.1.2、KIRTEX7
1.1.2.1、CLB结构及推荐设计
与S6一致,略。
1.1.2.2、BRAM结构及推荐设计
相对于S6,K7的BRAM有了升级,主要有以下几点:
1、最大存储容由18K升级为36K,单个BRAM可配置为位宽为72bit的SDR(simple_dual_port)RAM/ROM;
2、可作为独立的2个18KBRAM使用;
3、所有BRAM资源自带FIFO控制逻辑,不再额外调用CLB资源生成,减少资源消耗及提高时序性能,在FIFOGEN时选择BUITL_IN模式;
4、相邻BRAM之间有专用连线,可以将2个36KRAM合并为1个64KRAM,无需调用其他资源;
1.1.2.3、时钟树结构及推荐设计
7系列产品的时钟树设计有所变化,区域时钟概念得到了增强,主要表现在以下几点:
1、增加BUFR/BUFMR资源,分别为单个区域和多个区域的时钟BUF。
时钟信号经过BUFR/BUFMR后,仅对单个区域或多个区域内的时序逻辑有驱动能力,BUFR/BUFMR的好处是,他们离IO管脚比BUFG更近,在处理源同步设计时,一般要对时钟和数据信号进行延时,时钟走BUFG会比数据的路径延时长很多,而IDELAY的延时也是有限制的,所以此时选择区域时钟BUF会更好;
2、取消全局时钟输入管脚GCLK,取而代之的是区域和多区域时钟输入管脚SRCC和MRCC(此管脚也可连到全局时钟资源上,并非只能接到区域时钟资源);
3、时钟管理单元变为CMT,有1个MMCM和1个PLL组成,PLL仅为MMCM的一个功能子集,因此不再像S6时推荐使用PLL而不选择DCM的建议。
PLL的输出有限制,无法介入到IO单元中,因此做一些高速设计的时候应该优先选用MMCM;
1.1.2.4、IO资源及推荐设计
7系列将IO管脚分为HR(HighRange,更多电平标准支持)和HP(HighPerformance,更高性能)两种,两者的差异见下表。
另外7系列增加了DCI功能,可以片上调整阻抗匹配,利于布板。
其他的地方与S6没有多大的区别。
表1.9电平标准支持
表1.10IO资源支持
1.2、ALTERA器件
1.2.1、CYCLONE4
1.1.2.1、LAB结构及推荐设计
ALTERA低端产品的主要采样4-inputLUT技术,C4的最小逻辑单元LE由1个4输入LUT和1个寄存器组成,16LE组成一个LAB块。
图1.12logicelement
图1.13logicarrayblock
C4的每个LE有8路LAB_WIDE(对所有LAB内的LE有效)控制信号,特别是其具有专用的同步置位/同步复位电路(S6用LUT实现),异步控制只有复位没有置位功能,如果想将复位值设为1,电路会在寄存器的输入和输出口都加入一个反相器来实现,消耗额外资源。
使用C4做设计时应该考虑如下器件特性:
1、同步复位/置位资源在合适的时候可以使用;
2、用异步复位信号对REG做初始化时,尽可能的初始化为0,为1时会额外消耗资源,必须初始化为1时,可考虑使用同步置位资源;
3、控制信号都是LAB_WIDE,一个块语句中的信号应该使用相同的控制逻辑;
4、LUT不具备随机写入功能,即无法调用其产生FIFO,RAM的存储单元,在分布式RAM/FIFO中,LUT扮演地址译码功能,延时会比较大,在块RAM资源够用的情况下使用块RAM资源,不够时,深度不宜超过16;
C4的BRAM结构没有多少特别之处,使用的时候注意以下几点:
1、M9K最大支持位宽36bit;
2、M9K支持2个M4.5K的单口RAM例化;
3、M9K可以例化为移位寄存器,位宽为1时,如果级数大于等于64时,会调用M9K资源生成,位宽大于1时,位宽x级数大于32时,调用M9K,其他条件下由逻辑生成;
C4的时钟树没有S6的复杂,全局布线只有GCLK一种,因此使用时需考虑较少。
1、PLL的输入只能来自专用时钟管脚,内部逻辑或普通管脚皆无法布线;
2、时钟资源做动态切换可以有2种方式,一种是在PLL之前切换时钟源,一种是在clock_control_bank进行切换,如图1.14;
3、DPCLK和CDPCLK为双向多功能管脚,主要用于高扇出控制信号的输入,比如某些总线协议里很多地方需要使用的信号,cs之类;
图1.14PLL与CCB连线图
图1.15GCLK全局图
ALTERA器件对于PCB设计有很多资源可以调用,如图1.16所示,上拉、钳位、保持、开路、驱动能力、片上终端匹配等,一般这些功能需要原理图设计人员很熟悉并能指导逻辑开发人员调用,但很少这样去做,但板子设计好后,电路出现信号质量问题时可以调用这些功能进行调整,弥补设计缺陷。
下面简单介绍几种配置的功能。
1、CurrentStrength驱动强度,有助于减少同步开关输出SSO导致的系统噪声;
2、SlewRate翻转速率,影响上升沿与下降沿翻转速率,越快噪声越大,越慢延时越长,默认为SLOW慢模式;
3、open-drain开漏输出,输出信号被多个器件共享时可使用;
4、bus_hold总线保持,保持前一次驱动的电平,直到下一次驱动到来,双向端口时应用,比如一次输出驱动后,进入三态,总线保持功能此时会保持住上一次逻辑电平;
5、OCT片上匹配,有两种模式,自校正和固定模式,需在特定管脚接入高精度电阻以支持此项功能;
6、programable_delay可编程延时,软件会根据IO时序约束自动延时,以匹配建立和保持时间,也支持手动修改,详见相关操作说明。
7、对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.16中可见IOE中有寄存器资源,如果HDL中有寄存操作,软件会调用此资源进行映射的;
当输入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;
图1.16SDR模式下的IOE结构图
1.2.2、MAX10
1.2.2.1、LE与LAB结构及推荐设计
LAB是包含一组逻辑资源的可配置的逻辑模块。
每个LAB包含以下组件:
(1)、16个逻辑单元(LE)—MAX10器件中的最小逻辑单元;
(2)、LE进位链—进位链通过LAB内的每个LE串行地传播;
(3)、LAB控制信号—在一个LAB内驱动LE控制信号的专用逻辑;
(4)、本地互联—在相同的LAB的LE之间传输信号;
(5)、寄存器链—在LAB中将一个LE寄存器的输出传输到相邻的LE寄存器。
LAB的结构如图1.17所示。
图1.17
逻辑单元(LE)是逻辑中最小的单元,每个LE具有以下特性:
(1)、一个4输入的查找表,以实现四种变量的任何功能;
(2)、一个可编程的寄存器;
(3)、一个进位链连接;
(4)、一个寄存器链连接。
LE的结构图如图1.18所示。
图1.18
综上所述,在使用组合逻辑时,对象应该尽量为4的整数倍,能够不超过4位的尽量不要超过4位,这样在保证时序的基础上节省了大量的LE。
1.2.2.2、内嵌RAM块结构及推荐设计
MAX10器件的每个M9K存储器模块都提供了一个能够运行在高达284MHz的9Kb的片上存储器。
MAX10器件的存储器模块的性能规范如表1.10所示。
表1.10存储器模块的性能规范
根据以上特性,在设计中应该注意一下几点:
(1)、在设计系统的时候应该根据芯片的速度等级选择不同的系统时钟;
(2)、设计FIFO、单端口、简单双端口RAM时,如果使用的是块资源建议深度尽量不要超过256,宽度尽量不要超过36。
而真双端口RAM应该尽量保证深度在512以内,宽度在18以内。
(3)、在使用FIFO的时候,如果所需的FIFO小,应该考虑使用LC来实现,考虑到LUT位4输入架构,我们推荐深度不操过16时,例化分布式FIFO。
1.2.2.3、时钟网络及锁相环(PLL)结构及推荐设计
MAX10器件支持全局时钟网络(GCLK)和锁相环(PLL)。
时钟网络对内核提供时钟源。
可以在高扇出全局信号网络中使用时钟网络,如复位与清零。
PLL对器件的时钟管理、外部系统时钟管理以及I/O接口时钟提供了可靠的时钟管理与综合。
MAX10器件中还有内部振荡器,可以生成固定的几个频率,并且可以驱动所有的内部信号。
PLL的高级结构图如图1.19所示。
图1.19
综上所述,在时钟时钟信号时应该注意以下几点:
(1)、可以使用全局时钟来控制高扇出的信号;
(2)、能使用PLL的地方尽量使用PLL;
(3)、如果PLL资源不够,可以考虑使用内部振荡器来实现分频。
1.2.2.4、DSP结构及推荐设计
MAX10器件中支持高达144个嵌入式乘法器资源。
通过使用嵌入式乘法器可以实现乘法加法器与乘法累加器的功能。
通过配置嵌入式乘法器,以支持最多9位位宽的两个独力的9*9乘法器,可以通过动态修改singa与singb来改变输入数据的符号。
9*9乘法器的结构图如图1.20所示。
图1.20
通过配置每一个嵌入式乘法器,来支持10到18位输入宽度的单一的18*18乘法器,可以通过动态修改singa与singb来改变输入数据的符号。
18*18乘法器的结构图如图1.21所示。
图1.21
嵌入式乘法器的设计规范如表1.11所示。
表1.11乘法器的设计规范
综上所述,在使用嵌入式乘法器的时候应该注意以下几点:
(1)、乘法器位宽尽量控制在9位以内;
(2)、可以通过修改符号位动态修改数据符号;
(3)、在使用乘法器时根据芯片速度等级选择使用相应的位宽。
1.2.2.5、IO资源及推荐设计
IO资源指的是靠近输入输出引脚布置的一些专用逻辑资源,MAX10器件主要包括以下IO资源:
1、通用I/O资源;
2、高速LVDSI/O接口;
3、外部存储器接口。
MAX10通用IO系统支持各种IO标准。
在MAX10器件中,IO管脚位于器件的外围的IObank。
IO管脚和IO缓冲器具有几个可编程功能。
IO单元位于每IObank中的四个模块组中:
1、高速的DDR3IObank支持各种IO标准和协议,包括DDR3。
这些IObank仅可以用在器件的右侧。
2、高速IObank支持各种IO标准和协议,除了DDR3以外。
这些IObank可以用于器件的顶部、底部和左侧。
3、低速IObank位于器件的顶部左侧的较低速度的IObank。
IObank的位置如图1.22所示,根据器件型号不同略有差异,该图为10M04与10M08的IObank图。
图1.2210M04与10M08的IObank
高速LVDSI/O接口的IObank支持所有的真LVDS输入和伪LVDS输出。
只有底部的IObank支持真LVDS输出。
如图1.23为10M04与10M08硅晶片的表面示意图。
每个bank都标记了实际的bank数。
只有bank2与bank6支持LVPECL。
图1.2310M04与10M08硅晶
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时序 设计规范 V0 教材