VHDL代码书写规范_第1页
VHDL代码书写规范_第2页
VHDL代码书写规范_第3页
VHDL代码书写规范_第4页
VHDL代码书写规范_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VHDL 代码书写规范代码书写规范 (定稿)(定稿) 文件编号 : 编 制 : 审 核 : 可靠性审核: 标 准 化: 批 准 : 文件会签页文件会签页 文件历史记录文件历史记录 文件编号 文件标题VHDL 代码书写规范 现行版本V1.0 文件履历文件履历 版次编制日期更改内容(条款) V1.0 V1.0 目目 录录 1.目的 .1 2.范围 .1 3.术语说明 .1 4.书写规范 .1 4.1 命名规范.1 R1.一个文件只包含一个模块,文件命名和实体命名必须相同。文件名大写,其后缀小写。.1 R2.顶层文件命名方式使用工程名、器件型号与_TOP 结合。顶层文件的元件实例化,后缀使用_mod

2、ule; 第二层文件的元件实例化,后缀使用_block;第三层之后不做定义(若遇到常见的基本逻辑电路或子模块, 如:SRAM、FIFO 等,那么优先使用具有代表性的名称) .1 R3.代码编写之前,以文档的方式,根据功能分类,分别对 FPGA 的外部端口进行命名约定。.2 R4.命名要有实际意义。.2 R5.命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划线分开。信号、变量等的 命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。.2 R6.模块、信号、变量等的命名不大于 64 个字符.2 R7.实体、结构名、端口信号、常量用大写标识.2 R8.行为级、结构级和数

3、据流级结构命名分别以“BEH_实体名”、“STR_实体名”和“RTL_实体名”区分。 如果是混合使用,或者是分不清使用了那一种结构,那么就是用“ARC_实体名”命名。.3 R9.单口 RAM 模块命名以 SPRAM 作后缀;双口 RAM 模块命名以 DPRAM 作后缀;ROM 模块命名以 ROM 作后缀; FIFO 模块命名以 FIFO_作后缀;数字时钟管理模块命名以 DCM 作后缀;锁相环模块命名以 PLL 作后缀;乘 法模块命名以 MULT 作后缀;除法模块命名以 DIV 作后缀;加法模块命名以 ADD 作后缀;减法模块命名以 SUB 作后缀。 .3 R10.模块实例化时,采用Un_xx_

4、元件名标识,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 R1

5、7.多比特信号,应该使用相同的比特顺序,都采用 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

6、R25.每行字符数,最大不能超过 120。 .6 R26.模块端口每行定义一个。先根据端口功能进行区分,然后再根据输入输出方向进行区分,类间用空行 分开。.6 R27.调用模块使用 “=”方式进行端口映射,总线到总线映射时(x downto y)要写全。.6 R28.调用模块进行端口映射时,一行代码只映射一个信号。顺序必须与原模块保持一致.6 R29 功能集中或有很强的相关性的变量信号声明放在一起,类间用空行或注释分开。 .6 R30.端口、信号、变量定义需要对齐;模块实例化时,端口映射需要对齐。.6 R31.运算符与信号之间必须有空格分开.7 1.目的目的 规范 VHDL 的书写风格,保证代

7、码的可读性、可重用性和可移植性,并且要与现有 的 EDA 工具保持一致,从而形成对 VHDL 代码的标准化管理。 2.范围范围 本标准规定了 VHDL 代码书写规范。 本标准适用于 G-LINK 公司研发中心。 3.术语说明术语说明 本规范使用的术语解释如下: 级别:级别:指该规则遵循的级别,有两个级别,分别为推荐和规定。 推荐:推荐:表示在一般情况下必须遵循该规则。 规定:规定:表示必须严格遵守该规则。 说明:说明:对此规则或准则的必要的解释。 示例:示例:对此规则举例进行说明,示例分为正例和反例。 正例:正例:对此规则或准则给出的正确示例。 反例:反例:对此规则或准则给出的反面示例。 4.

