前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇vhdl语言范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:vhdl;FPGA;数字抢答器
引言
VHDL的英文全名Very-High-Speed Integrated Circuit Hardware Description Language,被IEEE和美国国防部确认为标准硬件描述语言 。它被公认有众多优点,如设计灵活、支持广泛、易于修改,独立于器件设计。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言
抢答器在各种知识竞赛和娱乐活动有着非常广泛的应用,实用功能强大的VHDL语言来发开抢答器具有方便快捷,稳定可靠的特点,非常适合。
1、设计要求
1.1四人参加智力竞赛;
1.2当按下选手面前的抢答按钮时,相应的灯亮,且主持人处的指示灯亮,指示已有人申请回答问题;
1.3显示屏上出现选手的号码, 并且开始100s倒计时,若选手在100s内还没有给出答案,喇叭声将响起,提示该选手回答失败;
1.4一轮抢答完成后,主持人按动复位键,开始下一轮回答
2、系统的VHDL设计
本文采用最大的PLD生产厂商altera公司的可编程逻辑器件,芯片型号为FLEX 84-4。
本文开发软件为MAX+PLUSII,总的电路系统图如下:
下文是该数字电路系统的关键子模块及VHDL代码:
模块一:实现选手按键信号的或操作c1
模块二:在每次电路时钟信号clk的上升沿实现“q1
模块三:当cp信号上升沿时,q端置高电平,代表其中有选手了回答。当主持人按下clr按钮将其置零时,q端置低电平,系统复位。部分代码如下:
if clr='0' then --清零
q
elsif cp'event and cp='1' then
q
模块四:实现从选手按键号码到对应二进制数的转换,运用VHDL的”case”语句编程,部分代码如下:
tmp:=d1&d2&d3&d4; case tmp is
when""0111""=>qq
when""1101""=>qq
模块五:实现接收到抢答信号后的99s倒计时,倒计时时间到则发出一个发声命令。 主要运用了循环思想编程,部分代码如下:
if clk'event and clk='1'then
if en='1'then --开始计数
if ll=0 and hh=0 then
sound
elsif ll=0 then
ll:=""1001"";
hh:=hh-1;
else
ll:=ll-1;
end if;
else --en=0,主持人按下按钮后
sound
hh:=""1001"";
ll:=""1001"";
end if; end if;
h
模块六(连接模块):此模块实现以上各模块的引脚通讯,使它们配合工作,达到预期的电路功能。编程使用了VHDL的”component “功能,简便易懂,稳定可靠,部分代码如下:
signal one,two,three,four,five,six,seven,eight:std_logic;
begin
u1:a port map(d1,d2,d3,d4,one);
u2:feng port map(one,host,two);
u3:lockb port map(d1,d2,d3,d4,two,host,three,four,five,six,seven);
u4:change port map(three,four,five,six,dis);
u5:count port map(clk,seven,t1,t2,eight);
u6:b port map(seven,eight,sound);
f1
f2
f3
f4
end lianjie_arc;
3、结论以及结果说明
仿真图(总系统):
说明:1:四人(d1,d2,d3,d4)参加智力竞赛;
2:当按下选手面前的抢答按钮时(输入高电平),相应的灯亮(f1,f2,f3,f4输出高电平),且主持人处的指示灯亮,指示已有人申请回答问题;
3:显示屏上出现选手的号码(dis输出对应数字), 并且开始100s倒计时,若选手在100s内还没有给出答案,喇叭声将响起(sound输出高电平),提示该选手回答失败;
4:一轮抢答完成后,主持人按动复位键(host输入低电平),所有数都清零,开始下一轮回答
符合设计要求。
参考文献:
[1]罗苑棠.CPLD/FPGA常用模块与综合系统设计实例精讲[M].北京:电子工业出版社,2007.
关键词:VHDL;CPLDCPU
中图分类号:TP312 文献标识码:B文章编号:1009-9166(2008)33(c)-0049-01
CPU因其在各大系统中处于核心位置而在硬件电路设计中备受关注,但因其结构复杂,所涉专业背景多而不被一般人掌握。CPU设计极具代表性,虽发展日新月异,但就其基本原理而言大同小异。VHDL语言是符合IEEE标准的当今世界最为流行的硬件描述语言。下文通过对CPU结构模型的简化,依托综合实验平台,所描述的简易4位CPU,能实现加、减、乘、移位等操作。
一、系统功能设计。精简CPU结构模型,运用Altera公司的MAX7000s系列芯片,依托综合实验板,运用状态机实现了微机指令系统。其指令的分析和执行过程与微机中的CPU相似,能完成简单的算数运算和逻辑运算。
二、设计与实现。(一)、简易4位CPU的基本结构单元。1)程序计数器;2)输入与MAR(Memory Access Register);3)16×8RAM;4)指令寄存器;5)累加器(Accumulator);6)二进制显示(Binary Display);7)B寄存器(B Register);8)输出寄存器(Output Register);9)运算器(Calculater)
(二)、寻址方式介绍。本设计中的4位CPU指令共有8个且可分为两种类型,如下表:
对状态机的主要部分的描述和注释:IF(clk'event AND clk='0')THEN--时钟下降沿触发
IF(run='1')THEN--如果CPU运行信号为
CASE pstate IS
WHEN s0=>nstate
f1:=true;--标志f1置true
IF(breg="00000000")THEN--如果B寄存器值为0
mar
END IF;
WHEN s1=>nstate
IF(breg="00000000")THEN--如果B寄存器值为0
IF(flag=true)THEN --标志为true
pc
flag:=false;--标志flag置false
END IF;--如果不满足条件,是因为正执行多次移位的指令
END IF;--只有移位完才能执行下一条指令,所以程序计数器数值不变
(四)、简易4位CPU功能仿真(加法)。以下是计算10+15+17-20=1C(十六进制加减计算)的VHDL源程序,这部分将写入ROM中:ARCHITECTURE rtl OF ROM16x8_1 IS
BEGIN
dataout
"00011010" WHEN (address="0001" AND ce='0') ELSE
"00011011" WHEN (address="0010" AND ce='0') ELSE
"00101100" WHEN (address="0011" AND ce='0') ELSE
"11100000" WHEN (address="0100" AND ce='0') ELSE
"11110000" WHEN (address="0101" AND ce='0') ELSE
"00010000" WHEN (address="1001" AND ce='0') ELSE
"00010101" WHEN (address="1010" AND ce='0') ELSE
"00010111" WHEn (address="1011" AND ce='0') ELSE
"00100000" WHEN (address="1100" AND ce='0') ELSE
"00000000";
END ARCHITECTURE rtl;
10+15+17-20=1C(十六进制加减计算)仿真波形图如下:
总结:采用自顶向下的设计方法,将复杂的CPU有效划分位状态机模型再进行设计和编程,并用QuartusII软件进行了仿真,最终在MAX7000s综合电路板上验证通过,很好地模拟了CPU的工作过程。但此设计亦有不足之处:1.没有直接实现除法;2.算数没有优先级。另外,综合开发板上的MAX7000s系列性能过低也是制约设计复杂的数字电路障碍之一。
作者单位:北京邮电大学电信工程学院
作者简介:吉祥(1986年-),男,汉族,上海长宁区人,北京邮电大学 电信工程学院2005级电子信息工程本科生。
参考文献:
[1]张亦华,延明.数字电路EDA入门――VHDL程序实例集[M].北京.北京邮电大学出版社.2002
[2]姜立东.VHDL语言程序设计及应用[M].北京:北京邮电大学出版社.2004
关键词:步进电机;FPGA;控制
中图分类号:V233.7+3文献标识码:A文章编号:1009-3044(2009)25-7300-03
Based on VHDL the Development of Stepper Motor Controller
HAN Tuan-jun
(Shaanxi University of Technology, Hanzhong 723000, China)
Abstract: In this paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. In the design,hardware description language(VHDL) is used to describe the functional module of the stepper motor controller. Through compiling and simulation under the MAX+plusII, we can complete the design of the stepper motor controller.
Key words: stepper motor controller;FPGA; control
步进电机是一种将电脉冲转化为角位移的执行机构,它结构简单、工作可靠,能将数字的电脉冲输入直接转换为模拟的输出轴运动。步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用于各种自动化控制系统中。
1 步进电机控制器的总体设计
采用FPGA器件对步进电机进行控制,利用FPGA中的嵌入式EAB,可以构成存放电机各相电流所需的控制波形数据。利用FPGA设计的数字比较器可以同步产生多路PWM电流波形,对多相步进电机进行灵活控制。通过改变控制波形的数据、增加计数器的位数,可以提高计数器的精度,从而可以对步进电机转角进行任意角度细分,实现步进电机转角的精确控制。此次设计采用的是四相步进电机,利用FPGA器件,通过VHDL编程仿真,对电机进行步距角细分,转速及其正反转控制。其细分控制框图如图1所示。
2 设计原理
2.1 步进电机的工作原理
该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图2是该四相反应式步进电机工作原理示意图。
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
2.2 步进电机控制器的设计原理
2.2.1 步进电机细分驱动原理
步进电机的驱动是靠给步进电机的各相励磁绕组轮流通以电流,实现步进电机内部磁场合成方向的变化来使步进电机转动的。设TA、TB、TC、TD为步进电机A、B、C、D四相励磁绕组分别通电时产生的磁场矢量,TAB、TBC、TCD、TDA为步进电机中AB、BC、CD、DA两相同时通电产生的合成磁场矢量。当给步进电机的A、B、C、D四相轮流通电时,步进电机的内部磁场从TA-TB-TC-TD,即磁场产生了旋转。一般情况下,当步进电机内部磁场变化一周(360°)时,电机的转子转过以个齿距,因此,步进电机的步距角θB可表示为:
θB=θM/Nr
式中Nr为步进电机的转子齿数;θM为步进电机运动时两相邻稳定磁场间的夹角。θM与电机的相数(M)和电机的运行拍数有关。当电机以单四拍方式运动时,θM=90°;当电机以四相八拍的方式运行时,θM=45°。和单四拍方式相比,θM和θB都减小了一半,实现了步距角的二细分,但是在通常的步进电机驱动线路中,由于通过各相绕组的电流是个开关量,即绕组中的电流只有零和某一额定值两种状态,相应的各相绕组产生的磁场也是个开关量,只能通过各相的通电组合来减小θM和θB。
但是,这样可达到的细分数很有限。以四相反应式步进电机为例,最多只能实现二细分,对于相数较多的步进电机可达到的细分数稍大一些,但是也很有限。因此要使可达到的细分数较大,就必须能控制步进电机各相励磁绕组中的电流,使其按阶梯上升或下降,即在零到最大值相电流之间能哟多个稳定的中间电流状态,相应的磁场矢量幅值也就存在多个中间状态,这样,相邻两相或多相的合成磁场的方向也将由多个中间状态。四相步进电机八细分时的各相电流以1/4的步距上升或下降的,在两相TA、TB中间插入七个稳定的中间状态,原来一步所转过的角度θM将由八步完成,实现步距角的八细分。
2.2.2 步距细分的系统构成
该系统是由PWM计数器、ROM地址计数器、PWM波形ROM存储器、比较器、功放电路等组成。其中,PWM计数器在脉宽时钟作用下递增计数,产生阶梯型上升的周期性的锯齿波,同时加载到个数字比较器的一端;PWM波形ROM输出的数据A[3..0]、B[3..0]、C[3..0]、D[3..0]分别加载到各数字比较器的另一端,当PWM计数器的值小于波形ROM输出数值时,比较其输出低电平;当PWM计数器的计数值大于波形ROM输出数值时,比较其输出高电平,由此可输出周期性的PWM波形。根据步进电机八细分电流波形的要求,将各个时刻细分电流波形所对应的数值存放于波形ROM中,波形ROM的地址由地址计数器产生。通过对地址计数器进行控制,可以改变步进电机的旋转方向、转动速度、工作/停滞状态。FPGA产生的PWM信号控制各功率驱动电路的导通和关断,其中PWM信号随ROM数据而变化,改变输出信号的占空比,达到限流及细分控制,最终使电机绕组呈现阶梯型变化,从而实现步距细分的目的。
输出细分电流信号采用FPGA中ROM查表法,他是通过在不同地址单元内写入不同的PWM数据,用地址选择来实现不同通电方式下的可变步距细分。
3 步进电机的仿真波形及分析
u_d为步进电机正/反转控制,clr为步进电机的工作/停止控制,clk2为步进电机转动速度控制,Y0,Y1,Y2,Y3分别对应步进电机的A,B,C,D四相电流,s端为选择细分控制。
1)当clr端为1时步进电机控制器停止工作,其工作时序仿真波形如图3所示。
通过仿真波形可以看出:当clr=1时,控制器的控制器的各个端口都停留在初始状态,这表示控制器处于停止状态。
2)当clr端口为0时步进电机开始工作。
A:当u_d=1时步进电机正转,设定clk周期为50ns,clk2周期为400ns。由s端控制步进电机是否进行细分操作的控制,s=1时表示进行细分操作,s=0时表示步进电机不进行细分操作。其仿真波形图分别如图4,图5。
B:当u_d=0时步进电机反转,s=1时表示步进电机进行细分操作,s=0时表示步进电机不进行细分操作。设定clk周期为50ns,clk2周期为400ns。其仿真波形图分别如图6,图7。
通过对图4、图5的分析不难理解图6、图7的工作过程。
图6由于u_d=0,s=1,步进电机进行反向细分运动,即由A-AD-D-DC的运动。
图7进行的是无细分反向运动,即A-D-C-B-A的运动过程。其输出数据X[3..0]由0011B-1001B-1100B-0110B进行变化。
C:当改变clk2时可以控制步进电机转动的速度,设定clk为50ns,u_d=1,clr=0,s=0,
① 令clk2为400ns其仿真波形如图8。
② 令clk2为200ns时其仿真波形如图9。
由以上两个图对比可知通过减小clk2的周期,步进电机控制器的运行速度明显加快了,同样可以改变clk2的周期使步进电机控制器的运行速度减慢。通过以上对步进电机的仿真的分析,该设计实现了对步进电机的各种基本控制。
参考文献:
[1] 潘松,黄继民. EDA技术实用教程[M]. 北京:科学出版社,2005.
[2] 高钟毓. 机电控制工程[M]. 北京:清华大学出版社,2002.
[3] 刘宝延,程树康. 步进电机及驱动控制系统[M]. 哈尔滨:哈尔滨工业大学出版社,1997.
[4] 王季秩,陈景华.电机实用技术[M]. 上海:上海科技技术出版社,1997.
关键词 肝炎 乙型 慢性 肝炎e抗原 乙型 DNA ALT
慢性乙型肝炎包括HBeAg阳性与HBeAg阴性慢性乙型肝炎。近年临床和基础研究表明,HBeAg阴性慢性乙型肝炎在慢性乙型肝炎中所占相对比例逐年上升[1,2],约占我国慢性乙型肝炎总数的1/3[3]。作为慢性乙型肝炎中的一个特殊亚群,其在流行病学、发病机制、自然病程、临床表现、抗病毒治疗方案、预后等方面与HBeAg阳性慢性乙型肝炎不同[4],已成为肝炎研究中的热点之一。本研究通过对HBeAg阴性与HBeAg阳性慢性乙型肝炎患者血清HBV-DNA病毒载量与ALT水平的对照研究,探讨HBeAg阴性慢性乙型肝炎患者血清HBV-DNA病毒载量和ALT水平之间的相关性。
1 对象与方法
1.1 研究对象
248例慢性乙型肝炎病例来自2011年2月-2012年6月在淮安市第四人民医院住院及门诊患者。慢性乙型肝炎的诊断参考《慢性乙型肝炎防治指南(2010年版)》[5]。所有患者6个月内未接受过抗病毒治疗,排除合并其他嗜肝病毒感染、嗜酒、使用肝毒性药物、自身免疫性肝病和代谢性肝病等。
1.2 研究方法
采用回顾性研究的方法,以HBeAg阳性慢性乙型肝炎病例为对照,分析HBeAg阴性慢性乙型肝炎患者血清HBV-DNA载量与ALT水平之间的关系。血清乙型肝炎病毒标志物(HBsAg、抗-HBs、HBeAg、抗-HBe、抗-HBc)检测:采用ELISA法检测,检测试剂盒由上海科华公司提供,操作严格按照说明书进行;血清HBV DNA检测:采用荧光定量聚合酶链反应(FQ-PCR)技术,运用美国ABI公司PE5700全自动荧光定量PCR系统,检测试剂盒由广州达安生物有限公司提供,检测灵敏度300拷贝/mL,
按说明书操作,有效期内使用,>1×103拷贝/mL为阳性;血清ALT检测:采用东芝TBA-120FR型全自动生化分析仪检测,检测试剂盒由上海东菱诊断用品有限公司提供,操作严格按照说明书进行。
1.3 统计学方法
数据采用SPSS18.0统计学软件进行统计分析,计量资料用均数±标准差(x±s)表示,2组样本均数比较用t检验,双向有序分类资料用Spearman等级法进行分析。
2 结果
2.1 2组一般资料的比较
248例慢性乙型肝炎患者分2组,即HBeAg阴性慢性乙型肝炎组(HBeAg阴性组)和HBeAg阳性慢性乙型肝炎组(HBeAg阳性组)。HBeAg阴性组122例,占41.20%,HBeAg阳性组126例,占50.80%。HBeAg阴性组和HBeAg阳性组患者平均年龄分别为( 42.8±14.9)岁、(31.2±13.3)岁,2组一般资料差异无显著性,具有可比性。
2.2 2组患者血清HBV-DNA病毒载量与ALT水平的比较(x±s)
HBeAg阴性组和HBeAg阳性组血清HBV-DNA病毒载量分别为5.37±1.00lg拷贝/mL、5.92±1.15lg拷贝/mL(P
2.3 HBeAg阴性组血清HBV-DNA病毒载量与ALT水平的相关性
122例HBeAg阴性慢性乙型肝炎患者血清HBV-DNA病毒载量与ALT水平呈正相关(见表2)。
3 讨论
HBeAg阴性慢性乙型肝炎的发病分子机制主要为HBV-DNA前C区和(或)C区基本核心启动子(BPC)发生变异,导致HBeAg表达水平低下或不表达[6]。该种肝炎诊断须满足以下条件[5]:(1)既往有乙型肝炎病史或HBsAg阳性超过6个月;(2)血清HBsAg阳性,HBeAg持续阴性,抗-HBe阳性或阴性;(3)HBV-DNA阳性;(4)ALT持续或反复异常,或肝组织学检查有肝炎病变。具有以上条件,并排除其他肝炎病毒感染(如丁型肝炎病毒、丙型肝炎病毒等)以及药物、酒精等影响因素,HBeAg阴性慢性乙型肝炎诊断成立。
虽然与HBeAg阳性慢性乙型肝炎相比,HBeAg阴性慢性乙型肝炎无特征性临床表现,但Chu等[7]研究表明,HBeAg阴性慢性乙型肝炎血清HBV DNA病毒载量和ALT水平较HBeAg阳性慢性乙型肝炎明显低下。本研究显示,HBeAg阴性组与HBeAg阳性组血清HBV-DNA病毒载量分别为5.37±1.00 lg拷贝/mL、5.92±1.15 lg拷贝/mL(t=3.97,P
多项研究表明,HBeAg阴性慢性乙型肝炎血清HBV-DNA病毒载量与肝组织炎症严重程度呈正相关[9,10],而要准确了解肝组织损害程度,必须进行肝活检。由于肝活检是一种创伤性检查,操作上有一定风险,患者依从性差,加之重复操作难度大,以及大部分基层医院条件所限,要求对所有HBeAg阴性慢性乙型肝炎患者开展肝活检不现实。而血清ALT水平是反应肝组织炎症坏死的较为可靠的敏感指标[11],故对于因多种因素,难以开展肝活检的HBeAg阴性慢性乙型肝炎患者,定期监测血清HBV-DNA病毒载量和ALT水平,可实时掌握HBV-DNA复制水平和肝组织炎症坏死程度,及时采取有效的抗病毒治疗等措施,减轻肝细胞炎症坏死,延缓和减少肝脏失代偿、肝硬化、肝癌及并发症,具有十分重要的临床意义。
参考文献
[1] Berg T, Benhamou Y, Calleja JL, et al. A survey of chronic hepatitis B patient management practices in the European Union[J]. ViralHepat, 2010, 17(9):624-630.
[2] 杨创国, 于乐成, 陈金军, 等. 1686例慢性乙型肝炎中HBeAg阴性与阳性患者临床和病毒学特点比较分析[J]. 中华内科杂志, 2005, 44(9):648-651.
[3] 贾继东.乙型肝炎e抗原阴性慢性乙型肝炎的治疗.中华肝脏病杂志,2005,13(7):539.
[4] 陆传统, 周文红, 胡爱荣. HBeAg阴性慢性乙型肝炎患者血清病毒载量与肝组织学改变的关系[J]. 中华实验和临床病毒学杂志, 2010, 24(3):184-186.
[5] 中华医学会肝病学分会, 中华医学会感染病学分会. 慢性乙型肝炎防治指南(2010版)[J]. 中华肝脏病杂志, 2011, 19(1):13-24.
[6] MeMahon BJ. The natural history of chronic hepatitis B virus infection[J]. Hepatology, 2009, 49(5 Suppl):S45-55.
[7] Chu CJ,Hussain M,Lok AS. Quantitative serum HBV DNA levels during different statges of chronic hepatitis B infection[J]. Hepatology, 2002,36(6):1408-1415.
[8] 郑自华, 张立伐, 陈友鹏, 等. HBeAg阴性慢性乙型肝炎患者病毒载量与肝损害的关系[J]. 暨南大学学报(医学版), 2008, 29(2):184-186.
[9] Lindh M, Horal P, Dhillon A P, et a1. Hepatitis B virus DNA levels, precore mutation, genotypes and histological activity in chronic hepatitis B[J]. J Viral Hepat, 2000, 7(4):258-267.
关键词: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.