一、CLB、LUT、SRL、slice Xilinx器件的基本逻辑单元是slice。 1)CLB(ConfigurableLogic Block)--含2个Slice 或1个Slice和1个slicem; 2)每个Slice--含4个6-输入LUT, 8个flip-flops (Slicem用LUTs作为专属RAM【1LUT=64*1】或者移位寄存器SRL【1LUT=32bit SRL】),另还有专属高速进位逻辑,宽位选择器。 3)LUT的本质是RAM,可以把多输入的地址当成输入,通过查表的形式得到逻辑输出。所以Slice里的资源也可以是分布存储和移位寄存器。
二、分布式RAM与Block RAM 分布式RAM: 特点:位宽不限,可以很大,深度很小,适用于小型的RAM设计,特别是深度较小,位宽较大的设计需求; 缺点:不能跨时钟; Block RAM : 特点:端口位宽受限,深度可以很深,可跨时钟域设计,适用于端口位宽较小,深度需求较大的设计;
三、CLB Xilinx器件的基础单元,中文名为可配置逻辑块。 Xilinx的CLB是在FPGA内实现大部分逻辑的地方,CLB是由slice组成的。
设计注意点: 1、CLB进位链做得比较好,因此做大位宽数据的加法比较好; 2、CLB做MUX时不要做太大,时序不好,建议MUX多打几拍流水;
四、SRL SRL:移位寄存器,延迟可动态配置
五、Block RAM 最小单元为18k,位宽最大为36bit 对应地,36k的Block RAM的位宽为72bit 多个RAM可以合成使用,RAM可以拼位宽、深度,从时序角度分析,拼位宽比较好; 若RAM输入输出的数据位宽不等,且需要拼RAM使用,最好采用原语,或者在软件界面生成IPcore。 遗留任务: 1、将RAM通用CBB中的BRAM_SDP_MACRO替换成RAM模块(MARCO是一个中间层,是RAM较高一级的封装) 2、将FIFO通用CBB中的RAM替换成FIFO36E1/FIFO18E1
六、DSP48E 进位链:主要用于大位宽的乘法、加法; 17bit位移:主要在进行大位宽乘法时,用于高位的数据位移; patterndetect:主要用于符号位比较,溢出饱和判断,用来溢出保护作用; DSP48E输入输出最好各打一拍,时序比较好,可以跑到较高的速率;特殊情况下,输出最好打一拍,特别是对于利用DSP48E做累加计算,则必须要打一拍,否则会出现功能错误;
七、多die设计
1、多die器件设计原则: (1)尽可能减少跨DIE信号数量; (2)跨DIE信号频率尽量低,尽可能降低跨DIE信号的时序要求; (3)跨DIE信号发端和收端必须是寄存器。推荐收发两端各两拍寄存器。 (4)IO管脚分布充分考虑全局逻辑方案,严格避免出现高速数据总线信号跨DIE; (5)跨DIE处理部分推荐独立成module,与功能模块分开,便于添加约束文件; (6)一级模必须增加pblock约束,使模块按照设计意图在指定DIE内布局布线; (7)高速跨DIE信号,可通过额外的布线约束满足时序。包括:发端寄存器约束成laguna寄存器(跨带提升时序用的专用寄存器);clockregion约束;plock约束;小工程反标; (8)复位信号现在CPU时钟域下进行分DIE处理,再传输到各个DIE内进行独立的同步化处理。 |