logo资料库

赛灵思FPGA设计高级技巧篇--华为内部资料.pdf

第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
资料共63页,剩余部分请下载后查看
深圳市华为技术有限公司 研 究管 理部文档中心 文档编号 产品版本 密级 V1.0 内部公开 产品名称 FPGA设计高级技巧 共62页 FPGA设计高级技巧 Xilinx篇 (仅供内部使用) 拟 制 审 核 批 准 周志坚 中研基础 日 期 日 期 日 期 2001/09/15 yyyy/mm/dd yyyy/mm/dd 深圳市华为技术有限公司 版权所有 不得复制
FPGA设计高级技巧 Xilinx篇 内部公开 请输入文档编号 日期 2001/09/1 5 修订版本 1.00 描述 修订记录 作 者 周志坚 2001-9-19 版权所有 侵权必究 第2页 共63页
FPGA设计高级技巧 Xilinx篇 内部公开 请输入文档编号 目 录 3 FPGA器件结构 VirtexII 1 前言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 综合工具与代码风格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 理解综合两个过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 不同综合工具的性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 综合性能对Coding Style 影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 器件结构对Coding Style的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 FPGA结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 ASIC结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Coding Style的对比 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 VirtexII功能概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 结构概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 CLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 LUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 Shift Register LUT SRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 MUXFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.6 Carry Logic 和Arithmetic Logic Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.7 SOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.8 FFX/FFY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Distributed RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 乘法器资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 IOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 IOB结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Select I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.3 DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 Global Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 CLK MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.3 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 补充说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 10 10 10 11 11 11 11 12 12 13 14 15 16 16 17 20 21 21 21 23 25 27 27 28 29 29 29 30 32 33 3.7 Clock Resource 3.8.1 LUT如何配置成组合逻辑电路 揭开 门数增加 逻辑级数未 变 但资源占用减少 速度更快 之谜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.2 解剖Block SelectRAM内部结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 设计技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 合理选择加法电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 串行进位与超前进位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 使用圆括号处理多个加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2IF语句和Case语句 速度与面积的关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 减少关键路径的逻辑级数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 35 37 38 38 39 40 41 2001-9-19 版权所有 侵权必究 第3页 共63页
FPGA设计高级技巧 Xilinx篇 内部公开 请输入文档编号 4.3.1 通过等效电路 赋予关键路径最高优先级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 调整if语句中条件的先后次序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 合并if语句 提高设计速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 资源共享 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 if语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 loop语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3 子表达式共享 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.4 综合工具与资源共享 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 流水线 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 组合逻辑和时序逻辑分离 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8 利用电路的等价性 巧妙地 分配 延时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 复制电路 减少扇出 fanout 提高设计速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 多路选择器与三态电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1 virtex以前的系列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.2 virtex系列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 利用LUT四输入特点 指导电路设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12 高效利用IOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13 Distributed RAM的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.14 Block SelectRAM的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.15 SRL的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.16 LFSR加1计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 如何使用后端工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 布局布线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 设计前期 设计方案阶段 对关键电路的处理 . . . . . . . . . . . . . . . . . . . . . . . 5.1.2 布局布线策略 兼谈如何做第一次布局布线 . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 正确看待map之后的资源占用报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 FPGA Editor的作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 FloorPlanner的作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 TimingAnalyzer的作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 综合运用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 可能成为关键路径的电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 如何提高芯片速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 引入放松约束 TIG False path 和Multi-Cycle-Path . . . . . . . . . . . . . . . . . . . 6.2.2 对线延时比较大的net 设置Maxdelay和Maxskew . . . . . . . . . . . . . . . . . . . . . . 6.2.3 采用BUFGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 基本设计技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.5 专有资源的利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.6 关键路径在同一个Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.7 关键路径单独综合 不与其它模块放在一起综合 . . . . . . . . . . . . . . . . . . . . . . . 6.2.8 针对关键路径 进行位置约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.9 迂回策略 降低非关键路径上的面积 为关键路径腾挪空间 . . . . . . . . . . . . 6.3 如何降低芯片面积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Distributed RAM代替BlockRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2 Distributed RAM代替通道计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.3 专有资源的利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 42 43 44 44 45 46 46 47 49 52 52 53 53 54 54 55 56 57 57 57 58 58 58 58 59 59 59 60 60 60 60 60 61 61 61 61 61 61 61 61 61 61 61 62 2001-9-19 版权所有 侵权必究 第4页 共63页
FPGA设计高级技巧 Xilinx篇 内部公开 请输入文档编号 6.3.4 基本设计技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 感谢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 表目录 表1 VirtexII 的分布式RAM 配置表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 表2 VirtexII 的BlockRAM 分布表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 表3 带奇偶校验位的Block RAM配置表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 表4 VirtexII 乘法器速度表 厂家数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 表5 VirtexII 的DCM分布表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 24 25 27 33 图目录 图1 使用二进制描述的Mux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图2 使用内部三态线描述的Mux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图3 VirtexII 结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图4 VirtexII 的CLB结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图5 SLICE结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图6 VirtexII 的Slice 结构图 上半部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图7 SRL的移位链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图8 VirtexII的MUXFX连接图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图9 进位链结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图10 使用进位链实现加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图11 使用进位链级联实现高速宽函数运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图12 VirtexII 的两个独立进位链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图13 VirtexII 的SOP 链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图14 FFX/FFY结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图15 单端口32x1 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图16 双端口16x1 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图17 VirtexII 的Block RAM 分布规律 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图18 Write first 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图19 Read first 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图20 No Change 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图21 乘法器与Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图22 XC2V40的乘法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图23 乘法器块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图24 VirtexII的IOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图25 VirtexII 的IOB中的DDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图26 VirtexII 的IOB 实际结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图27 VirtexII 的Clock Pads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图28 VirtexII 的时钟 顶部 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图29 VirtexII 的时钟资源分布原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 13 14 14 15 16 17 18 18 19 20 21 21 22 23 24 25 25 25 26 26 26 27 28 28 29 30 30 2001-9-19 版权所有 侵权必究 第5页 共63页
FPGA设计高级技巧 Xilinx篇 内部公开 请输入文档编号 图30 VirtexII的BUFGMUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图31 VirtexII的BUFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图32 VirtexII 的BUFGCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图33 VirtexII 的BUFGCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图34 VirtexII 250 的DCM 位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图35 VirtexII 的DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图36 门数增加 逻辑级数未变 但资源占用减少 速度更快 . . . . . . . . . . . . . . . . . . . . . . 图37 完整的单端口Block Select RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图38 Read first mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图39 Write first mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图40 No-read-on-write mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图41 串行进位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图42 超前进位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图43 串行加法电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图44 并行加法电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图45 if-else完成多路选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图46 case语句完成电路选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图47 critical信号经过2级逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图48 critical信号只经过一级逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图49 资源共享前 2个加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图50 资源共享后 1个加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图51 资源共享前4个加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图52 资源共享后一个加法器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图53 采用流水线之前电路结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图54 采用流水线之后的电路结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图55 Mealy状态机的基本结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图56 组合逻辑 加法器 在后 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图57 组合逻辑 加法器 在前 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图58 扇出较大 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图59 扇出较小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图60 多路选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图61 采用三态电路实现电路选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图62 VirtexE IOB结构示意图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图63 输入输出寄存器移入IOB中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图64 采用Distributed RAM实现多路加1计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 图65 15位基本型LFSR计数器在VIRTEX器件中的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 31 32 33 35 36 36 37 37 38 39 39 39 40 41 42 42 44 45 45 46 48 49 49 52 52 53 53 54 54 55 55 57 58 2001-9-19 版权所有 侵权必究 第6页 共63页
FPGA设计高级技巧 Xilinx篇 FPGA设计高级技巧 xilinx篇 内部公开 请输入文档编号 关键词 FPGA器件结构 速度与面积 关键路径 压缩线延时 降低LUT级数 腾挪空间 摘 要 本文从FPGA器件结构角度出发 以速度和面积为主题 描述在FPGA设计过程中应当注意 的问题和可以采用的设计技巧 缩略语清单: ASIC Application Specific Integrated Circuit CLB Configurable Logic Block DCI Digitally Controlled Impedance DCM Digital Clock Manager DDR Double Data Rate DLL Delay-Locked Loop FPGA Field Programmable Gate Array GRM General Routing Matrix IOB Input/Output Block LFSR Linear Feedbak Shift Register LUT Look Up Table SOP Sum of Product SRL Shift Register LUT UCF Custom Constraints File 参考资料清单: 名称 作者 编号 发布日期 查阅地点或 参考资料清单 周志坚/钱晶 苏文彪 牛风举 苏文彪 喻志清/周志坚 喻志清 VHDL数字电路设计 指导 Virtex系列器件结构 简介 VerilogHDL编码入门 指导 基于FPGA器件的编 码规范 UCF应用指导 Xilinx后端工具使用 指导 LFSR计数器原理及应 用 渠道 中研基础 中研基础 中研基础 中研基础 中研基础 中研基础 中研基础 2001-9-19 版权所有 侵权必究 第7页 共63页
FPGA设计高级技巧 Xilinx篇 同步电路设计技术及 规则 VirtexII时钟资源 初 稿 ds031(virtexII).pdf lfsr.pdf sp_block_mem.pdf VirtexII_DesignConsid eration.pdf gensim.pdf 周志坚 陈亮 xilinx xilinx xilinx xilinx xilinx 1 前 言 内部公开 请输入文档编号 中研基础 中研基础 周志坚 周志坚 周志坚 周志坚 周志坚 随着HDL Hardware Description Language 硬件描述语言 语言 综合工具及其它相关工 具的推广 使广大设计工程师从以往烦琐的画原理图 连线等工作解脱开来 能够将工作重心 转移到功能实现上 极大地提高了工作效率 任何事务都是一分为二的 有利就有弊 我们发现 现在越来越多的工程师不关心自己的 电路实现形式 以为 我只要将功能描述正确 其它事情交给工具就行了 在这种思想影响 下 工程师在用HDL语言描述电路时 脑袋里没有任何电路概念 或者非常模糊 也不清楚自 己写的代码综合出来之后是什么样子 映射到芯片中又会是什么样子 有没有充分利用到 FPGA的一些特殊资源 遇到问题 立刻想到的是换速度更快 容量更大的FPGA器件 导致物 料成本上升 更为要命的是 由于不了解器件结构 更不了解与器件结构紧密相关的设计技 巧 过分依赖综合等工具 工具不行 自己也就束手无策 导致问题迟迟不能解决 从而严重 影响开发周期 导致开发成本急剧上升 目前 我们的设计规模越来越庞大 动辄上百万门 几百万门的电路屡见不鲜 同时 我 们所采用的器件工艺越来越先进 已经步入深亚微米时代 而在对待深亚微米的器件上 我们 的设计方法将不可避免地发生变化 要更多地关注以前很少关注的线延时 我相信 ASIC设计 以后也会如此 此时 如果我们不在设计方法 设计技巧上有所提高 是无法面对这些庞大 的基于深亚微米技术的电路设计 而且 现在的竞争越来越激励 从节约公司成本角度出发 也要求我们尽可能在比较小的器件里完成比较多的功能 本文从澄清一些错误认识开始 从FPGA器件结构出发 以速度 路径延时大小 和面积 资源占用率 为主题 描述在FPGA设计过程中应当注意的问题和可以采用的设计技巧 本文对读者的技能基本要求是 熟悉数字电路基本知识 如加法器 计数器 RAM等 熟悉基本的同步电路设计方法 熟悉HDL语言 对FPGA的结构有所了解 对FPGA设计流程比 较了解 2 综合工具与代码风格 硬件描述语言和综合工具的产生 极大地提高了工程师的工作效率 然而 随着它们的普 及与推广 一种不好的现象也在逐步蔓延 在设计过程中 只关注功能是否实现 而不考虑或 2001-9-19 版权所有 侵权必究 第8页 共63页
分享到:
收藏