自定义FPGA编程规范


2.1 变量命名

2.1.1 wire型变量命名

(1).   Wire型变量定义如下:名词+动词+_Sig

”_”的第一个字母大写,其它小写,用”_”隔开,按中文含义,直接翻译成english。

 

例如: VSync_Sig

注:如果一个字母,可以直接贴着旁边的整个单词,如VSync_Sig所示。

 

(2).   Module里的变量名也定义成wire型

例如:

module sync_module

(

    CLK, RSTn,

          VSYNC_Sig, HSYNC_Sig,Ready_Sig,

          Column_Addr_Sig,Row_Addr_Sig

);

 

2.1.2 reg型变量命名

小写,用”_”隔开,按中文含义,直接翻译成english。

例如: reg [10:0]count_h;

 

2.1.3 parameter型变量命名

Parameter定义的变量全大写,也按中文含义,直接翻译成english.

 

 

2.1.4 系统级信号的命名

系统级信号指复位信号,置位信号,时钟信号等需要输送到各个模块的全局信号。系统信号以字符串sys或syn开头;时钟信号以clk开头,并在后面添加相应的频率值;复位信号一般以rst或reset开头;置位信号为st或set开头。典型的信号命名方式如下所示:

 

wire [7:0] Sys_Dout_Sig;

wire Clk_32p768MHz_Sig;

wire Reset_Sig;

wire St_Counter_Sig;

 

 

2.2 对齐

2.2.1 begin…end的书写规范

 

同一个层次的所有语句左端对齐;initial、always等语句块的begin关键词跟在本行的末尾,相应的end关键词与initial、always对齐;这样做的好处是避免因begin独占一行而造成行数太多;如:

 

always @ ( posedgeSysClk or negedge SysRst ) begin

           if( !SysRst ) DataOut <= 4'b0000;

           else if( LdEn ) begin

                    DataOut <= DataIn;

                    End

           else

                   DataOut <= DataOut +4'b0001;

end

 

不同层次之间的语句使用Tab键进行缩进,每加深一层缩进一个Tab;在endmodule,endtask,endcase等标记一个代码块结束的关键词后面要加上一行注释说明这个代码块的名称。

 

2.3 Module的命名规则

 功能模块:动词+名词_module

控制模块:动词+名词_control_module

 

(1).   模块的命名规则

在系统设计阶段应该为每个模块进行命名。命名的方法是,将模块英文名称的各个单词首字母组合起来,形成3到5个字符的缩写。若模块的英文名只有一个单词,可取该单词的前3个字母。各模块的命名以3个字母为宜。例如:

 

ArithmaticLogical Unit模块,命名为ALU。

DataMemory Interface模块,命名为DMI。

Decoder模块,命名为DEC。

 

(2).   模块之间接口信号的命名

模块之间接口信号,最好标明数据方向

vga_control_module U3

          (

              .CLK( CLK_40Mhz),

                     .RSTn(RSTn ),

                    .Ready_Sig( Ready_Sig ),            // input - from U2

                    .Column_Addr_Sig( Column_Addr_Sig ), // input - from U2

                    .Row_Addr_Sig( Row_Addr_Sig ),      // input - from U2

                     .Red_Sig(Red_Sig ),      // output - to top

                    .Green_Sig( Green_Sig ),  //output - to top

                     .Blue_Sig(Blue_Sig )     // output - to top

          );

 

(3).   模块内部信号

模块内部的信号由几个单词连接而成,缩写要求能基本表明本单词的含义;单词除常用的缩写方法外(如:Clock->Clk, Write->Wr, Read->Rd等),一律取该单词的前几个字母( 如:Frequency->Freq, Variable->Var 等);每个缩写单词的第一个字母大写;若遇两个大写字母相邻,中间添加一个下划线(如DivN_Cntr)


参考:http://blog.csdn.net/lvwx369/article/details/9887041

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值