本书介绍了在电子工程技术前沿领域中正被日益广泛应用的SOPC解决方案及其技术。内容包括实现SOPC解决方案相关的工具软件及其使用方法、设计理论和设计实例。主要分为三部分:(1)SOPC设计环境工具软件Quartus II的使用方法;(2)SP Builder和MATLAB的现代DSP硬件设计技术及其相关的Nios系统硬件加速器与自定制指令的设计方法;(3)SOPC Builder的Nion嵌入式系统软硬件开发技术具体内容包括Quartus II基本用法、设计流程向导、常用的优化技术、逻辑锁定优化技术、嵌入式逻辑分析仪使用方法、Cyclone等FPGA器件用法及其配置方法,基于DSP Builder的DSP与数字通信模块设计方法,Nios嵌入式系统硬件配置与生成、系统综合、软件调试以及指令定制等。
本书可作为电子类各专业本科生、研究生的教材和相关领域工程技术人员的参考书;也可作为本科EDA技术课程的后续课程教材和现代电子系统设计、电子设计竞赛、DSP应用系统、数字通信系统以及Nios嵌入式系统高层次开发的参考书。
第1章 概述
1.1 SOC单片系统
1.2 SOPC及其技术
1.3 基于FPGA和SOPC技术的处理器
1.4 基于FPGA和SOPC技术的DSP
第2章 Quartus II基本使用方法
2.1 IT.弦信号发生器设计
2.1.1 设计原理
2.1.2 创建工程和编辑设计文件
2.1.3 创建工程
2.1.4 编译前设置
2.1.5 编译
2.1.6 定制ROM初始化数据文件
2.1.7 定制ROM元件
2.1.8 再次全程编译并了解编译结果
2.1.9 仿真
2.1.10 应用RTL电路图观察器
2.2 引脚锁定和编程下载
2.2.1 引脚锁定
2.2.2 SOF文件下载
2.2.3 对配置器件编程
2.3 使用在系统嵌入式存储器数据编辑器
2.4 使用嵌入式逻辑分析仪进行实时测试
2.4.1 应用SignalTap II测试singt
2.4.2 编辑触发函数
2.5 嵌入式锁相环altPLL宏功能模块调用
2.5.1 建立嵌入式锁相环PLL元件
2.5.2 测试锁相环PLL
【习题】
【实验2-1】正弦信号发生器设计实验
【实验2-2】基于DDS的数字移相信号发生器设计实验
第3章 适配与时序优化设置
3.1 优化设置与时序分析
3.1.1 Settings设置
3.1.2 HDL版本设置及Analysis&Synthesis功能
3.1.3 Analysis&Synthesis的优化设置
3.1.4 Fitter设置
3.1.5 增量布局布线控制设置
3.1.6 使用Design Assistant检查设计可靠性
3.1.7 时序设置与分析
3.1.8 查看时序分析结果
3.1.9 适配优化设置
3.2 原理图与VHDL文本混合输入设计
3.2.1 设计16位VHDL加法器
3.2.2 8位乘法累加器顶层原理图设计
3.2.3 仿真
第4章 逻辑锁定技术
4.1 LogicLock技术的基本内容
4.1.1 LogicLock技术解决系统设计优化
4.1.2 LogicLock的基本内容
4.1.3 锁定区域的基本方式
4.1.4 层次化逻辑锁定区域
4.1.5 LogicLock技术的不同应用流程
4.1.6 系统性能强化策略
4.1.7 锁定区域的移植与再利用
4.2 流水线乘法器结构与未锁定前特性
4.3 应用逻辑锁定技术
4.3.1 pipemult模块设计
4.3.2 确定逻辑锁定区域及其特性
4.3.3 将设计实体移至锁定区域
4.3.4 编译优化锁定后的pipemult模块
4.3.5 输出逻辑锁定约束信息
4.3.6 将VQM文件加入进顶层工程
4.3.7 输入逻辑锁定约束
【习题】
【实验4-1】用逻辑锁定优化技术设计流水线乘法器实验
【实验4-2】用逻辑锁定优化技术设计16阶数字滤波器实验
第5章 Matlab/DSP Builder设计向导
5.1 Matlab/DSP Builder及其设计流程
5.2 可控正弦信号发生器设计
5.2.1 建立设计模型
5.2.2 Simulink模型仿真
5.2.3 SignalCompiler使用方法
5.2.4 使用ModelSim进行RTL级仿真
5.2.5 使用Quartus II实现时序仿真
5.2.6 硬件测试与硬件实现
5.3 DSP Builder层次化设计
DSP Builder的子系统(SubSystem)
5.4 DSP Builder的状态机设计
5.4.1 FIFO控制状态机设计示例
5.4.2 状态机设计流程
5.5 自动设计流程和SignalTap II的用法
5.5.1 安装SignalTap II Node模块
5.5.2 系统仿真和硬件测试
5.5.3 信号节点的资源利用情况
5.6 元件编辑窗整理
【习题】
【实验5-1】利用Matlab/DSP Builder设计基本电路模块实验..
第6章 DSP与数字通信模块设计
6.1 FIR数字滤波器设计
6.1.1 FIR滤波器原理
6.1.2 使用DSP Builder设计FIR滤波器
6.1.3 使用Matlab的滤波器设计工具
6.2 IIR数字滤波器设计
6.2.1 IIR滤波器原理
6.2.2设计4阶直接II型IIR滤波器
6.3 直接数字合成器设计
6.3.1 DDS模块设计
6.3.2 FSK调制器设计
6.3.3 正交信号发生器设计
6.3.4 数字移相信号发生器设计
6.4 数字编码与译码器设计
6.4.1 伪随机序列
6.4.2 帧同步检出
6.4.3 RS石马
6.4.4 Viterbi译码
【习题】
【实验6-1】FIR数字滤波器设计实验
【实验6-2】IIR数字滤波器设计实验
【实验6-3】基于DSP Builder的DDS设计实验
【实验6-4】编译码器设计实验
【实验6-5】正交幅度调制与解调模型设计实验
第7章 SOPC设计初步
7.1 Nios嵌入式CPU核
7.2 Nios嵌入式系统设计流程
7.2.1 Nios系统硬件开发流程
7.2.2 Nios系统软件开发流程
7.3 Nios系统设计实例
7.3.1 Nios硬件系统开发流程
7.3.2 Nios系统软件开发流程
7.4 Nios系统软件设计说明
7.4.1 Nios SDK目录概述
7.4.2 编辑输入并保存C源文件
7.4.3 源程序分析
7.4.4 编译源程序
7.4.5 下载程序代码
7.4.6 使用GNU Debug调试程序
7.4.7 Nios SDK Shell部分命令使用
【习题】
【实验7-1】设计一个简单的SOPC系统
第8章 Nios外设及其编程
8.1 串口UART
8.1.1 UART的寄存器定义
8.1.2 UART外部硬件连接
8.1.3 UART软件数据结构
8.1.4 UART编程
8.2 PIO
8.2.1 PIO类型
8.2.2 PIO寄存器定义
8.2.3 PIO软件数据结构
8.2.4 LED
8.2.5 数码管
8.2.6 按键
8.2.7 LCD
8.2.8 PIO简单输入输出操作示例
8.3 定时器编程
8.3.1 定时器概述
8.3.2 定时器寄存器定义
8.3.3 定时器软件数据结构
8.3.4 定时器程序设计示例
8.4 片内存储器
8.5 SRAM
8.6 Flash
【习题】
【实验8-1】简单测控系统串口接收程序设计
【实验8-2】GSM短信模块程序设计
第9章 Nios软件开发进阶
9.1 Nios软件开发工具
9.2 中断编程概述
9.3 串口中断
9.3.1 串口寄存器及其软件数据结构
9.3.2 串口中断程序设计示例
9.4 按键中断
9.5 定时器中断
定时器程序设计示例
【习题】
【实验9-1】秒表程序设计
第10章 深入了解Nios系统设计
10.1 Nios处理器结构
10.1.1 Nios处理器内部结构
10.1.1 内部寄存器组织
10.1.3 存储器组织
10.1.4 Nios指令集
10.2 使用ModelSim对Nios进行仿真
10.2.1 使用SOPC Builder生成ModelSim的仿真步骤
10.2.2 使用ModelSim仿真
10.3 Avalon总线简介
10.3.1 Avalon总线传输类犁及时序
10.4 自定制Avalon从外设
10.4.1 设计PWM自定义组件
10.4.2 添加PWM组件到Nios系统
10.4.3 PWM软件数据结构
10.4.4 PWM软件编程示例
10.5 DMA
10.5.1 DMA传输过程
10.5.2 DMA寄存器定义
10.5.3 DMA控制器软件数据结构及子程序
10.5.4 DMA控制器设置
10.6 自定制Avalon流模式外设
10.7 GERMS Monitor监控程序
10.8 Flash编程
10.9 使用其他SRAM和Flash
【习题】
【实验10-1】Avalon Slave外设(PWM模块)设计
【实验10-2】Avalon Slave外设(数码管动态扫描显示模块)设计
第11章 Nios综合设计示例
11.1 计时器设计
11.1.1 计时器的Nios硬件设计
11.1.2 计时器软件功能设计
11.1.3 计时器软件设计步骤
11.2 俄罗斯方块游戏机设计
11.2.1 硬件系统结构
11.2.2 Avalon流模式VGA控制器设计
11.2.3 VGA控制器外设在SOPC Builder中的安装
11.2.4 汉字和英文字符点阵库
11.2.5 俄罗斯方块游戏功能设计
11.2.6 俄罗斯方块游戏软件设计
【习题】
【实验11-1】简单计算器程序设计
【实验11-2】VGA显示终端设计
第12章 自定制Nios指令
12.1 自定制指令概述
12.1.1 Nios自定制指令的硬件结构
12.1.2 Nios自定制指令模块信号线
12.1.3 Nios自定制指令类型与格式
12.1.4 Nios自定制指令实现方式
12.2 自定制指令设计示例
12.2.1 基于VHDL的乘法指令和加法指令实现方法
12.2.2 基于VHDL的复数乘法指令实现
12.2.3 基于MATLAB/DSP Builder的Nios指令实现方法
【实验12-1】为Nios设计乘法累加器指令
【实验12-2】为Nios设计浮点乘法器
【实验12-3】为Nios设计对HFO操作的控制指令
【实验12-4】FFT算法设计
附录A SOPC/DSP实验开发系统
附录B 实验电路结构图
附录C GW48 SOPC系统实验信号名与芯片引脚对照表
参考文献
SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC.技术的目标就是试图将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、硬件协处理器或加速器系统、DSP系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA中实现,使得所设计的电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。SOPC技术是一门全新的综合性电子设计技术,涉及面广,本书只是将其最基础、最接近实际应用中的一小部分呈现给读者。
SOPC在电子设计技术上给出了一种以人的基本能力为依据的软硬件综合解决方案。
由于同时涉及底层的硬件系统设计和相应的软件设计,-在系统优化方面有了前所未有的自由度。SOPC技术使开发者更能动地在软硬件系统的综合与构建两个方面有了充分发挥自己创造性和想象力的巨大空间,从而使得从多角度、多因素和多结构层面上大幅度优化自己的设计成为可能。事实上,诸如单片机、DSP或ARM系统等基于传统开发技术的设计流程而言,不存在严格意义上的硬件设计,而只有软件设计。这是因为,一旦方案确定,硬件系统的核心器件是现成的,功能是确定的,结构是固定的,指令系统是不可更改的,从而导致硬件组织方案和连接方案是限定的,用户只能被动地遵循和适应,这时的硬件“设计”只能流于拼装和连接。系统构成后的惟一任务是依据既定的指令系统来编程,除了系统功能和算法可以通过软件改变外,系统的性能和指标已无从改变,设计者的创新能力、想象力和优化设计能力的发挥空间已被选定的硬件性能所界定。没有了创造,更谈不上超越了,进而导致了系统的综合性能基本取决于器件原有的性能和指标。换言之,传统技术是以既定的硬件及其性能而非以人的能力为主轴的技术。这样不难明白,在这个以硬件决定“创造”的世界里,为什么在优秀的8031单片机出现以后,仍然层出不穷地涌现出其他各种功能和性能的单片机;而同样是DSP处理器,C5X系列与C6X系列器件则把开发者带到完全不同的技术领域和功能范畴。显然,硬件的可设计性和用户目标的适应性在系统性能指标上占有更大的份额,而SOPC技术的优势正在于是设计者本身而非器件设计商去更有效地占据这一份额。
SOPC在应用理论和知识构成上,达到了一种有机融合。
基于SOPC的结构特点,SOPC系统的开发对于设计者的知识范围有了更高的要求。除了必须了解基本的EDA软件、硬件描述语言和FPGA器件相关知识外,还必须熟悉计算机组成与接口、汇编语言和C语言、DSP算法、数字通信、嵌入式系统开发、嵌入式操作系统、片上系统构建与测试等知识。这样,SOPC技术的普及必将有力地推动电子信息及工程类各学科分支与相应的课程类别间的融合。这种融合在SOPC技术中已不是简单的合并与算术相加,而是有机的融汇和充满设计者创新意识的升华。例如可以利用Matlab/DSP Builder/QuartusⅡ完成纯硬件的DSP算法模型及实现,进而构成嵌入式系统外围接口的协处理模块,再进一步构成软件程序中的精简指令,从而实现完全自主的、真正意义上的硬件设计和系统优化。
与现有的诸多电子系统设计理念和解决方案相比,SOPC技术更具代表性、主流性、规范性与普遍性。
SOPC从设计层次上讲,分硬件设计和软件设计;从设计流程上讲,是典型的自顶向下的流程;从设计手段上讲,相比于传统技术,更广和更深入地利用了计算机,而计算机技术无疑是当今的主流技术。在这一平台上,学科知识的融合,设计手段的融合,测试技术的融合,使SOPC设计者最大限度地在优化系统的性能上得以发挥自己的聪明才智,不再如传统技术中那样,把大量的时间花费在无谓的软硬件构建细节上,从而使人们常说的“动手能力”成了计算机应用能力的组成部分,而非仅为诸如“焊接”、“钻孔”和“连线”等操作行为的代名词了。
从未来的电子系统设计技术走势上看,SOPC技术更具发展性和前瞻性。
“FromConcepttoSysteminminutes”显然是现代电子技术追求的方向和境界。在那里,人们可以远离“十年磨一剑”的经验、变化无端的硬件结构、空耗时光而难得要领的排错,潜心于已把握的知识、智慧与灵感,把电路模型、系统模型、功能模型、行为模型及数学模型直接通过计算机在短时间内形成高效实用的电子线路系统,这不能不说是一种大胆的设想。然而,在SOPC领域,这种设想已得到了部分的实现。
SOPC与EDA技术一样,不能简单归属于哪一个学科分支。广义地讲,它是一种理念、一种思想方法、一种境界、一种趋势。
作为EDA技术教学实验课程的后续课程,本教材尽管在知识结构上作了一定的衔接安排,但仍假设读者已有了VHDL和FPGA器件、DSP算法,以及计算机组成与接口方面的基础知识。本书试图为EDA技术的学习与实践者在进一步学习基本设计理论与技术的过程中提供更广阔的实践空间,与此同时,进一步熟悉现代电子系统设计的分析方法和技术特点。
SOPC技术无疑为现有的EDA课程与实验同工程实践相结合,打开了一条崭新的通道,而在理论知识、硬件结构和实现技术的融合上对促进学生创新能力的培养上起到了画龙点睛的功效。
SOPC技术是发展的,内容是变化的,涉及面也在不断扩充。本书不可能以概代全,以点代面,完整全面地介绍SOPC技术,只期望给读者提供一点新素材,一点新启示和一点新方法,在系统开发技术的学习和实践中多一条可选择的道路。
本书的撰写得到了ALTERA公司大学计划部的主要负责人BobXu先生的大力支持,在此表示衷心的谢意!