电工文库|VHDL语言程序的基本结构

   更新日期:2017-03-25     来源:建材之家    作者:水电之家    浏览:49    评论:0    
核心提示:一、VHDL语言设计的基本单元及其构成l 一个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library):l 功能: 实体 -—- 用于描述所设计的系统的外部接口信号;构造体—— 用于描述系统内部的结构和行为;包集合—— 存放各设计模块都能共享的

潍坊信赢沟槽管件-法兰管卡安装要求及步骤

推荐简介:1、去除钢管端部毛刺2、密封圈唇部及背部涂润滑剂3、将密封圈套入管段4、将法兰盘打开扣到管子沟槽里5、法兰盘与管子扣紧无间隙6、将法兰与阀门口对齐,安上螺栓7、用限力扳手拧紧螺栓本文出自:福建闵胜通建材有限公司http://fj100tong本文相关词条解释法兰盘法兰是一种盘状零件,在管道工程中最为常见,法兰都是成对使用的。 在管道工程中,法兰主要用于管道的连接。在需......
水电之家讯:一、VHDL语言设计的基本单元及其构成

l 一个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library):

l 功能:

实体 -—- 用于描述所设计的系统的外部接口信号;

构造体—— 用于描述系统内部的结构和行为;

包集合—— 存放各设计模块都能共享的数据类型、常数和子程序库;

配置 —— 用于从库中选取所需单元来组成系统设计的不同版本;

库 —— 存放已经编译的实体、构造体、包集合和配置。

l 基本组成:实体说明和构造体两部分

实体说明(接口)

构造体(实现)

1. 实体说明:

规定此实体输入与输出的数目与类型。

l 结构:

  entity 实体名 is

[generic(类属参数说明)];

[port(端口说明)];

end 实体名;

l 类属参数说明:

generic (

常数名:数据类型 :=数值);

在端口说明前,用于指定参数。

l 端口说明:

在entity语句的实体说明部分,常用port语句描述实体对外界连接的端口(数目、方向和数据类型)。

port (

端口名:端口方向 端口数据类型;



 .

 .

端口名:端口方向 端口数据类型;

);

端口方向:

in (输入),只能读,用于:时钟输入、控制输入(装入、复位、使能)、单向数据输入;

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

inout(输入输出) ,既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。

buffer(缓冲),类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。

l 例1):

entity NAND2 is

port(A,B: in BIT;

Z: out BIT);

end NAND2;

l 例2):

--Define an entity (design) calLED COMP

--that has 2 N-bit input and one output.

entity COMP is

generic(N : INTEGER :=8 ) ; -- default is 8 bits

port ( x, y : in BIT_VECTOR ( 0 to N-1);

equal : out BOOLEAN );

end COMP;

2.  构造体

构造体定义实体功能的一种实现。

l 构造体的结构:

architecture 构造体名 of 实体名 is

 {块说明项}

begin

{并发语句}

end 构造体名;

l 块说明项(或定义语句),位于architecture 和begin之间,对构造体内部的使用信号、常数、数据类型和函数进行说明,包括:

使用语句

子程序说明

子程序体

类型说明

子类型说明

常数说明

信号说明

元件说明

l 并行语句处于begin 与end之间,描述构造体的行为与连接关系。

l 构造体的描述方法:

行为描述(按算法的路径来描述);

数据流描述或RTL描述(采用寄存器传输描述);

结构化描述(采用例化元件)

例化(instantiation ):在高层次的设计中调用低层次的实体作为元件的过程。

l 构造体的组织

l 例

entity COUNTER3 is

port( clk: in bit;

reset : in bit;

count: out integer range 0 to 7);

end COUNTER3;



architecture MY_ARCH of COUNTER3 is

signal count_tmp : integer range 0 to 7;

begin

process

begin

