VHDL程序的基本结构_第1页
VHDL程序的基本结构_第2页
VHDL程序的基本结构_第3页
VHDL程序的基本结构_第4页
VHDL程序的基本结构_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL程序的基本结构

一个完整的VHDL语言程序通常包含

库(Library):如ieee,std,work等

程序包(Package)

实体(Entity):I/O端口

结构体或构造体(Architecture):

具体描述电路所要实现的功能

配置(Configuration)

>实体:用于描述所设计系统的外部接口特性;即该设计实

体对外的输入、输出端口数量和端口特性。

>结构体:用于描述实体所代表的系统内部的结构和行为;

它描述设计实体的结构、行为、元件及内部连接关系。

>库:存放已经编译的实体、结构体、程序包集合和配置。

>程序包:存放各设计模块都能共享的数据类型、常数和子

程序库;

>配置:实体对应多个结构体时,从与某个实体对应的多个

结构体中选定一个作为具体实现。

保存的文件名与实体名字应该一致

PORT(端口)说明

PORT(端口名:端口模式数据类型;

端口名:端口模式数据类型;

端口模式

>out(输出):只能被赋值,用于不能反馈的输出;

>in(输入):只能读,用于时钟输入、控制输入单向数据输

入;

>inout(输入输出):既可读又可被赋值,被读的值是端口输

入值而不是被赋值,作为双向端口。

>buffer(缓冲):类似于输出,但可以读,读的值是被赋值,

用做内部反馈用,不能作为双向端口使用

结构体的一般表达如下:

ARCHITECTURE结构体名称OF实体名称IS

[说明语句]可以不要

BEGIN

(功能描述语句)

ENDARCHITECTURE结构体名称;

功能描述语句:处于begin与end之间,描述结构体的行为与

连接关系,它是构成结构体的主体。描述实体的逻辑行为、以各

种不同的描述风格表达的功能描述语句,或针对层次设计中,以

元件例化语句为特征的外部元件(设计实体)端口间的连接。

库:是一些常用代码的集合。库说明总是放在设计单元的最前面

将常用代码存放到库中有利于设计的复用和代码共享,也可使代

码结构更清晰;

(1)IEEE库

IEEE库定义了四个常用的程序包:

>std_logic_1164(std_logic(8值)&std_ulogic(9

值)逻辑值的逻辑运算)

>stdlogicarith(signed、unsigned数据类型的

(算术、比较运算函数)

>std_logic_signed(std」ogic_vector类型数据的进行

有符号算术、比较运算操作函数)

>stdlogicunsigned(stdlogicvector类型数据进行

无符号算术、比较运算操作函数)

(2)STD库(默认库)

VHDL的标准资源库,包括数据类型和输入/输出文本等内容。库

中包集有:standard和textioo

(3)WORK库(默认库)

当前工作库,当前设计的所有代码都存放在work库中,

无需声明。

(4)ASIC矢量库

各公司提供的ASIC称逻辑门库

(5)用户定义的库

用户为自身设计需要所开发的共用包集合和实体。

除WORK、STD库外,其他库在使用之前,在使用库之前,

首先需要对库进行声明

程序包:集合用于封装属于多个设计单元分享的公共信息。己定

义的常数、数据类型、元件调用说明、子程序的一个集合,类似

(2)变量的赋值

x:=T;

Y:='O';

a:=10;

b:=2+a;

(1)信号声明的语法格式:

signal信号名:数据类型[约束条件][:=初始值];

例:signala:bit;

signalb:std_logic_vector(7downto0);

(2)信号的赋值:

a<='O';

b<="01101in”after10ns;

进程语句内部由顺序语句构成。(进程内部只能加载顺序语句)

[进程标号:]process[(敏感信号表)]

[进程说明部分]

begin

{顺序处理语句}

endprocess[标号];

敏感信号表:进程内要读取的所有敏感信号(包括端口)的列表。

每一个敏感信号的变化,都将启动进程。如果在process内部使

用了wait语句,则process就不能再使用敏感信号列表,并且

wait语句是process内部的第一条语句。

进程说明用来定义在该进程中需要用到的局部量,如变量、常数

等,在此处定义的变量是局部量,只能在该进程中使用,其他地

方不能使用。特别强调在进程说明部分只能定义局部变量,不能

定义信号和共享变量。

几种常见的顺序雌若句:信号赋值语句、变量赋值语句、if语

句、case语句、wait语句和null语句。可以实现时序逻辑,还

可以实现组合逻辑。

信号赋值语句即可以作为并行语句出现在结构体中,也可以作为

顺序语句出现在进程中

信号量表达式中可以有延时,如q<=aafter2ns

例如:signala:bit;

signalb:std_logic_vector(3downto0);

a<='1'after2ns;

b<=“1100”

变量赋值语句只能作为顺序语句出现在进程中

变量表达式无延时;

例如:variablea:bit;

variableb:std_logic_vector(3downto0);

a:=T';

b:="1100”;

if语句只能用于顺序代码,只能在processNfunction和

procedure中出现。

(i)if语句的门闩控制

举例ifa>btheny<='1'

endif;

不完全语句产生时序电路

(2)if语句的二选择控制

用条件来选择两条不同程序执行的路径。

举例ifa>btheny<=T;

elsey<='O';

endif;

完全语句产生组合电路。

(3)if语句的多选择控制

举例ifa>btheny<=’1,;

elsifa=btheny<='O';

elsey<='O';

endif;

case语句

case表达式is

when选择值1=>顺序语句;

when选择值2=>顺序语句;

whenothers=>顺序语句;

endcase;

进程中的case注意事项:

*Case只能在进程内使用;

*Case选择值必须在选择表达式的合法取值范围内;

*Case选择值必须是互斥;不能由两个相同的选择值出现;

*Case选择值必须覆盖全面,否则需要用OTHERS来代替其他

可能取值;

*Case各个选择值之间的关系是并列的,没有优先权之分;IF

语句由优先权

loop语句

>当一段代码需要多次重复、顺序地执行时,loop语句非常

有效。

>只能在process、function和procedure中使用;

>与generate语句的最大不同:

>generate语句复制建立某项操作的0个或多个备份,这

些备份并行地执行某项操作,与先后顺序无关;

>loop语句则按顺序、循环地执行某项操作。

LOOP语句的语法结构:

FOR/LOOP:循环固定次数

[label:]FOR循环变量IN范围LOOP

(顺序描述语句)

ENDLOOP[label];

WHILE/LOOP:循环执行直到某个条件不再满足

[label:]WHILE条件表达式LOOP

(顺序描述语句)

ENDLOOP[label];

EXIT:结束整个循环操作

[label:]EXIT[label][WHEN条件表达式];

NEXT:跳出本次循环操作

[label:]NEXT[loop」abel][WHEN条件表达式];

常用的并发描述语句,通常位于process、function和procedure

之外,包括:

运算操作符:逻辑运算、算术运算等

WHEN语句(when/else或with/select/when)

块(block)语句

生成(GENERATE)语句。

并行信号赋值语句

并行信号赋值语句的特点:

①赋值目标必须为信号或端口;

②在结构体内是并行执行的;

③在结构体的进程之外使用

生成语句(GENERATE)一可用于并发描述

>生成语句的作用:复制建立某项操作的0个或多个备份,

这些备份并行地执行某项操作。

>并行结构,与先后顺序无关;而顺序描述语句中循环执行某

项操作的LOOP语句则必须顺序的执行这些操作。

>分为两类:

for-generate:采用一个离散的范围决定

备份的数目。

If--generate:有条件地生成0个或1个

备份。

(l)for-generate语句

语法:标号:for循环变量inrange

generate

{并行语句}

endgenerate[标号];

range:整数表达式to整数表达式

整数表达式downto整数表达式

for---loop语句与for—generate的比较:

(2)If-generate语句

语法:标号:if条件表达式generate

{并行语句}

endgenerate[标号];

if语句与Ifgenerate的区别:

1、If■■■generate没有类似于if语句的els

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论