VHDL代码书写规范

  • 格式:doc
  • 大小:319.00 KB
  • 文档页数:11

VHDL代码书写规范

(定稿)

文件编号 :

编 制 :

审 核 :

可靠性审核:

标准化:

批 准 :

VHDL代码书写规范

第 1 页 共 11 页 文件会签页

文件历史记录

文件编号

现行版本 V1.0

文件标题 VHDL代码书写规范

文件履历

版次 编制 日期 更改内容(条款)

V1.0

V1.0

VHDL代码书写规范

第 2 页 共 11 页 目 录

1.目的 ....................................................................................... 1

2.范围 ....................................................................................... 1

3.术语说明 ................................................................................... 1

4.书写规范 ................................................................................... 1

4.1命名规范 ................................................................................ 1

R1.一个文件只包含一个模块,文件命名和实体命名必须相同。文件名大写,其后缀小写。 ........... 1

R2.顶层文件命名方式使用工程名、器件型号与_TOP结合。顶层文件的元件实例化,后缀使用_module;第二层文件的元件实例化,后缀使用_block;第三层之后不做定义(若遇到常见的基本逻辑电路或子模块,如:SRAM、FIFO等,那么优先使用具有代表性的名称) ......................................... 1

R3.代码编写之前,以文档的方式,根据功能分类,分别对FPGA的外部端口进行命名约定。 .......... 2

R4.命名要有实际意义。 ..................................................................... 2

R5.命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划线分开。信号、变量等的命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。 ............................ 2

R6.模块、信号、变量等的命名不大于64个字符 ................................................ 2

R7.实体、结构名、端口信号、常量用大写标识 ................................................. 2

R8.行为级、结构级和数据流级结构命名分别以“BEH_实体名”、“STR_实体名”和“RTL_实体名”区分。如果是混合使用,或者是分不清使用了那一种结构,那么就是用“ARC_实体名”命名。 .............. 3

R9.单口RAM模块命名以SPRAM作后缀;双口RAM模块命名以DPRAM作后缀;ROM模块命名以ROM作后缀;FIFO模块命名以FIFO_作后缀;数字时钟管理模块命名以DCM作后缀;锁相环模块命名以PLL作后缀;乘法模块命名以MULT作后缀;除法模块命名以DIV作后缀;加法模块命名以ADD作后缀;减法模块命名以SUB作后缀。 .............................................................................. 3

R10.模块实例化时,采用‘Un_xx_元件名’标识,cell实例化时使用‘Mn_xx_元件名’标识。 ........ 3

R11.模块内部定义的信号、变量采用首字母大写命名。首字母符合说明的要求。 .................... 3

R12.非顶层模块端口信号命名方式采用I_portname、O_portname和IO_portname分别对应输入、输出和双向端口信号。 .............................................................................. 3

R13.时钟信号必须用后缀“_clk”进行命名。 .................................................. 3

R14.对于微处理器接口的寄存器,必须包含reg标志。用下划线分开该寄存器功能特征。 ............ 4

R15.对于输入管脚时钟采样同步的信号命名要求后缀加“_buf”表示。多次采样加数字区分。 ........ 4

R16.一些常用的基本信号按说明统一后缀命名。 ................................................ 4

R17.多比特信号,应该使用相同的比特顺序,都采用downto描述。 ............................... 5

R18.VHDL的保留字用小写。 ................................................................. 5

R19.调用IEEE 标准库时,“IEEE”用大写,其它用小写。 ...................................... 5

4.2注释规范 ................................................................................ 5

R20.每个VHDL源文件应该在文件头注释文件的基本信息。 ....................................... 5

R21.每个信号、变量、常量和端口的定义都要有注释。 .......................................... 5

R22.每个进程使用“--------”隔开。如果一个功能模块由几个进程组成,使用”--*****”隔开。 ... 5

R23.对于内部表,注释说明表的组成、表的内容及作用。 ........................................ 6

4.3其它书写规范 ............................................................................ 6

R24.用缩进方式使得代码有层次感,缩进不要使用TAB键,缩进为4个空格。 ...................... 6

R25.每行字符数,最大不能超过120。 ......................................................... 6 VHDL代码书写规范

第 3 页 共 11 页 R26.模块端口每行定义一个。先根据端口功能进行区分,然后再根据输入输出方向进行区分,类间用空行分开。 .................................................................................... 6

R27.调用模块使用 “=>”方式进行端口映射,总线到总线映射时(x downto y)要写全。 ........... 6

R28.调用模块进行端口映射时,一行代码只映射一个信号。顺序必须与原模块保持一致 .............. 6

R29功能集中或有很强的相关性的变量信号声明放在一起,类间用空行或注释分开。 ................. 6

R30.端口、信号、变量定义需要对齐;模块实例化时,端口映射需要对齐。 ........................ 6

R31.运算符与信号之间必须有空格分开 ........................................................ 7

VHDL代码书写规范

第 1 页 共 11 页 1.目的

规范VHDL的书写风格,保证代码的可读性、可重用性和可移植性,并且要与现有的EDA工具保持一致,从而形成对VHDL代码的标准化管理。

2.范围

本标准规定了VHDL代码书写规范。

本标准适用于G-LINK公司研发中心。

3.术语说明

本规范使用的术语解释如下:

级别:指该规则遵循的级别,有两个级别,分别为推荐和规定。

推荐:表示在一般情况下必须遵循该规则。

规定:表示必须严格遵守该规则。

说明:对此规则或准则的必要的解释。

示例:对此规则举例进行说明,示例分为正例和反例。

正例:对此规则或准则给出的正确示例。

反例:对此规则或准则给出的反面示例。

4.书写规范

4.1命名规范

R1.一个文件只包含一个模块,文件命名和实体命名必须相同。文件名大写,其后缀小写。

级别:规定

说明:文件类型为.vhd。如果文件名与实体名不一致,有些编译器不能识别,而且名字不一致,也不利于将文件与模块对应,不利于文件的管理。

正例:文件名是SER_TSP.vhd,那么文件内部实体的命名就是

entity SER_TSP is

port(

……

);

end SER_TSP;

architecture ARC_SER_TSP of SER_TSP is

……

end ARC_SER_TSP;

R2.顶层文件命名方式使用工程名、器件型号与_TOP结合。顶层文件的元件实例化,后缀使用_module;第二层文件的元件实例化,后缀使用_block;第三层之后不做定义(若遇到常见的基本逻辑电路或子模块,如:SRAM、FIFO等,那么优先使用具有代表性的名称)

级别:规定

说明:一般顶层文件命名使用工程名加器件名再加“_TOP”,如“OTDR_

XC3S1000BGA456_TOP”, 顶层文件的元件实例化,后缀使用_module,第二层文件的元件实例化,后缀使用_block,第三层之后不做定义(若遇到常见的基本逻辑电路,如:SRAM、FIFO等,那么按照SRAM、FIFO命名规则为优先)。

正例:文件名是OTDR_XC3S1000BGA456_TOP.vhd,那么设计实体内部的结构如图1所