欢迎来到天天文库
浏览记录
ID:40569670
大小:27.50 KB
页数:4页
时间:2019-08-04
《verilogHDL代码编写注意事项和规范》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Verilog代码编写规范 一.强调Verilog代码编写风格的必要性。 强调Verilog代码编写规范,经常是一个不太受欢迎的话题,但却是非常有必要的。每个代码编写者都有自己的编写习惯,而且都喜欢按照自己的习惯去编写代码。与自己编写风格相近的代码,阅读起来容易接受和理解。相反和自己编写风格差别较大的代码,阅读和接受起来就困难一些。 曾有编程大师总结说,一个优秀的程序员,能维护的代码长度大约在1万行数量级。代码的整洁程度,很大程度上影响着代码的维护难度。 遵循代码编写规范书写的代码,很容易阅读、理解、维护、修改、跟踪调试、整理文档。相反代码编写风格随意的代码,通常晦涩、凌乱,
2、会给开发者本人的调试、修改工作带来困难,也会给合作者带来很大麻烦。 (实际上英文CodingStyle有另一层涵义,更偏重的是,某一个电路,用那一种形式的语言描述,才能将电路描述得更准确,综合以后产生的电路更合理。本文更偏重的是,编写Verilog代码时的书写习惯。)二.强调编写规范的宗旨。缩小篇幅提高整洁度便于跟踪、分析、调试 增强可读性,帮助阅读者理解 便于整理文档 便于交流合作三.变量及信号命名规范。1. 系统级信号的命名。系统级信号指复位信号,置位信号,时钟信号等需要输送到各个模块的全局信号;系统信号以字符串Sys开头。2. 低电平有效的信号后一律加下
3、划线和字母n。如:SysRst_n;FifoFull_n;3. 经过锁存器锁存后的信号,后加下划线和字母r,与锁存前的信号区别。如CpuRamRd信号,经锁存后应命名为CpuRamRd_r。低电平有效的信号经过锁存器锁存后,其命名应在_n后加r。如CpuRamRd_n信号,经锁存后应命名为CpuRamRd_nr多级锁存的信号,可多加r以标明。如CpuRamRd信号,经两级触发器锁存后,应命名为CpuRamRd_rr。4. 模块的命名。 在系统设计阶段应该为每个模块进行命名。命名的方法是,将模块英文名称的各个单词首字母组合起来,形成3到5个字符的缩写。若模块的英文名只有一个单
4、词,可取该单词的前3个字母。各模块的命名以3个字母为宜。例如: ArithmaticLogicalUnit模块,命名为ALU。 DataMemoryInterface模块,命名为DMI。 Decoder模块,命名为DEC。5. 模块之间的接口信号的命名。所有变量命名分为两个部分,第一部分表明数据方向,其中数据发出方在前,数据接收方在后,第二部分为数据名称。两部分之间用下划线隔离开。第一部分全部大写,第二部分所有具有明确意义的英文名全部拼写或缩写的第一个字母大写,其余部分小写。举例:CPUMMU_WrReq,下划线左边是第一部分,代表数据方向是从CPU模块发向存储器管理单元
5、模块(MMU)。下划线右边Wr为Write的缩写,Req是Request的缩写。两个缩写的第一个字母都大写,便于理解。整个变量连起来的意思就是CPU发送给MMU的写请求信号。 模块上下层次间信号的命名也遵循本规定。 若某个信号从一个模块传递到多个模块,其命名应视信号的主要路径而定。6.模块内部信号:模块内部的信号由几个单词连接而成,缩写要求能基本表明本单词的含义;单词除常用的缩写方法外(如:Clock->Clk,Write->Wr,Read->Rd等),一律取该单词的前几个字母(如:Frequency->Freq,Variable->Var等);每个缩写单词的第一个字母大
6、写;若遇两个大写字母相邻,中间添加一个下划线(如DivN_Cntr);举例:SdramWrEn_n;FlashAddrLatchEn;四.编码格式规范。1.分节书写,各节之间加1到多行空格。如每个always,initial语句都是一节。每节基本上完成一个特定的功能,即用于描述某几个信号的产生。在每节之前有几行注释对该节代码加以描述,至少列出本节中描述的信号的含义。2.行首不要使用空格来对齐,而是用Tab键,Tab键的宽度设为4个字符宽度。行尾不要有多余的空格。3.注释。使用//进行的注释行以分号结束;使用/**/进行的注释,/*和*/各占用一行,并且顶头;例://Edgedetecto
7、rusedtosynchronizetheinputsignal;4.空格的使用:不同变量,以及变量与符号、变量与括号之间都应当保留一个空格。Verilog关键字与其它任何字符串之间都应当保留一个空格。如:Always@(......)使用大括号和小括号时,前括号的后边和后括号的前边应当留有一个空格。逻辑运算符、算术运算符、比较运算符等运算符的两侧各留一个空格,与变量分隔开来;单操作数运算符例外,直接位于操作数前,不使用空格。使用/
此文档下载收益归作者所有