1.1从模拟世界到数字世界
在二十世纪70年代初期,家用电子产品莫过于晶体管收音机、电唱机、扩音器了,当时的元件市场晶体管分立器件是最先进的产品,可以说是 “一片模拟世界”。到1975年以后,中小规模集成电路逐步上市,之后的几年,在大学里也开始讲授集成电路的课程。
1979年以后,***的荧光显示式计算器开始在中国市场出现。1983年前后,微处理器的学习形成高潮。1986年,在数字技术的进步与微处理器技术的影响下,笔者开始动手制作Z80单片机。在不用任何调试设备的情况下,自己编写机器代码,组装编程器,...... 直到制作出第一台最简单的单板机。第一次感受数字技术和微处理器,使笔者兴奋不已。
近几年来,随着IT业的高速发展,整个电子世界都朝着数字化、小型化、多功能化、低耗电的方向发展,学习数字电路的条件与过去相比也发生了巨大的变化。
1.2 数字电路的不同设计过程
随着大规模IC的出现和成本的急剧降低,随着软件技术及各方面技术的进步,数字电路的设计方法与过程发生了巨大的变化,用传统的思维方式和设计方法已经不能适应时代的需要。作为数字电路设计工程师,仅有过去的传统设计方法无法适应时代的需要。要跟上时代的需要,就必须学会使用硬件描述语言HDL(Hardware DescriptionLanguage)。HDL 可以描述数字电路或系统,还可以通过仿真等手段来验证设计的正确性。利用仿真的手段,可以大大减小设计失败的概率,缩短研发周期。
图1 给出了数字电路或系统的不同设计过程。图1(a)是传统的设计过程,在这种过程中采用分立的功能逻辑电路,设计过程大致可分为4个步骤。在这种设计过程中,进行功能设计后,便用分立元件搭建电路。这种情况下,由于是靠经验和许多主观因素的影响,很难保证电路的正确性。当系统较为复杂时,需要在搭建电路之前做一些局部性的实验,以降低失败的概率。电路搭建完毕后,便是硬件系统调试,这是一个较为艰苦的过程。 在这个过程中,往往会发现在设计阶段犯下了许多不该犯的错误,甚至是致命性的错误。在经过反复的系统调试、修改错误后,才终于能形成一个满足设计的系统。

图1(b)是采用HDL 的设计过程,在这种过程中,硬件的实现用可编程逻辑器件。仅从过程上看,它似乎需要更多的步骤,其实如STEP5 等步骤仅是一项简单的操作,系统实现的成功率很高。成功率高的原因在于:在STEP4 之前,是对逻辑电路或系统进行逻辑描述和仿真,这些都是在计算机上进行的,其特点是有很大的可修改性,又不会发生硬件上的成本投入。在这个阶段得到满意的仿真结果后,便可设计硬件电路。而这时的硬件设计可以说已经有较大的把握,所实现的系统也将容易调试。除此之外,硬件也容易设计成兼容性较好的系统,使一个硬件电路在写入不同的HDL 目标代码后可有相应的功能,有些方面就像一个CPU 在不同的软件支持下表现出不同的功能一样,这也是采用可编程逻辑器件的很大优越之处。
1.3 用HDL描述数字电路
现在,让我们通过一个简单的例子来看两种设计过程。
图2所示为一个简单的逻辑电路,其逻辑表达式为
F=/A*(B+C) (1)
就是这样一个简单的逻辑电路,如果用传统的硬件电路实现方法,要用到74LS04、74LS08 和74LS32 三个功能集成电路,做如图3 的连接。从图中可以看出,仅仅为了实现一个简单的逻辑关系,就需要有3 个集成电路,而且许多个门(此例中有11 个)白白被浪费掉。

但是,如果用可编程逻辑器件来实现的话,只要用一片集成电路就可以实现了,例如可以用Xilinx公司的可编程逻辑器件XC9572。用可编程逻辑器件实现式(1)所示的逻辑功能时,只要将逻辑表达式按规定的语法进行描述,经过仿真、编译等过程,最后下载到可编程逻辑器件中,就可以完成所设计的逻辑功能。逻辑电路的设计越复杂,可编程逻辑器件就越能显示出其优越性。不仅如此,有许多逻辑功能用可编程逻辑器件可以很容易地实现,而要用普通的功能特定的集成电路就很难实现。
对于式(1 )所示的逻辑功能,用Verilog-HDL 可描述如下:
module AND_G2 (A,B,C,F);
input A, B, C;
output F;
assign F = ~A & (B C);
endmodule
将上述的Verilog-HDL经过仿真确认逻辑关系正确后,就可以编译、下载到可编程逻辑器件中。这种情

况下,一片可编程逻辑器件就具有了图3所示的3片集成电路所构建的电路功能,如图4 所示。图中,逻辑门之间的连线是在芯片内部自动完成的。由此可见,它与传统的逻辑电路设计相比,设计过程很简单。

1.4 HDL有几种?
在计算机软件方面,程序设计语言有C、VC 、VB 等语言。要设计一个软件系统,或许用这些语言中的某一种都可以实现,但是各自又有其特点。
HDL 也是一样,有若干种语言,最有代表性的是Verilog-HDL 、 VHDL(Very high speed integrated circuitHardware Description Language)和A B E L - H D L 等。V H D L 在美国较为流行,而Verilog-HDL 在***则为主流。VHDL 是最早标准化的HDL,语法丰富且严谨。Verilog-HDL 具有类似于C 语言的语法体系,库文件丰富,十分便于具有一些C 语言基础的人学习。本讲座采用Verilog-HDL 来描述数字系统。
1.5硬件实现的承担者——CPLD/FPGA
用HDL 描述的功能,最终要由硬件来实现,就好象计算机软件的功能要在计算机硬件这个平台上实现是一样的。更形象地说,计算机的软件代码要装到计算机各个硬件中去,HDL 的目标代码也需要装到一个硬件------ 可编程逻辑器件中去,可编程逻辑器件有CPLD(Complex Programmable Logic Device)和FPGA(Field Programmable Gate Array)之分。
CPLD 与FPGA 都是大规模集成电路,两者在结构上完全不同,但它们都具有可编程的特性,对器件的编程是通过称为JTAG 的接口来实现的。对CPLD 的编程可多次进行,如X i l i n x 公司的XC9500 系列就可以多次编程达1 万次以上。
CPLD 是在PLD(ProgrammableLogic Device)的基础上发展起来的。可编程逻辑器件端子间的关系用语言来描述,并通过计算机将目标代码写入器件。PLD 的出现,省去了用通用逻辑IC(如74 系列)来搭建电路,使得逻辑设计的自由度大大提高。CPLD 是复杂化了的PLD,完整地讲应该称为复杂可编程逻辑器件。
在逻辑门的数量方面,C P L D 与FPGA 有很大的不同,CPLD 的逻辑门有几百到1 万个,而FPGA 有1 万至25 万个逻辑门。Xilinx 公司的XC9536,有36个宏单元,800 个逻辑门;XC95108 有108个宏单元,2400个逻辑门。由于结构上的原因,CPLD在大型复杂设计的情况下,其运行速度可以预测,也很可靠,且修改设计也很容易,软件编译速度也快。
在应用方面,CPLD 更适合于逻辑密集型的应用,如状态机和地址解码器逻辑等。而F P G A 则更适合于C P U 和DSP 等寄存器密集型的设计。而在功耗方面,与同样密度的FPGA 相比,CPLD的待机功耗更低。因此,CPLD 特别适合那些要求低功耗和低温度的电池供电应用,如移动设备等。
1.6 Xilinx的CPLD—XC9500系列
XC9500 系列是Xilinx 公司生产的CPLD。

图5 给出了XC9536 和XC9572的外形图
上述器件采用的封装形式称为PLCC(Plastic Leaded Chip Carrier)封装,芯片的插座及芯片插入后的情形如图6 和图7 所示。插座管脚的间距为0.1英寸(2.54mm),与普通的IC管脚的间距相同。图6(a)给出

了44脚和84脚的插座,其外形大小分别约为23mm × 23mm 和37mm × 37mm 。
对芯片的起拔需要专用的工具,图7示出了起拔工具和使用方法。

1.7 结语
本讲叙述了数字电路和系统的两种不同设计过程,介绍了用可编程逻辑器件实现数字系统的优点,简述了HDL 在逻辑设计中的作用。HDL 有多种,本讲座采用Verilog-HDL,它类似于C 语言图5 XC9572及XC9536的外形的语法体系,库文件丰富,十分便于具有一些C 语言基础的人学习。Xilinx 公司的CPLD 器件有XC9500 系列,本文介绍了该芯片的外形及管脚分布,为后续的学习建立一个感性认识。