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 ;
|
|||