目录
第1章EDA技术概述
1.1EDA技术及其发展历程
1.2Topdown设计思路
1.2.1Topdown设计
1.2.2Bottomup设计
1.3IP核复用
1.3.1IP核复用技术
1.3.2片上系统
1.4EDA设计的流程
1.4.1设计输入
1.4.2综合
1.4.3布局布线
1.4.4时序分析
1.4.5功能仿真与时序仿真
1.4.6编程与配置
1.5常用的EDA工具软件
习题1
第2章FPGA/CPLD器件
2.1PLD器件概述
2.1.1PLD器件的发展历程
2.1.2PLD器件的分类
2.2PLD的原理与结构
2.3低密度PLD的原理与结构
2.4CPLD的原理与结构
2.4.1宏单元结构
2.4.2典型CPLD的结构
2.5FPGA的原理与结构
2.5.1查找表结构
2.5.2FPGA的结构
2.5.3Artix7系列FPGA
2.6FPGA/CPLD的编程工艺
2.6.1熔丝型开关
2.6.2反熔丝型开关
2.6.3浮栅编程工艺
2.6.4SRAM编程工艺
2.7边界扫描测试技术
2.8FPGA/CPLD的编程与配置
2.8.1在系统可编程
2.8.2Artix7器件的配置
2.9典型的FPGA/CPLD系列
习题2
第3章Vivado使用指南
3.1Vivado流水灯设计
3.1.1流水灯设计输入
3.1.2行为仿真
3.1.3综合与引脚的约束
3.1.4生成比特流文件并下载
3.1.5将配置数据烧写至Flash中
3.2IP核的创建和封装
3.3基于IP集成的计数器设计
3.4Vivado的综合策略与优化设置
习题3
第4章Verilog设计初步
4.1Verilog HDL简史
4.2Verilog模块初识
4.3Verilog设计示例
4.3.1Verilog组合电路设计
4.3.2Verilog时序电路设计
4.4Verilog文字规则
4.4.1词法
4.4.2字符串
4.4.3标识符
4.5数字
4.5.1整数
4.5.2实数
4.5.3数的转换
4.5.4整数用于表达式
4.6数据类型
4.6.1值集合
4.6.2net数据类型
4.6.3variable数据类型
4.7向量
4.8数组
4.9参数
4.9.1parameter参数
4.9.2localparam局部参数
4.9.3specparam参数
4.9.4参数值修改
4.10操作符
4.10.1算术操作符
4.10.2关系操作符
4.10.3等式操作符
4.10.4逻辑操作符
4.10.5位操作符
4.10.6缩减操作符
4.10.7移位操作符
4.10.8指数操作符
4.10.9条件操作符
4.10.10拼接操作符
4.10.11操作符的优先级
习题4
第5章Verilog行为描述
5.1行为级建模
5.1.1always过程语句
5.1.2initial过程
5.2过程时序控制
5.2.1延时控制
5.2.2事件控制
5.3过程赋值
5.3.1variable型变量声明时赋值
5.3.2阻塞过程赋值
5.3.3非阻塞过程赋值
5.3.4阻塞过程赋值与非阻塞过程赋值的区别
5.4过程连续赋值
5.4.1assign和deassign
5.4.2force和release
5.5块语句
5.5.1beginend串行块
5.5.2forkjoin并行块
5.5.3块命名
5.6条件语句
5.6.1ifelse语句
5.6.2case语句
5.6.3casez与casex语句
5.7循环语句
5.7.1for语句
5.7.2repeat、while和forever语句
5.8任务
5.8.1任务概述
5.8.2任务示例
5.9函数
5.9.1函数概述
5.9.2任务和函数的区别
5.10automatic任务和函数
5.10.1automatic任务
5.10.2automatic函数
5.11编译指令
5.11.1`timescale
5.11.2`define和`undef
5.11.3`ifdef、`else、`elsif、`endif和`ifndef
5.11.4`include
习题5
第6章Verilog设计的层次与风格
6.1Verilog描述的层级和方式
6.2Verilog门元件
6.2.1门元件
6.2.2门元件的例化
6.3门级结构描述
6.4用户自定义元件
6.4.1组合逻辑UDP元件
6.4.2时序逻辑UDP元件
6.4.3时序UDP元件的初始化和例化
6.5赋值
6.5.1连续赋值
6.5.2net型变量声明时赋值
6.5.3驱动强度
6.6数据流描述
6.6.1数据流描述加法器
6.6.2数据流描述减法器
6.6.3数据流描述触发器
6.6.4格雷码与二进制码相互转换
6.7多层次结构电路设计
6.7.1带参数模块例化
6.7.2用parameter进行参数传递
6.7.3用defparam进行参数重载
6.8generate生成语句
6.8.1generate、for生成语句
6.8.2generate、if生成语句
6.8.3generate、case生成语句
6.9三态逻辑设计
6.10属性
习题6
第7章Verilog有限状态机设计
7.1引言
7.2有限状态机的Verilog描述
7.2.1三段式状态机描述
7.2.2两段式状态机描述
7.2.3单段式描述
7.3状态编码
7.3.1常用的编码方式
7.3.2状态编码的定义
7.3.3用属性语句指定状态编码
7.4用有限状态机实现除法器
7.5用有限状态机控制流水灯
7.6用状态机控制字符型液晶显示模块
习题7
第8章Verilog驱动常用I/O外设
8.1标准PS/2键盘
8.24×4矩阵键盘
8.2.14×4矩阵键盘驱动
8.2.2数码管扫描显示
8.3汉字图形点阵液晶显示模块
8.3.1LCD12864B
8.3.2LCD12864B的静态显示
8.3.3LCD12864B的动态显示
8.4VGA显示器
8.4.1VGA显示的原理与时序
8.4.2VGA彩条信号发生器
8.4.3VGA显示彩色圆环
8.4.4VGA图像显示
8.5TFTLCD液晶屏
8.5.1TFTLCD液晶屏概述
8.5.2TFTLCD液晶屏显示彩色圆环
8.5.3TFTLCD液晶屏显示动态矩形
8.6音乐演奏电路
8.6.1音符演奏
8.6.2音乐演奏
8.7数字钟
习题8
第9章Verilog设计进阶
9.1面向综合的设计
9.2加法器设计
9.2.1行波进位加法器
9.2.2超前进位加法器
9.3乘法器设计
9.3.1用乘法操作符实现
9.3.2布斯乘法器
9.3.3查找表乘法器
9.4有符号数的运算
9.4.1有符号数的加法运算
9.4.2有符号数的乘法运算
9.4.3绝对值运算
9.5ROM存储器
9.6RAM存储器
9.6.1单口RAM
9.6.2异步FIFO
9.7流水线设计
9.8资源共享
9.9奇数分频与小数分频
9.9.1奇数分频
9.9.2半整数分频
9.9.3小数分频
习题9
第10章Test Bench测试与时序检查
10.1系统任务与系统函数
10.2显示类任务
10.2.1$display与$write
10.2.2$strobe与$monitor
10.3文件操作类任务
10.3.1$fopen与$fclose
10.3.2$fgetc与$fgets
10.3.3$readmemh与$readmemb
10.4控制和时间类任务
10.4.1$finish与$stop
10.4.2$time、$stime与$realtime
10.4.3$printtimescale与$timeformat
10.4.4$signed与$unsigned
10.5随机数及概率分布函数
10.5.1$random
10.5.2概率分布函数
10.6Verilog中的延时定义
10.6.1门延时
10.6.2赋值延时
10.7specify块与路径延时
10.7.1specify块
10.7.2模块路径延时
10.7.3路径延时和分布延时混合
10.8时序检查
10.8.1$setup和$hold
10.8.2$width和$period
10.9Test Bench测试
10.9.1Test Bench
10.9.2产生激励信号
10.9.3产生时钟信号
10.9.4读写文件
10.9.5显示结果
10.10测试示例
10.11ModelSim SE使用指南
10.11.1图形用户界面进行功能仿真
10.11.2命令行方式进行功能仿真
10.11.3时序仿真
习题10
第11章Verilog设计实例
11.1超声波测距
11.2脉宽调制与步进电动机驱动
11.2.1PWM信号
11.2.2用PWM驱动蜂鸣器
11.2.3用PWM驱动步进电动机
11.3整数开方运算
11.4频率测量
11.5FIR滤波器
11.5.1FIR滤波器的参数设计
11.5.2FIR滤波器的实现
11.6Cordic算法及实现
11.6.1Cordic算法
11.6.2Cordic算法的实现
11.7UART异步串口通信
11.8蓝牙通信
11.9用XADC实现模数转换
11.9.17系列FPGA片内集成ADC概述
11.9.2XADC的使用
习题11
附录AVerilog HDL关键字
参考文献