8、书写规范书写规范 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

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

10、”, 顶层文件的元件实例化,后缀使用_module,第二层文件的元 件实例化,后缀使用_block,第三层之后不做定义(若遇到常见的基本逻辑电路,如: SRAM、FIFO 等,那么按照 SRAM、FIFO 命名规则为优先)。 正例:文件名是 OTDR_XC3S1000BGA456_TOP.vhd,那么设计实体内部的结构如图 1 所示: OTDR_XC3S1000BGA456_TOP. vhd AD9051_module Sync_module Sync_corr_block Sync_corr_sram Sync_corr_fifo 图 1 设计实体内部的结构 R3.代码编写之前,以文档的方式

11、,根据功能分类,分别对代码编写之前,以文档的方式,根据功能分类,分别对 FPGA 的外部端口进行命名的外部端口进行命名 约定。约定。 级别:规定 说明:命名约定包括模块命名、端口信号命名(确保工程的顶层文件的端口与原理图设计保持一致)、 端口信号引脚分配说明(是否是特殊引脚或是普通 I/O 脚)等。在整个系统的研发过程中,FPGA 与 其它电路模块(CPU/模拟电路/通信接口等)之间的关系是非常密切的,为了处理好 FPGA 与其它电 路模块之间的相互联系,我们必须以文档的形式,清晰地说明输入输出端口的特性以及 FPGA 内部所 完成的功能,才能使整个研发团队之间的合作更加顺畅。 正例: FPG

12、A 与 ARM 微处理器之间采用 SPI 通信协议; SPI 通信接口分别是:SPI_CLK、SPI_MISO、SP_MOSI、SPI_CS; SPI 通信接口的引脚分配均为普通 I/O 引脚。 R4.命名要有实际意义。命名要有实际意义。 级别:规定 说明:具有一定意义的命名比写上好几行的注释要好得多。 正例:如全加器模块(FULL_ADDER)、半加器子模块(HALF_ADDER)和时钟信号锁相环模块 (CLK_SHIFT_PHASE_PLL)等 R5.命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划线分开。命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划

13、线分开。 信号、变量等的命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。信号、变量等的命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。 级别:规定 说明:由于某些综合工具对于总线类型的信号,综合的结果为总线名加上数字编号。如果信号、变量 名最后一个字母也使用数字的话,容易混扰。 正例:Pulse_FFT、AD_State、Address 反例:PulseFFT、ADState、Address8 R6.模块、信号、变量等的命名不大于模块、信号、变量等的命名不大于 64 个字符个字符 级别:规定 说明:太长的命名不方便阅读。 R7.实体、结构名、端口信号、常量用大写

14、标识实体、结构名、端口信号、常量用大写标识 级别:规定 说明:使用大写容易与一般的信号、变量区分。 R8.行为级、结构级和数据流级结构命名分别以行为级、结构级和数据流级结构命名分别以“BEH_实体名实体名”、“STR_实体名实体名”和和“RTL_ 实体名实体名”区分。如果是混合使用,或者是分不清使用了那一种结构,那么就是用区分。如果是混合使用,或者是分不清使用了那一种结构,那么就是用“ARC_ 实体名实体名”命名。命名。 级别:规定 表 1 实体命名方式 描述方式命名方式 行为级描述BEH_实体名 结构级描述STR_实体名 数据流级描述RTL_实体名 混合级描述ARC_实体名 R9.单口单口

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

16、规定 示例:如大小为 512X8 的双口 RAM(其中 512 为数据深度,8 为数据宽度),命名顺序为功能、存 储容量和器件类型:Function_512x8_dpram,调用时,例化名可以为 U_Function_512x8_dpram,其中 Function 说明双口 RAM 的作用。 R10.模块实例化时,采用模块实例化时,采用Un_xx_元件名元件名标识,标识,cell 实例化时使用实例化时使用Mn_xx_元件名元件名标识。标识。 级别:推荐 说明:因为综合、布线工具的工具,一般都将使用实例标志输出报告,如果没有表示模块的名字,不 利于阅读报告。其中 n 表示多次实例化的编号,xx

