vhdl语言范文

时间:2023-10-05 20:04:41

vhdl语言

vhdl语言篇1

关键词:VHDL;CPLD/FPGA;电路设计;优化

中图分类号:TP930 文献标识码:A

文章编号:1004-373X(2010)03-191-03

Optimized Design of Circuits in VHDL Based on CPLD/FPGA

DU Zhichuan,ZHENG Jianli

(School of Medical Instrument and Food Engineering,University of Shanghai for Science and Technology,Shanghai,200093,China)

Abstract:The optimized design of VHDL is for making full use of hardware resources provided by CPLD/FPGA,making the design suit for certain scale of CPLD/FPGA chip,increasing the system′s speed and reducing system′s costs.The advantages of VHDL language are analysed and the circuit design is optimized from the design idea,the use of statements,coding style.In this paper,serial design methods and the use of E2PROM to optimize the circuit design are proposed,these two methods are proved to be effective in reducing Macro Cell occupied by the program.

Keywords:VHDL;CPLD/FPGA;circuit design;optimization

0 引 言

VHDL(Very High Speed Integrated Circuit Hardware Description Language)是IEEE工业标准硬件描述语言,是随着可编程逻辑器件(PLD)的发展而发展起来的[1]。它是一种面向设计、多层次的硬件描述语言,是集行为描述、RTL描述、门级描述功能为一体的语言,并已成为描述、验证和设计数字系统中最重要的标准语言之一[2,3]。由于VHDL在语法和风格上类似于高级编程语言,可读性好,描述能力强,设计方法灵活,可移植性强,因此它已成为广大EDA工程师的首选。目前,使用VHDL语言进行CPLD/FPGA设计开发,Altera和Lattice已经在开发软件方面提供了基于本公司芯片的强大开发工具。但由于VHDL设计是行为级设计,所带来的问题是设计者的设计思想与电路结构相脱节,而且其在设计思路和编程风格等方面也存在差异,这些差异会对系统综合后的电路整体性能产生重要的影响。

在VHDL语言电路优化设计当中,优化问题主要包括面积优化和速度优化[4]。面积优化是指CPLD/FPGA的资源利用率优化,即用尽可能少的片内资源实现更多电路功能;速度优化是指设计系统满足一定的速度要求,即用更多的片内资源换取更快的处理速度,常用于视频信号采集系统和通信系统之中。面积优化和速度优化通常是一对矛盾,一般情况下,速度指标是首要的,在满足速度要求的前提下,尽可能实现面积优化[5]。因此,本文结合在设计超声探伤数据采集卡过程中的CPLD编程经验,提出串行设计、防止不必要锁存器的产生、使用状态机简化电路描述、资源共享[6],利用E2PROM芯片节省片内资源等方法对VHDL电路进行优化。

1 VHDL电路优化设计的方法

优化设计是可编成逻辑设计的精华所在,如何节省所占用的面积、如何提高设计的性能是可编成逻辑设计的核心,这两点往往也成为一个设计甚至项目成败的关键因素[7]。下面结合超声探伤数据采集卡设计过程中,并基于Altera公司的EPM7192 CPLD芯片的编程经历来论述VHDL电路的优化方法。

1.1 采用串行设计代替并行设计

串行设计是指把原来单个时钟周期内完成的并行操作的逻辑功能分割出来,提取相同的功能单元,在时间上分时复用这些功能单元,在满足系统速度要求的前提下,用多个时钟周期来完成单个时钟周期即可完成的功能。

根据项目的要求,超声探伤数据采集卡要有5个模拟通道,每隔125 μs就会采集到330个点。如果等5个超声通道采样结束后再进行数据处理和传输,几乎是不可能满足该超声探伤系统的实时性要求,而且数据量也远远超过ARM板上总线接口的传输速率2 MB/s。对于这么高的实时性要求,最好的解决办法是在CPLD内部进行数据压缩,即边采集边压缩,以满足系统使用的ARM板的总线速率要求。经过系统评估,每个超声通道只需保留一个最大值即可满足系统的性能要求。在这里,通过在三个8位数A,B,C中找出最大值的例子来说明串行设计方法的优势,代码如下所示。

程序一:

signal A:std_logic_vector(7 downto 0);

signal B:std_logic_vector(7 downto 0);

signal C:std_logic_vector ( 7 downto 0);

process(clk)

begin

if( clk′event and clk=′1′) then

A

B

C

else

null;

end if;

end process;

process(A,B,C)

variable max : std_logic_vector (7 downto 0);

begin

if(A > B) then

if (A < = C) then

max :=C;

else

max :=A;

end if;

else

if(B < = C)then

max:=C;

else

max:=B;

end if;

end if;

end process;

程序二:

signal max : std_logic_vector(7 downto 0);

process(clk)

variable temp: std_logic_vector(7 downto 0);

begin

if( clk′event and clk=′1′ ) then

temp:=AD_RESULT;

if(temp >= max)then

max

else

null;

end if;

else

null;

end if;

end process;

程序一是用并行方法设计,而程序二是采用串行方法设计。从表1的实验数据可见,采用串行方法以后,电路的优化效果比较明显。优化前,程序一需要消耗38个宏单元(Micro Cell),一个时钟周期即可完成找最大值操作;优化后,实现相同的逻辑功能程序二仅需要12个宏单元,但需要3个时钟周期才能完成一次运算,优化率达68.4%。值得注意的是,此方法是以速度换取资源的方法,只适用于对速度要求不高的系统。

表1 优化前后资源使用情况

程序名称实验平台器件消耗宏单元个数 /个

程序一程序二

Quartus II 7.2EPM7192SQC160-1538

12

1.2 防止不必要锁存器的产生

在VHDL设计中,使用语句不当也是导致电路复杂化的原因之一,这使得综合后的电路当中存在很多不必要的锁存器,降低电路的工作速度[8]。因此,在设计一个逻辑电路时,设计人员应该避免由于VHDL使用习惯的问题,无意识地在电路中添加不必要的锁存器。由于IF或者CASE语句较容易引入锁存器,所以当语句的判断条件不能覆盖所有可能的输入值的时候,逻辑反馈就容易形成一个锁存器。当然,随着高级编译软件的出现,如Quartus Ⅱ 7.2,这样的问题通过编译软件已经得到很好的解决。对一个设计人员而言,有意识地防止不必要锁存器的产生可以加快编译速度。

在超声探伤数据采集卡VHDL程序设计当中,涉及10 MHz系统时钟clk的同步D触发器的设计,即每当clk时钟信号的上升沿到来时,将输入信号in的值赋给输出信号out,代码如下所示。

程序三:

process ( clk )

begin

if ( clk′event and clk=′1′ ) then

out

end if;

end process;

程序四:

process(clk)

begin

if ( clk′event and clk=′1′ ) then

out

else

null;

end if;

end process;

通过对比,程序四比程序三只多了一条空语句,但这样做可有效防止综合器生成不必要锁存器,并提高电路的工作速度。

1.3 使用状态机简化电路描述

由于状态机的结构模式简单,有相对固定的设计模板,特别是VHDL支持定义符号化枚举类型状态,这就为VHDL综合器充分发挥其强大的优化功能提供了有利条件[9]。因此采用状态机比较容易地设计出高性能的时序逻辑模块,在超声探伤数据采集卡的CPLD程序设计中,使用有限元状态机(FSM)设计CY7C4225 1K×16 b FIFO芯片的读写控制模块,并且达到很好的效果,逻辑转换图如图1所示。实践证明,实现相同的逻辑功能,使用状态机设计能使设计的电路得到更好的优化。

