Verilog编码规范

来源:互联网 发布:韩国人的生活水平知乎 编辑:程序博客网 时间:2024/05/29 19:40

Verilog编码规范

工程结构

顶层模块使用原理图设计,看起来更直观。其余各子模块用Verilog书写,书写完成后封装成模块,以便让顶层模块调用。二级及以下子模块不必封装,直接被上级模块调用即可。

代码格式

文件头

/************************************************************************* * Copyright (c) 2017, Jimbo Zhang  * All rights reserved. *  * File name    :   GetP.v * Brief        :   Get pixel original data. *                  Reassemble the data, according to the accuracy. *                  Then delivery to checkP module or debugM module, according to debug_en.          * Revision     :   1.00 * Author       :   Jimbo Zhang * Date         :   2017.05.10 * Update       :   Original.*************************************************************************/

必要的注释

  • 必要的注释是需要的,以便使代码结构更清晰。
    *
/* DEFINEs -------------------------------------------------------------*//* PARAMETERs ----------------------------------------------------------*//* REGs ----------------------------------------------------------------*//* WIREs ---------------------------------------------------------------*//* ASSIGNs -------------------------------------------------------------*/

always

  • always功能尽可能单一,多写几个always也无妨。
  • always前一定要有注释,说明该段程序的作用。
//get pre_en//store en's previous statealways @(posedge clk)begin    pre_en <= en;end

命名风格

  • 低电平有效的信号要在名字后面加’_n’后缀。

编程风格

  • 在模块定义的时候顺便就将端口定义好,以缩短代码长度。
module getP(input clk,//pixel clockinput rst_n,input debug_en,input [7:0] r_i,g_i,b_i,input hs_i,vs_i,de_i,output reg [7:0] r_o,g_o,b_o,output reg hs_o,vs_o,de_o);
  • 复位使用异步复位同步释放。
  • 状态机要写成3段式的。
  • 逻辑都在底层模块中实现,顶层模块只做例化,避免胶连逻辑(glue logic)。一般顶层模块用原理图设计,其余用Verilog设计。
  • 一个模块只使用一个时钟。以便让综合器综合出较优的结果。
  • 信号在不使用的时候都disable掉,以降低功耗。
  • 进入FPGA的信号必须先同步,以提高系统工作频率(板级)。
0 0
原创粉丝点击