VHDL语言程序的基本结构

时间:2023-03-11来源:佚名
一、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;

    相关阅读

    电磁铁是什么?专业电气学姐带你全方位解读(二十七)

    上两次的学习内容都是讲的交流铁心线圈,那么,电磁铁与交流铁心线圈有着怎么样的异同之处呢?它在实际中的应用又有哪些呢?接下来,我将为大家一一揭晓。现在,欢迎大家阅读...
    2023-06-27
    电磁铁是什么?专业电气学姐带你全方位解读(二十七)

    怎样测电动机的绝缘电阻?其合格标准是什么?

    一般用兆欧表 测量电动机 的绝缘电阻值,要测量每两相绕组和每相绕组与机壳之间的绝缘电阻值,以判断电动机的绝缘性能好坏。 使用兆欧表测量绝缘电阻时,通常对500伏以下电压的...
    2023-03-21

    关于配电网变压器、10kV开关、环网单元等故障处理,这一篇就够了

    开关站、配电站室故障处理方法 01 变压器。 发现下列情况之一者,应报告运维管理部门,同时详细检查设备,加强监视,并做好倒备用变压器(或倒负荷)的准备: (1)过负荷30%及...
    2023-06-25
    关于配电网变压器、10kV开关、环网单元等故障处理,这一篇就够了

    电缆穿楼板防火封堵的正确姿势,你掌握了吗?

    在建筑施工中,电缆穿楼板封堵是一个至关重要的环节,它不仅关系到电气安全,更是建筑消防安全的重要组成部分。今天,我们就来聊聊电缆穿楼板封堵的正确方法及其优缺点,帮助大家在施...
    2024-09-19
    电缆穿楼板防火封堵的正确姿势,你掌握了吗?

    为何工业领域偏爱 4~20 毫安电流信号?

    在工业自动化的世界里,电信号的传递是实现各种控制和监测功能的关键。而在众多的电信号类型中,4~20 毫安的电流信号常常成为首选。这究竟是为什么呢?让我们来一探究竟。 一、4...
    2024-08-22
    为何工业领域偏爱 4~20 毫安电流信号?

    热销商品

    加厚abs安全帽电工建筑工地程施工领导监理透气防砸头盔可印字V型

    这款加厚ABS安全帽专为电工、建筑工地施工人员、领导及监理设计,采用高强度ABS工程塑料,抗冲击、防砸性能优异,有效保障头部安全。帽体加厚设计,增强耐用性与防护等级...
    5.8

    水口钳高硬度模型剪钳电子钳工业级口水剪斜嘴钳偏口斜口专用钳子

    水口钳高硬度模型剪钳是一款工业级精密工具,专为电子、模型制作及精细作业设计。采用优质高碳钢材质,经热处理工艺打造,具备卓越的硬度和耐磨性,可轻松剪切金属引脚、...
    4.8

    170电子剪钳II 如意斜口钳 工业斜嘴钳水口钳 模型剪塑胶钳尖嘴钳

    170电子剪钳II如意斜口钳是一款专业级精密工具,集工业斜嘴钳、水口钳、模型剪、塑胶钳与尖嘴钳功能于一体,适用于电子维修、模型制作、手工艺及精密作业。其采用优...
    4.5

    安全帽国标工地加厚施工领导透气安全头盔建筑工程监理免费印字

    本款安全帽严格遵循国家GB 2811-2019标准,专为建筑工程、工地施工及监理人员设计。采用高强度ABS工程塑料,加厚壳体有效抗冲击,保障头部安全。帽体轻盈透气,内置可调...
    10

    包邮三角型简易螺丝刀三角十字螺丝刀螺丝批改锥起子五金工具5mm

    这款5mm三角型简易螺丝刀,专为拧紧或拆卸三角形螺丝设计,适用于电子维修、家电维护及精密仪器装配等场景。采用优质合金钢材质,刀头硬度高、耐磨损,确保长久使用不变...
    3.64

    网站栏目