随着半导体技术的飞速发展,新电子产品上市周期的缩短,以及数字化处理技术的不断提高,大规模可编程逻辑器件(PLD)的设计成为电子系统设计中一个重要的研究方向和应用领域。在现阶段,必须依赖于高性能电子设计自动化EDA技术,才能完成基于PLD复杂数字系统的设计。采用PLD比采用专用集成电路ASIC和专用标准部件ADDP的成本低。通过使用EDA技术完成PLD设计,大大缩短了设计周期,适应市场对产品竞争力的要求。
随着PLD复杂度的提高和EDA软件性能的不断完善,基于EDA的设计原理和方法,越来越受到EDA设计人员的重视。基于硬件描述语言HDL、原理图、IP核等混合设计方法成为PLD设计中主要采用的方法。对PLD的设计已经发展到了片上可编程系统SOPC阶段,因此要求EDA设计人员能够实现软件和硬件的协同设计。
本书力图全面系统地介绍基于PLD的EDA设计原理和方法。通过系统介绍EDA的原理和方法,使读者能够系统、全面地掌握EDA设计方法和应用技巧。本书主要分为以下几个部分:
(1) EDA的设计概论部分。该部分主要是介绍EDA技术的发展历史、EDA技术所涉及的内容、设计流程和HDL硬件描述语言概要。
(2) 可编程逻辑器件设计方法部分。该部分主要介绍了可编程逻辑器件的分类,主要工艺,重点介绍了复杂可编程逻辑器件CPLD和现场可编程逻辑阵列FPGA的结构,并进行了比较。本部分也对Xilinx芯片的性能和结构进行了比较详细的介绍。
(3) 硬件描述语言VHDL部分。该部分介绍了VHDL语言的结构和风格,VHDL语言的数据类型和运算符,VHDL语言的主要描述语句等。在介绍这些内容时为了便于学习,给出了大量单元模块的VHDL设计代码。
(4) 逻辑单元设计部分。该部分的介绍分成简单逻辑单元设计和复杂逻辑单元设计两个部分。在简单逻辑单元设计部分重点介绍了组合逻辑电路设计和时序电路设计。在复杂逻辑单元设计部分重点介绍了存储器设计、运算单元设计和有限自动状态机设计。通过这样的结构安排使学生更好地掌握不同层次模块HDL的书写规范。
(5) 高性能代码设计部分。该部分作为前面VHDL语言内容的补充,重点介绍了提高HDL设计性能的几种常用方法: 逻辑复制和复用、并行和流水技术、系统同步和异步单元、逻辑结构设计方法和模块的划分原则。通过该部分的学习,可以增强读者熟练运用HDL语言进行设计的能力。
(6) IP核设计技术部分。该部分虽然篇幅不多,但是所涉及的内容非常重要,该部分重点介绍了IP核的分类、优化、生成和应用。通过该部分的学习,读者能更好地了解IP核设计技术的各个方面,为今后从事IP核设计打下良好基础。
(7) EDA设计流程部分。基于Xilinx的ISE软件平台,首先介绍了基于HDL的设计流程,然后介绍了基于原理图的设计流程,在介绍这些内容时,采用了混合设计方法,对于掌握整个设计流程有很大的帮助。在介绍混合设计的基础上,介绍了设计综合、行为仿真、设计实现、时序仿真、设计下载和设计调试的完整设计过程,该部分也是本书最重要的内容之一。
作为对本书内容的重要补充,在本书的结尾给出三个比较典型的数字系统的设计实例,使读者从中能够进一步体会EDA设计技巧和方法,并且从中可以了解设计原理、设计输入、设计验证的工程化设计方法。《EDA原理及应用实验教程》作为本书的配套用书,帮助读者通过软件和硬件的实验,进一步掌握使用Xilinx软件和硬件平台进行EDA设计的方法和技巧。
在讲授和学习本书内容时,可以根据教学时数和内容的侧重点不同,适当地将相关章节的内容进行调整和删减。为了让读者更好地掌握相关的内容,本书还给出了大量设计示例程序和习题。本书不仅可以作为大学信息类专业讲授EDA相关课程的教学用书,也可以作为从事EDA教学和科研工作者的参考用书。
在本书的编写过程中引用和参考了许多著名学者和专家的研究成果,同时也参考了Xilinx公司的技术文档和手册,在此向他们表示衷心的感谢。在本书的编写过程中,由杨青青、李宝敏负责部分章节文字录入工作,在此向她们表示感谢。在本书的出版过程中,得到了Xilinx公司“大学计划”项目的大力支持与帮助,同时也得到了清华大学出版社各位编辑的帮助和指导,在此也表示深深的谢意。
由于编者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。
编 者2008年10月