17、表示模块调用的特性(如用途等)。如果只调用 一次,那么就不必使用数字,直接就是U_xx_元件名 示例:如 HDLC 发送模块 hdlc_trans,调用时例化名可以为:U0_hirs_hdlc_trans,U1_e1_hdlc_trans; 对于三态输出单元 tri,调用时例化名可以为 M_cpuio_tri。 R11.模块内部定义的信号、变量采用首字母大写命名。首字母符合说明的要求。模块内部定义的信号、变量采用首字母大写命名。首字母符合说明的要求。 级别:规定 说明:首字符要求如表 1 所示: 表 1 模块内部定义数据对象的首字符要求 例子说 明 信号S_cpu_addr信号使用“S_”开头

18、 变量V_data_buf变量使用“V_”开头 常量C_RSSI_ADDR常量使用“C_”开头 数组A_rssi数组使用“A_”开头 R12.非顶层模块端口信号命名方式采用非顶层模块端口信号命名方式采用 I_portname、O_portname 和和 IO_portname 分别分别 对应输入、输出和双向端口信号。对应输入、输出和双向端口信号。 级别:规定 说明:“I_”表示输入;“O_”表示输出;“IO_”表示双向。 R13.时钟信号必须用后缀时钟信号必须用后缀“_clk”进行命名。进行命名。 级别:规定 说明:如果设计当中包括多个时钟,可以加上根据时钟的频率等特性说明,之间以下划线分开,

19、如模 块端口时钟信号采用 I_xx_clk(其中 xx 代表时钟的特性),模块内部时钟信号采用 S_xx_clk(其中 xx 代表时钟的特性),如 I_15_36M_clk 表示 15.36MHz 的时钟信号。关于时钟信号的表示方法如表 2 所示: 表 2 时钟信号的表示方法 解释 I_16chip_clk16chip 时钟信号; S_16chip_clk16chip 时钟信号; I_sys_clk系统时钟 I_66_7M_clk如果时钟信号是 66.7MHz,那么就使用 66_7M 表示,小数点 后最多保留 3 位。使用频率标记与 chip 时钟进行区分: G表示 GHz; M表示 MHz;

20、 K表示 KHz; Hz表示 Hz; I_pp2sPP2s 必须使用pp2s作为结尾,最好是完全使用。 S_66_7M_clk如果时钟信号是 66.7MHz,那么就使用 66_7M 表示,小数点 后最多保留 3 位。使用频率标记与 chip 时钟进行区分: G表示 GHz; M表示 MHz; K表示 KHz; Hz表示 Hz; I_16chip_ph90_clk16chip,相位 90 度, 90 度是:ph90; 180 度是:ph180; 270 度是:ph270; R14.对于微处理器接口的寄存器,必须包含对于微处理器接口的寄存器,必须包含 reg 标志。用下划线分开该寄存器功能特征。标

21、志。用下划线分开该寄存器功能特征。 级别:规定 说明:这类是用于存储信息的信号,类似于单片机中的寄存器。 示例:如一个版本的寄存器命名为:S_version_reg。 R15.对于输入管脚时钟采样同步的信号命名要求后缀加对于输入管脚时钟采样同步的信号命名要求后缀加“_buf”表示。多次采样加数字区表示。多次采样加数字区 分。分。 级别:规定 示例:多次采样,如:第 1 次采样命名为 S_portname_1buf;第 2 次采样命名为:S_portname_2buf; 依次类推。 R16.一些常用的基本信号按说明统一后缀命名。一些常用的基本信号按说明统一后缀命名。 级别:规定 说明:表 3 列

