第一章 FPGA的结构、特点及应用范围 1
第一节 FPGA概述 1
第二节 XILINX FPGA的结构 2
1.2.1 配置存储器 3
1.2.2 CLB 4
1.2.3 IOB 5
1.2.4 可编程互连 7
1.2.4.1 通用互连 8
1.2.4.2 直接互连线 10
1.2.4.3 长线 11
1.2.4.4 内部总线 12
1.2.5 晶振 14
1.2.6 芯片品种 14
第三节 应用范围 17
第二章 FPGA设计实现流程及一个实例 19
第一节 FPGA设计实现流程 19
第二节 FPGA设计实现的一个实例 20
2.2.1 系统描述 20
2.2.2 设计输入 22
2.2.3 转换 22
2.2.4 功能验证 29
2.2.5 布局布线 31
2.2.6 后验证 33
2.2.7 生成配置文件 34
2.2.8 电路实现 35
第三章 FPGA开发系统与设计方法 37
第一节 FPGA开发系统介绍 37
3.1.1 XILINX FPGA开发系统构成 37
3.1.2 XILINX FPGA开发系统安装 38
3.1.3 XILINX FPGA开发系统菜单命令 42
3.1.4 使用菜单和命令 45
第二节 UTILITIES与PROFILE菜单命令 47
3.2.1 UTILITIES菜单命令 47
3.2.2 PROFILE菜单命令 48
第三节 设计输入 52
3.3.1 ORCAD/SDT 52
3.3.1.1 环境配置(DRAFT/C) 52
3.3.1.2 绘制原理图(DRAFT) 55
3.3.1.2.1 Again—再执行 55
3.3.1.2.2 Block—块操作命令 55
3.3.1.2.3 Condition—环境命令 56
3.3.1.2.4 Delete—删除命令 56
3.3.1.2.5 Edit—编辑命令 57
3.3.1.2.6 Find—查找 58
3.3.1.2.7 Get—取元件 58
3.3.1.2.8 Hardcopy—打印命令 59
3.3.1.2.9 Jump—跳转 59
3.3.1.2.10 Library—元件库 59
3.3.1.2.11 Macro—宏命令 60
3.3.1.2.12 Place—放置命令 61
3.3.1.2.13 Quit—退出命令 62
3.3.1.2.14 Repeat—重复命令 63
3.3.1.2.15 Set—设置命令 63
3.3.1.2.16 Tag—标记命令 64
3.3.1.2.17 Zoom—比例变化 64
3.3.2 PALASM简介 64
3.3.2.1 CHIP语句 65
3.3.2.2 EQUATIONS语句 66
3.3.2.3 STRING语句 68
3.3.2.4 内部信号 68
3.3.2.5 特殊PAL的特殊处理 69
3.3.2.6 不支持的PAL特性 69
3.3.2.7 PDS2XNF允许的扩充功能总结 69
3.3.2.8 PDS2XNF能辨认的PAL型号 69
3.3.2.9 将PALASN转换成XC2000系列LCA 70
3.3.2.10 将PALASM转换成XC3000系列LCA 70
3.3.2.11 信号命名原则 70
3.3.2.12 将现有的PAL设计转换成PALASN 71
3.3.2.13 使用PALASM作新设计的注意 72
3.3.3 LCA元件库 72
3.3.3.1 2000系列库概况 72
3.3.3.1.1 XC2000系列基本组合逻辑 73
3.3.3.1.2 XC2000系列基本镇存器和触发器 73
3.3.3.1.3 XC2000系列基本I/O 75
3.3.3.1.4 XC2000系列反相器和缓冲器 75
3.3.3.1.5 XC2000系列符号宏列表 77
3.3.3.2 3000系列库概况 79
3.3.3.2.1 XC3000系列基本组合逻辑 80
3.3.3.2.2 XC3000系列基本触发器 80
3.3.3.2.3 XC3000系列基本I/O 81
3.3.3.2.4 XC3000系列反相器和缓冲器 84
3.3.3.2.5 XC3000系列PULLUP符号 84
3.3.3.2.6 XC3000系列符号宏列表 85
3.3.3.3 使用LCA特殊原理图符号选择项 87
3.3.3.3.1 网标记(NET TAGs) 88
3.3.3.3.2 规定一个LCA块位置(对XACT) 89
3.3.3.3.3 规定一个LCA块名(对XACT) 90
3.3.3.3.4 规定3000系列其它选择项 90
3.3.3.3.5 CLB和IOB原始符号概述 91
3.3.3.3.6 利用UPAD脚上的触发器 94
3.3.3.3.7 基本时钟缓冲器 97
3.3.3.3.8 晶振 97
第四节 TRANSLATE文件转换 98
3.4.1 ANNOTATE与CLEANUP 98
3.4.1.1 ANNOTATE—原理图标注 98
3.4.1.2 CLEANUP—原理图整理 100
3.4.2 NETLIST—网表生成 101
3.4.3 PIN2XNF—网表转换 106
3.4.4 PDS2XNF—PAL设计转换 114
3.4.5 XNFOPT—逻辑化简 116
3.4.5.1 逻辑综合 116
3.4.5.2 XNFOPT程序—用于LCA的逻辑优化 116
3.4.6 XNFMERGE—合并 122
3.4.6.1 XNFMERGE程序的作用 122
3.4.6.2 XNFNERGE命令格式和选择项描述 124
3.4.6.3 确定一个符号所引用的文件 125
3.4.6.4 不同层次间信号的连接 125
3.4.6.5 合并报告文件.NRG 127
3.4.7 XNFDRC—设计规则检查 127
3.4.8 XNFMAP—分块 129
3.4.8.1 XNFMAP命令格式 130
3.4.8.2 XNFMAP选择项 130
3.4.8.3 用寄存器排序的输出信号名命名规范 132
3.4.8.4 XNFMAP程序运行过程 132
3.4.8.5 XNFMAP举例 133
3.4.8.6 XNFMAP错误信息表 139
3.4.9 MAP2LCA—映射 147
3.4.9.1 MAP2LCA命令格式 147
3.4.9.2 MMAP2LCA所用的文件 148
3.4.9.3 NAP2LCA处理过程 148
3.4.9.4 MAP2LCA错误信息 148
3.4.9.5 MAP2LCA运行举例 149
3.4.10 XMAKE—自动转换 149
3.4.10.1 XMAKE命令格式 150
3.4.10.2 XNAKE处理过程 150
3.4.10.3 XMAKE选择项 150
3.4.10.4 输出文件 151
3.4.10.5 使用.MAK文件 152
第五节 自动布局布线 155
3.5.1 APR 155
3.5.1.1 APR程序格式 155
3.5.1.2 APR各选择项功能 155
3.5.2 APRLOOP 158
3.5.2.1 APRLOOP程序格式 158
3.5.2.2 APRLOOP选择项 158
3.5.3 使用APR限制 159
3.5.4 APR使用的文件 163
3.5.5 先进的选择项应用技术 168
3.5.5.1 -G选择项的使用 168
3.5.5.2 使用选择项组合 168
3.5.6 APR退火过程信息 170
第六节 验证 171
3.6.1 验证概述 171
3.6.1.1 验证的作用 171
3.6.1.2 功能验证和后验证 171
3.6.2 用于验证的网表转换程序 172
3.6.2.1 ORCAD/VST设计流程 172
3.6.2.2 LCA2XNF程序 173
3.6.2.3 XNFCVT程序 174
3.6.2.4 XNF2VST程序 176
3.6.2.4.1 XNF2VST命令 176
3.6.2.4.2 XNF2VST增加的信号名 176
3.6.2.4.3 网命名规范 178
3.6.2.4.4 XNF2VST输出文件 180
3.6.2.4.5 XNF2VST错误信息 181
3.6.2.5 CHECKNET程序 182
3.6.3 ORCAD/VST模拟验证 183
3.6.3.1 配置ORCAD/VST到XILINX 183
3.6.3.2 运行ORCAD/VST模拟验证程序 184
3.6.3.3 ORCAD/VST详细介绍 188
3.6.3.3.1 推荐的ORCAD/VST目录安排 188
3.6.3.3.2 ORCAD/VST配置 188
3.6.3.3.3 Simulate程序命令 190
3.6.3.3.4 ORCAD/VST实用程序TVGEN和SPOOLTV 203
3.6.3.3.5 模拟验证举例 206
3.6.3.4 VST验证限制 206
3.6.4 DOWNLOAD电缆实体验证 207
3.6.4.1 下装电缆和目标系统的连接 207
3.6.4.2 使用下装电缆 208
3.6.4.3 下装电缆自检 210
3.6.4.4 下装电缆与XACTOR比较 211
第七节 XACT 212
3.7.1 XACT执行器 212
3.7.1.1 PROGRAMS菜单命令 213
3.7.1.2 DESIGN菜单命令 214
3.7.1.3 PROFILE菜单命令 215
3.7.1.4 XACT打印机支持 218
3.7.2 EDITLCA程序(手工布局布线) 220
3.7.2.1 显示结构 220
3.7.2.1.1 PIE显示结构 220
3.7.2.1.2 块编辑器显示结构 222
3.7.2.2 命令输入 225
3.7.2.3 EDITLCA菜单命令 226
3.7.2.3.1 NET菜单命令 227
3.7.2.3.2 PIN菜单命令 229
3.7.2.3.3 BLK菜单命令 231
3.7.2.3.4 CONFIG菜单命令 234
3.7.2.3.5 SCREEN菜单命令 239
3.7.2.3.6 MISC菜单命令 243
3.7.2.3.7 PROFILE菜单命令 248
3.7.2.3.8 APRCON菜单命令 250
3.7.3 NAKEBITS程序 251
3.7.3.1 CONFIG菜单命令 251
3.7.3.2 DOWNLOAD菜单命令 253
3.7.3.3 MISC菜单命令 253
3.7.3.4 PROFILE菜单命令 255
3.7.3.5 TIE选择项 256
3.7.4 MAKEPROM程序 257
3.7.4.1 PROM菜单命令 258
3.7.4.2 MISC菜单命令 259
3.7.4.3 PROFILE菜单命令 260
3.7.4.4 典型命令序列 260
第八节 建库 262
3.8.1 建立用户符号库 262
3.8.1.1 建立库元件符号 262
3.8.1.2 产生库元件的网表文件 263
3.8.1.3 验证所建的库的功能 264
3.8.2 建立用户宏 265
第四章 FPGA电路实现及应用 266
第一节 LCA芯片管脚说明 266
4.1.1 固定脚描述 266
4.1.2 有特殊功能的用户I/O脚 267
4.1.3 无限制用户I/O脚 268
4.1.4 XC3000系列脚分配 268
第二节 LCA编程及几种配置模式 269
4.2.1 LCA编程 269
4.2.1.1 初始化 269
4.2.1.2 配置数据 272
4.2.2 主模式 272
4.2.2.1 串行主模式 272
4.2.2.2 并行主模式 273
4.2.3 外设模式 274
4.2.4 从模式 275
4.2.5 菊花链 275
4.2.6 特殊配置功能 277
4.2.6.1 输入门限 277
4.2.6.2 读回配置 277
4.2.6.3 重新编程 277
4.2.6.4 DONE上拉 278
4.2.6.5 DOME定时 278
4.2.6.6 RESET定时 278
4.2.6.7 晶振分频 278
第三节 常用电路的设计 278
4.3.1 通用可编程定时器/计数器的设计 278
4.3.1.1 同步时序逻辑实现可编程定时器/计数器 278
4.3.1.2 异步时序逻辑实现可编程定时器/计数器 279
4.3.1.3 时序译码电路芯片——一个实用的XC3064设计 280
4.3.2 总线电路的设计 281
4.3.2.1 输入脚 283
4.3.2.2 输出脚 283
4.3.2.3 输出三态脚 283
4.3.2.4 输入输出双向脚 283
4.3.2.5 双口RAM控制芯片——一个实用的XC3042设计 283
4.3.3 特殊设计举例 284
4.3.3.1 使用CLB和IOB符号 284
4.3.3.2 使用PAL符号 287
4.3.3.3 预先定义管脚排列 287
4.3.3.4 一片EPROM配置多片LCA 288
附录A:FPGA设计总结——各设计命令总结列表 289
附录B:LCA器件管脚排列 303
附录C:LCA器件电性能参数 312