本书定位在学习VHDL和FPGA设计的初学者。 即深入浅出地讲述了VHDL程序设计方法, 又结合Modelsim、FPGA Express和Xilinx Foundation软件详细讲述了FPGA设计的功能仿真,综合,布局布线和时序仿真等 结合EDA设计的特点,剖析了VHDL语言在FPGA设计中的重点难点,并将这些设计思想贯穿全书始终 本书读者对象为大中专院校相关专业的高年级本科生和研究生,以及从事EDA设计的研发工程师。 本书涉及到的范例程序文件在http://www.tqbooks.net/download.asp网页上可免费下载。 第0章 前 言 1 0-1 VHDL的发展 2 0-2 VHDL的优点 3 0-3 所须具备的概念 3 0-4 'SRAM Base'vs.'Anti-Fuse' 4 0-5 本书的内容 5 0-6 使用工具 7 第1章 设计的基本概念 9 1-1 设计阶段的划分 10 1-2 VHDL设计的流程 10 1-3 Design Entry-Schematics vs. VHDL 12 1-4 Function Simulation VHDL 12 1-5 Synthesis 13 1-6 Place & Route 14 1-7 Timing Simulation 14 1-8 小结 14 第2章 架构(Architecture) 17 2-1 Simulator的使用 18 2-2 基本架构 24 2-2-1 Library 26 2-2-2 Use 28 2-2-3 Entity 29 2-2-4 Port 30 2-3 Architecture 32 2-4 命名法则与注释 33 2-5 扩展的声明 33 2-5-1 Package 34 2-5-2 Package Body 36 2-6 小结 38 问题 38 第3章 数据类型(Type) 41 3-1 Standard Package定义的数据类型 42 3-1-1 标量型数据类型 42 3-1-2 枚举型数据类型 43 3-1-3 复合型的数据类型 44 3-2 IEEE Package定义的数据类型 44 3-3 复合型数据类型 48 3-3-1 Array 48 3-3-2 Record 48 3-4 文件型数据类型 49 3-5 小结 51 问题 52 第4章 运算符(Operator) 53 4-1 1076-1987与1076-1993 Operator的差异 54 4-2 Logical Operator 54 4-3 Relational Operator 56 4-4 Shift Operator 58 4-4-1 IEEE 1076-1993中的Shift Operator 59 4-4-2 衍生的移位处理 61 4-5 Adding Operator 64 4-5-1 加减法运算处理 64 4-5-2 连接(Concatenation)处理 67 4-6 Sign Operator 68 4-7 Multiplying Operator 68 4-8 Miscellaneous Operator 69 4-9 Operator的优先级 70 4-10 小结 72 问题 72 第5章 组合逻辑电路(Combinational Logic) 73 5-1 基本的Combinational Logic 74 5-1-1 And 74 5-1-2 Or 76 5-1-3 Not及其他 77 5-2 较复杂的Combinational Logic 77 5-2-1 When-Else 77 5-2-2 With-Select-When 78 5-3 Process中的Combinational Logic 79 5-4 Delay对Combinational Logic的影响 84 5-5 小结 85 问题 86 第6章 时序逻辑电路(Sequential Logic) 87 6-1 Process的语法结构 88 6-2 If语句 92 6-3 Wait语句 96 6-3-1 Wait Until语句 96 6-3-2 Wait For语句 98 6-3-3 Wait On语句 100 6-4 Case语句 102 6-5 Sync与Async Reset 103 6-6 Loop 105 6-6-1 与While及For合用 105 6-6-2 Loop的嵌套 107 6-6-3 Next语句 109 6-6-4 Exit语句 111 6-7 Assert语句 113 6-8 小结 116 问题 117 第7章 函数(Function)与过程(Procedure) 119 7-1 Function的声明及使用 120 7-2 类型转换的Function 122 7-3 重载函数(Overload Function) 126 7-4 Procedure 129 7-5 小结 132 问题 133 第8章 属性(Attribute)与配置(Configuration) 135 8-1 返回信号状态的属性 136 8-1-1 Event属性 136 8-1-2 Active属性 137 8-1-3 Last_event属性 137 8-1-4 Last_value及Last_active属性 139 8-2 返回单一数值的属性 140 8-3 返回数值范围的属性 142 8-4 Configuration 144 8-4-1 Architecture Configuration 144 8-4-2 Component Configuration 147 8-4-3 Generic Configuration 151 8-5 小结 154 问题 155 第9章 层次式设计(Hierarchy Design) 157 9-1 Component Instantiation 158 9-2 Design Partition 163 9-3 设计方法的讲述 164 9-3-1 Input Latch & Float->Fix 164 9-3-2 Adder 166 9-3-3 Fix->Float & Output Latch 168 9-4 顶层设计及仿真 170 9-4-1 顶层设计的连接 170 9-4-2 设计仿真 172 9-5 小结 174 问题 174 第10章 功能仿真(Function Simulation) 177 10-1 Dependency 178 10-2 ModelSim中的Options 179 10-3 建立Simulation Macro 184 10-3-1 建立基本的Marco 184 10-3-2 双向Bus的仿真Macro 187 10-4 Testbench Simulation 189 10-5 Textio仿真 192 10-6 Simulation Library的建立 198 10-6-1 Core Generator的使用 199 10-6-2 Simulation Library的建立 202 10-6-3 Design的处理 205 10-6-4 进行Simulation 208 10-7 层次式的仿真及调试 208 10-8 小结 210 问题 211 第11章 合成(Synthesis) 213 11-1 Synthesizer的使用 214 11-2 预布局仿真(Pre-Layout Simulation) 218 11-3 一些不能合成的例子 219 11-3-1 时间延迟的要求 219 11-3-2 不合乎硬件设计 222 11-3-3 起始值的设定 223 11-4 Constraint的设置方法 227 11-5 Block Box的Synthesis 233 11-6 层次式设计的Synthesis 234 11-7 小结 235 问题 236 第12章 布局布线(Place & Route) 237 12-1 Place & Route工具的使用 238 12-2 Constraint的设定 241 12-2-1 Timing Constraint 241 12-2-2 非Timing Constraint 246 12-3 Report Analyze 247 12-4 层次式设计的Place & Route 249 12-5 小结 250 问题 251 第13章 时序仿真(Timing Simulation) 253 13-1 编译VHDL Netlist File 254 13-2 Timing Simulation 255 13-2-1 信号GSR所造成的问题 256 13-2-2 Setup Time Check造成的错误 259 13-3 SDF File 261 13-3-1 SDF的内容 261 13-3-2 表头部分 261 13-3-3 基本单元 263 13-3-4 时序检查 264 13-4 仿真分析 266 13-5 规格的设定 273 13-6 运用Textio做数据对比的Timing Simulation 274 13-7 Timing Simulation的好处 278 13-8 小结 278 问题 279 第14章 状态机设计(State Machine Design) 281 14-1 State Machine的建立 282 14-1-1 程序代码的撰写 283 14-1-2 设计的Function Simulation 287 14-1-3 设计的Synthesis及Place& Route 289 14-1-4 时序仿真(Timing Simulation) 290 14-2 状态机的修改 291 14-2-1 程序代码的修改 292 14-2-2 修改设计的功能仿真(Function Simulation) 294 14-2-3 设计的合成(Synthesis)与布局布线(Place & Rute) 295 14-2-4 时序仿真(Timing Simulation) 297 14-3 One-hot与Binary Decode 298 14-4 小结 299 问题 299 第15章 并行处理(Pipelined Processing) 301 15-1 未使用并行处理的乘法器 302 15-2 增加Input Latch的乘法器 308 15-3 将乘法器一分为二的设计 310 15-4 改善已有的设计 314 15-5 并行处理的缺点 315 15-6 小结 316 附 录 317