VHDL(5)

2019-03-15 12:56

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(x(0), x(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

equ<=’1’ when a=b else ‘0’; END con_behave;

--结构体四:用行为描述来实现,采用顺序语句: ARCHITECTURE seq_behave of equ2 IS BEGIN

process(a,b) begin

if a=b then equ<=’1’; else equ<=0; end if; end process; END seq_behave;

140 — —

在上述的实例中,实体equ拥有四个结构体:netlist、equation、con_behave、seq_behave,若用其例化一个相等比较器aequb,那么实体究竟对应于哪个结构体呢?配置语句(CONFIGURATION)很灵活地解决了这个问题:

如选用结构体netlist,则用

CONFIGURATION aequb OF equ2 IS FOR netlist END FOR;

END CONFIGURATION;

如选用结构体con_behave, 则用

CONFIGURATION aequb OF equ2 IS FOR con_behave END FOR;

END CONFIGURATION;

注:以上四种结构体代表了三种描述方法:Netlist(网表)、Equation(方程)、Behavior(行为描述)。有时将它们称之为:Structural(结构描述)、Data flow(数据流描述)、Behavioral(行为描述)。 behavioral(行为描述)

反映一个设计的功能或算法,一般使用进程process,用顺序语句表达。 dataflow(数据流描述)

反映一个设计中数据从输入到输出的流向,使用并发语句描述。 structural(结构描述)

它最反映一个设计硬件方面特征,表达了内部元件间连接关系。使用元件例化来描述。

4.1.11 子程序

子程序由过程(PROCEDURE)和函数(FUNCTION)组成。函数只能用以计算数

值,而不能用以改变与函数形参相关的对象的值。因此,函数的参量只能是方式为IN的信号与常量,而过程的参量可以为IN, OUT, INOUT方式。过程能返回多个变量,函数只能有一个返回值。

函数和过程常见于面向逻辑综合的设计中,主要进行高层次的数值运算或类型转换、运

算符重载,也可用来元件例化。 语法如下: 函数:

FUNCTION (parameter types) RETURN IS BEGIN

<代码区>

141 — —

END ; 过程:

procedure

() is

begin --

<代码区>

end< procedure _name>;

函数举例:此函数返回两数中的较小数

FUNCTION Min(x, y : INTEGER) RETURN INTEGER IS BEGIN

IF x

RETURN y; END IF; END Min;

过程举例:此过程将向量转换成整数类型

USE ieee. std_logic_1164. ALL PROCEDURE vetor_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) /=’0’ THEN q :=q+1;

ELSIF z(i) /=’0’ THEN x-flag := TRUE; END IF; END LOOP; END vector_to_int;

函数/过程可以在结构体的说明域中定义,在这种方式下同时包含了函数/过程的说明和定义。另外,也可以在程序包的说明和包体中,分别输入函数的说明和定义,并将其编译到库中以便在其他设计使用他们。在函数和过程中,所有语句都必须是顺序语句,并且不能在他们中说明信号。

4.1.12 其他:属性、时钟的表示

属性指的是关于实体、结构体、类型、信号的一些特征。有些属性对综合(设计)非常有用,如:值类属性、信号类属性、范围类属性。以下简单列出这些属性的含义:

142 — —

· 值类属性

值类属性分为’left, ‘right, ‘low, ‘high, ‘length。其中用符号“’”隔开对象名及其属性。left表示类型最左边的值;right表示类型最右边的值;low表示类型中最小的值;high表示类型中最大的值;length表示限定型数组中元素的个数。 例: sdown :in std_logic_vector(8 downto 0); sup :in std_logic_vector(0 to 8); 则这两个信号的各属性值如下:

sdown’left=8; sdown’right=0; sdown’low=0; sdown’high=8; sdown’length=9; sup’left=0; sup’right=8; sup’low=0; sup’high=8; sup’length=9; · 信号类属性

这里仅介绍一个对综合及模拟均很有用的信号类属性:’event,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),则其取值为Ture,否则为False。利用此属性可决定时钟边沿是否有效,即时钟是否发生。 例:时钟边沿表示

若有如下定义: signal clk :in std_logic;

则:clk=’1’ and clk’event 和 clk’event and clk=’1’表示时钟的上升沿。即时钟变化了,且其值为1,因此表示上升沿。

clk=’0’ and clk’event 和 clk’event and clk=’0’表示时钟的下降沿。即时钟变化了,且其值为1,因此表示下降沿。

此外,还可利用预定义好的两个函数来表示时钟的边沿。 rising_edge(clk) 表示时钟的上升沿 falling_edge(clk) 表示时钟的下降沿 · 范围类属性

‘range属性,其生成一个限制性数据对象的范围。 例如:signal data_bus : std_logic_vector(15 downto 0); data_bus’range=15 downto 0;

4.1.13 VHDL的模板

至此,我们已知道VHDL的大致构成。下面以VHDL的两个模板回顾一下VHDL的结构,一个是基本结构,一个是详细结构。其中黑体字为关键字。<>中内容为对用户不同设计所需填写的内容。

--VHDL Model Template (Overview)

143 — —

library;

use..all ;

entityis

end;

architectureofis --结构体声明区域

--声明结构体所用的内部信号及数据类型

--如果使用元件例化,则在此声明所用的元件 begin --以下开始结构体,用于描述设计的功能 --concurrent signal assignments并行语句信号赋值 --processes 进程(顺序语句描述设计) --component instantiations 元件例化 end;

--VHDL Model Template (Detailed) --列出用户定义的库及程序包

library;

use..all;

--实体描述了用户设计的接口

entityis

generic (<此处定义接口常数,如总线宽度、预定标计数器的计数模值等>); port (<列出端口信息>); end < entity_name >;

--结构体是描述/实现设计的部分

architectureofis --结构体声明区域

--声明结构体所用的信号及数据类型,及子程序 --如果使用元件例化,则在此声明所用的元件 --元件声明如下:

component<元件实体名> port (<元件端口信息>); end component;

144 — —


VHDL(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:河北省2015年中考化学试题(word版,含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: