VHDL语言在FPGA/CPLD开发中的应用

发布者:科技飞翔最新更新时间:2011-07-08 来源: 华北电力大学关键字:VHDL 手机看文章 扫描二维码
随时随地手机看文章
    1 引 言

  EDA(电子设计自动化)关键技术之一是采用硬件描述语言(HDL)描述电路系统,包括电路结构、行为方式、逻辑功能以及接口。就FPGA和CPLD(分别是现场可编程门阵列和复杂可编程逻辑器件的简称)开发来说,比较流行的HDL主要有VHDL、ABEL-HDL、AHDL等,其中,VHDL对系统的行为描述能力最强,已被IEEE确定为标准HDL,并得到目前所有流行EDA软件的支持,进而成为系统设计领域最佳的硬件描述语言。用VHDL设计电路系统,可以把任何复杂的电路系统视为一个模块,对应一个设计实体。在VHDL层次化设计中,它所设计的模块既可以是顶层实体,又可以是较低层实体,但对不同层次模块应选择不同的描述方法(如行为描述或结构描述)。本文在设计实例中详细介绍了用VHDL语言开发FPGA/CPLD的方法,以及与电路图输入和其它HDL语言相比,使用VHDL语言的优越性。

  2 设计实例

  一个复杂电路系统的设计都是采用自顶向下将系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述,而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。在系统的底层设计中,如采用VHDL进行描述,由于其对系统很强的行为描述能力,可以不必使系统层层细化,从而避开具体的器件结构,从逻辑行为上直接对模块进行描述和设计,之后,EDA软件中的VHDL综合器将自动将程序综合成为具体FPGA/CPLD等目标芯片的网表文件,无疑可使设计大为简化。下面以数字钟的设计为例予以说明。

  数字钟的功能主要有:

  能够对秒、分、小时进行计时(按每日24小时计时制)。

  秒、分、小时位能够调整。

  根据数字钟的功能要求,可将数字钟分为四个功能块:秒脉冲发生器、计数器、校时器和显示电路。而这些功能块又可进一步分割为更小的模块,如计数器模块可再分为秒、分、小时计数器。其它功能块的细化过程不再详述,数字钟的系统框图如图1所示。图中,P1键为自动计时、校时、校分和校秒四种工作状态选择键,P2键为系统处于校时状态时对时、分、秒进行校准的校时键,32.768kHz为作为脉冲源的晶振频率,经14级2分频器分频在其最高位、次高位以及第五位输出端分别可获得1Hz、2Hz和1024Hz的脉冲信号,这三个脉冲信号分别用作计时脉冲、校时脉冲和显示电路的扫描时钟。下面用VHDL语言设计底层的小时计数器。小时计数器为一个24进制BCD码计数器,其模块示意图如图2所示。reset、clk分别为异步清零端和时钟端,qb和qa分别为十位和个位的四位BCD码输出端。该模块计数方式的实现比较复杂,当十位数为0或1时,个位进行10进制计数,当十位数为2时,个位进行4进制计数。如用电路图描述,则必须选择和调用若干门、触发器或宏单元,并需对所调用的器件进行合适的控制。而若采用VHDL语言对其功能进行描述,问题则显得非常简单。

数字钟的系统框图

模块示意图

  下面是用VHDL语言设计的24进制BCD码计数器count24模块∶

  ENTITY count24 IS

程序

程序

  END counr24—arc;

  上述程序中由语句ENTITY与ENDcount24包含的部分称为程序的实体,它的电路意义就相当于器件的外部接口,在电路图上相当于一个元件符号。该实体是一个完整、独立的语言模块,它描述了coun t24的接口信息,定义了count24的端口引脚clk、reset、qa、qb的输入、输出性质及其数据类型;由语句ARCHITECTURE开始,到END count24arc结束为结构体层次,结构体层次用于描述count24内部的逻辑功能,在电路上相当于器件的内部电路结构。描述逻辑功能的具体做法是,在结构体的进程区内,通过定义两个整型中间变量cntb、cnta分别表示十位和个位,之后用IF语句说明当时钟到来时,这两个变量的计数和进位情况,当进程结束后,再将这两个中间变量分别赋给输出变量qb和qa。整个程序不长,逻辑描述十分简洁、明了。

  上述程序输入完成后,首先要经EDA软件进行编译,本设计采用的是美国Altera公司的MAX+PLUS2II软件,经该软件中的Compiler编译器编译后,若有任何信息、错误和警告,都将在VHDL编译器窗口上提示,设计者可根据提示对设计进行修改。当编译通过时,建网表、逻辑综合、适配、划分、时域分析、装配等均已自动完成,并生成多个后续工作要用的文件。编译的成功表明已为所设计的项目建立了一个编程文件,但还不能保证该设计在各种可能的情况下都有正确的响应,因而编译通过后,还必须用MAX+PLUSII的Simulator仿真器和Timing Analyzer工具分别进行功能仿真和时序仿真,以验证设计是否完全符合要求,若发现有问题,则必须返回原设计进行修改。上述模块经功能仿真和时序仿真都没有发现任何问题。图3所示即为上述模块的仿真波形。该模块设计完成后存档,待建立顶层文件时调用。

