1. 基于Verilog的FPGA设计基础的目录
第1章 绪论
1. FPGA概述
1.1.1 FPGA发展的简要回顾
1.1.2 FPGA与ASIC
1.2 可编程逻辑器件的基本概念
1.3 简单可编程器件(sPLD)的结构
1.4 高密度可编程逻辑器件
1.4.1 复杂可编程逻辑器件CPLD
1.4.2 现场可编程门阵列FPGA
1.4.3 CPLD和FPGA的区别
1.4.4 FPGA/CPLD厂家简介
1.5基于FPGA的设计流程与设计方法
1.5.1 基于FPGA的设计流程
1.5.2 自顶向下和自底向上的设计方法学
1.5.3 基于IP核的设计
1.6 EDA技术简介
第2章 可编程逻辑器件
2.1 Altera器件概述
2.1.1 FPGA系列简介
2.1.2 EPLD系列简介
2.1.3 结构化ASIC器件
2.1.4 FPGA器件的配置芯片
2.2 Altera的EPID器件系列
2.2.1 EPLD器件的特性
2.2.2 MAX9000器件的结构
2.2.3 MAX II器件的结构
2.3 Altera的FPGA器件
2.3.1 简单FPGA器件
2.3.2 复杂FPGA器件
2.3.3 新型FPGA器件1
2.4 Xilinx公司产品简介1
2.4.1 Xilinx CPLD器件
2.4.2 Xilinx FPGA器件的特性
2.4.3 Xilinx FPGA器件的结构
2.5 Lattice公司产品简介
2.5.1 I,attice CPLD器件系列
2.5.2 Lattice FPGA产品系列
2.5.3 FPSC产品系列1
2.5.4 低密度PLD产品系列
2.5.5 其他产品
2.6 Actel公司产品简介
2.6.1 Flash FPGA器件
2.6.2 反熔丝FPGA器件
2.6.3 航空航天和军用器件
窘3章 FPGA设计入门
3.1 系统的抽象层次与高级硬件描述语言Verilog
3.2 用Verilog语言建立数字电路模型
3.2.1 代码的书写风格
3.2.2 可综合代码的编码风格
3.2.3 时序电路的设计
3.3 模块设计
3.4 系统规范
3.4.1 系统规范的内容
3.4.2 选择FPGA
第4章 设计验证
4.1 验证综述
4.1.1 验证的概念
4.1.2 验证和测试
4.1.3 自顶向下和自底向上的验证方法
4.1.4 主要验证技术 1
4.1.5 验证工具的介绍
4.1.6 验证计划和流程
4.2 功能验证
4.2.1 验证程序(Testbench)的组成
4.2.2 实用构造Trestbench技术
4.3 基于断言的验证
4.4 时序验证
4.4.1 静态时序分析概述
4.4.2 静态时序分析中的基本概念
4.4.3 假路径和多周期路径
4.4.4 时序验证中的系统任务
第5章 ModeISjm工具介绍
5.1.ModelSim概述
5.1.1 基本仿真流程
5.1.2 工程仿真流程1
5.1.3 多数据库仿真流程1
5.1.4 调试工具
5.2 ModelSim工程
5.2.1 创建一个新工程
5.2.2 编译和加载设计
5.2.3 利用文件夹组织工程
5.2.4 在工程中进行仿真配置
5.2.5 关于工程的其他基本操作
5.2.6 Proiect标签页及菜单简介1
5.2.7 指定文件属性和工程设置
5.3 设计库
5.3.1 设计库简介
5.3.2 使用设计库工作
5.3.3 导入FPGA设计库
5.4 Verilog基本仿真
5.4.1 创建工作的设计数据库
5.4.2 编译设计
5.4.3 运行仿真
5.4.4 设置断点与源代码单步执行
5.4.5 结束仿真
5.4.6 增量编译
5.5 在Verilog仿真中连接第三方资源库
5.5.1 仿真连接资源库
5.5.2 永久性映射资源库
5.6 使用波形窗口 1
5.6.1 向波形窗口添加项目
5.6.2 波形显示的图像缩放
5.6.3 在波形窗口中使用游标
5.6.4 存储波形窗口格式
5.6.5 WLF文件(Datasets)
5.7 使用数据流(dataflow)窗口进行调试
5.7.1 编译并加载一个例子
5.7.2 观察设计的连接性
5.7.3 跟踪事件
5.7.4 追踪未知态
5.7.5 在dataflow窗口中显示层次结构
5.8 存储器的查看与初始化
5.8.1 编译和装入设计举例
5.8.2 查看存储器
5.8.3 保存存储器数据到一个文件
5.8.4 初始化一个存储区
5.8.5 交互式调试命令
5.9 使用性能分析器仿真
5.9.1 性能分析器简介及本节的设计文件
5.9.2 编译、加载例子的设计
5.9.3 运行仿真
5.9.4 使用数据改进性能
5.9.5 过滤并保存数据
5.10 仿真代码覆盖情况
5.10.1 编译、加载例子的设计
5.10.2 在主窗口中查看统计
5.10.3 在源代码窗口中查看统计
5.10.4 在信号窗口中查看状态翻转统计
5.10.5 指定不进行覆盖率统计的行或文件
5.10.6 创建代码覆盖率报告
5.11 波形比较过程
5.11.1 波形比较器简介及本节的设计文件
5.11.2 创建参考数据文件和测试数据文件
5.11.3 比较仿真运行
5.11.4 查看比较数据
5.11.5 保存和重装比较数据.
5.12 ModelSim自动运行
5.12.1 创建简单的DO文件
5.12.2 使用“启动DO文件”运行ModelSim
5.12.3 命令行方式运行ModelSim
5.12.4 与ModelSim一起使用Tcl
5.13 使用ModelSim进行后仿真
第6章 Quartus集成环境
6.1 Quartus II软件概述
6.1.1 Quartus II软件的安装
6.1.2 Quartus II软件工具授权
6.2 Quartus II设计流程简介
6.3 设计输入
6.3.1 创建一个工程
6.3.2 创建一个设计
6.3.3 Quartus使用举例
6.4 配置设计工程的编译约束1
6.4.1 使用Assignment Editor
6.4.2 使用引脚规划器(Pin Planner)1
6.4.3 使用Settings对话框
6.5 综合设计
6.5.1 使用QuartusII Verilog HDL及VHDL集成综合工具
6.5.2 使用其他EDA综合工具 1
6.5.3 “Analysis&Synthesis”的控制 1
6.6 布局布线
6.6.1 执行一个完整的增量编译
6.6.2 分析布局布线结果
6.6.3 布局布线的优化
6.7 基于模块的设计
6.7.1 Quartus II基于模块化的设计流程
6.7.2 使用逻辑锁区域(LogicLock Regins)
6.7.3 在自顶向下增量编译流程中使用区域逻辑锁
6.7.4 在自底向上逻辑锁流程中保存中间综合结果
6.7.5 在EDA工具中集中使用逻辑锁
6.8 Quartus II的时序分析(17lining Analysis)
6.8.1 在Quartus II软件中执行时序分析
6.8.2 进行前期的时序评估
6.8.3 查看时序分析结果
6.8.4 使用第三方EDA工具进行时序分析
6.9 时序逼近(Timing Closure)
6.9.1使用时序逼近底层图(Timing Closure Floorplan)
6.9.2使用时序优化顾问
6.9.3使用网表优化实现时序逼近
6.9.4使用L,ogicLock Regins实现时序逼近
6.9.5使用增量编译达到时序逼近
6.10 功率分析(Power Analysis)
6.1l 对器件的编程与配置
6.12 调试
6.12.1 使用SignalTap II逻辑分析仪
6.12.2 使用SignalProbe信号探针
6.12.3 使用In-System Memory Content Editor
6.12.4 使用寄存器传输级查看器(RTL Viewer)
6.12.5 使用芯片编辑器 1
第7章 FPGA设计实例
7.1 74181ALU运算器设计
7.1.1 74181ALU的功能说明
7.1.2 逻辑电路
7.1.3 Verilog程序设计
7.1.4 ALV运算器的功能验证
7.2 伪随机序列设计
7.2.1 m序列
7.2.2 9位的LFSR计数器
7.2.3 数字序列的扰码
7.2.4 循环冗余校验
7.3 SDH解帧器设计
7.4.8b/10b编码设计
7.4.1 8b/10b编码技术
7.4.2 8b/10b编码器的设计
7.4.3 程序代码简介
7.4.4 Testbench程序设计
第8章 AItera系统级的SOPC开发
8.1 Altera II的使用
8.2 SOPC开发流程概述
8.2.1 应用系统需求分析 1
8.2.2 使用SOPC Builder建立SOPC系统设计
8.2.3 Nios II监控软件的开发
8.2.4 灵活运用SOPC开发流程
8.3 Altera Nios CPU简介
8.4 Altcra Nios外设组件简介
8.5 Altera 1C20 Demo板介绍
8.6 Altera 1C20试验板上的SOPC系统开发实例
8.6.1 开发实例功能介绍
8.6.2 开发设计步骤
附录频率计系统的设计
参考文献
……
2. 一些名词的区别:ARM,单片机,FPGA,嵌入式,DSP。
ARM处理器
ARM处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。更早称作Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
单片机(Microcontrollers)
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
FPGA(Field-Programmable Gate Array)
即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
嵌入式
IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 数字信号处理DSP数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,它的英文原名叫digital signal processing,简称DSP。另外DSP也是digital signal processor的简称,即数字信号处理器数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。
通俗讲,ARM相当月单片机头脑,而单片机就相当可以简单完成一个指令计算机,甚至简单等效微型计算机,FPGA是单片的系统。而嵌入式系统又是单片机升级,能完成运行复杂程序及任务。
3. 请问:fpga设计中的多周期路径是什么意思了如果设计中存在多周期路径会有什么危害最好能举个例子。
例如,A寄存器输出的数据要被B寄存器捕获,假如AB之间存在很多逻辑计算,导致版一个周期内A的数据权经过这很多的逻辑计算是完不成的,在下一个时钟的上升沿到来时,B还不能取这个数据,必须再等待1个或多个周期然后才去取数。多周期约束就是告诉还要再等布线器,你不必再尽心尽力的按照以前单周期(1个clk)去布线,设计者在写程序时已经考虑到了,这样布线器就不会提示布线不通过。当AB的时钟不一致时也是一个道理,我就不具体分析了。
缺点是:相当于降低了时钟频率