《 Altera fpgacpld设计(高级篇)》目录 作者:EDA先锋工作室人民邮电出版社出版日期:2005年7月书号:ISB 7-115-134995/IP4707 本书深讨论了 Altera fpga/cpld的设计、优化技巧。在讨论 FPGA/CPLD设计指导 原则的基础上,介绍了 Altera器件的高级应用;引领读者学习逻辑锁定设计工具,详细讨论 了时序约束与静态时序分析方法;结合实例讨论如何进行设计优化,介绍了 Altera的可编程 器件的高级设计工具与系统级设计技巧 内容提要 本书结合作者多年工作经验,深入地讨论了 Altera fpga/cpld的设计、优化技巧。在 讨论 FPGA/CPLD设计指导原则的基础上,介绍了 Altera器件的高级应用;引领读者学习逻 辑锁定设计工具,详细讨论了时序约束与静态时序分析方法;结合实例讨论如何进行设计优 化,介绍了 Altera的可编程器件的高级设计工具与系统级设计技巧。 本书附带两张光盘:光盘1中收录了 Altera Quartus II Web版软件,读者可以安装使用 光盘2中收录了本书所有实例的完整工程、源代码、详细操作步骤和使用说明文件,便于读 者边学边练,提高实际应用能力。 本书可作为高等院校通信工程、电子工程、计算机、微电子与半导体等专业的教材,也 可作为硬件工程师和IC工程师的实用工具书 目录 第1章可编程逻辑设计指导原则1 1.1可编程逻辑基本设计原则1 1.1.1面积和速度的平衡与互换原则1 1.1.2硬件原则11 1.3系统原则13 14同步设计原则17 1.2可编程逻辑常用设计思想与技巧19 乒乓操作19 12.2串并转换21 123流水线操作2 12.4异步时钟域数据同步 13 Altera推荐的 Coding Style 1.3.1 Coding Style的含义27 1.32结构层次化编码( Hierarchical Coding)27 133模块划分的技巧( Design Partitioning)29 1.3.4组合逻辑的注意事项30 1.3.5时钟设计的注意事项3 13.6全局异步复位资源39 13.7判断比较语句case和 if.else的优先级39 1.3.8使用 Pipelining技术优化时序40 1.3.9模块复用与 Resource sharing40
《Altera FPGA/CPLD 设计(高级篇)》 目录 作者: EDA 先锋工作室 人民邮电出版社 出版日期:2005 年 7 月 书号:ISBN 7-115-13499-5/TP.4707 本书深讨论了 Altera FPGA/CPLD 的设计、优化技巧。在讨论 FPGA/CPLD 设计指导 原则的基础上,介绍了 Altera 器件的高级应用;引领读者学习逻辑锁定设计工具,详细讨论 了时序约束与静态时序分析方法;结合实例讨论如何进行设计优化,介绍了 Altera 的可编程 器件的高级设计工具与系统级设计技巧。 内容提要 本书结合作者多年工作经验,深入地讨论了 Altera FPGA/CPLD 的设计、优化技巧。在 讨论 FPGA/CPLD 设计指导原则的基础上,介绍了 Altera 器件的高级应用;引领读者学习逻 辑锁定设计工具,详细讨论了时序约束与静态时序分析方法;结合实例讨论如何进行设计优 化,介绍了 Altera 的可编程器件的高级设计工具与系统级设计技巧。 本书附带两张光盘:光盘 1 中收录了 Altera Quartus II Web 版软件,读者可以安装使用; 光盘 2 中收录了本书所有实例的完整工程、源代码、详细操作步骤和使用说明文件,便于读 者边学边练,提高实际应用能力。 本书可作为高等院校通信工程、电子工程、计算机、微电子与半导体等专业的教材,也 可作为硬件工程师和 IC 工程师的实用工具书。 目 录 第 1 章 可编程逻辑设计指导原则 1 1.1 可编程逻辑基本设计原则 1 1.1.1 面积和速度的平衡与互换原则 1 1.1.2 硬件原则 11 1.1.3 系统原则 13 1.1.4 同步设计原则 17 1.2 可编程逻辑常用设计思想与技巧 19 1.2.1 乒乓操作 19 1.2.2 串并转换 21 1.2.3 流水线操作 22 1.2.4 异步时钟域数据同步 23 1.3 Altera 推荐的 Coding Style 27 1.3.1 Coding Style 的含义 27 1.3.2 结构层次化编码(Hierarchical Coding) 27 1.3.3 模块划分的技巧(Design Partitioning) 29 1.3.4 组合逻辑的注意事项 30 1.3.5 时钟设计的注意事项 33 1.3.6 全局异步复位资源 39 1.3.7 判断比较语句 case 和 if...else 的优先级 39 1.3.8 使用 Pipelining 技术优化时序 40 1.3.9 模块复用与 Resource Sharing 40
1.3.10逻辑复制42 1.3.11香农扩展运算44 1.3.12信号敏感表46 1.3.13状态机设计的一般原则47 1.3.14 Altera Megafunction资源的使用49 1.3.15三态信号的设计49 13.16加法树的设计50 14小结52 1.5问题与思考52 第2章 Altera器件高级特性与应用53 2.1时钟管理53 2.1.1时序问题53 2.1.2锁相环应用60 22片内存储器69 221RAM的普通用法69 222RAM用做移位寄存器73 223RAM实现固定系数乘法74 23数字信号处理75 2.3.1DSP块资源75 232工具支持79 23.3典型应用79 24片外高速存储器80 241存储器简介80 242 ZBT SRAM接口设计83 243 DDR SDRAM接口设计85 244 QDR SRAM接口设计99 24.5DDR2、QDRⅡ和 RLDRAMI1100 246软件支持和应用实例10 2.5高速差分接口和DPA102 2.51高速差分接口的需求102 252器件的专用资源102 2.5.3动态相位调整电路(DPA)109 2.54软件支持和应用实例112 26高速串行收发器115 2.7小结117 2.8问题与思考117 第3章 LogicLock设计方法119 3.1 LogiclLock设计方法简介119 3.1.1 LogicLock设计方法的目标120 312 LogicLock设计流程122 31.3 LogicLock设计方法支持的器件族122 3.2 Logiclock区域12
1.3.10 逻辑复制 42 1.3.11 香农扩展运算 44 1.3.12 信号敏感表 46 1.3.13 状态机设计的一般原则 47 1.3.14 Altera Megafunction 资源的使用 49 1.3.15 三态信号的设计 49 1.3.16 加法树的设计 50 1.4 小结 52 1.5 问题与思考 52 第 2 章 Altera 器件高级特性与应用 53 2.1 时钟管理 53 2.1.1 时序问题 53 2.1.2 锁相环应用 60 2.2 片内存储器 69 2.2.1 RAM 的普通用法 69 2.2.2 RAM 用做移位寄存器 73 2.2.3 RAM 实现固定系数乘法 74 2.3 数字信号处理 75 2.3.1 DSP 块资源 75 2.3.2 工具支持 79 2.3.3 典型应用 79 2.4 片外高速存储器 80 2.4.1 存储器简介 80 2.4.2 ZBT SRAM 接口设计 83 2.4.3 DDR SDRAM 接口设计 85 2.4.4 QDR SRAM 接口设计 99 2.4.5 DDR2、QDR II 和 RLDRAM II 100 2.4.6 软件支持和应用实例 100 2.5 高速差分接口和 DPA 102 2.5.1 高速差分接口的需求 102 2.5.2 器件的专用资源 102 2.5.3 动态相位调整电路(DPA) 109 2.5.4 软件支持和应用实例 112 2.6 高速串行收发器 115 2.7 小结 117 2.8 问题与思考 117 第 3 章 LogicLock 设计方法 119 3.1 LogicLock 设计方法简介 119 3.1.1 LogicLock 设计方法的目标 120 3.1.2 LogicLock 设计流程 122 3.1.3 LogicLock 设计方法支持的器件族 122 3.2 LogicLock 区域 122
32.1 Region的类型与常用属性值123 322 Region的创建方法124 323 Region的层次结构129 324指定 Region的逻辑内容130 3.3 Logiclock的约束注意事项132 3.3.1约束优先级13 33.2规划 LogicLock区域13 3.33向 LogicLock区域中布置器件特性133 334虚拟引脚( Virtual pins)134 34反标注布线信息135 341导出反标注布线信息136 342导入反标注布线信息138 3.5 LogicLock设计方法支持的 Tcl Scripts I38 36 Quartus ll基于模块化的设计流程139 3.7小结149 3.8问题与思考149 第4章时序约束与时序分析151 4.1时序约束与时序分析基础151 41.1周期与最高频率152 412利用 QuartusⅡ工具分析设计154 41.3时钟建立时间157 414时钟保持时间158 41.5时钟输出延时158 41.6引脚到引脚的延迟159 4.1.7 Slack159 4.1.8时钟偏斜160 419 QuartusⅡ时序分析工具和优化向导160 42设置时序约束的常用方法161 42.1指定全局时序约束162 42.2指定个别时钟约束 43高级时序分析174 43.1时钟偏斜174 4.3.2多时钟域176 43.3多周期约東176 4.3.4伪路径183 43.5修正保持时间违例185 436异步时钟域时序分析186 44最小化时序分析187 4.5使用Tcl工具进行高级时序分析188 46小结189 47问题与思考189 第5章设计优化191
3.2.1 Region 的类型与常用属性值 123 3.2.2 Region 的创建方法 124 3.2.3 Region 的层次结构 129 3.2.4 指定 Region 的逻辑内容 130 3.3 LogicLock 的约束注意事项 132 3.3.1 约束优先级 132 3.3.2 规划 LogicLock 区域 133 3.3.3 向 LogicLock 区域中布置器件特性 133 3.3.4 虚拟引脚(Virtual Pins) 134 3.4 反标注布线信息 135 3.4.1 导出反标注布线信息 136 3.4.2 导入反标注布线信息 138 3.5 LogicLock 设计方法支持的 Tcl Scripts 138 3.6 Quartus II 基于模块化的设计流程 139 3.7 小结 149 3.8 问题与思考 149 第 4 章 时序约束与时序分析 151 4.1 时序约束与时序分析基础 151 4.1.1 周期与最高频率 152 4.1.2 利用 Quartus II 工具分析设计 154 4.1.3 时钟建立时间 157 4.1.4 时钟保持时间 158 4.1.5 时钟输出延时 158 4.1.6 引脚到引脚的延迟 159 4.1.7 Slack 159 4.1.8 时钟偏斜 160 4.1.9 Quartus II 时序分析工具和优化向导 160 4.2 设置时序约束的常用方法 161 4.2.1 指定全局时序约束 162 4.2.2 指定个别时钟约束 166 4.3 高级时序分析 174 4.3.1 时钟偏斜 174 4.3.2 多时钟域 176 4.3.3 多周期约束 176 4.3.4 伪路径 183 4.3.5 修正保持时间违例 185 4.3.6 异步时钟域时序分析 186 4.4 最小化时序分析 187 4.5 使用 Tcl 工具进行高级时序分析 188 4.6 小结 189 4.7 问题与思考 189 第 5 章 设计优化 191
5.1解读设计191 51.1内部时钟域192 12多周期路径和伪路径193 51.3IO接口的时序要求194 514平衡资源的使用194 52设计优化的基本流程和首次编译195 521设计优化基本流程195 522首次编译的约束和设置196 523查看编译报告198 53资源利用优化200 53.1设计代码优化201 532资源重新分配201 53.3解决互连资源紧张的问题203 534逻辑综合面积优化203 535网表面积优化207 536寄存器打包209 537 QuartusⅡ中的资源优化顾问211 54I/O时序优化211 541执行时序驱动的编译211 542使用IOE中的触发器212 543可编程输入输出延时215 544使用锁相环对时钟移相217 54.5其他IO时序优化方法218 55最高时钟频率优化219 5.5.1设计代码优化219 5.52逻辑综合速度优化225 553布局布线器设置227 554网表优化和物理综合228 55.5使用 LogicLock对局部进行优化233 556位置约束、手动布局和反标注234 557 Quartus中的时序优化顾问235 56使用DSE工具优化设计236 56.1为什么需要DSE236 562什么是DSE,如何使用236 57如何减少编译时间238 58设计优化实例239 59小结242 510问题与思考243 第6章 Altera其他高级工具245 61命令行与Tc脚本245 61.1命令行脚本246 61.2Tel脚本250 61.3使用命令行和Te脚本254
5.1 解读设计 191 5.1.1 内部时钟域 192 5.1.2 多周期路径和伪路径 193 5.1.3 I/O 接口的时序要求 194 5.1.4 平衡资源的使用 194 5.2 设计优化的基本流程和首次编译 195 5.2.1 设计优化基本流程 195 5.2.2 首次编译的约束和设置 196 5.2.3 查看编译报告 198 5.3 资源利用优化 200 5.3.1 设计代码优化 201 5.3.2 资源重新分配 201 5.3.3 解决互连资源紧张的问题 203 5.3.4 逻辑综合面积优化 203 5.3.5 网表面积优化 207 5.3.6 寄存器打包 209 5.3.7 Quartus II 中的资源优化顾问 211 5.4 I/O 时序优化 211 5.4.1 执行时序驱动的编译 211 5.4.2 使用 IOE 中的触发器 212 5.4.3 可编程输入输出延时 215 5.4.4 使用锁相环对时钟移相 217 5.4.5 其他 I/O 时序优化方法 218 5.5 最高时钟频率优化 219 5.5.1 设计代码优化 219 5.5.2 逻辑综合速度优化 225 5.5.3 布局布线器设置 227 5.5.4 网表优化和物理综合 228 5.5.5 使用 LogicLock 对局部进行优化 233 5.5.6 位置约束、手动布局和反标注 234 5.5.7 Quartus II 中的时序优化顾问 235 5.6 使用 DSE 工具优化设计 236 5.6.1 为什么需要 DSE 236 5.6.2 什么是 DSE,如何使用 236 5.7 如何减少编译时间 238 5.8 设计优化实例 239 5.9 小结 242 5.10 问题与思考 243 第 6 章 Altera 其他高级工具 245 6.1 命令行与 Tcl 脚本 245 6.1.1 命令行脚本 246 6.1.2 Tcl 脚本 250 6.1.3 使用命令行和 Tcl 脚本 254
62 Hard Copy流程255 621结构化ASIC255 62.2 Hard Copy器件258 623 HardCopy设计流程260 63基于NiosⅡ处理器的嵌入式系统设计263 6.31NiosⅡ处理器系统263 632 Avalon交换结构266 63.3使用 SOPC Builder构建系统硬件269 634 Nios Il Ide集成开发环境272 635NiosⅡ系统典型应用278 64 DSP Builder工具28 64.1 DSP Builder设计流程281 642与 SOPC Builder一起构建系统284 6.5小结285 66问题与思考285 第7章FPGA系统级设计技术287 7.1信号完整性及常用I/O电平标准287 7.1.1信号完整性287 7.1.2单端标准292 71.3差分标准296 714伪差分标准299 7.1.5片上终端电阻299 72电源完整性设计300 7.21电源完整性300 7.22同步翻转噪声301 7.2.3非理想回路304 724低阻抗电源分配系统307 7.3功耗分析和热设计311 73.1功耗的挑战311 732FPGA的功耗311 733热设计313 74 SERDES与高速系统设计315 741 SERDES的基本概念316 742 Altera stratix gX和 Stratix Il中 SERDES的基本结构319 743典型高速系统应用框图举例324 744高速PCB设计注意事项329 7.5小结331 7.6问题与思考331 附录配套光盘使用说明333
6.2 HardCopy 流程 255 6.2.1 结构化 ASIC 255 6.2.2 HardCopy 器件 258 6.2.3 HardCopy 设计流程 260 6.3 基于 Nios II 处理器的嵌入式系统设计 263 6.3.1 Nios II 处理器系统 263 6.3.2 Avalon 交换结构 266 6.3.3 使用 SOPC Builder 构建系统硬件 269 6.3.4 Nios II IDE 集成开发环境 272 6.3.5 Nios II 系统典型应用 278 6.4 DSP Builder 工具 281 6.4.1 DSP Builder 设计流程 281 6.4.2 与 SOPC Builder 一起构建系统 284 6.5 小结 285 6.6 问题与思考 285 第 7 章 FPGA 系统级设计技术 287 7.1 信号完整性及常用 I/O 电平标准 287 7.1.1 信号完整性 287 7.1.2 单端标准 292 7.1.3 差分标准 296 7.1.4 伪差分标准 299 7.1.5 片上终端电阻 299 7.2 电源完整性设计 300 7.2.1 电源完整性 300 7.2.2 同步翻转噪声 301 7.2.3 非理想回路 304 7.2.4 低阻抗电源分配系统 307 7.3 功耗分析和热设计 311 7.3.1 功耗的挑战 311 7.3.2 FPGA 的功耗 311 7.3.3 热设计 313 7.4 SERDES 与高速系统设计 315 7.4.1 SERDES 的基本概念 316 7.4.2 Altera Stratix GX 和 Stratix II 中 SERDES 的基本结构 319 7.4.3 典型高速系统应用框图举例 324 7.4.4 高速 PCB 设计注意事项 329 7.5 小结 331 7.6 问题与思考 331 附录 配套光盘使用说明 333