上述模块的仿真波形

  接下来再用VHDL语言对底层中其它所有模块一一进行设计,这包括:秒、分计数器(均为60进制计数器)、14级2分频器、24选4数据选择器、BCD七段译码器、节拍发生器等。所有程序均经MAX+PLUS2II软件的编译和仿真。当模块设计完成后均要存档,待建立顶层文件时调用。

  除底层模块外,其它各层次模块(包括顶层)也都适于用VHDL语言描述。只是应选择不同的描述方法而已。当底层中所有模块均设计完成后,采用VHDL语言中的结构描述法,用元件调用语句调用底层各模块并进行连接,即可建立数字钟的顶层文件。数字钟的顶层文件也必须经过EDA软件的编译和仿真,在此过程中,如有需要,还可随时打开查看并修改任一层次的设计。当最后确认设计完全符合设计要求时,再将编译后的顶层文件下载到目标芯片PFGA/CPLD中。

  综上所述,整个系统各层次模块均采用VHDL语言描述,其优点主要有下述三个方面∶(1)能进行系统级的行为描述,从逻辑行为上对模块进行描述和设计,大大降低了设计难度。(2)描述的设计思想、电路结构和逻辑关系清晰明了,便于存档、查看、维护和修改。(3)支持大规模设计的分解和已有设计的再利用。

  仅上述这三个优点,就是电路图输入和其它HDL语言所不能实现的。

  3 结束语

  集成电路规模越是庞大,VHDL语言的优越性就越显突出。目前,数百万门规模的FPGA/CPLD已进入实用,VHDL强大的系统描述能力、规范的程序设计结构和灵活的语句表达风格使其必将担负起大系统设计的几乎全部设计任务。

关键字:VHDL 引用地址:VHDL语言在FPGA/CPLD开发中的应用

上一篇:基于LEON3处理器和Speed协处理器的复杂SoC设计实现
下一篇:基于PLC的水位测控装置开发与应用

推荐阅读最新更新时间:2024-05-02 21:28

羿步FIFO的VHDL设计
    摘要: 给出了一个利用格雷码对地址编码的羿步FIFO的实现方法,并给出了VHDL程序,以解决异步读写时钟引起的问题。     关键词: FIFO 双口RAM 格雷码 VHDL FIFO(先进先出队列)是一种在电子系统得到广泛应用的器件,通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。FIFO的实现通常是利用双口RAM和读写地址产生模块来实现的。FIFO的接口信号包括异步的写时钟(wr_clk)和读时钟(rd_clk)、与写时钟同步的写有效(wren)和写数据(wr_data)、与读时钟同步的读有效(rden)和读数据(rd_data)。为了实现正确的读写和避免FIFO的上溢或下溢,通常还应该给
[半导体设计/制造]
基于FPGA的HSDI接口设计
引 言   HSDI(High Speed Direct InjectiON)是一种可配置的高速数据接口。例如,德州仪器公司生产的集成式1394a链接层控制器与舣端口物理层控制器TSB43DA42和TSB43DB42分别包括3个高速数据端口(HSDI)。每个端口均支持数据I/O,能专门负责一个同步数据路径,所有端口都支持与各种编解码器的无缝连接,能够根据IEC61883标准实现压缩的A/V数据与数字音频的传输。还有就是Freescale公司计划开发的UWB系列产品。这些UWB网卡符合美国联邦通讯委员会(FCC)现行拟定的UWB标准,支持多种操作系统;同时,这些产品将拥有mini-PCI和SDIO模组外形结构,并且,还将具有PC
[嵌入式]
基于VHDL语言的智能拨号报警器的设计
  目前,智能拨号 报警器 大多采用单片机作为控制核心,这种传统设计方法的特点是硬件和软件截然不同,设计中不可相互替代;而且硬件连线复杂,可靠笥较差。   硬件描述语言( VHDL )和可编程ASIC器件的广泛应用第一次打破了硬件和软件的屏障。基于VHDL语言、以EDA技术作为开发手段、采用现场可编程门阵列 FPGA (Field Porogrammable Gate Array)作为控制核心实现的与电话线连接的智能拨号远程报警器,与传统设计相比较,不仅简化了接口和控制,提供了系统的整体性能和工作可靠性,也为进一步提高系统集成创造了条件。 1 系统原理及组成   系统组成原理框图如图1所示。系统的控制核心是一片FPGA芯片,它
