内容简介
第1部分 VHDL代码编写
第1章 绪言
1.1 传统设计方法——原理图输入
1.2 硬件描述语言
1.3 VHDL设计的结构
1.4 VHDL设计内的元件实例化
1.5 结构式、行为式与可综合VHDL设计
1.5.1 结构式VHDL描述
1.5.2 行为式VHDL描述
1.5.3 RTL级代码
1.6 在VHDL设计中使用库声明
第2章 VHDL仿真与综合流程
第3章 基本逻辑元件的可综合代码
3.1 与逻辑
3.2 或逻辑
3.3 非逻辑
3.4 与非逻辑
3.5 或非逻辑
3.6 三态缓冲器逻辑
3.7 复杂逻辑门
3.8 锁存器
3.8.1 避免代码中出现锁存器
3.9 触发器
3.10 译码器
3.11 编码器
3.12 多路选择器
3.13 优先级编码器
3.14 存储器单元
3.15 加法器
3.16 元件推定
第4章 信号与变量
4.1 变量
4.2 信号
4.3 采用信号和变量的时机
4.4 反馈信号的用法
第5章 复杂示例的可综合代码
5.1 移位器
5.2 计数器
5.3 存储器模块
5.4 汽车行驶控制器
第6章 设计可综合的流水式微控制器
6.1 定义指令集
6.2 定义体系结构
6.3 定义流水线
6.4 定义流水式微控制器的微结构
6.4.1 预译码功能块
6.4.2 译码功能块
6.4.3 寄存器堆功能块
6.4.4 执行功能块
6.4.5 整个微控制器芯片
第2部分 基于SYNOPSYS工具的逻辑综合
第7章 设计中的时序因素
7.1 建立时间违规
7.2 保持时间违规
7.3 逻辑综合中的建立时间和保持时间因素
7.4 改进微结构以消除建立时间违规
7.4.1 通过逻辑复制生成独立路径
7.4.2 在利用滞后到达信号作选择之前进行逻辑复制
7.4.3 在触发器间进行逻辑均衡
7.4.4 优先级译码与多路译码
7.5 改进微结构以消除保持时间违规
7.6 异步路径与无效路径
7.7 多周期路径
第8章 基于时序约束的VHDL综合
8.1 Design Compiler简介
8.2 使用Design Compiler进行综合
8.3 性能改进
8.3.1 采用-map_effort high选项编译
8.3.2 将关键路径聚合成组并设定权重因子
8.3.3 对设计对象进行逻辑展平
8.3.4 表征子模块
8.3.5 寄存器均衡
8.3.6 采用FSM Compiler优化有限状态机
8.3.7 对高级功能模块选择高速实现电路
8.3.8 对重负载逻辑树进行均衡
8.4 通过综合改进实现面积优化
8.4.1 组合逻辑不单独作为功能块使用
8.4.2 模块间不使用胶黏逻辑
8.4.3 使用set_max_area属性
8.5 使用Synopsys工具消除保持时间违规
8.6 其他常用的综合命令
8.7 自顶而下与自底而上编译
第9章 实例化GTECH库单元
第10章 DesignWare库
10.1 建立自己的DesignWare库
第11章 综合中的可测试性问题
11.1 复用触发器扫描方式
11.2 使用Synopsys的Test Compiler实现扫描插入
第12章 FPGA综合
第13章 综合与版图工序之间的联系
13.1 前向标注
13.2 连线负载模型
13.3 版面规划
13.4 版图工序之后的优化
第14章 实现有效综合应遵循的设计指导原则
附录A STD_LOGIC_1164库
附录B 移位器综合结果
附录C 计数器综合结果
附录D 流水式微控制器综合结果
附录E 第6章微控制器示例综合出的EDIF文件
附录F 第6章微控制器示例综合出的SDF文件
词汇表
参考文献
图1 只有一个结构体的设计
图2 具有多个结构体的设计
图3 层次化的设计对象
图4 实例化出3个与门元件的设计
图5 “某一模块”的原理图
图6 HDL仿真与综合的常规流程
图7 VHDL设计对象及其测试平台
图8 综合出的与逻辑
图9 综合出的或逻辑
图10 综合出的非逻辑
图11 综合出的与非逻辑门
图12 综合出的或非逻辑门
图13 综合出的三态缓冲器
图14 综合出的复杂逻辑门
图15 综合出的锁存器
图16 综合出的触发器
图17 综合出的译码器
图18 综合出的编码器
图19 综合出的多路选择器逻辑
图20 综合出的优先级编码器
图21 具有滞后到达信号E的逻辑元件
图22 综合出的采用触发器的存储器单元
图23 综合出的加法器方块图
图24 由逻辑门构造出的加法器的原理图
图25 例27(采用变量)的仿真结果时序图
图26 例28(采用信号)的仿真结果时序图
图27 反馈信号
图28 4位移位器设计的引脚示意图
图29 移位器设计的流程图
图30 左移时序图
图31 右移时序图
图32 桶式右移时序图
图33 桶式左移时序图
图34 4位计数器设计引脚示意图
图35 计数器设计的递增计数时序图
图36 计数器设计的递减计数时序图
图37 存储器模块引脚示意图
图38 存储器模块读操作/写操作流程图
图39 存储器模块写操作时序波形图
图40 存储器模块读操作时序波形图
图41 汽车行驶控制器模块状态图
图42 汽车行驶控制器的仿真结果时序图
图43 微控制器接口示意图
图44 微控制器的流水阶段
图45 流水线中的指令执行过程
图46 整个微控制器芯片的微结构定义
图47 预译码功能块接口信号示意图
图48 预译码功能块测试平台时序波形图
图49 译码功能块接口信号示意图
图50 译码功能块测试平台时序波形图
图51 寄存器堆功能块接口信号示意图
图52 寄存器堆测试平台仿真结果时序波形图
图53 执行功能块接口信号示意图
图54 执行功能块接口信号示意图
图55 执行功能块测试平台时序波形图
图56 微控制器测试平台时序波形图
图57 以组合逻辑驱动触发器的输入信号A的电路示意图
图58 信号A的建立时间时序图
图59 信号A的保持时间时序图
图60 对综合出的电路作静态时序分析
图61 某个组合逻辑电路示意图
图62 某个作了逻辑复制的组合逻辑电路示意图
图63 某逻辑电路示意图
图64 通过逻辑复制对稍早到达的信号提前译码的逻辑电路示意图
图65 采用多级译码的设计示意图
图66 某个采用多级译码而作了逻辑均衡的设计示意图
图67 采用优先级译码的设计
图68 采用多路译码的设计
图69 保持时间违规的设计
图70 消除了保持时间违规的设计对象示意图
图71 具有多周期路径的设计对象示意图
图72 以虚拟时钟为参照的输入延迟和输出延迟时序图
图73 顶层TOP模块和其多个子模块的示意图
图74 流水式设计对象的示意图
图75 未作划分的设计对象
图76 划分得体的零散逻辑和状态机
图77 由balance_buf_ent综合出的电路
图78 对balance_buf_ent作了balance_buffer处理而综合出的电路
图79 独立的组合逻辑功能块
图80 将组合逻辑X、Y和Z组合起来
图81 模块A和C之间的胶黏逻辑
图82 RESET是无效路径
图83 多周期路径
图84 推导出的四个与门
图85 两个与门聚成一组形成b1ock1
图86 将与门聚组形成block1和b1ock2
图87 使用LOOP和NEXT语句的VHDL代码的综合结果
图88 具有5个子模块的顶层设计对象示意图
图89 顶层模块的时间预算示意图
图90 从GTECH库中的XNOR4映射出四输入XNOR逻辑单元
图91 从GTECH库中的XNOR4映射出两输入XNOR逻辑单元和两输入XOR逻辑单元
图92 含测试插入的综合/版图设计流程图
图93 用作等价扫描单元的复用触发器
图94 扫描模式和正常工作模式下复用触发器的用法
图95 设计对象中的扫描链
图96 将设计对象综合到FPGA中的步骤流程图
图97 从综合到版图工序间的信息前向标注图
图98 RC信息的反向标注
表1 “某一模块”的真值表
表2 “某一模块”的卡诺图
表3 与逻辑功能的真值表
表4 或逻辑功能的真值表
表5 与非逻辑功能的真值表
表6 或非逻辑功能的真值表
表7 三态缓冲器逻辑功能的真值表
表8 复杂逻辑门功能的真值表
表9 译码逻辑功能的真值表
表10 8输入编码器的真值表
表11 多路选择器逻辑功能的真值表
表12 逐位选择式优先级编码器的真值表
表13 加法器逻辑功能的真值表
表14 用于逻辑元件推导的算符和关键字
表15 各种移位模式的移位过程
表16 移位器的引脚和功能描述
表17 计数器设计的引脚描述
表18 存储器模块的引脚描述
表19 汽车行驶控制器模块的引脚描述
表20 微控制器指令集描述
表21 微控制器接口信号的描述
表22 微控制器16个内部寄存器的表示法
表23 预译码功能块接口信号的描述
表24 译码功能块接口信号的描述
表25 寄存器堆功能块接口信号的描述
表26 执行功能块接口信号的描述
表27 加法器的不同实现方案
例1 具有多种结构体的VHDL代码
例2 实例化出3个与门元件设计的VHDL代码
例3 “某一模块”的结构式VHDL描述
例4 “某一模块”的行为式代码
例5 “某一模块”的描述式VHDL代码
例6 编写可综合VHDL代码时使用类型转换函数
例7 与逻辑的可综合代码
例8 或逻辑的可综合代码
例9 非逻辑的可综合代码
例10 与非逻辑的可综合代码
例11 或非逻辑的可综合代码
例12 三态缓冲器逻辑的可综合代码
例13 复杂逻辑门的可综合代码
例14 锁存器的可综合代码
例15 产生锁存器的IF语句代码
例16 不会产生锁存器的IF语句代码
例17 产生锁存器的CASE语句代码
例18 不会产生锁存器的CASE语句代码
例19 触发器的可综合代码
例20 译码器的可综合代码
例21 编码器的可综合代码
例22 多路选择器逻辑的可综合代码
例23 优先级编码器的可综合代码
例24 存储器单元的可综合代码
例25 加法器的可综合代码
例26 推导出与门的VHDL代码
例27 体现变量用法的VHDL代码
例28 体现信号用法的VHDL代码
例29 仿真信号和变量用法的测试平台
例30 声明使用一个BUFFER端口和一个OUT端口的VHDL代码
例31 使用信号实现反馈
例32 4位移位器的可综合VHDL代码
例33 4位移位器设计的测试平台
例34 4位计数器设计的可综合VHDL代码
例35 4位计数器设计的测试平台
例36 1KB容量存储器模块的可综合代码
例37 存储器模块的VHDL测试平台
例38 汽车行驶控制器模块的可综合VHDL代码
例39 汽车行驶控制器模块的测试平台
例40 预译码功能块的可综合VHDL代码
例41 用于核对功能正确性的测试平台的VHDL代码
例42 译码功能块的可综合VHDL代码
例43 译码功能块的测试平台
例44 寄存器堆功能块的可综合VHDL代码
例45 寄存器堆功能块测试平台的可综合VHDL代码
例46 执行功能块的可综合VHDL代码
例47 用于检查执行功能块功能正确性的测试平台
例48 整个微控制器芯片的可综合代码
例49 微控制器的测试平台
例50 32位加法器的可综合VHDL代码
例51 16位减法器
例52 4位乘法器
例53 具有2条流水线的设计对象的VHDL代码
例54 反相器的VHDL代码
例55 32位比较器的可综合VHDL代码
例56 采用BLOCK语句的四个与门的VHDL代码
例57 采用LOOP语法结构的VHDL代码
例58 采用GENERATE语法结构的VHDL代码
例59 使用LOOP和NEXT的VHDL代码
例60 含有组合反馈环路的设计对象的VHDL代码
例61 实例化GTECH库中的XNOR单元
例62 实例化DesignWare元件的VHDL代码
例63 对DesignWare DWO3库中的SRAM模块作实例化的VHDL代码
例64 N位移位器的VHDL代码
例65 实例化MY_DW_SHIFTER的VHDL代码
例66 连线负载模型