第一章 微电子设计的基础知识 1
1.1快速发展的微电子技术 1
1.1.1快速发展的微电子技术 1
1.1.2高速发展的微电子设计及其目前状况 2
1.1.3多媒体计算机的接口电路 4
1.1.4为什么需要硬件描述语言 4
1.1.5本书的写作目的和结构特点 5
1.2VerilogHDL的基础知识 6
1.2.1功能模块 6
1.2.1.1电路描述的抽象层次 6
1.2.1.2模块的映射 8
1.2.1.3模块的测试 9
1.2.1.4示例 10
1.2.2数据类型 12
1.2.2.1物理型变量 13
1.2.2.2抽象型数据 13
1.2.2.3数据类型说明 14
1.2.2.4表达式 15
1.2.2.5不定态x和高阻态z的若干问题 17
1.2.2.6负数 18
1.2.3语句 18
1.2.3.1赋值语句 18
1.2.3.2控制语句 21
1.2.4几个重要的概念 24
1.2.4.1时间(time)和事件(event)的概念 24
1.2.4.2并行的概念 27
1.2.4.3函数和任务 28
1.3典型功能模块的Verilog描述 28
1.3.1组合电路设计示例 29
1.3.1.1数据分配器 29
1.3.1.2译码电路和编码电路 31
1.3.2时序电路设计示例 35
1.3.2.1同步计数器 35
1.3.2.2移位寄存器 37
1.3.3有限状态机 38
1.3.3.1有限状态机的定义及分类 38
1.3.3.2状态机的状态图及状态表 39
1.3.3.3简单状态机分析 40
1.3.4复杂逻辑电路设计 43
1.4与综合相关的问题 45
1.4.1综合 46
1.4.1.1综合与可综合性 46
1.4.1.2HDL综合 47
1.4.2可重复使用功能块、IP产业和SOC 48
1.4.3验证 49
1.4.4深亚微米/超深亚微米设计中的新问题 52
1.5可编程逻辑器件 55
1.5.1可编程逻辑器件综述 55
1.5.1.1可编程逻辑器件的发展概况 56
1.5.1.2可编程逻辑器件的分类 57
1.5.1.3可编程ASIC的发展趋势 57
1.5.2可编程逻辑器件(PLD)简介 58
1.5.2.1PLD器件的逻辑约定 58
1.5.2.2PLD的基本结构 60
1.5.3FPGA/CPLD简介 62
1.5.3.1FPGA简介 62
1.5.3.2CPLD简介 63
1.5.3.3FPGA/CPLD优点 63
1.5.4可编程逻辑结构 64
1.5.4.1可编程的逻辑块 66
1.5.4.2输入/输出功能块 66
1.5.4.3可编程的内部连线资源 67
1.5.4.4片内RAM 67
1.5.5FPGA/CPLD设计流程 68
1.5.6FPGA/CPLD开发系统 69
1.5.6.1时序约束 70
1.5.6.2静态时序分析 71
1.5.6.3Xilinx FPGA的开发系统Xilinx XACT 71
1.5.7各种FPGA/CPLD的特性、限制与设计上的问题 73
1.5.7.1等效的门容量 73
1.5.7.2FPGA/CPLD的速度和时延特性 74
1.5.7.3FPGA/CPLD的速度比较 75
1.5.7.4各FPGA/CPLD的特性与设计上常见的问题 75
第二章 IIC总线接口的设计 77
2.1IIC总线简介 78
2.1.1IIC总线的基本概念 78
2.1.2IIC总线协议简介 79
2.2IIC接口的顶层设计 82
2.2.1内部通讯协议 83
2.2.2IIC接口的顶层与模块划分 85
2.2.3控制寄存器 87
2.2.4数据缓存器 87
2.3IIC接口的第二层 88
2.3.1状态定义 88
2.3.2正常数据传输的状态转移设计 89
2.3.3传输过程中的安全考虑 89
2.3.4状态转移的Verilog描述 90
2.3.5典型操作的时序设计 94
2.4IIC接口的第三层设计 95
2.4.1内部通讯功能块的设计 95
2.4.1.1算法设计 96
2.4.1.2RTL描述 96
2.4.2控制寄存器的设计 97
2.4.2.1算法设计 98
2.4.2.2RTL描述 99
2.4.3数据缓存器的设计 101
2.4.3.1算法设计 101
2.4.3.2RTL描述 102
2.4.4外部时钟功能块的设计 105
2.4.4.1算法设计 105
2.4.4.2RTL描述 107
2.4.5读写指针功能块的设计 110
2.4.5.1算法设计 110
2.4.5.2RTL描述 110
2.4.6数据转换功能块的设计 112
2.4.6.1算法设计 112
2.4.6.2RTL描述 112
2.4.7传输位计数功能块的设计 114
2.4.7.1算法设计 114
2.4.7.2RTL描述 115
2.4.8外部通讯功能块的设计 117
2.4.8.1握手功能 117
2.4.8.2主IIC数据传输功能 119
2.4.8.3错误检测功能 122
2.5IIC总线接口的仿真平台“硬件”环境 122
结束语 124
第三章 IIS总线接口的设计 125
3.1IIS总线协议简介 125
3.1.1IIS总线的基本概念 126
3.1.1.1数据发送端和数据接收端 126
3.1.1.2主IIS和从IIS 126
3.1.2IIS总线协议简介 126
3.2IIS总线接口的顶层设计 127
3.2.1内部通讯协议设计 128
3.2.2IIS接口的顶层设计与模块划分 130
3.2.3寄存器的设计 132
3.3IIS接口的第二层设计 133
3.3.1接收器的设计 133
3.3.1.1声道启动信号的设计 133
3.3.1.2移位寄存器与隔离寄存器的设计 135
3.3.2组合器的设计 138
3.3.3发送器功能块的设计 147
3.3.3.1PCI-Master通讯协议的状态机实现 147
3.3.3.2FIFO动态调整的设计 151
3.3.3.38×32位FIFO的设计 153
3.3.4寄存器功能块的设计 156
3.4IIS总线接口的仿真 160
3.4.1仿真“硬件”环境的建立 160
3.4.2IIS总线接口的功能仿真项目 167
结束语 167
第四章 PCI总线接口的设计 168
4.1PCI总线协议简介 168
4.1.1PCI总线信号的定义 169
4.1.1.1系统信号 169
4.1.1.2地址/数据总线 169
4.1.1.3接口控制信号 170
4.1.1.4仲裁信号(只用于主PCI) 170
4.1.1.5错误报告信号 170
4.1.2PCI总线命令 171
4.1.3PCI总线的编址空间 172
4.1.3.1I/O地址空间 172
4.1.3.2内存地址空间 172
4.1.3.3配置地址空间 172
4.1.4PCI总线读写的基本协议 173
4.1.5PCI总线上的一些时间约定 174
4.1.6PCI总线的结束方式 174
4.1.6.1主PCI终止进程 174
4.1.6.2从PCI终止进程请求 175
4.2PCI总线接口的顶层设计 177
4.2.1PCI接口设计的总体考虑 178
4.2.2PCI接口内侧协议 180
4.2.2.1从PCI内侧协议 180
4.2.2.2主PCI内侧协议 181
4.2.3PCI接口的顶层 185
4.2.4PCI接口寄存器 186
4.2.4.1配置寄存器 186
4.2.4.2控制寄存器 187
4.3PDA模块 188
4.4从PCI模块 191
4.4.1从PCI的总体设计 192
4.4.2从PCI接口的第二层设计 194
4.4.2.1内、外状态机的状态定义 194
4.4.2.2内、外状态机的状态转移 195
4.4.2.3内、外状态机的HDL描述 197
4.4.3从PCI总线接口的第三层设计 207
4.4.3.1命令译码功能块的设计 207
4.4.3.2缓存器功能块的设计 209
4.4.3.3安全性所需要的控制信号设计 212
4.5主PCI 215
4.5.1主PCI的总体设计 216
4.5.2主PCI的第二层设计 217
4.5.2.1状态定义 217
4.5.2.2状态转移 218
4.5.2.3状态机的HDL描述 219
4.5.3主PCI的第三层设计 222
4.5.3.1Master Time与Devsel Timer的设计 223
4.5.3.2缓存器的设计 225
4.6ARB模块 231
4.6.1ARB的总体设计 232
4.6.2ARB模块的第二层设计 234
4.6.2.1状态定义与状态说明 234
4.6.2.2状态转移及HDL描述 234
4.6.3ARB模块的第三层设计 239
4.7PAR模块的设计 245
结束语 248
第五章 VMI总线接口的设计 249
5.1VMI总线协议简介 250
5.1.1VMI总线信号 250
5.1.2VMI总线时序 251
5.2VMI总线接口的顶层 254
5.2.1内部通讯协议 255
5.2.2数据传输模式的设计 256
5.2.2.1直接数据传输模式 256
5.2.2.2间接-1型传输模式 257
5.2.2.3间接-2型传输模式 257
5.2.2.4DMA数据传输模式 257
5.2.3VMI外设通讯时钟和进程终止 258
5.2.3.1VMI总线时钟的发生 258
5.2.3.2进程终止方式 258
5.2.4VMI总线接口的顶层设计与模块划分 259
5.2.5寄存器的设计 261
5.3VMI总线接口的第二层设计 263
5.3.1状态定义与状态转移图 263
5.3.2状态机的HDL描述 265
5.3.3关键控制信号的设计 269
5.4VMI总线接口的第三层设计 275
5.4.1寄存器模块的设计 275
5.4.1.1寄存器模块的功能分析与算法级设计 275
5.4.1.2寄存器模块的RTL设计 276
5.4.2数据通道模块的设计 286
5.4.2.1数据通道模块的算法设计 286
5.4.2.2数据通道功能块的RTL描述 287
结束语 291
第六章 SGRAM总线接口SBI的设计 292
6.1SGRAM接口通讯协议简介 292
6.1.1存储器的分类与特点 292
6.1.1.1动态随机存储器(DRAM,Dynamic RAM) 293
6.1.1.2静态随机存储器(SRAM,Static RAM) 293
6.1.1.3快闪存储器(Flash Memory)和铁电体随机存储器(Ferroelectric RAM) 293
6.1.2SGRAM总线通讯协议简介 294
6.1.2.1SGRAM总线信号 294
6.1.2.2SGRAM总线典型读写时序 295
6.2SGRAM总线接口的顶层设计 295
6.2.1SBI在待设计芯片中的位置和总体考虑 296
6.2.2SBI接口内部通讯协议 297
6.2.2.1SBI内侧协议的制定规则 298
6.2.2.2SBI接口内侧协议时序 299
6.2.2.3SBI接口内侧协议的设计技巧 302
6.2.3SBI接口的总体设计 302
6.2.4SBI接口的控制寄存器 304
6.3SGRAM传输接口的第二层设计 304
6.3.1读时钟选择模块的设计 305
6.3.1.1读周期同步问题的提出 305
6.3.1.2虚拟时钟相位空间的设计方法 305
6.3.1.3读时钟选择模块的RTL级设计 307
6.3.2用户仲裁器的设计 308
6.3.2.1静-动态混合优先级算法 309
6.3.2.2状态定义 309
6.3.2.3状态转移图 310
6.3.2.4RTL描述 310
6.3.3时序控制器的设计 315
6.3.3.1初始化期间的状态定义和状态转移 317
6.3.3.2正常数据传输的状态定义和状态转移 317
6.3.3.3出错处理的状态定义和状态转移 318
6.3.3.4状态机及控制信号的RTL级设计 319
6.3.3.5读计数器的RTL级设计 325
6.4SGRAM总线接口的第三层设计 327
6.4.1数据选择器模块的RTL设计 327
6.4.2地址译码器模块的RTL设计 334
结束语 336
专业名词英汉对照表 337
索引 340