2 选1 多路选择器Word格式.docx
- 文档编号:19056179
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:12
- 大小:27.53KB
2 选1 多路选择器Word格式.docx
《2 选1 多路选择器Word格式.docx》由会员分享,可在线阅读,更多相关《2 选1 多路选择器Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
ENA:
Q:
OUTSTD_LOGIC
);
ENDENTITYLatch
--结构体
ARCHITECTUREoneOFLatchIS
--定义信号
SIGNALsig_save:
STD_LOGIC;
--进程语句结构描述逻辑的时序方式
BEGIN
PROCESS(D,ENA)
IFENA='
THEN
sig_save<
=D;
ENDIF;
Q<
=sig_save;
ENDPROCESS;
1位全加器
--或门逻辑描述
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYor2IS
PORT(a,b:
INSTD_LOGIC;
c:
ENDENTITYor2
ARCHITECTUREfu1OFor2IS
BEGIN
c<
=aORb;
ENDARCHITECTUREfu1;
--半加器描述
LIBRARYIEEE;
ENTITYh_adderIS
PORT(ab:
co,so:
OUTSTD_LOGIC);
ENDENTITYh_adder
ARCHITECTUREfh1OFh_adderIS
so<
=(aORb)AND(aNANDb);
co<
=NOT(aNANDb);
ENDARCHITECTUREfh1;
--1位二进制全加器顶层设计描述
ENTITYf_adderIS
PORT(ainbincin:
coutsum:
ENDENTITYf_adder;
ARCHITECTUREfd1OFf_adderIS
COMPONENTh_adder
PORT(ab:
coso:
ENDCOMPONENT
COMPONENTor2
PORT(ab:
SIGNALdef:
--元件连接
u1:
h_adderPORTMAP(a=>
ainb=>
binco=>
dso=>
e);
u2:
eb=>
cinco=>
fso=>
sum);
u3:
or2PORTMAP(a=>
db=>
fc=>
cout);
ENDARCHITECTUREfd1;
1.实体语句结构
以下是实体说明单元的常用语句结构
ENTITY实体名IS
[GENERIC(类属表)]
[PORT(端口表)]
ENDENTITY实体名
实体说明单元必须按照这一结构来编写实体应以语句ENTITY实体名IS开始以语句ENDENTITY实体名结束其中的实体名可以由设计者自己添加。
。
COMPONENTh_adder--元件调用说明
INSTD_LOGIC;
ENDCOMPONENT;
GENERIC类属说明语句
GENERIC([常数名数据类型[:
设定值]
{常数名数据类型[:
设定值]})
类属参量以关键词GENERIC引导一个类属参量表,在表中提供时间参数或总线宽度等静态信息。
将类属说明放在其中且放在端口说明,语句的前面在一个实体中定义的来自外部赋入。
ENTITYmcu1IS
GENERIC(addrwidth:
INTEGER:
=16);
PORT(
add_bus:
OUTSTD_LOGIC_VECTOR(addrwidth-1DOWNTO0));
...
ENTITYPGAND2IS
GENERIC(trise:
TIME:
=1ns;
tfall:
=1ns);
PORT(a1:
a0:
z0:
ENDENTITYPGAND2;
PORT端口说明
PORT(端口名:
端口模式数据类型
{端口名:
端口模式数据类型});
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYnand2IS
PORT(a:
b:
c:
OUTSTD_LOGIC);
ENDnand2;
结构体
结构体的语句格式如下
ARCHITECTURE结构体名OF实体名IS
[说明语句]
[功能描述语句]
ENDARCHITECTURE结构体名;
结构体中的说明语句,是对结构体的功能描述语句中将要用到的信号(SIGNAL)数据类型(TYPE)常数(CONSTANT)元件(COMPONENT)函数(FUNCTION)和过程(PROCEDURE)等加以说明。
需要注意的是在一个结构体中,说明和定义的数据类型常数元件函数和过程只能用于这个结构体中。
功能描述语句结构
块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块
进程语句定义顺序语句模块用以将从外部获得的信号值或内部的运算数据向其它的信号进行赋值
信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值
子程序调用语句用以调用过程或函数并将获得的结果赋值于信号
元件例化语句对其它的设计实体作元件调用说明并将此元件的端与其它的元件信号或高层次实体的界面端口进行连接
块语句结构BLOCK
BLOCK语句的表达格式如下
块标号BLOCK[块保护表达式]
接口说明
类属说明
并行语句
ENDBLOCK块标号
接口说明部分有点类似于实体的定义部分,它可包含由关键词PORTGENERICPORTMAP和GENERICMAP引导的接口说明等语句。
对BLOCK的接口设置以及与外界信号的连接状况加以说明,这类似于原理图间的图示接口说明,块的类属说明部分和接口说明部分的适用范围仅限于当前BLOCK,所以所有这些在BLOCK内部的说明对于这个块的外部来说是完全不透明的,即不能适用于外部环境或由外部环境所调用,但对于嵌套于更内层的块却是透明的即可将信息向内部传递块的说明部分可以定义的项目主要有
定义USE语句
定义子程序
定义数据类型
定义子类型
定义常数
定义信号
定义元件
程序3-13
a1:
out1<
='
after3ns;
blk1:
BLOCK
A2:
out2<
AFTER3ns;
A3:
out3<
AFTER2ns;
ENDBLOCKblk1;
程序3-14
a2:
a3:
进程PROCESS
PROCESS语句的表达格式如下
[进程标号]PROCESS[(敏感信号参数表)][IS]
[进程说明部分]
顺序描述语句
ENDPROCESS[进程标号]
2.PROCESS组成
如上所述PROCESS语句结构是由三个部分组成的即进程说明部分顺序描述语
句部分和敏感信号参数表
(1)进程说明部分主要定义一些局部量可包括数据类型常数变量属性子
程序等但需注意在进程说明部分中不允许定义信号和共享变量
(2)顺序描述语句部分可分为赋值语句进程启动语句子程序调用语句顺序描
述语句和进程跳出语句等它们包括
信号赋值语句即在进程中将计算或处理的结果向信号SIGNAL赋值
变量赋值语句即在进程中以变量VARIABLE的形式存储计算的中间值
进程启动语句当PROCESS的敏感信号参数表中没有列出任何敏感量时进程
的启动只能通过进程启动语句WAIT语句这时可以利用WAIT语句监视信号的变化情况
以便决定是否启动进程WAIT语句可以看成是一种隐式的敏感信号表
子程序调用语句对已定义的过程和函数进行调用并参与计算
顺序描述语句包括IF语句CASE语句LOOP语句NULL语句等
进程跳出语句包括NEXT语句EXIT语句用于控制进程的运行方向
(3)敏感信号参数表需列出用于启动本进程可读入的信号名当有WAIT语句时例
外
但VHLD程序特别是进程结构设计者应当从三个方面去判断它的功能和执行情况
1基于CPU的纯软件的行为仿真运行方式
2基于VHDL综合器的综合结果所可能实现的运行方式
3基于最终实现的硬件电路的运行方式
(1)在同一结构体中的任一进程是一个独立的无限循环程序结构但进程中却不必
放置诸如软件语言中的返回语句它的返回是自动的进程只有两种运行状态即执行状
态和等待状态
(2)必须注意PROCESS中的顺序语句的执行方式与通常的软件语言中的语句的顺
序执行方式有很大的不同软
(3)虽然同一结构体中的不同进程是并行运行的但同一进程中的逻辑描述语句则
是顺序运行的因而在进程中只能设置顺序语句
(4)进程的激活必须由敏感信号表中定义的任一敏感信号的变化来启动否则必须
有一个显式的WAIT语句来激励
(5)结构体中多个进程之所以能并行同步运行一个很重要的原因是进程之间的通
信是通过传递信号和共享变量值来实现的所
(6)进程是VHDL重要的建模工具
(7)进程有组合进程和时序进程两种类型组合进程只产生组合电路时序进程产
生时序和相配合的组合电路这两种类型的进程设计必须密切注意VHDL语句应用的特殊
方面这在多进程的状态机的设计中各进程有明确分工
子程序(SUBPROGRAM)
VHDL子程序具有可重载性的特点即允许有许多重名的子程序但这些子程序的参
数类型及返回值数据类型是不同的子程序的可重载性是一个非常有用的特性
3.5.1函数FUNCTION
函数的语言表达格式如下
FUNCTION函数名参数表RETURN数据类型--函数首
FUNCTION函数名参数表RETURN数据类型IS--函数体
[说明部分]
顺序语句
ENDFUNCTION函数名
1.函数首
函数首是由函数名参数表和返回值的数据类型三部分组成的
2函数体
函数体包含一个对数据类型常数变量等的局部说明以及用以完成规定算法或
转换的顺序语句部分一旦函数被调用就将执行这部分语句
在函数体结尾需以关键词ENDFUNCTION以及函数名结尾
重载函数OVERLOADEDFUNCTION
VHDL允许以相同的函数名定义函数但要求函数中定义的操作数具有不同的数据类型以便调用时用以分辨不同功能的同名函数即同样名称的函数可以用不同的数据类型作为此函数的参数定义多次以此定义的函数称为重载函数
过程PROCEDURE
VHDL中子程序的另外一种形式是过程PROCEDURE过程的语句格式是
PROCEDURE过程名参数表--过程首
PROCEDURE过程名参数表IS
[说明部分]
BIGIN--过程体
ENDPROCEDURE过程名
与函数一样过程也由两部分组成即由过程首和过程体构成过程首也不是必需的过程体可以独立存在和使用即在进程或结构体中不必定义过程首而在程序包中必须定义过程首
过程首由过程名和参数表组成参数表可以对常数变量和信号三类数据对象目标作出说明并用关键词INOUT和INOUT定义这些参数的工作模式即信息的流向如
重载过程OVERLOADEDPROCEDURE
库LIBRARY
库LIBRARY的语句格式如下
LIBRARY库名
IEEE库是VHDL设计中最为常见的库它包含有IEEE标准的程序包和其它一些支
持工业标准的程序
STD_LOGIC_1164NUMERIC_BIT和NUMERIC_STD等程序
STD库
VHDL语言标准定义了两个标准程序包即STANDARD和TEXTIO程序包文件输
入/输出程序包它们都被收入在STD库中只要在VHDL应用环境中即可随时调用
这两个程序包中的所有内容即在编译和综合过程中VHDL的每一项设计都自动地将其
包含进去了由于STD库符合VHDL语言标准在应用中不必如IEEE库那样以显式表
达出来如在程序中以下的库使用语句是不必要的
WORK库
WORK库是用户的VHDL设计的现行工作库用于存放用户设计和定义的一些设计单
元和程序包因而是用户的临时仓库用户设计项目的成品半成品模块以及先期已设
计好的元件都放在其中
VITAL库
使用VITAL库可以提高VHDL门级时序模拟的精度因而只在VHDL仿真器中使
用
USE语句的使用将使所说明的程序包对本设计实体部分或全部开放即是可视的USE
语句的使用有两种常用格式
USE库名.程序包名.项目名
USE库名.程序包名.ALL
程序包PACKAGE
程序包的内容主要由如下四种基本结构组成因此一个程序包中至少应包含以下结
构中的一种
常数说明在程序包中的常数说明结构主要用于预定义系统的宽度如数据总线
通道的宽度
VHDL数据类型说明主要用于在整个设计中通用的数据类型例如通用的地址
总线数据类型定义等第4章将对数据类型作详细说明
元件定义元件定义主要规定在VHDL设计中参与文件例化的文件已完成的设
计实体对外的接口界面
子程序并入程序包的子程序有利于在设计中任一处进行方便地调用
定义程序包的一般语句结构如下
PACKAGE程序包名IS--程序包首
程序包首说明部分
END程序包名
PACKAGEBODY程序包名IS--程序包体
程序包体说明部分以及包体内
程序包的结构由程序
配置CONFIGURATION
配置语句的一般格式如下
CONFIGURATION配置名OF实体名IS
配置说明
END配置名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选1 多路选择器 选择器
![提示](https://static.bdocx.com/images/bang_tan.gif)