一个vhdl程序一般有五部分组成,它们分别是什么,都有什么作用。 大

一个vhdl程序一般有五部分组成,它们分别是什么,都有什么作用。 大,第1张

实体结构体,库,程序包,配置

1、实体:用于描述所设计系统的外部接口特性;即该设计实谈棚体对外的输入、输出端口数量和端口特性。

2、结构体:用于描述实体猛姿所代表的系统内部的结构和行为;它含知则描述设计实体的结构、行为、元件及内部连接关系。

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

4、程序包:存放各设计模块可以共享的数据类型、常数、子程序库。

5、配置实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。

VHDL语言的基本结构

VHDL语言通常包括库说明、实体说明、结构体说明3个部分。

library ieee

use ieee.std_logic_1164.all--库说明

entity dff1 is

port(clk,d:in std_logic

q:out std_logic)

end dff1 --实体说明

architecture rtl of dff1 is

begin

process(clk)

begin

if(clk'event and clk='1')then

q<=d

end if

end process

end rtl --结构体说明

VHDL提供5个库,IEEE库,STD库,VITAL库,自定义库和WORK库

IEEE库包含的常用程序包有:

std_logic_1164:常用数据类型(其中有std_logic、std_logic_vector数据类型)和函数的定义、各种类型转换 函滚皮数及逻辑运算。

std_logic_arith:它在std_logic_1164的基础上定义了无符段让号数unsigned、有符号数signed数据类型并为其定义了相应的算术运算、比较,无符号数unsigned、有符号数signed及整数integer之间转换函数。

std_logic_unsigned和std_logic_signed:定义了integer数据类型和std_logic及std_logic_vector数据类型混合运算的运算符,并定义了一个由std_logic_vector型到integer型的转换函数。其中std_logic_signed中定义的运算符是有符号数运算符。

STD库是标准库,包含两个程序包:

standard:定义了基本数据类型、子类型和函数及各种类型的转换函数等。

textio文本程序包:定义了支持文本文件 *** 作的许多类型和子程序等。在使用textio程序包之前,需要先写上use语句use std.txtio.all。

VITAL库:使用VITAL可以提高门级时序仿真的精度,一般在VHDL语言程序进行仿真时使用。主要包含两个程序包。

VITAL_timing:时序仿真包

VITAL_primitives:基本单元程序包

WORK库,是现行的工作库,设计人员设计的VHDL语言程序的编译结果不需任何说明,都将存放在WORK库中。WORK库可以是设计者个人使用,也可提供给设计组多人使用。

库说明的语法结构

library 库名;

use 库名.程序包名.项目名;

###########################################################################################

实体说明

实体的电路意义相当于器件,在电路原理图上相当于握备局元件符号,他是完整的、独立的语言模块

实体说明语句的语法:

entity 实体名 is

port(端口1: 端口方式1 端口类型1;

端口2: 端口方式2 端口类型2;......);

end 实体名

端口方式有五种:

in 输入类型 信号从该端口进入实体

out 输出类型 信号从实体内部经该端口输出

inout 输入输出类型 信号既可以从该端口输入也可以输出

buffer 缓冲型 与out类似但在结构体内部可以作反馈

linkage 无制定方向,可以与任何方向的信号连接

############################################################################################

结构体说明

结构体会给模块的具体实现,指定输入与输出之间的行为。

结构体语法如下:

architecture 结构体名称 of 实体名 is

结构体说明部分;

begin

结构体并行语句部分;

end 结构体名称;

结构体说明:对结构体内部所使用的信号、常数、数据类型和函数进行定义。

结构体并行语句:具体确定各个输入、输出之间的关系,描述了结构体的行为,是一组并行处理语句。

结构体对实体的输入输出关系可以用3中方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)、和结构描述(逻辑元器件连接描述)。不同的描述方式,只体现在描述语句上,而框架是完全一样的

三种风格即行为描述、结构体描述、数据流描述。

下面给你举个例子,你就明白了。

这是一者基个两位相等比较器的例子

entity equ2 is

port(a,b:in std_logic_vector(1 downto 0)

equ:out std_logic)

end equ2

--结构体结巧陪构描述:用元件首宽谨例化,即网表形式来实现;

architecture netlist of equ2 is

component nor2

port(a,b :in std_logic

c :out std_logic)

end component

component xor2

port(a,b :in std_logic

c :out std_logic)

end component

signal x: std_logic_vector(1 downto 0)

begin

U1:xor2 port map(a(0),b(0),x(0))

U2:xor2 port map(a(1),b(1),x(1))

U3:nor2 port map(a(0),b(1),equ)

end netlist

--结构体数据流描述:用布尔方程来实现:

architecture equation of equ2 is

begin

equ<=(a(0) xor b(0)) nor(a(1) xor b(1))

end equation

--结构体行为描述:用顺序语句来实现:

architecture con_behave of equ2 is

begin

process(a,b)

begin

if a=b then

equ<='1'

else

equ<='0'

end if

end procerss

end con_behave

--结构体行为描述:用并行语句来实现:

architecture seq_behave of equ2 is

begin

equ<='1' when a=b else '0'

end sqq_behave


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12379670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存