您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > VHDL代码书写规范
VHDL代码书写规范(定稿)文件编号:编制:审核:可靠性审核:标准化:批准:VHDL代码书写规范第1页共11页文件会签页文件历史记录文件编号现行版本V1.0文件标题VHDL代码书写规范文件履历版次编制日期更改内容(条款)V1.0V1.0VHDL代码书写规范第2页共11页目录1.目的.......................................................................................12.范围.......................................................................................13.术语说明...................................................................................14.书写规范...................................................................................14.1命名规范................................................................................1R1.一个文件只包含一个模块,文件命名和实体命名必须相同。文件名大写,其后缀小写。...........1R2.顶层文件命名方式使用工程名、器件型号与_TOP结合。顶层文件的元件实例化,后缀使用_module;第二层文件的元件实例化,后缀使用_block;第三层之后不做定义(若遇到常见的基本逻辑电路或子模块,如:SRAM、FIFO等,那么优先使用具有代表性的名称).........................................1R3.代码编写之前,以文档的方式,根据功能分类,分别对FPGA的外部端口进行命名约定。..........2R4.命名要有实际意义。.....................................................................2R5.命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划线分开。信号、变量等的命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。............................2R6.模块、信号、变量等的命名不大于64个字符................................................2R7.实体、结构名、端口信号、常量用大写标识.................................................2R8.行为级、结构级和数据流级结构命名分别以“BEH_实体名”、“STR_实体名”和“RTL_实体名”区分。如果是混合使用,或者是分不清使用了那一种结构,那么就是用“ARC_实体名”命名。..............3R9.单口RAM模块命名以SPRAM作后缀;双口RAM模块命名以DPRAM作后缀;ROM模块命名以ROM作后缀;FIFO模块命名以FIFO_作后缀;数字时钟管理模块命名以DCM作后缀;锁相环模块命名以PLL作后缀;乘法模块命名以MULT作后缀;除法模块命名以DIV作后缀;加法模块命名以ADD作后缀;减法模块命名以SUB作后缀。..............................................................................3R10.模块实例化时,采用‘Un_xx_元件名’标识,cell实例化时使用‘Mn_xx_元件名’标识。........3R11.模块内部定义的信号、变量采用首字母大写命名。首字母符合说明的要求。....................3R12.非顶层模块端口信号命名方式采用I_portname、O_portname和IO_portname分别对应输入、输出和双向端口信号。..............................................................................3R13.时钟信号必须用后缀“_clk”进行命名。..................................................3R14.对于微处理器接口的寄存器,必须包含reg标志。用下划线分开该寄存器功能特征。............4R15.对于输入管脚时钟采样同步的信号命名要求后缀加“_buf”表示。多次采样加数字区分。........4R16.一些常用的基本信号按说明统一后缀命名。................................................4R17.多比特信号,应该使用相同的比特顺序,都采用downto描述。...............................5R18.VHDL的保留字用小写。.................................................................5R19.调用IEEE标准库时,“IEEE”用大写,其它用小写。......................................54.2注释规范................................................................................5R20.每个VHDL源文件应该在文件头注释文件的基本信息。.......................................5R21.每个信号、变量、常量和端口的定义都要有注释。..........................................5R22.每个进程使用“--------”隔开。如果一个功能模块由几个进程组成,使用”--*****”隔开。...5R23.对于内部表,注释说明表的组成、表的内容及作用。........................................64.3其它书写规范............................................................................6R24.用缩进方式使得代码有层次感,缩进不要使用TAB键,缩进为4个空格。......................6R25.每行字符数,最大不能超过120。.........................................................6VHDL代码书写规范第3页共11页R26.模块端口每行定义一个。先根据端口功能进行区分,然后再根据输入输出方向进行区分,类间用空行分开。....................................................................................6R27.调用模块使用“=”方式进行端口映射,总线到总线映射时(xdowntoy)要写全。...........6R28.调用模块进行端口映射时,一行代码只映射一个信号。顺序必须与原模块保持一致..............6R29功能集中或有很强的相关性的变量信号声明放在一起,类间用空行或注释分开。.................6R30.端口、信号、变量定义需要对齐;模块实例化时,端口映射需要对齐。........................6R31.运算符与信号之间必须有空格分开........................................................7VHDL代码书写规范第1页共11页1.目的规范VHDL的书写风格,保证代码的可读性、可重用性和可移植性,并且要与现有的EDA工具保持一致,从而形成对VHDL代码的标准化管理。2.范围本标准规定了VHDL代码书写规范。本标准适用于G-LINK公司研发中心。3.术语说明本规范使用的术语解释如下:级别:指该规则遵循的级别,有两个级别,分别为推荐和规定。推荐:表示在一般情况下必须遵循该规则。规定:表示必须严格遵守该规则。说明:对此规则或准则的必要的解释。示例:对此规则举例进行说明,示例分为正例和反例。正例:对此规则或准则给出的正确示例。反例:对此规则或准则给出的反面示例。4.书写规范4.1命名规范R1.一个文件只包含一个模块,文件命名和实体命名必须相同。文件名大写,其后缀小写。级别:规定说明:文件类型为.vhd。如果文件名与实体名不一致,有些编译器不能识别,而且名字不一致,也不利于将文件与模块对应,不利于文件的管理。正例:文件名是SER_TSP.vhd,那么文件内部实体的命名就是entitySER_TSPisport(……);endSER_TSP;architectureARC_SER_TSPofSER_TSPis……endARC_SER_TSP;R2.顶层文件命名方式使用工程名、器件型号与_TOP结合。顶层文件的元件实例化,后缀使用_module;第二层文件的元件实例化,后缀使用_block;第三层之后不做定义(若遇到常见的基本逻辑电路或子模块,如:SRAM、FIFO等,那么优先使用具有代表性的名称)级别:规定说明:一般顶层文件命名使用工程名加器件名再加“_TOP”,如“OTDR_XC3S1000BGA456_TOP”,顶层文件的元件实例化,后缀使用_module,第二层文件的元件实例化,后缀使用_block,第三层之后不做定义(若遇到常见的基本逻辑电路,如:SRAM、FIFO等,那么按照SRAM、FIFO命名规则为优先)。正例:文件名是OTDR_XC3S1000BGA456_TOP.vhd,那么设计实体内部的结构如图1所VHDL代码书写规范第2页共11页示:OTDR_XC3S1000BGA456_TOP.vhdAD9051_moduleSync_moduleSync_corr_blockSync_corr_sramSync_corr_fifo图1设计实体内部的结构R3.代码编写之前,以文档的方式,根据功能分类,分别对FPGA的外部端口进行命名约定。级别:规定说明:命名约定包括模块命名、端口信号命名(确保工程的顶层文件的端口与原理图设计保持一致)、端口信号引脚分配说明(是否是特殊引脚或是普通I/O脚)等。在整个系统的研发过程中,FPGA与其它电路模块(CPU/模拟电路/通信接口等)之间的关系是非常密切的,为了处理好FPGA与其它电路模块之间的相互联系,我们必须以文档的形式,清晰地说明输入输出端口的特性以及FPGA内部所完成的功能,才能使整个研发团队之间的合作更加顺畅。正例:①FPGA与ARM微处理器之间采用SPI通信协议;②SPI通信接口分别是:SPI_CLK、SPI_MISO、SP_MOSI、SPI_CS;③SPI通信接口的引脚分配均为普通I/O引脚。R4.命名要有实际意义。级别:规定说明:具有一定意义的命名比写上好几行的注释要好得多。正例:如全加器模块(FULL_ADDER)、半加器子模块(HALF_ADDER)和时钟信号锁相环模块(CLK_SHIFT_PHASE_PLL)等R5.命名标识符的首字符必须是字母,包含多个单词的标志符单词之间使用下划线分开。信号、变量等的命名最后字符也一定要求是字母,中间的可以是数字或者其他合法符号。级别:规定说明:由于某些综合工具对于总线类型的信号,综合的结果为总线名加上数字编号。如果信号、变量名最后一个字母也使用数字的话,容易混扰。正例:Pulse_FFT、AD_State、Address反例:PulseFFT、ADState、Address8R6.模块、
本文标题:VHDL代码书写规范
链接地址:https://www.777doc.com/doc-3396485 .html