在过去的几十年中,集成电路的发展给科学技术和社会生活带来了前所未有的巨大改变,在一块FPGA上实现一个高性能的CPU已经能够实现。计算机辅助设计技术的发展,给数字电路设计带来了革命性的发展,将计算机辅助设计技术融入硬件设计中,使原来复杂的数字系统设计变得更加简单,这使得非电子工程专业的技术人员也能参与到硬件设计工作中。另一方面,随着嵌入式应用的发展和对计算机系统性能要求的提高,数字系统的软硬件协同设计也越来越重要,这也要求有计算机系统结构知识的人参与到硬件设计中来。
现在的工程师大多是通过硬件描述语言来设计数字系统的,常用的硬件描述语言是VHDL和Verilog HDL。这两种语言没有优劣之分,应用都很广泛,本书采用Verilog 硬件描述语言,大部分的实验例题都是采用电路行为级的描述,而不是用传统的电路逻辑方程的方式来描述电路。
目前国内的FPGA市场主要由Xilinx公司和Altera公司两大生产厂商占领,每个公司都为自己的FPGA开发了编译器。本书的所有例题都是在Altera公司的FPGA上进行实验的,因此本书中例题的编译平台是Altera公司的Quartus Ⅱ。如果读者使用的是Xilinx公司的开发平台,只要将本书中实例的Verilog HDL代码输入至Xilinx ISE编译器中重新编译,即可产生可下载到Xilinx公司的FPGA中的文件。
本书共6章。第1章简单介绍数字逻辑芯片。第2章简单介绍EDA技术的基础知识,并且通过两个实例让读者对Quartus Ⅱ的使用和用Verilog HDL来设计硬件电路有简单的了解。第3章和第4章分别介绍组合逻辑电路和时序逻辑电路的设计方法。第5章和第6章分别介绍简单数字系统设计和常用的I/O接口的相关知识。附录简要介绍竞争、冒险和毛刺现象,并介绍了消除毛刺的方法。本书的编写采取由简到繁、循序渐进逐渐加深的方法,对每个内容都是先给出具体的实例,让读者初步了解相关知识,然后提高难度,引导读者独立思考设计出自己的相对复杂的数字电路。因此,只要有数字逻辑电路基本理论知识的读者都可以阅读本书,对于有想设计出更加复杂的数字系统的读者,阅读本书也会有所帮助。
由于目前国际上流行的大多数数字技术教材、数字系统设计资料和主流EDA软件中,一直流行采用ANSI/IEEE 91—84标准特定外形的图形符号,因此,本教材也主要使用这类二进制逻辑元件符号。
关于本书实验教学的建议如下。
1. 实验安排
本书共设计了18个实验,每个实验有若干个引导性实验和设计性实验项目,授课时可以根据专业和学生层次灵活选择。
实验课程安排为每周一个实验,课堂实验时间为2~3学时,课前需要对实验项目进行预习,根据书中提示完成引导性实验,设计性实验要求在实验课前完成电路或代码设计,电路或代码无语法错误。
2. 教学和考核
建议每次实验课前,教师根据课堂情况和实验报告情况对上一次实验进行总结,对普遍存在的问题统一讲解。尽量在每次实验课上介绍下一次实验的要点,要求学生对相关理论知识、工具使用等进行课前预习,完成预习报告,任课教师在实验开始前要对本次实验的预习报告进行检查或抽查。实验时可以对每个完成的实验进行验收、提问并作记录。课后在预习报告的基础上完成内容完整、条理清楚的实验报告。
学期实验完成时,可以单独设计实验进行考核,也可以每次实验都设计考核内容。成绩评定根据实验预习、课堂验收提问、实验报告和期末考核进行综合评分。在本书的编写过程中得到了许多教师和学生的帮助。在此特别感谢袁春风教授、张泽生高级工程师和李宇鹏同学的帮助。
作者2013年3月于南京大学