原创 Verilog-HDL与CPLD/FPGA设计

2009-7-18 12:08 2149 7 7 分类: FPGA/CPLD

Verilog-HDL与CPLD/FPGA设计
















Verilog-HDL与CPLD/FPGA设计应用讲座

 第 1 讲 Verilog-HDL与CPLD/FPGA设计 
1.1 从模拟世界到数字世界 
1.2 数字电路的不同设计过程 
1.3 用HDL描述数字电路 
1.4 HDL有几种? 
1.5 硬件实现的承担者---CPLD/FPGA 
1.6 Xilinx公司的CPLD--XC9500系列 
1.7 结语 


1.1 从模拟世界到数字世界


 在70年代初期,家用电子产品末过于晶体管收音机、电唱机、扩大器了。那时,笔者所在的一个小城市销售3管晶体管收音机。她一上市就优先供应农村,为的是让中央人民广播电台的声音直达有线广播不能到达的山区。开始时城市人是较难得到这样的家电产品的。笔者当时常出差于上海,为了自己能装一台梦寐以求的收音机,节省每天的2角钱出差补助,吃的是阳春面,用节省的钱去买晶体管等元器件。当时的元件市场可以说是 "一片模拟世界"。  
  到了1974年前后,笔者所在的电信单位搞技术革新,用晶体管代替继电器,研制晶体管交换机。当时我对豆粒大的晶体管能代替形如打火机大的继电器而震撼不已,加之没有震动声音、耗电低等优点,更是使我着迷。当时,看到老技术员用晶体管搭建门电路,实现"与""或"等功能。业余时间自己也自费购买元件,搭建一些功能电路。到了 1975年以后,中小规模集成电路逐步上市。之后的几年,在大学里也开始讲授集成电路的课程。
   1979年以后,日本的荧光显示式计算器开始在中国市场出现;1983年前后,微处理器的学习形成高潮。1986年,在数字技术的进步与微处理器技术的影响下,笔者开始动手制作Z80单片机。在不用任何调试设备的情况下,自己编写机器代码,组装编程器,……直到制作出第一台最简单的单板机。第一次感受数字技术和微处理器,使笔者兴奋不已。
   近几年来,随着IT业的高速发展,整个电子世界都朝着数字化、小型化、多功能化、低耗电的方向发展,学习数字电路的条件与过去相比也发生了巨大的变化。


1.2 数字电路的不同设计过程
  随着大规模IC的出现和成本的急剧降低,随着软件技术及各方面技术的进步,数字电路的设计方法与过程发生了巨大的变化,用传统的思维方式和设计方法已经不能适应时代的需要。作为一个数字电路设计的工程师,仅有过去的传统设计方法就无法适应时代需要。要跟上时代的需要,就必须学会使用硬件描述语言HDL (Hardware Description Language)。HDL可以描述数字电路或系统,还可以通过仿真等手段来验证设计的正确性。利用仿真的手段,可以大大减小设计失败的概率,缩短研发周期。
  图1给出了数字电路或系统的不同设计过程。 图1(a)是传统的设计过程,在这种过程中采用分立的功能逻辑电路, 设计过程大致可分为4个步骤。在这种设计过程中,进行了功能设计后, 便用分立元件搭建电路。这种情况下,由于是靠经验和许多主观因素的影响,故很难保证电路的正确性。 当系统较为复杂时,需要在搭建电路之前做一些局部性的实验,以降低失败的概率。电路搭建完毕后, 便是硬件系统调试,这是一个较为艰苦的过程。在这个过程中,往往会发现在设计阶段犯下了许多不该犯的错误, 甚至是致命性的错误。在经过反复的系统调试、修改错误后,才终于能形成一个满足设计的系统。
 


(a)传统设计过程                                      (b)采用HDL的设计过程
图1 数字电路的不同设计过程



   图1(b)是采用HDL的设计过程,在这种过程中,硬件的实现用可编程逻辑器件。仅从过程上看,它似乎需要更多的步骤,其实如STEP5等步骤仅是一项简单的操作,系统实现的成功率很高。成功率高的原因在于:在STEP4之前,是对逻辑电路或系统进行逻辑描述和仿真,这些都是在计算机上进行的,其特点是有很大的可修改性,又不会发生硬件上的成本投入。在这个阶段得到满意的仿真结果后,便可设计硬件电路。而这时的硬件设计可以说已经有较大的把握,所实现的系统也将容易调试。除此之外,硬件也容易设计成兼容性较好的系统,使一个硬件电路在写入不同的HDL目标代码后可有相应的功能,有些方面就像一个CPU在不同的软件支持下表现出不同的功能一样,这也是采用可编程逻辑器件的很大优越之处。


