FPGA实战演练逻辑篇40:代码书写规范
if on select with bus impure open
severity xnor case in or shared xor component inertial others signal
configuration inout out sla constant is package sra disconnect label port srl
除了以上这些保留的关键词不可以作为用户自定义的其他名称,verilog和VHDL还有以下的一些用户自定义命名规则必须遵循:
● 命名中只能够包含字母、数字和下划线“_”(verilog的命名还可以包含符号“$”)。(特权同学,版权所有)
● 命名的第一个字符必须是字母(verilog的命名授字符可以是下划线“_”,但一般不推荐这么命名)。(特权同学,版权所有)
● 在一个模块中的命名必须是唯一的。(特权同学,版权所有)
● VHDL的命名中不允许连续出现多个下划线“_”,也不允许下划线“_”是命名的最后一个字符。(特权同学,版权所有)
关于模块名称、端口名称、信号名称、各种变量或常量名称等的命名,有很多推荐的规则可供参考,如下:
● 尽可能使用能表达名称具体含义的英文单词命名,单词名称过长时可以采用易于识别的缩写形式替代,多个单词之间可以用下划线“_”进行分割。(特权同学,版权所有)
● 对于出现频率较高的相同含义的单词,建议统一作为前缀或后缀使用。(特权同学,版权所有)
● 对于低电平有效的消耗,通常加后缀“_n”表示。(特权同学,版权所有)
● 在同一个设计中,尽可能的统一大小写的书写规范。(很多规范里对命名的大小写书写格式有要求,但是笔者这里不做详细规定,大家可以根据自己的需要设定。)
(2) 格式
这里的格式主要是指每个代码功能块之间、关键词、名称或操作符之间的间距(行间距、字符间距)规范。得体的代码格式不仅看起来美观大方,而且便于阅读和调试。关于格式,可能不同的公司也都有相关的规范要求,笔者在此建议大家尽量遵循以下一些原则:
● 每个功能块(如verilog的always逻辑、VHDL的process逻辑)之间尽量用一行或数行空格进行隔离。(特权同学,版权所有)
● 一个语法语句一行,不要在同一行写多个语法语句。(特权同学,版权所有)
● 单行代码不宜过长,所有代码行长度尽量控制在一个适当的便于查看的范围。(特权同学,版权所有)
● 同层次的语法尽量对齐,使用Tab键(通常一个Tab对应四个字符宽度)进行缩进。(特权同学,版权所有)
● 行尾不要有多余的空格。(特权同学,版权所有)
● 关键词、各类名称或变量、操作符相互间都尽量保留一个空格以作隔离。(特权同学,版权所有)
(3) 注释
Verilog的注释有“/* */”以及“//”两种方式。“/*”左侧和“*/”右侧之间的部分为注释内容,此注释可以用在行前、行间、行末或多行中;“//”后面的内容为注释,该注释只可用在行末(当然了,它也可以顶个,那么意味着整行都是注释)。(特权同学,版权所有)
VHDL的注释只有“--”一种。类似verilog的“//”,“--”后面的内容为注释,该注释只可用在行末。(特权同学,版权所有)
注释的摆放和写法通常也有讲究,几个要点归纳如下:
● 每个独立的功能模块都要有简单的功能描述,对输入输出信号功能进行描述。(特权同学,版权所有)
● 无论习惯在代码末注释还是代码上面注释,同一个模块或工程中尽量保持一致。(特权同学,版权所有)
● 注释内容简明扼要,不要过于冗长或写废话(例如:add = add+1; //add自增)。(特权同学,版权所有)
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)