导读 大家好,小宜来为大家讲解下。rst驱动(pe加载rst驱动)这个很多人还不知道,现在让我们一起来看看吧!#如何提高代码的可维护性##嵌入式##fpg...

大家好,小宜来为大家讲解下。rst驱动(pe加载rst驱动)这个很多人还不知道,现在让我们一起来看看吧!

#如何提高代码的可维护性##嵌入式##fpga#

如何提高代码的可维护性,这里只介绍FPGA的代码维护,代码好不好维护取决于是否遵循一定的编码规则,或者编码规范,或者公司内部统一的编码要求等等。

FPGA开发过程中,提高代码的可维护性需注意以下几点

1、工程设计层次化,结构化

要编写可维护、可移植的工程首先要对FPGA项目需求进行层次化、结构化设计。遵循FPGA的设计流程,自顶向下,把一个任务按照功能或者类别分成若干个可独立操作的模块,每个模块又可以细分下去,通过逐次分解与模块的例化,整个工程的层次结构就会非常清晰。

2、模块的设计

模块的设计要求,尽量做到功能独立,接口简单,编写功能介绍,及代码注释,在系统维护过程中,代码重用性越高,维护和移植的时候修改的代码量就越小,甚至不修改。

3、parameter参数传递

Verilog中可以用parameter定义一个标识符代表一个常量,有助提高程序的可读性,也方便对程序的可扩展性,根据设置的不同的参数,实现不同的功能。

4、宏定义和条件编译

宏定义对系统的可维护,可移植上的作用和parameter类似,都是增加了程序的可读性。条件编译方便于一个模块实现多个功能,根据设置选择不同的功能进行编译,来实现不同的功能,节省开发时间,相应的语法使用就不这说明了。

5、遵循FPGA的编码规范

增强代码的可读性,应该遵循FPGA编码规范,一般以公司的编码要求为准。

介绍几点常见的编码风格要求:

1)、编写设计文档;

2)、对所有的信号名、变量名和端口名都用小写,对常量名和用户定义类型用大写;

3)、使用有意义的信号名、端口名、函数名和参数名;

4)、信号名长度不要太长;

5)、对于时钟信号使用clk作为信号名,如果设计中存在多个时钟,使用clk作为时钟信号的前缀;

6)、对于来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连接线的名字,端口和连接线端口的信号尽可能采用相同的名字;

7)、对于低电平有效的信号,应该以一个下划线跟一个小写字母n表示;

8)、对于复位信号使用rst作为信号名,如果复位信号是低电平有效,建议使用rst_n;

9)、当描述多比特总线时,使用一致的定义顺序,对于verilog建议采用bus_signal[x:0]的表示;

10)、尽量遵循业界已经习惯的一些约定;

11)、源文件头一般包含的内容有:文件名,作者,模块的实现功能概述和关键特征描述,文件创建和修改的记录,包括修改时间、修改的内容等;

12)、使用适当的always进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等;

13)、每一行语句独立成行;

14)、建议采用缩进提高续行和嵌套语句的可读性,缩进一般采用两个空格;

15)、在RTL源码的设计中命名都不能取Verilog和VHDl语言的关键字;

16)、在进行模块的端口声明时,每行只声明一个端口;

17)、在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射;

18)、对一些重要的always语句块定义一个有意义的标号,注意括号名不要与信号名、变量名重复;

19)、代码编写时的数据类型只是用IEEE定义的标准类型;

20)、在设计中不要直接使用数字;

21)、避免冗长的逻辑和子表达式;

22)、避免采用内部三态电路,建议多路选择电路代替内部三态电路;

23)、注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂。

最后,给大家分享一下华为设计规范,扫码下载即可(限时7天),多点点关注。

#Verilog#

本文rst驱动(pe加载rst驱动)到此分享完毕,希望对大家有所帮助。