Xilinx FPGA设计与实践教程


Xilinx FPGA设计与实践教程

文章插图
Xilinx FPGA设计与实践教程【Xilinx FPGA设计与实践教程】《Xilinx FPGA设计与实践教程》是2012年1月西安电子科技大学出版社出版的图书,作者是赵吉成、王智勇 。
基本介绍书名:Xilinx FPGA设计与实践教程
作者:赵吉成、王智勇
ISBN:9787560626291
定价:52.00元
出版社:西安电子科技大学出版社
出版时间:2012-01
装帧:平装
开本:16
编辑推荐本书整体而言,有以下三个特色: (1) 内容非常丰富 。全书覆盖了FPGA开发的整个流程、基于Verilog语言的数字电路设计、经典FPGA案例设计与验证、基于源码开放的微处理器PicoBlaze软硬体开发四个部分,富含120多个例程和近100道思考与练习题,对于提升读者的设计与实践能力有着实质性的帮助 。(2) 描述精闢透彻 。全书知识点讲述中,能够从深层次剖析知识点的本质,由浅入深引领读者理解数字设计的关键知识点,如时序电路基本模型、带数据路径状态机和同步电路设计方法等,其理论剖析深入而透彻 。(3) 经典实用 。书中结合Xilinx 的开发板讲述了UART串口通信、PS/2键盘/滑鼠接口控制器、VGA显示接口控制以及SRAM控制器等富有代表性的案例的设计、仿真以及验证,所有案例採用统一的设计思想和代码风格,使读者在牢固巩固数字设计基本方法的同时,从工程套用方面不知不觉上升一个高度 。本书写作上的亮点在于能够通过简单的实例引申出可程式逻辑设计的高级技巧和思想,通过巧妙的实践设计帮助读者理解和消化高深的理论,并养成良好的设计习惯 。我郑重地向大家推荐这本书,使更多的读者能够早日掌握FPGA的开发技能,促进FPGA技术的进一步推广 。内容简介本书系统讲述了FPGA的软硬体开发知识,并以Spartan-3开发套件为硬体平台,配合经典的实例套用,使读者能够从硬体设计、软体开发和系统设计等方面系统掌握FPGA的使用方法 。本书共四篇16章 。第一篇为FPGA设计基础与ISE开发基本流程,共2章,内容包括PLD技术基础,Xilinx FPGA的开发、仿真以及实现整个流程 。第二篇为数字电路设计基础与VerilogHDL描述,共5章,介绍了基于VerilogHDL的数字电路基础、同步电路设计思想和高级技巧 。第三篇为基于FPGA的接口开发,共5章,结合Xilinx FPGA开发板,详细讲述了UART串口通信控制器、PS/2键盘/滑鼠接口控制器、VGA图形图像显示控制器以及RAM接口控制器等案例的设计、开发以及验证 。第四篇为基于FPGA的软核微控制器PicoBlaze,共4章,以PicoBlaze为例,介绍了PicoBlaze微处理器的软硬体开发、中断设计等 。图书目录第一篇 FPGA设计基础与ISE开发基本流程第一章 FPGA设计基础 11.1 FPGA的基本概念 11.2 可程式逻辑技术发展简介 21.2.1 可程式技术发展演变过程 21.2.2 FPGA技术 51.3 FPGA器件编程技术 61.3.1 熔丝互连编程技术 61.3.2 基于反熔丝的编程技术 81.3.3 基于SRAM的可程式技术 101.3.4 基于FLASH或E2PROM的可程式技术 111.4 通用FPGA的构成结构 111.4.1 现代FPGA的基本逻辑单元 121.4.2 Xilinx Spartan-3 FPGA的基本结构 141.5 Xilinx FPGA的开发流程 201.6 FPGA技术的未来发展 23本章小结 25思考与练习 25第二章 ISE12.1开发环境与S3开发板 262.1 ISE12.1软体综述 262.1.1 ISE12.1套件分类 262.1.2 ISE12.1功能介绍 272.1.3 ISE12.1用户界面和选单操作 272.2 S3开发板简介 282.3 ISE开发流程 292.3.1 创建工程和设计输入 302.3.2 创建TestBench并进行RTL仿真 332.3.3 添加约束 362.3.4 综合与实现 372.3.5 生成配置档案并对FPGA进行配置 382.4 第三方开发工具 402.4.1 ModelSim介绍 402.4.2 在ModelSim中编译Xilinx的器件库 412.4.3 ModelSim 功能仿真举例 422.4.4 Synplify Pro介绍 472.4.5 关联ISE和Synplify Pro 472.4.6 Synplify Pro使用流程 48本章小结 52思考与练习 52第二篇 数字电路设计基础与VerilogHDL描述第三章 VerilogHDL语言基础 533.1 基本知识介绍 533.2 模组结构和编程框架 543.2.1 模组的结构 543.2.2 编程框架 563.3 数据类型和基本元素 583.3.1 基本概念 583.3.2 基本数据类型值 593.3.3 数据类型 593.3.4 常量 613.4 结构化描述 623.5 TestBench简介 64本章小结 66思考与练习 67第四章 组合逻辑设计 684.1 基本操作符 684.1.1 算术操作符 694.1.2 移位操作符 704.1.3 关係运算符与相等运算符 704.1.4 位操作、複製和逻辑操作运算符 704.1.5 连线与複製运算符 724.1.6 条件运算符 724.1.7 位宽调整操作 734.1.8 关于Z和X的综合 744.2 组合逻辑描述 754.2.1 使用always模组描述组合逻辑 754.2.2 使用赋值语句描述组合逻辑 764.2.3 举例说明 764.3 条件控制语句 784.3.1 if-else语句 784.3.2 case语句 804.3.3 casez和casex语句 824.3.4 “full case”和“parallel case”语句 834.4. 条件控制语句的布线结构 84 4.4.1 优先权布线网路 844.4.2 多路选择布线网路 854.5 always语句的编程指导 864.6 工程实践 894.6.1 十六进制数到七段数码管解码器 894.6.2 带符号加法器设计 924.6.3 桶形移位器设计 95本章小结 96思考与练习 97第五章 时序逻辑设计 985.1 时序电路基础 985.1.1 时序电路基本存储单元 985.1.2 同步时序电路 995.1.3 时序电路分类 1005.2 时序电路基本单元的HDL描述 1015.2.1 D触发器 1015.2.2 暂存器 1045.2.3 暂存器档案 1045.3 简单例程 1055.3.1 移位暂存器 1055.3.2 二进制计数器和变数 1075.4 时序电路的TestBench 1115.5 工程实践 1145.5.1 LED时序动态选择电路 1145.5.2 秒表设计 1225.5.3 FIFO缓冲器设计 126本章小结 131思考与练习 131第六章 时序状态机设计 1336.1 有限状态机 1336.1.1 Moore和Mealy状态机 1336.1.2 有限状态机的描述方式 1336.1.3 有限状态机的HDL开发 1356.2 状态机设计实例 1386.2.1 上升沿检测电路 1386.2.2 按键防抖动电路 1436.2.3 电路硬体验证 1476.3 带数据路径的状态机(FSMD) 1496.3.1 简单暂存器传输操作 1496.3.2 FSMD状态描述 1506.3.3 FSMD的模组框图 1516.4 FSMD的HDL代码开发 1526.4.1 基于FSMD描述的按键防抖动电路 1526.4.2 显性描述数据路径 1536.4.3 隐含描述数据路径 1566.5 设计举例 1586.5.1 斐波纳契序列(Fibonacci Number)实现电路 1586.5.2 频率检测器设计 1626.5.3 除法电路设计 165本章小结 169思考与练习 169第七章 数字电路设计原则与VerilogHDL难点解析 1717.1 时序电路基础 1717.1.1 同步电路的时序分析 1737.1.2 异步电路和同步电路的区别 1747.1.3 同步时序设计规则 1757.2 异步电路中的同步处理方法 1757.2.1 时钟的同步处理 175 7.2.2 接口电路处理 1777.2.3 全局信号处理 1827.3 阻塞赋值与非阻塞赋值 1847.3.1 概述 1857.3.2 组合逻辑电路中的赋值描述 1867.3.3 时序电路赋值描述 1877.3.4 时序电路中的混合赋值 1887.4 优秀HDL代码风格 1917.4.1 代码风格的含义 1917.4.2 通用代码风格 1917.4.3 Xilinx晶片专用代码风格 1957.4.4 推荐时序电路描述代码风格 1967.5 TestBench编写 1997.5.1 基于HDL的TestBench编写 1997.5.2 always和initial模组 1997.5.3 顺序执行语句 2007.5.4 时序控制语句 2017.5.5 系统函式和任务 2037.5.6 用户自定义函式和任务 2087.5.7 TestBench举例 211本章小结 218思考与练习 218第三篇 基于FPGA的接口开发第八章 UART串口通信控制器 2198.1 UART传输系统 2198.2 UART接收模组设计 2208.2.1 设计方案 2208.2.2 波特率产生器 2218.2.3 UART接收器 2218.2.4 接口电路 2258.3 UART传送模组设计 2288.4 UART系统的总结 2318.4.1 完整UART系统 2318.4.2 UART验证电路 2338.4.3 Windows的超级终端 2348.4.4 定製UART 235本章小结 236思考与练习 236第九章 PS/2键盘接口控制器 2379.1 PS/2基础 2379.1.1 PS/2连线埠的物理接口 2379.1.2 PS/2接口主从设备通信协定 2379.1.3 PS/2接收模组设计 2389.2 PS/2键盘扫描设计 2429.2.1 关于键盘扫描编码 2429.2.2 按键扫描电路设计 2439.3 PS/2键盘接口电路 2469.3.1 接口电路设计 2469.3.2 接口电路验证 248本章小结 251思考与练习 251第十章 PS/2滑鼠接口控制器 25310.1 PS/2滑鼠接口电路 25310.1.1 关于滑鼠 25310.1.2 滑鼠PS/2通信协定 25310.1.3 初始化过程 25410.2 PS/2传输子系统设计 25410.2.1 主系统对PS/2设备的通信协定 25410.2.2 设计与编码 25510.3 PS/2滑鼠数据传输系统 260 10.3.1 双向传输PS/2接口电路设计 26010.3.2 双向传输PS/2验证电路 26210.4 PS/2滑鼠数据接口电路 26510.4.1 传输PS/2接口电路设计 26510.4.2 传输PS/2接口电路测试 268本章小结 270思考与练习 270第十一章 RAM接口控制器 27111.1 关于IS61LV25616AL SRAM 27111.1.1 晶片介绍以及I/O接口 27111.1.2 时序参数 27211.2 基本存储控制器 27411.2.1 设计框图 27411.2.2 时序要求 27611.2.3 存储器档案与SRAM的对比 27611.2.4 设计安全性 27611.2.5 ASMD状态机图 27611.2.6 时序分析 27711.2.7 HDL代码设计 27811.2.8 基本测试电路 28111.2.9 完整的SRAM测试电路 28311.3 更加完善的设计 28911.3.1 异步SRAM的时序信息 28911.3.2 选择设计Ⅰ 29011.3.3 选择设计Ⅱ 29111.4 Xilinx Spartan-3内部存储器 29211.4.1 概述 29211.4.2 利用CoreGenerator定製嵌入式RAM模组 29211.5 Xilinx嵌入式存储器例化举例 29311.5.1 单连线埠RAM 29311.5.2 双连线埠RAM 29511.5.3 ROM 297本章小结 299思考与练习 299第十二章 VGA图形图像显示控制器 30112.1 CRT显示器原理 30112.1.1 CRT显示的基本原理 30112.1.2 视频显示基本术语 30212.1.3 S3开发板上的VGA连线埠 30312.1.4 VGA视频控制器 30312.2 VGA同步电路 30412.2.1 水平同步 30412.2.2 垂直同步 30512.2.3 HDL实现 30612.2.4 测试电路 30812.3 像素产生电路 30912.3.1 矩形图形显示 31112.3.2 非矩形目标显示 31612.3.3 动态目标显示 31712.4 点阵图显示方案 32412.4.1 採用双连线埠RAM实现 32412.4.2 採用单连线埠RAM实现 328本章小结 328思考与练习 329第四篇 基于FPGA的软核微控制器PicoBlaze第十三章 基于Xilinx FPGA的微处理器 33113.1 PicoBlaze架构介绍 331 13.1.1 微处理器的套用 33313.1.2 PicoBlaze处理器的特点 33313.1.3 顶层HDL模型 33513.1.4 设计流程 33513.2 指令设定 33613.2.1 编程模型 33713.2.2 指令格式 33713.2.3 逻辑指令 33813.2.4 算术指令 33913.2.5 比较和测试指令 33913.2.6 移位和循环指令 34013.2.7 数据传输指令 34113.2.8 程式流程控制指令 34213.2.9 中断相关指令 34413.2.10 KCPSM3彙编宏命令 34513.3 PicoBlaze档案结构 346本章小结 349思考与练习 349第十四章 PicoBlaze彙编语言开发 35014.1 PicoBlaze彙编基础 35014.1.1 KCPSM3语法规定 35014.1.2 位操作 35014.1.3 多位元组操作 35114.1.4 常用控制语句结构的彙编语言描述 35214.2 子程式开发 35514.3 PicoBlaze彙编程式开发 35614.3.1 开发流程 35614.3.2 程式举例 35714.3.3 说明文档与注释 36314.4 PicoBlaze软体开发流程 36514.4.1 使用KCPSM3编译 36514.4.2 使用PBlazeIDE仿真 36614.4.3 使用JTAG接口下载代码 36914.4.4 代码综合 369本章小结 371思考与练习 371第十五章 PicoBlaze接口开发 37215.1 输出连线埠 37215.1.1 输出指令和时序 37215.1.2 输出接口 37315.2 输入连线埠 37515.2.1 输入指令和时序 37515.2.2 输入接口 37515.3 求平方和电路接口开发 37715.3.1 输出接口 37715.3.2 输入接口 37915.3.3 彙编程式设计 38015.3.4 HDL程式开发 389本章小结 392思考与练习 392第十六章 PicoBlaze中断 39316.1 PicoBlaze中断处理机制 39316.1.1 软体中断处理过程 39316.1.2 中断时序描述 39416.2 外部中断接口 39516.2.1 单箇中断请求 39516.2.2 多箇中断请求 39516.3 软体开发 39616.3.1 中断处理主程式 39616.3.2 中断服务程式 39716.4 设计举例 39716.4.1 中断接口 397 16.4.2 中断服务子程式开发 39716.4.3 彙编程式开发 39816.4.4 HDL代码开发 405本章小结 409思考与练习 409参考文献 410