版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目2VHDL程序结构及标识符
一个相对完整的VHDL程序称为设计实体,通常都具有比较固定的结构。由实体(Entity)、结构体(Architecture)、配置(Configuration)、库(Library)和程序包(Package)等构成,如图2.4所示。VHDL程序结构图2.4VHDL程序结构模型图项目2VHDL程序结构及标识符
实体用来描述设计实体的对外端口信息,实体有输入端口和输出端口的说明,也可以有一些参数化的数值说明。实体说明部分基本格式如下:1.实体entity实体名is[generic(类属参数说明)];port(端口表);end[entity]实体名;实体说明部分基本格式解释:(1)一个基本单元的实体说明以“entity实体名is”开始,以“end[entity]实体名”结束。[]表示其中的部分是可选项。项目2VHDL程序结构及标识符(2)实体名。一个设计实体,在实体中定义的实体名即为这个设计实体的名称。实体名是标识符,标识符具体取名由设计者自定,一般将VHDL程序的文件名作为此设计实体名。(3)类属参数说明。类属参数说明必须放在端口说明之前,用来指定端口中矢量的位数、器件的延迟时间参数等。类属参数说明书写格式如下:
generic([constant]常量名称:[in]数据类型[:=设定值];…);项目2VHDL程序结构及标识符(4)端口表。端口表是对端口的说明,用于描述设计实体的输入/输出信号,是对输入/输出引脚信号的名称、数据类型和输入/输出方向的描述。端口说明的一般书写格式如下:port(端口名{,端口名}:端口模式
数据类型[:=设定值];……
端口名{,端口名}:端口模式
数据类型[:=设定值]);其中花括号“{}”中的内容可以没有,也可以有多项。项目2VHDL程序结构及标识符端口表各项内容说明如下:①端口名。端口名是赋予每个外部引脚的名称,即该端口的标识符。②端口模式。端口模式用来定义外部引脚的信号流向。端口模式共有in、out、inout和buffer四种。in:输入模式仅允许数据由外部流向实体输入端口。out:输出模式仅允许数据从实体内部流向实体输出端口,不能用于反馈。inout:双向模式允许数据流入或流出实体,双向模式允许用于内部反馈。buffer:缓冲模式通常用于内部有反馈需求的信号描述。缓冲模式与输出模式类似,只是缓冲模式允许用于内部反馈,而输出模式不行。项目2VHDL程序结构及标识符③数据类型。描述端口的数据类型通常有bit、bit_vector、std_logic、std_logic_vector。Bit(位):信号值是一个1位的二进制值,取值只能是0或1。bit_vector(位矢量):信号值是一组二进制数。std_logic(标准逻辑位):取值有9种,分别是:0(信号0)、1(信号1)、H(弱信号1)、L(弱信号0)、Z(高阻)、X(不定)、W(弱信号不定)、U(初始值)和—(不可能情况)等。std_logic_vector(标准逻辑矢量):它是标准逻辑的集合,基本元素是std_logic类型。项目2VHDL程序结构及标识符【例】二进制计数器VHDL程序的实体libraryieee;useieee.std_logic_1164.all;entitybinary_counterisgeneric(MIN_COUNT:natural:=0;MAX_COUNT:natural:=255);port(clk:instd_logic;reset:instd_logic;enable:instd_logic;q:outintegerrangeMIN_COUNTtoMAX_COUNT);endentity;architecturertlofbinary_counterisbeginprocess(clk)variablecnt:integerrangeMIN_COUNTtoMAX_COUNT:=0;beginif(rising_edge(clk))thenifreset='1'thencnt:=0;elsifenable='1'thencnt:=cnt+1;endif;endif;q<=cnt;endprocess;endrtl;entity实体名is语句引导本实体的实体名为binary_counter类属参数说明语句:定义常量MIN_CUNT为自然数,赋0值;定义常量MAX_CUNT为自然数,赋255值。端口说明语句:定义clk为输入端口,数据类型标准逻辑位;定义reset为输入端口,数据类型标准逻辑位;定义enable为输入端口,标准逻辑位数据类型;定义q为输出端口,整数数据类型,限定范围MIN_CUNT到MAX_CUNT,即0-255。实体说明部分项目2VHDL程序结构及标识符2.结构体结构体描述了该设计实体单元电路的逻辑功能。结构体附属于实体,是对实体的说明。结构体描述格式如下:architecture结构体名of实体名is [说明语句];begin
功能描述语句;end[architecture]结构体名;
项目2VHDL程序结构及标识符结构体描述格式解释:(1)实体名必须是所在设计实体的实体名字,而结构体名可以自由选择,当一个设计实体有多个结构体时,结构体不能同名。(2)结构体必须以“end[architecture]结构体名+;”作为结束语句。(3)结构体说明语句必须放在关键字“architecture”和“begin”之间。结构体说明语句用于对结构体内部所用到的信号(signal)、数据类型(type)、常量(constant)、元件(component)、函数(function)和过程(procedure)等进行说明。在结构体中说明和定义的数据类型、常量、函数和过程,作用范围局限于其所在的结构体。项目2VHDL程序结构及标识符(4)功能描述语句。功能描述语句包括5种不同类型的并行方式工作的语句结构,如图2.5所示。5种语句结构本身是并行方式工作,但它们内部不一定是并行语句。图2.5结构体构造图项目2VHDL程序结构及标识符功能描述语句解释:①信号赋值语句:将设计实体内的处理结果向定义的信号或输出端口进行赋值。图2.5结构体构造图②进程语句:一个进程相当与一个功能模块,在一个结构体内可以包含多个进程,每个进程都是同步执行的,但是进程内部的语句是顺序执行。进程语句的描述格式为:[进程名:]process[(敏感信号表)]
[进程说明部分];
begin
顺序描述语句部分;endprocess[进程名];项目2VHDL程序结构及标识符进程语句的描述解释:a.进程名是进程语句的标识符,它是一个可选项。b.敏感信号表是用来激励进程启动的量,当敏感信号表中有一个信号或多个信号发生变化时,该进程启动,否则该进程处于挂起状态。c.进程说明语句定义该进程所需要的局部量,可包括数据类型、常量、变量、属性、子程序等,但不允许定义信号和共享变量。d.顺序描述语句用于描述该进程的功能。项目2VHDL程序结构及标识符功能描述语句解释:③元件例化语句:对其他的设计实体作元件调用说明,并将此元件的端口与其他元件、信号或高层次实体的界面端口进行连接。④子程序调用语句:用以调用过程或函数,并将获得的结果赋值于信号。⑤块语句:由一系列并行执行语句构成的组合体,其功能是将结构体中的并行语句组成一个或多个子模块。图2.5结构体构造图项目2VHDL程序结构及标识符【例】1位二进制数半加器仿真测试VHDL程序结构体说明libraryieee;useieee.std_logic_1164.all;entityh_adder_vhd_tstisendh_adder_vhd_tst;architectureh_adder_archofh_adder_vhd_tstissignala:std_logic;signalb:std_logic;signalc:std_logic;signals:std_logic;componenth_adderport(a:instd_logic;b:instd_logic;c:outstd_logic;s:outstd_logic);endcomponent;begini1:h_adderportmap(a=>a,b=>b,c
=>c,s=>s);init:processbegina<='0';b<='0';waitfor20us;a<='1';b<='0';waitfor20us;a<='0';b<='1';waitfor20us;a<='1';b<='1';waitfor20us;endprocessinit;endh_adder_arch;architecture结构体名of实体名is语句引导本结构体名为h_adder_arch,实体名为h_adder_vhd_tst结构体描述部分结构体描述begin分隔end结构体名+;结束结构体描述对结构体内用到的信号a、b、c、s的说明对结构体内用到的元件h_adder的说明元件例化语句:对结构体调用的元件h_adder的描述说明语句功能描述语句进程语句:对进程init的描述项目2VHDL程序结构及标识符3.库库是经过编译后的数据集合,其目的是为了使设计遵循某些统一的语言标准或数据格式,同时便于利用已有的设计成果,以提高设计效率。(1)库的分类。VHDL程序中常用的库有IEEE库、SID库、WORK库、ASIC库和用户自定义库等。①IEEE库。IEEE库是VHDL程序中最为常用的库,它包含了IEEE标准的程序包和一些支持工业标准的程序包,使用时需要按照格式进行说明。②SID库。STD库是VHDL程序的标准库,包含standard程序包,里面定义了VHDL程序标准数据、逻辑关系及函数等,使用standard包中定义的量可以不加声明。项目2VHDL程序结构及标识符③WORK库。WORK库是VHDL程序的工作库,用户在工程设计中设计成功、正在验证、未仿真的中间部件等都堆放在WORK工作库,使用时不需要进行说明调用。④ASIC库。在VHDL程序中,为了进行门级仿真,各公司提供面向ASIC的逻辑门库。在各库中存放着与逻辑门一一对应的实体。使用ASIC库,需要按照格式进行说明。⑤用户自定义库。用户自定义库是用户根据自己的需要,将开发的共用程序包和实体等汇集在一起,定义成一个库。在使用用户自定义库时,需要按照格式进行说明。项目2VHDL程序结构及标识符(2)库的说明。在VHDL程序中,库的说明通常放在实体描述的最前面。多数情况下,对库进行说明后,设计者才能使用库集合中定义的数据。库说明语句格式如下:library库名;(3)库的使用。库说明语句与use语句一般同时使用,库说明语句指明所使用的库名,use语句指明使用库中的程序包。说明了库和程序包,整个设计实体就可以进入访问或调用,但其作用范围仅限于所说明的设计实体。库的调用格式:
library库名;use库名.程序包名.all;(或use库名.程序包名.项目名;)项目2VHDL程序结构及标识符4.程序包为了使已定义的数据类型、数据对象等被更多的其它设计实体共享,可以将它们收集在一个VHDL程序包中,这样可以提高设计的效率和程序的可读性。常用的预定义程序包说明如下:(1)std_logic_1164程序包。std_logic_1164程序包是IEEE的标准程序包,其中用得最多的是满足工业标准的两个数据类型std_logic和std_logic_vector。该数据类型除具有“0”和“1”逻辑量以外,还有其他的逻辑量,如高阻态“z”、不定态“x”等,更能满足实际数字系统设计仿真的需求。项目2VHDL程序结构及标识符(2)std_logic_arith程序包。std_logic_arith程序包,扩展了3个数据类型,即unsigned、signed和small_int,并为其定义了相关的算术运算符和转换函数。unsigned数据类型不包含符号位,无法参与有符号的运算;signed数据类型包含符号位,可以参与有符号的运算。(3)std_logic_unsigned和std_loglc_signed程序包。std_logic_unsigned和std_logic_signed程序包定义了可用于integer型、std_logic型和std_logic_vector型混合运算的运算符,并定义了由std_logic_vector型到integer型的转换函数。其中:std_logic_signed中定义的运算符考虑到了符号,是有符号数的运算;std_logic_unsigned程序包定义的运算符没有符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合法的多人承包合同模板
- 2025租赁合同普通我方为承租人
- 2025切边模具合同书
- 老屋修复技术在国内外的发展现状对比分析
- 2024年肛肠科医院项目资金申请报告代可行性研究报告
- 探究学生自我监控学习过程的有效策略
- 老年人用药注意事项
- 二零二五年度电梯安装工程安全防护设施采购合同2篇
- 2025年牛津译林版必修3历史上册月考试卷
- 2025年鲁科五四新版九年级地理上册月考试卷含答案
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2024-2025学年八年级上学期1月期末物理试题(含答案)
- 商场电气设备维护劳务合同
- 《妊娠期恶心呕吐及妊娠剧吐管理指南(2024年)》解读
- 2023年国家公务员录用考试《行测》真题(行政执法)及答案解析
- 全国教学设计大赛一等奖英语七年级上册(人教2024年新编)《Unit 2 Were Family!》单元教学设计
- 2024智慧医疗数据字典标准值域代码
- 年产12万吨装配式智能钢结构项目可行性研究报告模板-立项备案
- 【独家揭秘】2024年企业微信年费全解析:9大行业收费标准一览
- 医疗器械经销商会议
- 《±1100kV特高压直流换流变压器使用技术条件》
评论
0/150
提交评论