FPGA编码规范(verilog版)1.0.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA编码规范(verilog版)1.0

FPGA编码规范(verilog版) 修订记录: 修订 日期 修订者 修订内容 1.0 2009-7-9 曹艳平 安丰军 产生此文件 目的 FPGA设计更多是一种工程,而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战,如果不统一编程规范,最终合到一起的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。本文从、、、阐述了规范强制执行项目强制在系统设计阶段应该为每个模块进行命名。命名的方法是将模块英文名称的各个单词首字母组合起来,形成3到5个字符的缩写。若模块的英文名只有一个单词,可取该单词的前3个字母。Arithmatic Logical Unit命名为alu; 一级模块Data Memory Interface命名为dmi; 一级模块Decoder命名为dec; 一级模块CPU里面的二级模块,功能是完成flash的控制功能,命名为:cpu_flash_ctl; 规则3.3:信号命名 1.信号由几个单词连接而成,’_’)来分隔名字中的不同部分; 2.尽量使用缩写,缩写要求能基本表明本单词的含义;单词除常用的方法外(如:-clk, write-wr, read-rd等),一律取该单词的前个字母( 如:requency-freq, variable-var 等);”reg”作为最后的后缀名,因为综合工具会给寄存器加上reg,如果命名里就用reg作为后缀,则扰乱了网表的可读性。 常用单词的缩写方法见附录1。 说明: 这样可以增强程序的可读性,并能避免标示符过于冗长。 示例: 不好的 好的 wire [9:0] addresscontrolenable; wire[9:0] addr_ctl_en reg [15:0] i,q; reg[15:0] fir_out_datai; reg[15:0] fir_out_dataq; 规则3.4:避免关键字 在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字。 规则3.5:文件名命名 文件名要和模块名相同,在一个文件中只用一个模块,在不同的层级上尽量使用统一的信号名;这样容易跟踪信号,网表调试也容易。 规则3.6:时钟和复位信号命名 对于时钟信号使用前缀clk_* ,并使用有含义的缩写构成时钟信号,对于同一个时钟信号,在所有的模块中名字保持一致。 对于复位信号使用前缀rst_*,并使用有含义的缩写构成复位信号,对于同一个复位信号,在所有的模块中名字保持一致。 示例: clk_lbus_33m,clk_base_92m16,rst_lbus_n; 规则3.7:低电平有效信号命名 对于低电平有效的信号,使用后缀*_n; 示例: rst_lbus_n,ad7680_cs_n; 规则3.8:仿真文件命名 用于仿真测试的文件的名字与被测试模块名字一一对应,添加后缀*_tb; 规则3.9:声明所有使用的信号 模块中所有用到的信号必须在信号声明部分进行声明;如果一个信号名没做声明Verilog将假定它为一位宽的wire变量。 建议3.1:前缀使用 系统级信号命名使用前缀sys_*,时钟和复位信号除外; 建议3.2:后缀使用 1.异步信号命名使用后缀*_a; 2.三态信号命名使用后缀*_z; 3.多周期路径第n 个周期使用的信号使用后缀*_pn; 4.使用触发器或者SRL延迟n clk cycle的信号使用后缀*_ln; 建议3.3:模块之间接口信号命名 模块之间的接口信号命名分为两个部分,第一部分表明数据方向,其中数据发出方在前,数据接收方在后,第二部分为数据名称若某个信号从一个模块传递到多个模块,其命名应视信号的主要路径而定。example.v”。 规则4.1:文件头 每个设计文件开头应包含如下注释内容:公司名称;作者;创建时间;文件名;所属项目;顶层模块;所需库;使用的仿真器和综合工具(运行平台和版本);模块名称及实现功能和关键特性描述;文件创建和修改记录(包括修改版本号,修改时间,修改人名字,修改内容)。 规则4.2:注释使用 使用//进行的注释行在//后加一个空格,并以分号结束; 使用/* */进行的注释,/*和*/各占用一行,并且顶头。 尽量在每个always块之前加一段注释,增加可读性和便于调试。 注释应该与代码一致,修改程序的时候一定要修改相应的注释; 注释不应重复代码已表明的内容,而是简介式点明程序的突出特征。 示

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档