3.2  VHDL程序设计基本结构

    如何才算一个完整的VHDL程序(设计实体),并没有完全一致的结论,因为不同的程序设计目的可以有不同的程序结构。通常认为,一个完整的设计实体的最低要求应该能为VHDL综合器所接受,并能作为一个独立设计单元,即以元件的形式存在的VHDL程序。这里所谓的元件,既可以被高层次的系统所调用,成为该系统的一部分,也可以作为一个电路功能块而独立存在和独立运行。

 

3.2.1  实体声明

实体声明:定义系统的输入输出端口

语法:        

ENTITY 实体名 IS

[GENERIC(类属表);]

[PORT(端口表);]

END ENTITY 实体名;

    实体说明单元必须以语句“ENTITY 实体名 IS”开始,以语句“END ENTITY 实体名;”结束,其中的实体名是设计者自己给设计实体的命名,可作为其他设计实体对该设计实体进行调用时用。中间在方括号内的语句描述,在特定的情况下并非是必须的。例如构建一个VHDL仿真测试基准等情况中可以省去方括号中的语句。

2.1.1  端口声明

端口声明:确定输入输出端口的数目和类型。

语法:

Port (

            端口名称{,端口名称}:端口方式   端口类型;

                  …

            端口名称{,端口名称}:端口方式   端口类型

           );

其中,端口方式:

        in         输入型,此端口为只读型。

        out        输出型,此端口只能在实体内部对其赋值。

        inout      输入输出型,既可读也可赋值。

        buffer     缓冲型,与 out 相似,但可读。

out 和 buffer 的区别:

 

 

端口类型:预先定义好的数据类型。

                    如:bit、integer、std_logic 等。

 

例:

       entity  nand2  is

                port (

                         a,  b : in  bit;

                          z     : out  bit

                         ) ;

       end  nand2;

 

2.1.2 类属声明

类属声明:确定实体或组件中定义的局部常数。模块化设计时多用于不   同层次模块之间信息的传递。

          必须放在端口声明之前。                    

语法:                           

 Generic (

                  常数名称:类型 [:= 缺省值]

                {常数名称:类型 [:= 缺省值]}

               );

例:

            entity  comp  is

                generic (n : integer : = 8 ) ;

                port ( x, y : in  bit_vector (0  to  n-1 ) ;

                         equal : out  boolean

                        ) ;

          end  comp ; 

                             

 

上一页  下一页  返回