wait until (clk'event and clk='1');

if reset='1' or count_tmp =7 then

count_tmp<=0;

else

count_tmp<=count_tmp + 1;

end if;

end process;

count<=count_tmp;

end MY_ARCH;

注:构造体中的信号和常数名不能与实体端口名相同。

二、语言结构体的子结构描述

1. block语句结构

l 语句结构:

块结构名:

block

begin

.

.

.

end block 块结构名;

2. 进程(process)语句结构

l 进程语句的结构:

[进程名]:process(信号1,信号2,……)

{说明 内部变量}

begin

{顺序语句} 

end process;

l 进程的组织

l 功能独立的电路可用进程来描述

l 进程中语句的顺序性

l 进程的启动

*敏感表

*敏感表中信号的变化将启动进程语句

*启动后,语句从上到下逐句执行,最后一个语句执行完毕后,返回进程开始的语句,等待下一次敏感表的变化。

l 进程的同步描述

同一结构体中有多个进程存在时,进程之间可一边进行通信,一边并行同步执行。

3.子程序(subprogram)语句结构描述

两种类型:过程(procedure)

函数 (function)

l 过程语句

结构:

procedure 过程名(参数1,参数2,…) is

[定义语句];

begin

[顺序处理语句];

end 过程名;

*参数可以是输入也可以是输出

*例: 将位矢量转换为整数

procedure vector_to_int

(z : in std_logic_vector;

x_flag : out boolean;

q : inout integer) is

begin

q:=0;

x_flag:=false;

for i in z' range loop

q:=q*2;

if (z(i)=1) then

q:=q+1;

elsif(z(i)/=0) then

x_flag:=true;

end if;

end loop;

end vector_to_int;

循环次数由z的位数决定,z(0)为最高位。

l 函数语句

结构:

function 函数名(参数1,参数2,…)

return 数据类型名 is

[定义语句];

begin

[顺序处理语句];

return 返回变量名

end 函数名;

*参数为输入参数

*通常集中在包集合中

*例:将boolean型信号转换到 bit型

function b12bit(a: Boolean) return BIT is

begin

if a then

return '1';

else

return '0';

end if;

end b12bit;

三、包集合、库与配置

1.库

库(Library)是经编译后的数据的集合,库说明总是放在设计单元的最前面。

1) 库的种类:

l IEEE 库

包含:STD_LOGIC_1164

STD_LOGIC_ARITH

STD_LOGIC_UNSIGNED

l STD库

包含:STANDARD包集合

TEXTIO 包集合

TEXTIO 包集合使用例:

LIBRARY STD;

USE STD.TEXTIO. ALL;

l ASIC矢量库

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

l WORK 库

为现行作业库,存放设计者的VHDL语言程序

l 用户定义的库

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

2) 库的使用

l 除WORK、STD库外,首先要说明。格式:

library [库名];

use [库名.包名.项目名];

例:

library ieee;

use ieee.std_logic_1164.all;

l 库说明的作用范围:

从实体开始到其所属构造体、配置为止。

2.包集合

l 包集合用于封装属于多个设计单元分享的公共信息。

l 包集合由包说明(说明数据类型、子程序和常量等)和包体(它

含有子程序体与现有的延时常数)所组成。子程序由执行公共操作的过程和函数组成。包集合是分享属于实体数据的一种机制,把子程序、数据类型和元件说明看成建立设计的工具,则包集合可看成工具箱。

1) 包集合的结构:

package 包集合名 is

[包集合说明语句];

end 包集合名;

package body 包集合名 is

[包集合体说明语句];

end 包集合名;

注:包集合体为可选项。

3) 包集合的使用:

use work.[包集合名].all;

例:

l 建一个包集合。此例中,用字母符号代表用于控制的二进编码序列。

library ieee;

use ieee.std_logic_1164.all;

--ALU source operand control mnemonics

package mnemonics0 is

constant aq: std_logic_vector(2 downto 0) :="000";

constant ab: std_logic_vector(2 downto 0) :="001";

constant zq: std_logic_vector(2 downto 0) :="010";

constant zb: std_logic_vector(2 downto 0) :="011";

constant za: std_logic_vector(2 downto 0) :="100";

constant da: std_logic_vector(2 downto 0) :="101";

constant dq: std_logic_vector(2 downto 0) :="110";

constant dz: std_logic_vector(2 downto 0) :="111";

end mnemonics0;

l 编译通过后即可使用。

注:maxplus2在编译此package时,报告: "…does not contain an architecture body—stopping compilation",但此package 将被正确分析,并可成功地编译使用此package的其他设计。

l 用于其他使用此包集合的程序:

--由控制信号控制两个多路选择器

library ieee;

use ieee.std_logic_1164.all;

use work.mnemonics0.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;



entity src_op is port(

d,ad,bd,q: in unsigned(3 downto 0);

src_ctl: in std_logic_vector(2 downto 0);

r,s: buffer unsigned(3 downto 0));

end src_op;

architecture src_op of src_op is

begin

with src_ctl select

r <= ad when aq | ab,

"0000" when zq | zb | za,

d when others;

with src_ctl select

s <= q when aq | zq | dq,

bd when ab | zb ,

ad when za |da,

"0000" when others;

end src_op;

3.配置

描述层与层之间的连接关系以及实体与构造体之间的连接关系。在仿真时利用配置选择不同的构造体。

格式:

ConFIGURATION 配置名 OF 实体名 IS

FOR 构造体名

END FOR;

END 配置名;

l 例

configuration MY_ConFIG of COUNTER3 is

for MY_ARCH

end for;

end MY_CONFIG;水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
小程序码
 
打赏
 
更多>文章标签:管件
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
水电商机信息更多...
水电电工圈更多...
最新视频更多...
推荐产品更多...
天花之家 | 木门之家 | 灯具之家 | 铁艺之家 | 幕墙之家 | 五金头条 | 楼梯头条 | 墙纸头条 | 壁纸头条 | 玻璃头条 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 电工之家