前言
2004年春天, 作为指导教师, 作者首次参加了由Altera公司组织的EDA/SOPC电子设计竞赛。Altera公司提出的数字系统SOPC(System On Programmable Chip)解决方案深深地吸引了我。
在此之前, 作者虽然从事数字系统的教学和开发设计工作, 并对用来实现数字系统的微控制器和可编程逻辑器件的使用也已多年, 但是一直把它们看做是两种各具特点的目标器件。如果需要对信号进行较复杂的处理, 首选的目标器件为微控制器;如果需要进行高速信号传送, 首选的目标器件为可编程逻辑器件;如果希望同时获得复杂的信号处理和高速的信号传送, 那么将联合使用微控制器和可编程逻辑器件。Altera公司提出的数字系统SOPC解决方案能够在可编程逻辑器件中形成一个用户可配置的软核处理器——Nios Ⅱ软核处理器,这样就在一个芯片上同时实现了信号的复杂处理和信号的高速传送。
利用数字系统SOPC解决方案实现应用系统设计需要掌握Quartus Ⅱ可编程逻辑器件开发软件和Nios Ⅱ集成开发环境。利用开发软件Quartus Ⅱ, 使用者能够创建以FPGA芯片为目标器件的Nios Ⅱ软核处理器系统及其他外围模块;利用Nios Ⅱ集成开发环境, 使用者能够完成Nios Ⅱ软核处理器系统的C语言设计文件的编辑、编译, 并下载设计到Nios Ⅱ软核处理器系统中进行调试和运行。
掌握一种技术需要大量的理论和实践学习, 同时也需要一个好的学习方法, 如果有一个好的学习指导是可以获得事半功倍的效果的。通过这些年来对参加Altera公司的EDA/SOPC电子设计竞赛和全国大学生电子设计竞赛的学生的赛前训练的总结, 作者编写了本书。本书在撰写内容上力求实用, 并尽量做到理论和实践相结合;在内容编排上, 尽量做到由易到难。对书中列举的基础实验和应用设计, 作者努力做到不仅描述如何进行, 而且分析这样做的原因, 使读者能够比较容易地举一反三。
本书的内容包括3个部分。第一部分包括第1~4章, 这部分描述的是可编程逻辑器件开发的基础知识。如果读者具有使用可编程逻辑器件的经历, 这部分可以跳过去, 直接从第二部分开始。
第1章介绍数字集成电路的基础知识及Nios Ⅱ软核处理器的特点。
第2章描述FPGA器件的基础知识。包括FPGA器件和标准逻辑器件在功能上的对应关系, FPGA器件的内部结构, 以及Altera公司生产的FPGA器件的性能介绍。
第3章介绍可编程逻辑器件开发软件Quartus Ⅱ的使用。内容包括设计项目的创建, 设计的输入、编译、模拟, 以及向目标器件的下载。
第4章介绍硬件描述语言VHDL。这里只介绍了设计工作中最常用的语法元素。
第二部分包括第5~13章, 这部分讲述了SOPC解决方案的核心内容——Nios Ⅱ软核处理器系统的基础知识。
第5章结合流水灯控制电路的设计, 完整地描述了Nios Ⅱ软核处理器系统的开发过程。先了解了工作过程, 这样在后面学习新内容时就可以利用开发软件来验证, 使内容变得直观易懂。
第6章讲述Nios Ⅱ软核处理器的性能。Nios Ⅱ软核处理器的性能指标是可以配置的, 但是不同的性能需要占用的逻辑资源具有明显的差别。这里还介绍了一种程序运行时间的测量方法。
第7章结合数码管显示电路的设计, 描述了Nios Ⅱ软核处理器最常用的外围模块——并行输入/输出模块(PIO)的输出使用方法。
第8章结合键盘输入电路的设计, 描述了并行输入/输出模块(PIO)的输入使用方法和Nios Ⅱ软核处理器外部中断的使用方法。
第9章描述了使用EPCS串行配置芯片对FPGA进行内部逻辑配置的过程, 并介绍了Nios Ⅱ程序的两种启动方式, 即从EPCS引导程序和从CFI FLASH引导程序。
第10章描述了定时器(Interval Timer)内核的使用, 并利用该内核实现产生时钟信号、周期测量和看门狗电路的设计。
第11章通过SDRAM控制器内核将片外SDRAM作为程序存储器和数据存储器, 并驱动LCD12864液晶模块实现文字显示、打点、画线和画图等操作。
第12章介绍JTAG UART内核的功能、配置, 并通过实例介绍JTAG UART内核获取、发送数据的方法。
第13章描述了串行外围接口(SPI)内核的使用, 并通过该内核发送SD卡的CMD命令, 实现了SD卡的复位、初始化和扇区读写等操作。
第三部分包括第14~15章, 这部分向读者呈现了作者这几年来采用SOPC解决方案, 使用Nios Ⅱ软核处理器系统完成的一些应用设计。这部分内容可使读者获得如何把Nios Ⅱ软核处理器用于应用系统的方法, 同时也可以使读者了解应用系统设计的过程和撰写设计报告的基本格式。
第14章给出了一个具有量程自动切换能力的频率测量电路的设计过程。系统的频率测量范围为(1.000~9.999)×106 Hz, 并具有频率和周期两种显示方式。
第15章给出了信号频谱分析电路的设计过程。利用快速傅里叶变换(FFT), 分析电路能够以满意的分析速度和精度完成周期信号的频谱分析。
本书是作者在多年教学和科研的基础上编写的。书中的内容不仅包括了作者的工作经验, 还包括了许多学生的学习经验。在学习过程中, 我们教授给学生知识, 同时也从学生那里学到了很多东西。书中的许多硬件电路和软件程序都是由学生参与设计和调试完成的, 在这里向张伟、张侠、李兆朋、冯鑫, 以及许多没能列出姓名的同学表示衷心的感谢。
在本书的编写过程中, 作者得到了西安邮电学院许多老师的支持和帮助, 在这里向他们表示衷心的感谢。另外, 作者也参考了许多专家和学者的著作和研究成果, 在这里也向他们表示衷心的感谢。
本书能够顺利出版与电子工业出版社和柴燕编辑的大力支持是分不开的。柴燕编辑在本书的编写过程中给予了热心的帮助和督促, 在这里向她表示衷心的感谢。
本书适合从事Altera公司FPGA芯片开发设计的研究生和本科高年级学生使用, 也适合从事该方面工作的工程师使用。市场上已经有了许多关于这方面内容的书籍, 作者也不认为本书是最优秀的一本, 但是我们意识到掌握一种技术必须做到理论和实践紧密结合, 这就是本书的编写原则。由于本书的内容是通过一系列具有明确目的的设计任务来组织编写的, 因此在内容的完整性方面可能有所欠缺, 加之作者水平有限, 书中的错误与不妥之处在所难免, 敬请读者批评指正。
编著者