[安防电子]
基于<font color='red'>VHDL</font>语言的智能拨号报警器的设计
基于VHDL语言的IP核验证
引言 在IC(integrated circuit.集成电路)发展到超大规模阶段的今天,基于IP(Intellectual Property,知识产权)核的IC设计及其再利用是保证SoC(system onchip,片上系统)开发效率和质量的重要手段。如果能对IP核进行验证、测试和集成.就可以加速SoC的设计,而这需要从以下5个方面进行考虑。 代码纯化.指在代码设计中及完成后进行自定义的、IEEE标准的、设计重用的、可综合性和可测试性等方面的规则检查; 代码覆盖率分析.研究仿真中的测试矢量是否足够; 设计性能和面积分析.在设计逻辑综合过程中分析所设计的RTL所能达到的性能和面积要求; 可测性分析:IP核设计重用中的关键技
[应用]
用FPGA实现1553B总线接口中的曼码编解码器
引言 曼彻斯特码编码、解码器是1553B总线接口中不可缺少的重要组成部分。曼彻斯特码编解码器设计的好坏直接影响总线接口的性能。本文介绍的是MIL-STD-1553B接口中最曼彻斯特码的编码和解码器的设计实现。 在电子设计领域,可编程器件的广泛应用为数字系统的设计带来极大的灵活性,1片FPGA/CPLD芯片可替代上百个IC电路。同时,Altera公司开发的MAX+PLUS II和QUARTUS II软件,是完全集成化的可编程逻辑设计环境;Synplicity公司的Synplify是专门用于FPGA和CPLD的一种优秀逻辑综合工具;VHDL更是一种功能强大的硬件设计语言,可用简洁的代码描述来进行复杂控制逻辑的设计。所这些使得硬
[嵌入式]
VHDL语言应用实例指导
VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则: ·标识符由字母(A…Z;a…z)、数字和下划线字符组成。 ·任何标识符必须以英文字母开头。 ·末字符不能为下划线。 ·不允许出现两个连续下划线。 ·标识符中不区分大小写字母。 ·VHDL定义的保留子或称关键字,不能用作标识符。 ·VHDL中的注释由两个连续的短线(--)开始,直到行尾。 以下是非法标识符: -Decoder —起始不能为非英文字母 3DOP —起始不能为数字 Large#number —“#”不能成为标识符的构成符号 Data__bus —不能有双下划线 Copper
[嵌入式]
<font color='red'>VHDL</font>语言应用实例指导
为什么设计复杂系统如此之难?浅谈利用仿真攻克汽车系统
当今汽车行业所面临的挑战与电信行业十多年前所经历的类似。混合动力电动汽车和燃料电池汽车等新技术也促进了研发活动的日趋活跃,正如我们在手机演变成多媒体设备的进程中所看到的一样。同样,电信业面临着功耗和芯片尺寸限制的问题,而汽车设计师正努力将更多技术运用到过去仅仅是机械的设备中。 电子、电气、机械,硬件和软件组件以及将其相连接的网络正大力推动汽车设计的发展。车载电子设备数量的比重目前为40%,而且在不断上升,与此同时,电子控制单元的数量也在日益增加,并被分布到整个系统中,用以控制新应用的精密性和复杂性。电子控制单元能包含数百个软件组件,促使系统更多地采用多路复用技术,也提升了通信方面的要求。 不仅一般系统设计在整体上有所扩大,可以满足
[汽车电子]
VHDL设计专用串行通信芯片
    摘要: 一种专用串行同步通信芯片(该芯片内部结构和操作方式以INS8250为参考)的VHDL设计及CPLD实现,着重介绍了用VHDL及CPLD设计专用通信芯片的开发流程、实现难点及应注意的问题。     关键词: VHDL FPGA CPLD UART 统计时分复用器 在通信系统中,通信芯片是整个硬件平台的基础,它不仅完成OSI物理层中的数据发送和接收,还能根据传输方式和协议的不同实现不同的数据校验方式及数据组帧格式。 目前,许多厂商都提供通用的串行通信芯片,其传输方式分为同步方式和异步方式。其中,异步芯片大多与INTEL的8250芯片兼容;而同步方式,由于一般涉及到所支持的传输协议(BSC、HDL
[工业控制]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved