作者:MiS603开发团队
日期:20150911
公司:南京米联电子科技有限公司
论坛:www.osrc.cn
EAT博客:http://blog.chinaaet.com/whilebreak
博客园:http://www.cnblogs.com/milinker/
2.1 Verilog HDL 代码规范
规范的代码风格,可以让程序更容易阅读和维护。
u 文档管理
合理的文档管理也是程序代码规范的重要组成部分
以上图片中可以看出RGMII_UDP_TEST是我们的工程文件夹,在这个工程文件夹下有三个文件夹分别为:DOC文件夹、RGMII_UDP_TEST文件夹、SRC文件夹。
DOC文件夹:用来放一些我们开发过程中用到的数据手册,参考资料,开发笔记等、
RGMII_UDP_TEST文件夹:放ISE工程文件,ISE工程文件比较乱,单独放在一个文件夹有利于管理起来更加方便。
SRC文件夹:放源代码
打开SRC文件夹,可以看到里面还有几个文件夹,这些文件夹是用来管理源程序的,读者可以增加或者减少相关文件夹。
IPCORE文件夹:保存ISE自带的IPCORE
RGMII_CHIPSCOPE文件夹:chipscope IP
RGMII_DRIVER文件夹:接口驱动程序源码
RGMII_UDP_TEST文件夹:本工程程序。
u 项目构架设计
项目的构架用于团队的沟通,以及项目设计的全局把控
u 接口时序设计规范
模块和模块之间的通过模块的接口实现关联,因此规范的时序设计,对于程序设计的过程,以及程序的维护,团队之间的沟通都是非常必要的。
u 命名规则
1、顶层文件
对象+功能+top
比如:video_oneline_top
2、逻辑控制文件
介于顶层和驱动层文件之间
对象+ctr
比如:ddr_ctr.v
3、驱动程序命名
对象+功能+dri
比如:lcd_dri.v、uart_rxd_dri.v
4、参数文件命名
对象+para
比如:lcd_para.v
5、模块接口命名:文件名+u
比如lcd_dir lcd_dir_u(........)
6、模块接口命名:特征名+文件名+u
比如 mcb_read c3_mcb_read_u
7、程序注释说明
//////////////////////////////////////////////////////////////////////////////////
// Company: milinker corperation
// Engineer:jinry tang
// WEB:www.milinker.com
// BBS:www.osrc.cn
// Create Date: 07:28:50 07/31/2015
// Design Name: FPGA STREAM
// Module Name: FPGA_USB
// Project Name: FPGA STREAM
// Target Devices: XC6SLX16-FTG256/XC6SLX25-FTG256 Mis603
// Tool versions: ISE14.7
// Description: CY7C68013A SLAVE FIFO comunication with fpga
// Revision: V1.0
// Additional Comments:
//1) _i input
//2) _o output
//3) _n activ loe
//4) _dg debug signal
//5) _r delay or register
//6) _s state mechine
//////////////////////////////////////////////////////////////////////////////////
8、端口注释
input Video_vs_i,//输入场同步入
9、信号命名
命名总体规则:对象+功能(+极性)+特性
10、时钟信号
对象+功能+特性
比如:phy_txclk_i、sys_50mhz_i
11、复位信号
对象+功能+极性+特性
比如:phy_rst_n_i、sys_rst_n_i
12、延迟信号
对象+功能+特性1+特征2
比如:fram_sync_i_r0、fram_sync_i_r1
13、特定功能计数器
对象+cnt
比如:line_cnt、div_cnt0、div_cnt1
功能+cnt
比如:wr_cnt、rd_cnt
对象+功能+cnt
比如:fifo_wr_cnt、mcb_wr_cnt、mem_wr_cnt
对象+对象+cnt
比如:video_line_cnt、video_fram_cnt
14、一般计数器
cnt+序号
用于不容易混淆的计数
比如:cnt0、cnt1、cnt2
15、 时序同步信号
对象+功能+特性
比如:line_sync_i、fram_sysc_i
16、 使能信号
功能+en
比如:wr_en、rd_en
对象+功能+en
比如:fifo_wr_en、mcb_wr_en