图1 写FIFO逻辑转换图

1.4 资源共享

资源共享的思想是通过使用数据缓冲器或多路选择器等方法来共享数据通道中占用资源较多的模块[10],如算法单元。通过共享电路单元模块可有效提高芯片内部资源的利用率,达到优化电路的目的。

1.5 利用E2PROM芯片节省片内资源

在用VHDL进行项目开发的过程中,经常需要存储一些配置参数值。理论上讲,每存储一个字节的配置参数需要使用8个CPLD宏单元,因此在CPLD内部存储这些参数并不是好的方案,除非使用的CPLD芯片已集成了E2PROM存储单元。例如,在设计超声探伤系统的数据采集卡的过程中,每个通道的采样数都需要保存在CPLD里面。由于项目初期芯片选型不当,

选择一款EPM7192S160-15,该款芯片内部只有192个宏单元,因此考虑把参数存储在外扩的E2PROM芯片24WC02中。经实验证明,在CPLD内部实现┮桓I2C控制器仅需要43个宏单元。由此可见,当初始化参数大于5个的时候,通过外扩E2PROM芯片来存储配置参数是可行的,只需在CPLD/FPGA芯片内实现I2C控制器即可方便地读写E2PROM存储芯片。

2 结 语

使用VHDL进行CPLD/FPGA电路设计时,要根据实际项目的具体情况,合理地划分项目功能,并用VHDL实现相应的功能模块。用模块来构建系统,可有效地优化模块间的结构和减少系统的冗余度,并在模块设计过程中始终贯彻以上的优化设计原则,借助于强大的综合开发软件进行优化,才能达到最优化电路的目的。

参考文献

[1]赵桂青,于会山,穆健,等.VHDL编码中面积优化探讨[J].嵌入式软件应用,2007,23(1):116-117.

[2]吴继华,王诚.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2005.

[3]Steve Carison.VHDL Design(Representation & Synthesis)[M].New Jersey:Prentice Hall,2000.

[4]潘松.EDA技术实用教程[M].北京:科学出版社,2004.

[5]沈祖斌.基于FPGA/CPLD的数字系统设计优化[J].江汉大学学报,2006,34(1):47-49.

[6]Bhasker J.VHDL Primer[M].3rd Edition.NJ:Prentice Hall,1999.

[7]杨鲜艳,王珊珊,李萍,等.VHDL电路优化设计及方法[J].航船电子工程,2007,(2):112-114.

[8]邬杨波,王曙光,胡建平.有限状态机的VHDL设计及优化[J].信息技术,2004,28(1):75-78.

[9]Volnei A.Pedroni-Circuit Design with VHDL[M].MIT Press,2004.

vhdl语言篇2

关键词:VHDL; Max+Plus Ⅱ; 计数器; EDA技术

中图分类号:TP311文献标识码:B

文章编号:1004-373X(2010)08-0070-03

Medical Application of EDA Technology Taking VHDL Language as Core

TAN Xiao-ling, DUAN Xin-wen

(Qinghai Normal University, Xining 810008, China)

Abstract: As a new hardware description language, VHDL is mainly used for the description, simulation and automatic design of digital circuits and systems. It is the core technology of current clectronic design automation (EDA) and can be more widely used in the medical speciality and other relative fields along with the development of information technology. In this study, the counter designed with VHDL was applied to human pulse measurement. Compared to the artificial method, the results measured by such counter is more accurate and can be displayed intuitively by the digital tubes. It shows the close contact between the digital system designed with VHDL and medicine, as well as its great prospects on the medical practice. It had proved that the combination of EDA and medicine not only promotes the further application of EDA technology, but also boosts the development of medicine greatly.

Keywords:VHDL; Max+Plus Ⅱ; counter; EDA technology

0 引 言

VHDL超高速集成电路硬件描述语言是随着集成电路系统化和高度集成化逐步发展起来的,是一种用于数字系统设计、测试,面向多领域、多层次的IEEE标准硬件描述语言。它从20世纪70年代作为电路设计工具诞生于美国国防部至今,已经成为十分流行的硬件描述工具,并且为大多数EDA工具所支持\。随着电子技术的不断进步,数字系统的设计正朝着高速度、大容量、小体积的方向发展。 传统的自底而上的模式已不能满足芯片和系统的设计要求。为了提高设计效率,能够简化设计流程,大幅降低设计难度的VHDL设计方法受到广泛关注。VHDL与其他传统集成电路描述语言相比,具有明显优势\:

(1) 功能强大,描述力强。可用于门级、电路级甚至系统级的描述、仿真和设计。

(2) 可移植性好。对于设计和仿真工具及不同的平台均可采用相同的描述。

(3) 研制周期短, 成本低。

(4) 可以延长设计的生命周期。

(5) 具有电路仿真与验证功能,用户甚至不必编写相量测试即可进行源代码级调试。设计者能够跳过电路实验,直接对各种方案进行比较和选择,使设计效率得以提高。

(6) 对设计的描述具有相对独立性。

(7) 语言标准、规范,易于共享和复用。

目前,VHDL渗透了电子技术及其相关的各个工业领域,在工业设计中发挥着日益重要的作用。在世界范围内,关于VHDL在多个领域尤其在芯片,系统设计方面的应用研究已经取得众多瞩目成果。

而将VHDL与医学相结合,势必成为电子自动化设计(EDA)一个全新的研究方向,本文主要研究将EDA通过VHDL应用于医学,以对脉搏的测量为例,以实现数字系统对人体多种生理活动及生理反应的直观精确测量。

1 实验设计

1.1 EDA技术在医学教学中脉搏测量中的应用探讨

在临床诊断,护理学等中介绍脉搏的测量时认为脉搏很容易在手腕掌面外侧跳动的桡动脉上摸到,也可测量颈部的颈动脉或腹股沟的股动脉。其测量方法是病员手臂放于舒适位置,用食指,中指,无名指的指腹端按压在桡动脉表面,一般病员默数半分钟,将所测的脉率乘以2便是一分钟的脉数,异常病人测一分钟。成年人的脉搏在安静状态下每分钟是60~80次。如少于60次是心动过缓。但训练有素的运动员,脉搏有时也在60次以下,这正是心脏健康有力的表现。如超过100次是心动过速。体力活动或情绪激动时,脉搏可暂时增快,发烧时脉搏也增快。一般是体温每升高1 ℃,脉搏就增加10~20次。此法只能粗略计算脉搏跳动,如将VHDL语言应用其中,便可以通过EDA实验箱中的七段数码管直观准确地看到一分钟的计数结果,并与之前通过医学教材讲授方法测出结果相比对,从而判定测量的正确与否。

1.2 设计思路

将脉搏信号通过脉搏传感器采集进入计算机,而后作为输入信号,而此信号作为脉冲信号,即如时钟信号一般,当输入时计数器开始计数,如下面设计一个十进制计数器的VHDL描述便可用来对所采集的脉搏信号计数\。

1.3 VHDL设计流程

VHDL流程设计\如图1所示。

图1 VHDL流程设计图