22、出了常用的信号缩写后缀,作为同类信号的后缀,如果是低有效则再加后缀_n。 表 3 常用信号的缩写 信号类型信号类型后缀后缀 时钟信号clk 系统复位信号rst 数据总线data 地址总线addr 读使能rd 写使能wr 中断信号int 写指针wp 读指针rp 计数器cnt 寄存器reg 请求信号req 应答信号ack 使能信号en 清零信号clr R17.多比特信号,应该使用相同的比特顺序,都采用多比特信号,应该使用相同的比特顺序,都采用 downto 描述。描述。 级别:规定 说明:有利于代码的阅读 R18.VHDL 的保留字用小写。的保留字用小写。 级别:规定 说明:有利于代码的阅读 R1

23、9.调用调用 IEEE 标准库时,标准库时,“IEEE”用大写,其它用小写。用大写,其它用小写。 级别:规定级别:规定 示例:如:library IEEE; use IEEE.std_logic_1164.all; 4.2 注释规范 R20.每个每个 VHDL 源文件应该在源文件应该在文件头注释文件的基本信息。文件头注释文件的基本信息。 级别:规定 说明:每个 VHDL 源文件应在开始处注明模块名称、引用模块(顶层模块中不需要说明引用模块)、 功能描述、设计时间及版权信息,设计人、修改记录等。顶层模块需指出使用的逻辑器件,内容包括: 文件名称、功能描述、单位作者、创建日期、应用说明、更新说明、

24、器件型号、更新作者和更新日期。 正例: -* -文件名称:ARM_INTERFACE_MODULE.vhd -功能描述: -器件型号: -单位作者: -创建日期: -应用说明:(应用特性和应用场合) -更新说明:(更新内容和优化说明) -更新作者: -更新日期: -* R21.每个信号、变量、常量和端口的定义都要有注释。每个信号、变量、常量和端口的定义都要有注释。 级别:推荐 说明:对每个信号,变量、常量和端口的作用作个简单说明。 R22.每个进程使用每个进程使用“-”隔开。如果一个功能模块由几个进程组成,使用隔开。如果一个功能模块由几个进程组成,使用”-*”隔隔 开。开。 级别:规定 说明:

25、增加代码的可读性 正例: - - 进程注释 - process end process ; -* - -进程注释 - process end process ; - END OF FILE * R23.对于内部表,注释说明表的组成、表的内容及作用。对于内部表,注释说明表的组成、表的内容及作用。 级别:推荐 说明:加上注释可以增加对表的理解。 4.3 其它书写规范 R24.用缩进方式使得代码有层次感,缩进不要使用用缩进方式使得代码有层次感,缩进不要使用 TAB 键,缩进为键,缩进为 4 个空格。个空格。 级别:规定 说明:用缩进方式使得代码有层次感,使代码的整洁、美观,便于阅读。由于 TAB 键

26、在不同编辑器 中解释不一定相同,为了避免不同编辑器下缩进混乱,不能使用 TAB 键 建议:为了编写程序的方便,可以使用 Utral_edit、USE 等编辑工具,使用 TAB 键进行编写程序,然 后将 TAB 键转化为空格键,这样,就可以有 TAB 键的方便,也避免了缩进的问题; R25.每行字符数每行字符数,最大不能超过最大不能超过 120。 级别:推荐 说明:以便于在不同的计算机上阅读代码,不需要进行横向移屏才能够阅读。 R26.模块端口每行定义一个。先根据端口功能进行区分,然后再根据输入输出方向进行模块端口每行定义一个。先根据端口功能进行区分,然后再根据输入输出方向进行 区分,类间用空行分开。区分,类间用空行分开。 级别:规定 说明:端口分类方式根据实际情况决定,只要利于进行端口的理解就可以。 R27.调用模块使用调用模块使用 “=”方式进行端口映射,总线到总线映射时(方式进行端口映射,总线到总线映射时(x downto y)要写全。)要写全。 级别:规定 说明:有利于代码的阅读

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论