VHDL硬件描述语言基础.ppt
- 文档编号:2638789
- 上传时间:2022-11-04
- 格式:PPT
- 页数:44
- 大小:158KB
VHDL硬件描述语言基础.ppt
《VHDL硬件描述语言基础.ppt》由会员分享,可在线阅读,更多相关《VHDL硬件描述语言基础.ppt(44页珍藏版)》请在冰豆网上搜索。
第一次上机安排l第六周周一晚(提高1、2,通信001012)周二上(通信014085)周四上(通信086154)周四下(通信250282,电信001043)周五晚(电信044125)l第七周周一下(电信125216)周二上(电信217302)周二下(电信302385)VHDL硬件描述语言基础l简介l基本结构l基本数据类型l设计组合电路l设计时序电路l设计状态机l大规模电路的层次化设计lFunctionandProcedure简介背景l传统数字电路设计方法不适合设计大规模的系统。
工程师不容易理解原理图设计的功能。
l众多软件公司开发研制了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,HDL),存在着很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中。
因此,硬件设计工程师需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。
简介背景l美国国防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。
1981年提出了一种新的HDL,称之为VHSICHardwareDescriptionLanguage,简称为VHDL,这种语言的成就有两个方面:
l描述复杂的数字电路系统l成为国际的硬件描述语言标准VHDL的优点l用于设计复杂的、多层次的设计。
支持设计库和设计的重复使用l与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。
l有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。
l更方便地向ASIC过渡lVHDL有良好的可读性,容易理解。
VHDL与计算机语言的区别l运行的基础计算机语言是在CPURAM构建的平台上运行VHDL设计的结果是由具体的逻辑、触发器组成的数字电路l执行方式计算机语言基本上以串行的方式执行VHDL在总体上是以并行方式工作l验证方式计算机语言主要关注于变量值的变化VHDL要实现严格的时序逻辑关系-eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:
instd_logic_vector(3downto0);equal:
outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbeginequal=1whena=belse0;Enddataflow;VHDL大小写不敏感大小写不敏感eqcomp4.vhd包实体构造体文件名和实体名一致每行;结尾关键字begin关键字end后跟实体名关键字end后跟构造体名库实体(Entity)l描述此设计功能输入输出端口(Port)l在层次化设计时,Port为模块之间的接口l在芯片级,则代表具体芯片的管脚A3.0B3.0equalEntityeqcomp4isport(a,b:
instd_logic_vector(3downto0);equal:
outstd_logic);endeqcomp4;实体端口的模式l输入(Input)l输出(Output)l双向(Inout):
可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口l缓冲(Buffer):
与Output类似,但允许该管脚名作为一些逻辑的输入信号Out与Buffer的区别lEntitytest1isport(a:
instd_logic;b,c:
outstd_logic);endtest1;architectureaoftest1isbeginb=not(a);c=b;-Errorenda;lEntitytest2isport(a:
instd_logic;b:
bufferstd_logic;c:
outstd_logic);endtest2;architectureaoftest2isbeginb=not(a);c=b;enda;结构体(Architecture)l描述实体的行为l结构体有三种描述方式行为描述(behavioral)数据流描述(dataflow)结构化描述(structural)结构体行为描述Architecturebehavioralofeqcomp4isbegincomp:
process(a,b)beginifa=bthenequal=1;elseequal=0;endif;endprocesscomp;endbehavioral;高层次的功能描述,不必考虑在电路中到底是怎样实现的。
结构体数据流描述描述输入信号经过怎样的变换得到输出信号Architecturedataflow1ofeqcomp4isbeginequal=1whena=belse0;enddataflow1;Architecturedataflow2ofeqcomp4isbeginequal=not(a(0)xorb(0)andnot(a
(1)xorb
(1)andnot(a
(2)xorb
(2)andnot(a(3)xorb(3);enddataflow2;当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐结构体结构化描述architecturestructofeqcomp4isbeginU0:
xnor2portmap(a(0),b(0),x(0);U1:
xnor2portmap(a
(1),b
(1),x
(1);U2:
xnor2portmap(a
(2),b
(2),x
(2);U3:
xnor2portmap(a(3),b(3),x(3);U4:
and4portmap(x(0),x
(1),x
(2),x(3),equal);endstruct;类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。
一般用于大规模电路的层次化设计时。
三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复杂电路层次化设计数据流描述布尔函数定义明白不易描述复杂电路,修改不易小门数设计行为描述电路特性清楚明了进行综合效率相对较低大型复杂的电路模块设计VHDL标识符(Identifiers)l基本标识符由字母、数字和下划线组成l第一个字符必须是字母l最后一个字符不能是下划线l不允许连续2个下划线l保留字(关键字)不能用于标识符l大小写是等效的VHDL数据对象(DataObjects)l常数(Constant)固定值,不能在程序中被改变增强程序的可读性,便于修改程序在综合后,连接到电源和地可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定Constantdata_bus_width:
integer:
=8;VHDL数据对象(DataObjects)l信号(Signals)代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Entity中和Architecture中定义设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。
在MaxPlusII中被忽略。
用=进行赋值signalcount:
bit_vector(3downto0):
=“0011”;VHDL数据对象(DataObjects)l变量(Variable)临时数据,没有物理意义只能在Process和Function中定义,并只在其内部有效要使其全局有效,先转换为Signal。
用:
=进行赋值variableresult:
std_logic:
=0;信号与变量的区别architecturertlofstartissignalcount:
integerrange0to7;beginprocess(clk)beginif(clkeventandclk=1)thencount=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;architecturertlofstartisbeginprocess(clk)variablecount:
integerrange0to7;beginif(clkeventandclk=1)thencount:
=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;信号与变量的区别architectureaofstartissignaltmp:
std_logic;beginprocess(a_bus)begintmp=1;foriin3downto0looptmp=a_bus(i)andtmp;endloop;carryout=tmp;endprocess;enda;architectureaofstartisbeginprocess(a_bus)variabletmp:
std_logic;begintmp:
=1;foriin3downto0looptmp:
=a_bus(i)andtmp;endloop;carryout=tmp;endprocess;enda;VHDL数据类型l标量类型(Scalar)枚举(Enumeration)整数(Integer)浮点数(Float)物理(Physical)l复合类型(Composite)VHDL数据类型枚举l列举数据对象可能存在的值,一般用于定义状态机的状态Typestatesis(idle,start,running,pause,stop)Signalcurrent_state:
states;lIEEE1076标准中预定义了两个枚举类型Typebooleanis(False,True)Typebitis(0,1)Signala:
bit;VHDL数据类型枚举lIEEE1164标准中预定义了一个枚举类型Typestd_logicis(U,X,0,1,Z,W,L,H,-);该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bitSignala:
std_logic;注意:
注意:
这里的大小写是敏感的VHDL数据类型l整数、浮点数方便用于数值方面的运算:
加减乘除整数范围:
-2312311,经常用于计数器实数范围:
-1.0E38+1.0E38,不被MaxPLusII支持Variablea:
integerrange255to+255;l物理类型主要用于调试VHDL数据类型复合类型lArrayTypes多个相同类型成员组成的队列,一般用于定义数据总线、地址总线等。
Signala:
std_logic_vector(7downto0);a=B“00111010”;a=X“3A”;可自定义复合类型Typewordisarray(15downto0)ofbit;Signalb:
word;Typetable8x4isarray(0to7,0to3)ofbit;VHDL数据类型复合类型lRecordTypes相同或不同类型的元素组成,类似C中的结构具有模型抽象能力,用于描述一个功能模块TypeiocellisrecordEnable:
bit;DataBus:
b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 硬件 描述 语言 基础