现在,计算机辅助工程软件的供应商已把日益通用的硬件描述语言VHDL作为其CAD 或EDA 软件输入与输出的标准, 其中ALTEKA公司提供的综合工具Max+Plus Ⅱ,具有全面的逻辑设计能力, 从编辑、综合、布线到仿真、下载都十分方便。

2 设计方案与结果分析

VHDL 语言设计十进制计数器的源程序\:

library ieee;

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;

entity jsq is

port(cp,rst:in stdlogic;

cp1:out stdlogic;

q:out stdlogicvector(3 downto 0));

end jsq;

architecture behave of jsq is

begin

process(cp,rst)

variable q1:stdlogicvector(3 downto 0);

begin

if rst=′1′ then q1:=(others=>′0′);

elsif cp′event and cp=′1′then

if q1

else q1:=(others=>′0′);

end if;

q

end if;

if q1="1001" then cp1

else cp1

end if;

end process;

end behave;

在程序输入完成后, 经Max+Plus Ⅱ中的Compiler编译通过后,可用Stimulator进行仿真,查看仿真结果,如图2所示。

图2 经Max+Plus Ⅱ编译,通过Stimulator得到的仿真结果

也可以加入七段显示译码器的VHDL设计来通过实验箱的七段数码管扫描显示计数结果\仿真结果如图3所示。

图3 译码器的仿真结果

代码如下:

library IEEE;

use ieee.stdlogic1164.all;

use ieee.stdlogicunsigned.all;

entity huay is

port( q1:in stdlogicvector(3 downto 0);

light:OUT stdlogicvector(6 downto 0));

end huay;

architecture behave of huay is

begin

process(q1)

begin

case q1 is

when"0000"=>light

when"0001"=>light

when"0010"=>light

when"0011"=>light

when"0100"=>light

when"0101"=>light

when"0111"=>light

when"1000"=>light

when"1001"=>light

when others=>light

end case;

end process;

end behave;

最终实现的顶层文件原理图如图4所示。

图4 顶层文件原理图

顶层文件设计如图4所示,通过该文件可以实现译码,下载到EDA实验箱时,便可于实验箱的数码管上读出相应的脉搏数,如图5所示。

图5 通过数码管得到的最终仿真图

VHDL语言与医学内容的结合,除了应用于脉搏的测量,还可应用于心跳及呼吸等的测量,以及受人体对声、光刺激后的生理反应时间的测定\等。电子自动化设计(EDA)及其相关技术,在医学领域具有巨大的应用前景,有待进一步的研究和发掘。

3 结 语

VHDL是一种随着电子技术的不断发展,为满足电路系统化和高度集成化要求而发展起来的一种新型硬件描述语言。VHDL具有广泛的应用范围,在芯片及电路系统设计等方面发挥着日益重要的作用\。以VHDL为核心的EDA技术应用于医学,能直观准确的测量人体的脉搏心跳,呼吸等生理活动,以及受到外界刺激的生理反应等,在医学领域存在广阔的发展空间,随着进一步的探索和实践,必将对医学的发展起到极大的推动作用。

参考文献

[1]陈耀和. VHDL语言设计技术[M]. 北京: 电子工业出版社, 2004.

[2]汪国强. EDA技术及应用[M]. 北京: 电子工业出版社, 2006.

[3]潘泽强. VHDL语言在数字电路教学中的应用[J]. 科技资讯, 2008(35): 15.

[4]张顺兴. 数字电路与系统设计[M]. 南京: 东南大学出版社, 2004.

[5]余孟尝. 数字电子技术简明教程[M]. 3版. 北京: 高等教育出版社, 2006.

[6]朱正伟. EDA技术及应用[M]. 北京: 清华大学出版社, 2005.

[7]周政新. 电子设计自动化实践与训练[M]. 北京: 中国民航出版社, 1998.

[8]江晓安. 数字电子技术[M]. 西安: 西安电子科技大学出版社, 2002.

[9]刘玉英. 一种测量生理反应时间的电路设计[J].现代电子技术, 2008, 31(17): 171-173.

vhdl语言篇3

关键词:EDA;自顶向下;VHDL;交通信号灯

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)15-21050-04

Implementation of Traffic Signal Lights Based on VHDL

LUO Hai-tao

(School of Informatics,Guangdong University of Foreign Studies,Guangzhou 510420,China)

Abstract:EDA integrates the latest technologies of modern Electronics and Computer Science,its design adopts top down methodology,and hardware description language is used to design electronic circuit in EDA;VHDL becomes one of the most popular hardware description language because of its strong ability of modeling and syntheses.Designed traffic signal lights based on VHDL.

Key words:EDA(Electronics Design Automation);Top down;VHDL;Traffic Signal Lights

1 引言

硬件描述语言(HDL,Hardware Description Language)至今约有40余年的历史,现在已成功地应用于ASIC自动设计的模拟验证和综合优化等方面。其特点是借鉴高级语言的功能特性对电路的行为与结构进行高度抽象化、规范化的形式描述,并对设计进行不同层次,不同领域的模拟验证与综合优化等处理,使设计过程达到高度自由化。

VHDL语言全称是“超高速集成电路硬件描述语言”(Very High Speed Integrated Circuit Hardware Description Language),1982年被研发出来以。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言,并公布了VHDL的IEEE-1076版(87版)。1993年IEEE对VHDL进行修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新的VHDL版本,即IEEE标准的1076-1993版本(93版)。VHDL语言描述能力强,覆盖了逻辑设计的诸多领域和层次,大大简化了硬件设计任务,提高设计的可靠性。基于VHDL语言的设计方法得到了广泛的应用,VHDL语言已成为硬件描述语言的工业标准。

2 EDA技术与VHDL语言

EDA 技术是90年代迅速发展起来的,是现代电子设计的最新技术潮流,是综合现代电子技术和计算机技术的最新研究成果,是从事电子线路设计与分析的一门技术,包括电子线路的设计、计算机模拟仿真和电路分析、印制电路板的自动化设计三个方面的内容。

进入21世纪后,EDA技术得到了更大的发展,突出表现在以下几个方面:(1)使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;(2)在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出;(3)电子技术全方位纳入EDA领域;(4)EDA使得电子领域各学科的界限更加模糊,更加互为包容。传统的电子产品的设计必须经过设计方案的提出、电原理图设计、初步验证、样机制作、小批量试制、大批量生产等几个过程。对于电子产品设计工程师而言,必须保证理论设计、初步验证两个过程完全正确,才能按电路原理图绘制成电路板图,并进行进一步的生产。

传统的电子产品的设计通常采用自底向上(Bottom Up)电路设计方法,即首先根据系统对硬件的要求,写出详细的技术规格书,画出系统的控制流程图;其次,根据技术规格书和控制流程图,对系统功能进行细化,合理划分功能模块,画出系统的功能框图;然后,对各个功能模块进行细化和电路设计;最后,将各个功能模块的硬件电路连接起来再进行系统地调试,最后完成整个系统的硬件设计。手工设计方法的缺点是:(1)复杂电路的设计、调试十分困难;(2)如果某一过程存在错误,查找和修改十分不便;(3)设计过程中产生大量文档,不易管理;(4)对于集成电路设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差;(5)只有在设计出样机或生产出芯片后才能进行实测。

基于EDA技术的设计则采用自顶向下的设计方法。

(1)采用可以完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,在确保设计的可行性与正确性的前提下,完成功能确认;

(2)利用EDA工具的逻辑综合功能,把功能描述转换成某一具体目标芯片的网表文件,并将它输出到该器件厂商的布局布线适配器,进行逻辑映射及布局布线;

