VHDL基础2

时间:2015-06-23 09:51:35   收藏:0   阅读:320

Signals & Variables


 

VHDL 提供了 signal 和 variable 两种对象来处理非静态数据;提供了 constant 和 generic 来处理静态数据。

constant 和 signal 是全局的,可以在顺序执行的代码中,也可以在并发执行的代码中;variable 是局部的,只能值顺序代码中,并且它们的值是不能向外传递的(如果想传递出去,必须先把这个变量值传递给一个信号,再由这个信号传递出去)

constant

 

constant 可以定义在 package, entity, architecture 中,对应的作用域也不同。

 

signal

VHDL 中的 signal 代表的是逻辑电路中的 “硬”连线,既可以用于电路的输入输出端口,也可以用于 内部单元之间的连接。

variable

相比于 signal 是局部的,variable 只能在 process,function,procedure 中使用,而且对它的赋值是立即更新的,新的值可以在下一行代码中立即使用。

 

Packages and Components


 

package

除了 componentfunctionprocedure 之外,package 中还可以包含 TYPECONSTANT 的定义。

1 PACKAGE package_name IS
2           (declarations)
3 END package_name;
4 
5 [PACKAGE BODY package_name IS
6           (delarations
7             and conments)
8 END package_name;]

可以看到,语法包括两部分,PACKAGE 和 PACKAGE BODY

Component

一个 component 是一段完整的代码(包括 library, entity, architecture 这些组成部分),如果将这些代码声明为一个 component,那么就可以被其他电路调用,从而使代码具有了层次化的结构。

使用 component 必须先声明这个元件,然后再例化这个元件(类似 C++,变量先声明,在定义)。声明和例化都必须在 architecture 中进行。

declaration syntax
1 COMPONENT component_name IS
2 --元件端口信息           
3           PORT(
4                      port_name: signa_type;
5                      port_name: signa_type;
6                      ...);
7 END COMPOMENT;
instantiation(例化) syntax
1 例化名: component_name PORT MAP (port_list);

声明元件时,可以有两种方法:

 

Functions and Procedure


function 和 procedure 统称为 子程序,它们和 process 相似,内部包含的都是顺序描述的代码,通常使用相同的顺序描述语句。但是,function 和 procedure 的存在主要是为了建库,以达到代码重用和共享的目的,当然它们也可以直接建立在主代码中。

Function

在写代码的过程中,我们通常会遇到一些有共性的问题,我们希望实现这些功能的代码可以被共享和重用,从而使代码变得简洁,易于理解,function 的建立和使用就能达到这个目睹。 function 中可以使用 ifcaseloop 等语句,但是不能有 signal 和 component

Function Body
1 FUNCTION function_name [<参数列表>] RETURE 数据类型 IS
2            [说明部分]
3 
4 BEGIN
5           (顺序语句)
6 END function_name;

其中,函数的参数列表:

1 <parameter list> =[CONSTANT] name : type;
2                  = SIGNAL    name : type;
Function Call

函数可以单独构成表达式,也可以作为表达式的一部分

Function Location

函数可以存放在两个地方:

 

FUNCTION versus PROCEDURE Summary

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文:http://www.cnblogs.com/Lindaman/p/4594618.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!