1.3 用HDL描述数字电路



  现在,让我们通过一个简单的例子来看两种设计过程。一个如图2所示的电路。
 
        图2 一个简单的逻辑电路


  其逻辑表达式为



     F=/A*(B+C)                        (1)


  就是这样一个简单的逻辑电路,如果用传统的硬件电路实现方法,要用到74LS04、74LS08和74LS32三个功能集成电路,做如图3的连接。从图中可以看出,仅仅为了实现一个简单的逻辑关系,就需要有3个集成电路,而且许多个门(此例中有11个)白白被浪费掉。


点击看大图 
图3 传统的逻辑电路的硬件实现方法


  但是,如果用可编程逻辑器件来实现的话,只要用一片集成电路就可以实现了,例如可以用Xilinx公司的可编程逻辑器件XC9572,如图4所示。用可编程逻辑器件实现式(1)所示的逻辑功能时,只要将逻辑表达式按规定的语法进行描述,经过仿真、编译等过程,最后下载到可编程逻辑器件中,就可以完成所设计的逻辑功能。逻辑电路的设计越复杂,可编程逻辑器件就越能显示出其优越性。不仅如此,有许多逻辑功能用可编程逻辑器件可以很容易地实现,而要用普通的功能特定的集成电路就很难实现。


 
图4 Xilinx的可编程逻辑器件XC9572


对于式(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片集成电路所构建的电路功能,如图5所示。图中,逻辑门之间的连线是在芯片内部自动完成的。由此可见,它与传统的逻辑电路设计相比,设计过程很简单。


 
图5 Xilinx的可编程逻辑器件XC9572


1.4 HDL有几种?


    在计算机软件方面,程序设计语言有C、VC 、VB等语言。要设计一个软件系统,或许用这些语言中的某一种都可以实现,但是各自又有其特点。HDL也是一样,有若干种语言,最有代表性的是 Verilog-HDL、 VHDL(Very high speed integrated circuit Hardware Description Language)和ABEL-HDL等。VHDL在美国较为流行,而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的编程可多次进行,如Xilinx公司的XC9500系列就可以多次编程达10,000次以上。CPLD是在PLD(Programmable Logic Device)的基础上发展起来的。可编程逻辑器件端子间的关系用语言来描述,并通过计算机将目标代码写入器件。PLD的出现,省去了用通用逻辑IC(如 74系列)来搭建电路,使得逻辑设计的自由度大大提高。CPLD是复杂化了的PLD,完整地讲应该称为复杂可编程逻辑器件。
  在逻辑门的数量方面,CPLD与FPGA有很大的不同,CPLD的逻辑门有几百到1万个,而FPGA有1万至25万个逻辑门。Xilinx公司的 XC9536,有36个宏单元,800个逻辑门;XC95108有108个宏单元,2400个逻辑门。由于结构上的原因,CPLD在大型复杂设计的情况下,其运行速度可以预测,也很可靠,且修改设计也很容易,软件编译速度也快。
  在应用方面,CPLD更适合于逻辑密集型的应用,如状态机和地址解码器逻辑等。而FPGA则更适合于CPU和DSP等寄存器密集型的设计。而在功耗方面,与同样密度的FPGA相比,CPLD的待机功耗更低。因此,CPLD特别适合那些要求低功耗和低温度的电池供电应用,如移动设备等。


1.6 Xilinx公司的CPLD--XC9500系列

  XC9500系列是Xilinx公司生产的CPLD。图6给出了XC9536和XC9572的外形图。


点击看大图 
                                             (a)器件正面           (b) 器件反面
                                                                图6 XC9572及XC9536的外形


  上述的封装形式称为PLCC(Plastic Leaded Chip Carrier)封装,该芯片的插座及芯片插入后的情形如图7所示。插座管脚的间距为0.1英寸(2.54mm),与普通的IC管脚的间距相同。图6的 (a)给出了44脚和84脚的插座,其外形大小分别约为23mm×23mm和37mm×37mm。


点击看大图 
                                                     (a)插座的底部       (b)放入插座的芯片
                                                                     图7 XC9572及XC9536的插座


  图8为PLCC封装形式的44及84脚的插座底视图。


 
                      (a) 44脚PLCC插座底视图   (b) 84脚PLCC插座底视图
                                          图8 PLCC封装插座底视图


  对芯片的起拔需要专用的工具,图9示出了起拔工具和使用方法。


 


                                             (a) 起拔工具     (b) 起拔工具的用法
                                                 图9 XC9572及XC9536的起拔工具


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


参考文献:
1. 夏宇闻:复杂数字电路与系统的Verilog HDL设计技术,北京航空航天大学出版社,1998.
2. J.Bhasker著,徐振林等译:Verilog HDL, 机械工业出版社,北京,p16, 2000.10.
3. 常晓明:Verilog-HDL实践与应用系统设计,北京航空航天大学出版社, 2003.1.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条