(3)利用产生的仿真文件进行功能和时序验证,以确保实际系统的性能。

自顶向下方法的优点是:顶层功能描述完全独立于目标器件的结构,在设计的最初阶段,设计人员可不受芯片结构的约束,集中精力对产品进行最适应市场需求的设计,从而避免了传统设计方法中的再设计风险,缩短了产品的上市周期;设计成果的再利用得到保证;由于采用的是结构化开发方法,因此确认主系统基本结构后,可以实现多人多任务的并行工作方式,提高系统的设计规模和效率;在选择目标器件的类型、规模、硬件结构等方面具有更大的自由度。

EDA技术通常采用硬件描述语言进行电子电路设计,EDA技术主要特点是:(1)采用硬件描述语言作为设计输入;(2)库(Library)的引入;(3)设计文档的管理;(4)强大的系统建模、电路仿真功能;(5)具有自主知识产权;(6)开发技术的标准化、规范化以及IP核的可利用性;(7)适用于高效率大规模系统设计的自顶向下设计方案;(8)全方位地利用计算机自动设计、仿真和测试技术;(9)对设计者的硬件知识和硬件经验要求低;(10)高速性能好;(11)纯硬件系统的高可靠性。

目前常用的用于EDA技术的硬件描述语言有:ABEL-HDL;Verilog HDL:IEEE 1364-1995,2001;VHDL(Very High Speed Integrated Circuit Hardware Description Language): IEEE 1076-1993。其中VHDL语言以其强大的行为建模、结构建模、寄存器传输级描述以及逻辑综合功能成为EDA技术中应用最广泛的硬件描述语言之一。

3 VHDL建模方法

VHDL建模方法一般有行为建模、结构建模、寄存器传输级描述等方式。VHDL具有强大的行为描述能力,成为系统设计领域最佳的硬件描述语言。行为描述避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统。VHDL丰富的仿真功能和库函数可以在系统的设计早期阶段查验系统功能的可行性,并对设计进行仿真模拟。分解大规模设计和已有设计的再利用,这是由VHDL的行为描述能力和程序结构决定的。用VHDL完成设计后,可以用多种EDA工具进行逻辑综合和优化,VHDL对设计的描述具有相对独立性。行为建模是一种抽象描述,不是对具体电路结构的描述,是对设计实体整体功能的描述,是高层次的概括。对系统进行行为描述目的:在系统设计的初始阶段通过对系统行为描述的仿真发现设计中存在的问题;行为描述阶段不考虑用具体硬件去实现实际的操作和算法,主要检验系统的结构以及工作过程能否达到系统设计的要求。

行为建模主要使用函数、过程和进程,采用行为建模的方法设计的VHDL语言程序一般不能进行综合,必须先使用EDA工具在行为级上进行仿真,确认无误后再将程序改为结构建模或者数据流建模的VHDL语言程序,然后再进行综合。行为建模意义在于对复杂的、多层次的系统来说,行为建模使设计者在早期发现错误,并且确定设计是否合理。

结构建模是指在层次化设计中,高层次(顶层)模块调用低层次模块、基本逻辑门或者基本逻辑单元来组成复杂数字电路或系统,例如一位全加器可以由一位半加器和或门构成,在进行结构建模时,可以先建立半加器和或门模块,包装入库,再调用这些模块建立全加器。这里,全加器是顶层模块,半加器和或门是底层模块,所以,结构化描述体现了层次化设计思想。

寄存器传输级描述RTL(Register Transfer Level),其设计实体的描述按照从信号到信号的数据流形式,或者叫“数据流描述方式”。根据RTL描述,可以导出系统的逻辑表达式并进行逻辑综合,是ED设计中经常采用的描述方法。行为方式描述的系统结构程序抽象度高,很难直接映射到具体的硬件,必须先转换为RTL方式描述的VHDL语言程序。

逻辑综合是针对给定的电路功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得满足要求的电路设计方案。逻辑综合的依据是逻辑设计的描述和各种约束条件;逻辑综合的结果是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。满足要求的方案可能有多个,但逻辑综合器将产生一个最优或接近最优的结果,该结果和逻辑综合器的工作性能有关。

4 系统设计实现

本系统在Altera公司的Max+ Plus II 10.0 BASELINE软件下用VHDL语言设计实现,操作系统环境为Windows XP version 5.1.2600。系统采用自顶向下的设计方法,首先把系统按功能分解成4个模块:controller、display、fenwei以及frequency。分别设计4个模块,然后再调用它们构成整个系统。系统顶层采用图形方法设计,如图1所示。

4个底层模块则采用VHDL语言设计,其中Controller的接口代码为:

Entity Controller Is

Port

(Clock:In Std_Logic;

Reset:In Std_Logic;

Hold:In Std_Logic;

Flash:Out Std_Logic;

NumA,NumB:Out Integer Range 0 To 25;

RedA,GreenA,YellowA:Out Std_Logic;

RedB,GreenB,YellowB:Out Std_Logic

);

Frequency模块的接口代码为:

Entity Frequency Is

Port

(Clk10Hz: In Std_Logic;

Clk1Hz:Out Std_Logic

);

End;

Display模块的接口代码为:

Entity Display Is

Port( Clock:InStd_Logic;

Flash:In Std_Logic;

Qin:In Std_Logic_Vector(3 Downto 0);

Display:Out Std_Logic_Vector(0 to 6));

End;

Fenwei模块的接口代码为:

Entity Fenwei Is

Port

(Clock:In Std_Logic;

Numin:In Integer Range 0 To 25;

NumA,NumB:Out Integer Range 0 To 9

);

End;

编译后运行结果如图2所示。

5 结束语

VHDL是一种功能非常强大的硬件描述语言,主要用于描述数子系统的结构、行为、功能和接口。VHDL借鉴了高级语言的特点,可以将一项工程设计,或称设计实体,(可以是一个元件、一个电路模块或一个系统)分成外部(可视部分即端口)和内部(不可见部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,只要其内部开发完成,其他的设计就可以直接调用这个实体。

参考文献:

[1] 胡振华-VHDL与FPGA设计[M].北京:中国铁道出版社,2003.

[2] 求是科技.VHDL应用开发与工程实践[M].北京:人民邮电出版社,2005.

[3] 卢毅,赖杰.VHDL与数字电路设计[M].北京:科学出版社,2001.

vhdl语言篇4

【关键词】数字逻辑;VHDL;软实验台;功能仿真

1 存在的问题

目前国内数字逻辑课程的教学内容多是基于SSI、MSI等器件进行分析和设计,采用的是经典的数字逻辑设计方法,即用真值表、卡诺图、状态转换图、状态转换表、状态方程、时序图、逻辑图和逻辑函数表达式等方法,来分析和设计数字逻辑系统。显然,对于较复杂的数字系统,因其输入变量数、输出函数变量数和状态数的急剧增加,再使用上述这种传统方法进行分析和设计难以适用,甚至根本无法进行。数字逻辑课程的实验环节也是基于标准SSI,MSI芯片的所谓硬实验台实验室(Hardware-based Laboratory),这种实现台不易做成开放性,实验准备,实验内容和实验课安排都不灵活,实验内容和效果也受到所供SSI,MSI芯片的限制。如今,数字化的概念已深入到各个领域,几乎绝大多数系统已不是简单几个逻辑变量就能完全描述的。然而目前在专门讲授数字系统设计基础理论和方法的数字逻辑课程中,绝大多数高校仍然是沿用了几十年不变的老方法,显然已远远落后于时代的要求,必须加以改革创新。

2 引进VHDL语言的方法

VHDL的方法克服了传统方法的弱点,与传统方法相比有几处根本优点,设计者可以在VHDL描述模型建立之后马上用仿真手段来验证系统功能是否满足要求。这种方法还可以免去传统方法的许多繁杂的试凑等耗时劳动(设计瓶颈),因而减少设计时间,降低设计难度,避免了由于人工试凑设计常容易发生的错误。利用各种EDA工具,可自动的将一个可综合的设计在给定的具体器件上进行门级实现。而且,用这种方法系统整体指标往往容易实现,而传统的方法则不然。这种方法其主要设计文件是用VHDL语言编写的源程序,而不是电路原理图,显然传统硬件电路设计最后形成的主要文件是电路原理图,它与设计的器件和技术有关,不易设计文档的复用。用VHDL语言设计系统硬件电路,主要设计文件是用VHDL语言编写的源程序,以此作为归纳文件有很多好处:首先,资料量小,便于保存;其次是可继承性好,即设计其它硬件电路时可以调用文件中的某些库、进程和过程等描述某些局部硬件电路的程序;第三是阅读方便,很容易在程序中看出某一硬件电路的工作原理和逻辑关系,而阅读电路原理图,推知其工作原理都需要较多的硬件知识和经验,而且看起来也不够一目了然。VHDL还有一个重要的特点就是设计描述与器件无关(without referenec to specific hardware),显然这是基于SSI、MSI等器件进行分析和设计无法做到的,设计者能专注其设计,而且在EDA综合工具的配合下支持自顶向下的设计。

采用VHDL的方法,在实验环境上也把基于硬件的实验室改变成基于软件的实验室(Software-based Laboratory)即软实验台,直接在VHDL仿真器中验证实验结果的正确性,根本克服了硬实验台的不足,易于实现实验的开放性和网络教学模式。

VHDL的方法是顺应迅速发展的通讯技术、电子测量技术、自动化控制等技术的需要而发展起来的,它使硬件软件化变为现实,使大规模和超大规模集成电路的设计向标准化、自动化的方向迈进了一大步。无疑,传统的设计方法已经远远落后,国内电子行业已逐渐将VHDL硬件描述语言应用于电子系统设计中。为了避免我们的教学内容与电子技术发展脱节,增强人才的竞争能力,适应市场需要,将VHDL硬件描述语言引入数字逻辑的教学和实验中,逐步对旧的教学模式和教学内容加以改革,势在必行,也是时代的要求和科技发展的必然结果。

3 举例说明采用VHDL方法的风格和特点

VHDL语言是目前广泛流行的硬件描述语言之一,它起源于美国国防部超高速集成电路计划,计划公布后受到业界的普遍欢迎。1987年12月被IEEE正式批准为标准的硬件描述语言,并于1993年公布了修改后的IEEE最新标准。VHDL支持结构化的开发设计,因此一个大型的数字系统可以分成较小的子系统,许多人可在不同的子系统中同时进行开发工作。VHDL是通过元件例化语句来实现这一功能的。和其它高级语言一样,VHDL是一种强类型语言,这使设计中的许多错误易于发现。VHDL允许设计者在不同的抽象层次里对系统进行行为描述及结构描述。VHDL有三种主要的建模描述风格:

算法描述(Algorithmic):即用顺序语句来描述输入输出对应关系的算法,这种描述方式最初往往与实现硬件无关。

数据流描述(Dataflow):即用一组并行语句来描述数据在寄存器之间流动的建模方式。这种方式与实际硬件实际存在某种对应关系。

结构描述风格(Structural):这是一种与硬件结构最近的描述方式,它通过文件的例化语句来实现。

下面用一个实例来说明采用VHDL语言设计一个四位可控的Johnson计数器,从中可以领略一下采用VHDL方法的风格和特点,此例所反映的设计过程也是笔者所指的软实验台所包含的具体内容。设计模块端口信号有:LEPT,左移控制;RIGHT,右移控制;STOP,停止计数控制;CLK,时钟输入端,Q3-Q0,计数器输出端。设计采用VHDL输入方式。该设计的VHDL代码如下:

library IEEE;

use IEEE.std_logic_1164.all;

entity johnson is

port ( LEFT : in STD_LOGIC;

RIGHT : in STD_LOGIC;

STOP : in STD_LOGIC;

CLK : in STD_LOGIC;

Q : buffer STD_LOGIC_VECTOR (3 downto 0));

end johnson;

architecture johnson_arch of Johnson is

signal DIR: STD_LOGIC;

signal RUN: STD_LOGIC;

begin

process (CLK)

begin

if (CLK'event and CLK='1') then

if (RIGHT='0') then

DIR

elsif (LEFT='0') then

DIR

end if;

if (STOP='0') then

RUN

elsif (LEFT='0' or RIGHT='0') then

RUN

end if;

if (RUN='1') then

if (DIR='1') then

Q(3 downto 1)

Q(0)

else

Q(2 downto 0)

Q(3)

end if;

end if;

end if;

end process;

end johnson_arch;

从上面的VHDL的设计代码可见:VHDL的设计文档由三大部分组成,即库的声明,端口说明和结构体设计描述。其中端口说明清晰的反映了所设计器件的输入输出性质,在结构体设计描述中也清楚的描述了器件所完成的逻辑功能。这是传统的采用SSI,MSI等标准规格器件设计所没有的优点。

图1 设计实例功能仿真图

用VHDL仿真器验证设计的正确性。参见图1:设计实例功能仿真图。

4 结论

随着CMOS技术的日趋成熟和EDA技术的产生和逐步完善,给数字系统的分析和设计方法带来巨大的变革,EDA业界出现了将整个系统集成一个片IC芯片上的系统芯片(System on a Chip,简称SOC)或称片上系统的概念。系统芯片SOC与传统集成电路IC芯片的设计思想是不同的,SOC是微电子设计领域的一场革命。它和集成电路的关系与当时集成电路与分离元器件的关系类似,其对微电子技术的推动作用不亚于自50年代末快速发展起来的集成电路技术。SOC是从整个系统的角度出发,把处理机制、模型算法、芯片结构、各层次电路直至器件的设计紧密结合起来,在单个(或少数几个)芯片上完成整个系统的功能。它的设计必须采用VHDL的方法才能实现。在数字逻辑课程教学和实验中,在向学生讲授最基本的数字系统概念和方法时就引入VHDL的方法,其意义和目的也在于此。笔者并不赞成把数字逻辑和VHDL程序设计作为两门课程分开来讲授,尽管许多高校和教材都是这样设计的。

【参考文献】

[1]M.Morris Mano,etc.逻辑与计算机设计基础[M].北京:机械工业出版社,2011.

[2]林明权,等,编.VHDL数字控制系统设计范例[M].北京:电子工业出版社,2003.

[3]Mark Zwolinski.Digital System Design with VHDL[M].USA:Pearson Education Limited,2000.

vhdl语言篇5

引言

VHDL是一种硬件描述语言,于1983年被IEEE制定为国际标准IEEE1076。近年来国内引进和出版了不少教材,使其在国内得到迅速推广。由于VHDL最初目的是为了实现硬件的建模而被提出的,所以其措施能力超越了数字逻辑集成电路的范围。而现有的EDA工具基本上只能支持VHDL的子集,特别是针对FPGA/CPLD器件进行的不同的综合工具,其综合子集并非统一,不少初学者很难掌握。即使是部分有经验的设计者,对于通常高级语言中都会涉及的循环语句,在VHDL中往往也不能运用自如,甚至无法表达此类逻辑,从而限制了VHDL的应用水平。例如,VHDL的并行堆排序描述就是一个比较典型的例子。该实例十分类似通常数据结构的描述,推广前景诱人;但只能通过仿真,却不能在目前任何一个EDA工具进行综合,导致无实用价值。

本文从高级语言涉及最多的Loop语句出发,讨论如何在VHDL中解决这类问题。

1 无法综合的Loop动态条件

VHDL中Loop表达式有三种体现形式:While……Loop、For……Loop和单独的Loop语句。它还支持Next、Exit和标号,因此,循环语句的表达能力大于常规的C或PASCAL语言。程序1是利用For语句和While语句描述插入算法的部分代码。

程序1 不可综合的VHDL循环语句

……

for I in 2 to Length loop ---Length为一个变量

Temp:=MyList(I);

J:=I;

While(j>1)and MyList(j-1)<Temp loop

MyList(j):=MyList(j-1);

j:=j-1;

End loop;

MyList(j):=Temp;

End loop;

……

对于第一个For语句,EDA工具Synplify综合时将会给出无边界的范围错误提示。

@E:"H:.vhd"|for loops with unbound ranges should contain w wait statement

即使部分优秀的综合工具,例如ORCAD Express、Mentor Grpahs QuickHDL等能够综合第一个For语句,也无法支持第二个While条例表达式。ORCAD Express将给出表达式不可静态计算的错误提示。

..vhd(45):Error,expression does not evaluate to a constant.

由于程序1在C程序员看来是没有问题的,因此,初学者往往不能解决好此类问题,从而使学习陷入困境,无法充分利用VHDL来表述逻辑。

2 直接代换法

对于第一类无边界的范围错误问题,可以用循环的综合机制转化为相应的语句。例如下面代码:

for I in 0 to 1 loop

Out_Bus(i)<=In_Bus(i);

End loop;

其对应综合后的电路见图1。

相应的,也可以用下列语句直接代入代换:

Out_Bus(0)<=In_Bus(0);

Out_Bus(1)<=In_Bus(1);

程序1可以采用下列VHDL代码表示:

K:=2;

Temp:=MyList(2);

If(MyList(1)<Temp then

MyList(2):=MyList(1);

J:=1;

End if;

MyList(J):=Temp;

J:=3;

Temp:=MyList(3);

If(MyList(2)<Temp then

MyList(3):=MyList(2);

J:=2;

End if;

If(MyList(1)<Temp then

MyList(2):=MyList(1);

J:=1;

End if;

MyList(J):=Temp;

……

然而,这种使用方法要求设计者清楚循环条件一定会执行的次数,否则将无法实施。当循环次数比较大时,代码编写工作量将十分庞大,因此可以采用第二种方法——边界扩充法。

3 边界扩充法

边界扩充法是指在边界未定时,可以将边界定为最大可能的范围,即用静态表达来替代。例如程序1的代码可以改写为:

constant MAX:integer=100; --MAX必须大于MyLen所有可能的取值

……

Out_loop:for I in 2 to MAX loop

Exit out_loop when I>MyLen; --MyLen为变量

Temp:=MyList(I);

countj:=I;

inter_loop:for j in I downto 2 loop

countj:=j;

exit inter_loop when MyList(j-1)<Temp; --退出循环

MyList(j):=MyList(j-1);

End loop;

MyList(countj):=Temp;

End loop;

尽管这种方法可以处理未知边界和未定表达式的情况,但十分消耗空间,特别是当MyLen相对MAX比较小的时候,代价非常大。此时,可以利用时间换空间的方法进行转换。

图1 For语句的综合示例

4 计数器法

计数器法是指引入时钟和计数器,用计数器对边界条件进行控制,也可以将动态表达式直接代入转化相应的静态表达式。例如,上述代码的For条件可以用下列代码替换:

if(Reset='1')then

I:=2;

Elsif clk='1'and clk'event then

Temp:=MyList(I);

J:=2;

While(j>1)and MyList(j-1)<Temp loop

MyList(j):=MyList(j-1);

j:=j-1;

End loop;

MyList(j):=Temp;

I:=(I+1);

If(I=MyLen+1)then I:=2;end if;

End if;

相比原来的代码,引入了1个时钟和1个复位。但综合开销最大的循环语句却被取代了,因此,综合产生门的数目将大幅度下降,但处理时间将相应延长到原来循环条件范围。

本刊网络补充版(dpj.com.cn)中发表了四个源代码,分别为不可综合例子、直接代换法、边界扩充法和计算器法,内部都有相应注释。其中计数器法改进为双计数器方法。

结语

vhdl语言篇6

关键词:数字调制器;DDS;DSP Builder;VHDL;FPGA

中图分类号:TP319 文献标识码:A 文章编号:16727800(2013)007010402

0 引言

在数字基带传输系统中,为了使数字基带信号能够在信道中传输,要求信道应具有低通形式的传输特性。但在实际信道中,大多数信道并不能传输基带信号,为了使基带信号匹配信道,必须用数字基带信号对载波进行调制,产生各种已调数字信号。基本的三种数字调制方式是:振幅键控(ASK)、移频键控(FSK)和移相键控(PSK)。

本文采用两种方法来实现数字调制器,一种是用Altera公司推出的FPGA开发工具DSP Builder,设计了基于DDS(直接数字频率合成)技术的多种数字调制器,然后使用Signal Compiler把模型设计文件(.mdl)转换成相应的硬件描述语言VHDL的设计文件(.vhd),以及用于控制综合和编译的TCL脚本[1];另一种是直接用VHDL语言编程来实现。接着就可以用Quartus II来完成综合、仿真、适配、下载到器件。

1 DSP Builder方法实现数字调制器

1.1 DDS原理

直接数字频率合成技术(Direct Digital Synthesis, DDS) 是一种从相位出发直接合成所需要的波形的全数字频率合成技术,该技术特点是:频率分辨率高、频率变化速度快、相位可连续性变化等[2],被广泛应用在数字通信系统中,是信号生成的最佳选择。一个基本的DDS结构如图1所示,主要由相位累加器、相位调制器、正弦ROM查找表、基准时钟源和D/A转换器构成,前三部分是DDS结构中的数字部分,具有数控频率合成的功能。相位累加器是DDS系统的核心,它由一个累加器和一个相位寄存器组成[3],用来完成相位的累加运算,然后输出给相位调制器,实现对相位的调制,其输出结果作为正弦ROM查找表的地址,正弦ROM查找表完成查表转换,也可以理解成相位到幅度的转换,输出送往D/A转化成模拟信号。

3 结语

采用APEX20KE系列器件对以上两种方法实现2FSK调制器进行编译仿真,DSP Builder建模的方法占用的LE单元296个,约为4%,引脚为 97, VHDL编程方法占用的LE单元为8个,不到1%,引脚为 4。通过比较得出结论:DSP Builder方法比较简单,不需要复杂的编程,但占用的资源比较多,VHDL方法编程比较难,但实现简单功能时占用资源少。

参考文献:

[1] 杨西西,徐建城,任自钊.基于DSP Builder的数字调制器[J].科学技术与工程,2011(2).

[2] 雷国伟,林兴元,舒强,等.基于DSP Builder的通用调制信号发生器设计[J].电视技术,2009(2).

[3] 李康顺,吕小巧,张文,等.基于改进DDS技术的FPGA数字调制器研究[J].压电与声光,2009(6).

vhdl语言篇7

摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。

现在,随着系统级FPGA以及系统芯片的出现。软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、cynlibc++等等。究交选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。

一、目前HDL发展状况

目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、CynlibC++、CLevel等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。

而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。

在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。各方人士各持己见:为Verilog辩护者认为,开发一种新的设计语言是一种浪费;为SystemC辩护者认为,系统级芯片SoC快速增长的复杂性需要新的设计方法;C语言的赞扬者认为,Verilog是硬件设计的汇编语言,而编程的标准很快就会是高级语言,Cynlibc++是最佳的选择,它速度快、代码精简;Supedog的扞卫者认为,Superlog是Verilog的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化,而不是一场革命。

当然,以上所有的讨论都没有提及模拟设计。如果想设计带有模拟电路的芯片,硬件描述语言必须有模拟扩展部分,像VerilogHDL-A,既要求能够描述门级开关级,又要求具有描述物理特性的能力。

二、几种代表性的HDL语言

2.1VHDL

早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行VHDL的开发。1987年。由IEEE(In,stituteofElectricalandElectro-nicsEngineers)将VHDL制定为标准。参考手册为IEEEVHDL语言参考手册标准草案1076/8版,于1987年批准,称为IEEE1076-1987。应当注意,起初VHDL只是作为系统规范的一个标滞,而不足为设计而制定的。第二个版本是在1993年制定的,称为VHDL-93,增加了一些新的命令和属性。

虽然有“VHDL是一个4亿美元的错误”这样的说法。但VHDL毕竟是1995年以前唯一制订为标准的硬件描述语言,这是它不争的事实和优势;但同时它确实比较麻烦,而且其综合库至今也没有标准化,不具有晶体管开关级的描述能力和模拟设计的描述能力。目前的看法是,对于特大型的系统级数字电路设计,VHDL是较为合适的。

实质上,在底层的VHDL设计环境是由VerilogHDL描述的器件库支持的,因此,它们之间的互操作性十分重要。目前,Verilog和VDHL的两个国际组织OVI、Ⅵ正在筹划这一工作,准备成立专门的工作组来协调VHDL和VerilogHDL语言的互操作性。OVI也支持不需要翻译,由VHDL到Verilog的自由表达。

2.2VerilogHDL

VenlogHDL是在1983年,由GDA(GateWayDesignAu-tomation)公司的PhilMoorby首创的。PhilMoorby后来成为Verilog-XL的主要设计者和Cadence公司的第一合伙人。在1984“1985年,PhilMoorby设计出了第一个名为Venlog-XL的仿真器;1986年,他对VerilogHDL的发展义作出了另一个巨大的贡献:提出了用于快速门级仿真的XL算法。

随着Verilog-XL算法的成功,VerilogHDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,VerilogHDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开VerilogHDL语言,于是成立了OVI(OpenVerilogInternaUonal)组织,负责促进VerilogHDL语言的发展。基于VerilogHDL的优越性,IEEE于1995年制定了VerilogHDL的IEEE标准,即VerilogHDL1364-1995;2001年了VerilogHDL1364-2001标准。在这个标准中,加入了VerilogHDL-A标准,使Verilog有了模拟设计描述的能力。

2.3Superlog

开发一种新的硬件设计语言,总是有些冒险,而且未必能够利用原来对硬件开发的经验。能不能在原有硬件描述语言的基础上,结合高级语言c、c++甚至Java等语言的特点,进行扩展,达到一种新的系统级设计语言标准呢?

Superlog就是在这样的背景下研制开发的系统级硬件描述语言。Verilog语言的首创者PhilMoorby和PeterFlake等硬什描述语言专家,在一家叫Co-DesignAutomation的EDA公司进行合作,开始对Verilog进行扩展研究。1999年,Co-Design公司了SUPERLOGTM系统设计语言,同时了两个开发工具:SYSTEMSIMTM和SYSTEMEXTM。一个用于系统级开发,一个用于高级验证。2001年,Co-Design公司向电子产业标准化组织Accellera了SUPERLOG扩展综合子集ESS,这样它就可以在今天Verilog语言的RTL级综合子集的基础上,提供更多级别的硬件综合抽象级,为各种系统级的EDA软件工具所利用。

至今为止,已超过15家芯片设计公司用Superlog来进行芯片设计和硬件开发。Superlog是一种具有良好前景的系统级硬件描述语言。但是不久前,由于整个IT产业的滑坡,EDA公司进行大的整合,Co-Design公司被Synopsys公司兼并,形势又变得扑朔迷离。

2.4SystemC

随着半导体技术的迅猛发展,SoC已经成为当今集成电路设计的发展方向。在系统芯片的各个设计中,像系统定义、软硬件划分、设计实现等,集成电路设计界一直在考虑如何满足SoC的设计要求,一直在寻找一种能同时实现较高层次的软件和硬件描述的系统级设计语言。

systemC正是在这种情况下,由Synopsys公司和CoWare公司积极响应目前各方对系统级设计语言的需求而合作开发的。1999年9月27日,40多家世界着名的EDA公司、lP公司、半导体公司和嵌入式软件公司宣布成立“开放式SystemC联盟”。着名公司Cadence也于2001年加入了systemC联盟。SystemC从1999年9月联盟建立初期的0.9版本开始更新,从1.0版到1.1版,一直到2001年10月推出了最新的2,0版。

三、各种HDL语言的体系结构和设计方法

3.1SystemC

实际使用中,systemc由一组描述类库和一个包含仿真核的库组成。在用户的描述程序中,必须包括相应的类库,可以通过通常的ANSIc++编译器编译该程序。SystemC提供了软件、硬件和系统模块。用户可以在不同的层次上自由选择。建立自己的系统模型,进行仿真、优化、验证、综合等等。

3.2Supeflog

Superlog集合了Verilog的简洁、c语言的强大、功能验证和系统级结构设计等特征,是一种高速的硬件描述语言。

①Verilog95和Verilog2K。Superlog是VerilogHDL的超集,支持最新的Verilog2K的硬件模型。

②c和c++语言。Superlog提供c语言的结构、类型、指针,同时具有C++面对对象的特性。

③Superlog扩展综合子集ESS。ESS提供一种新的硬件描述的综合抽象级。

④强大的验证功能。自动测试基准,如随机数据产生、功能覆盖、各种专有检查等。

Superlog的系统级硬件开发工具主要有Co-DesignAu-mmation公司的SYSTEMSIMTM和SYSTEMEXTM,同时可以结合具它的EDA工具进行开发。

3.3Verilog和VHDL

这两种语言是传统硬件描述语言,有很多的书籍和资料叫以查阅参考,这里不多介绍。

四、目前可取可行的策略和方式

按传统方法,我们将硬件抽象级的模型类型分为以下五种:

(1)系统级(system)-用语言提供的高级结构实现算法运行的模型;

(2)算法级(aIgorithm)-用语言提供的高级结构实现算法运行的模型;

(3)RTL级(RegisterTransferLevel)-描述数据在寄存器之间流动和如何处理、控制这些数据流动的模型。

(4)门级(gate-level)-描述逻辑门以及逻辑门之间的连接模型;

(5)开关级(swish-level)-描述器件中三极管和存储节点以及它们之间连接的模型。

根据目前芯片设计的发展趋势。验证级和综合抽象级也有可能成为一种标准级别。因为它们适合于IP核复用和系统级仿真综合优化的需要,而软件(嵌入式、固件式)也越来越成为一个和系统密切相关的抽象级别。

目前,对于一个系统芯片设计项目,可以采用的方案包括以下几种:

①最传统的办法是,在系统级采用VHDL,在软件级采用c语言,在实现级采用Verilog。目前,VHDL与Verilog的互操作性已经逐步走向标准化,但软件与硬件的协凋设计还是一个很具挑战性的工作。因为软件越来越成为SOC设计的关键。该力案的特点是:风险小,集成难度大,与原有方法完全兼容,有现成的开发工具:但工具集成由开发者自行负责完成。

②系统级及软件级采用Superlog,硬件级和实现级均采用VerilogHDL描述,这样和原有的硬件设计可以兼容。只要重新采购两个Superlog开发工具SYSTEMSIMTM和SYSTEMEXTM即可。该方案特点是风险较小,易于集成,与原硬件设计兼容性好。有集成开发环境。

③系统级和软件级采用SystemC,硬件级采用SystemC与常规的VerilogHDL互相转换,与原来的软件编译环境完全兼容。开发者只需要一组描述类库和一个包含仿真核的库,就可以在通常的ANSIc++编译器环境下开发;但硬件描述与原有方法完全不兼容。该方案特点是风险较大,与原软件开发兼容性好,硬件开发有风险。

五、未来发展和技术方向

微电子设计工业的设计线宽已经从0.251um向0.18um变迁,而且正在向0.13um和90nm的目标努力迈进。到0.13um这个目标后,90%的信号延迟将由线路互连所产生:为了设计工作频率近2GHz的高性能电路,就必须解决感应、电迁移和衬底噪声问题(同时还有设计复杂度问题)。

未来几年的设计中所面临的挑战有哪些?标准组织怎样去面对?当设计线宽降到0.13um,甚至更小尉,将会出现四个主要的趋势:设计再利用;设计验证(包括硬件和软什);互连问题将决定剥时间、电源及噪声要求;系统级芯片设计要求。

满足来来设计者需要的设计环境将是多家供应商提供解决方案的模式,因为涉及的问题面太广且太复杂,没有哪个公司或实体可以独立解决。实际上,人们完全有理由认为,对下一代设计问题解决方案的贡献,基础研究活动与独立产业的作用将同等重要。

以后EDA界将在以下三个方面开展工作。

①互用性标准。所有解决方案的基础,是设计工具开发过程的组件一互用性标准。我们知道。EDA工业采用的是工业上所需要的标准。而不管标准是谁制定的。但是,当今市场的迅速发展正在将优势转向那些提供标准时能做到快速适应和技术领先的组织。处于领先的公司正在有目的地向这方面投资,那些没有参加开发这些标准的公司则必须独自承担风险。

②扩展其高级库格式(ALF)标准,使其包含物理领域的信息,是EDA开发商可以致力于解决互连问题的算法,从而使电路设计者在解决设计收尾工作时,不再受到这个问题的困扰。

vhdl语言篇8

【关键词】FPGA;VHDL;可变模计数器

1.引言

EDA是将数字系统以某一种特定的表达方式输入计算机开发平台进行处理,经由综合,仿真,下载到目标芯片,最终实现设计的智能化设计技术。其中输入文件的种类众多,有原理图输入法、硬件描述语言输入法、状态图输入法、波形输入法等。

硬件描述语言(HDL)是EDA技术的重要组成部分,是设计数字系统的重要表达手段,和原理图输入法,波形输入法相比,具有灵活度高,易于修改、升级,方便调用,库资源丰富等优点。常见的HDL主要有VHDL、Verilog HDL、ABEL、AHDL等,其中标准化语言VHDL、Verilog使用最广泛,可以被几乎所有的EDA工具支持。

可变模计数器是数字系统中广泛应用的一种电路模块,本文讨论了一种基于VHDL语言实现的可变模计数器的EDA设计方案,采用FPGA芯片作为设计载体,FPGA具有在线可重构的优点,如需对计数器的技术指标进行修改,只需修改源程序中的相应参数,重新进行编译、仿真、配置即可,使得系统本身灵活性好,便于升级和维护。

2.可变模计数器的功能指标

本文设计的计数器为5位输出可变模计数器,采用两位控制信号选择计数的模值,因此可进行四种模值的切换。计数器在工作时,可以通过控制信号m[1:0]的值选择相应的模值m,计数时,在每个时钟的上升沿进行加法计数,从0计到m-1,然后自动归零循环计数。在本设计中,输出端口为5位,可以实现模小于等于32的计数应用。如果需要增可选择模值的数量,只需要增加选择控制信号位数即可。随着模值的增大,还可以相应增加输出端口信号的位数来对应。

3.可变模计数器的实现方案

在本设计中,采用VHDL语言进行源程序的设计,源程序由实体和结构体两个部分组成,在实体中定义了系统的输入输出端口,在结构体中行描述了计数器的逻辑功能。令两位控制信号分别为m1、m0,计数脉冲为clk输入时钟信号,计数值输出为5位二进制信号y。假设当控制信号m[1:0]=0时,进行模19计数;m[1:0]=1时,进行模4计数;m[1:0]=2时,进行模10计数;m[1:0]=3时,进行模6计数.该程序通过信号传递参数,如果想修改计数器的功能指标,只需要修改源程序中相应的端口参数和信号参数即可,修改设计非常方便、灵活。采用VHDL描述的源程序如下:

以上源程序在集成开发环境下通过综合和适配,将行为和功能的高层次表达转换为门电路的低层次表达,最终在硬件上实现系统功能。

4.可变模计数器的编译与仿真结果

将编写好的源程序与实体名variable_m同名保存在工程项目路径下,文件名后缀为.vhd。本设计采用的芯片是Altera公司的Flex10k系列FPGA芯片EPF10K30ETC144-1,源文件通过编译后系统的提示编译成功,如图1所示。

建立波形仿真文件,设置控制信号m[1:0]的值分别为0和,2,在仿真窗口观察仿真波形,仿真结果正确。仿真波形见图2、图3。

5.结束语

在本文编写的源程序中,输出端口y的范围定义为0到20,是由于计数的模最大设置为19的缘故,这个定义在源程序编译后,会由编译器自动生成一个5位二进制的输出端口,即实际的输出端计数范围是0到31,而源程序中设定的计数模最大不能超过32。如果需要增加计数模的值,在定义端口y的时候,就要增大y的输出范围,而系统进行编译的时候会自动生成相应位数的输出端口,从这点来看,VHDL语言设计的灵活性要远远好于原理图输入法、状态图输入法、波形输入法。

参考文献

[1]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2002.

[2]杨晓慧,杨永健.基于FPGA的EDA/SOPC技术与VHDL[M].北京:国防工业出版社,2007.

[3]谭会生,瞿遂春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.

[4]吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.

上一篇:logo语言范文 下一篇:英语语言学范文