时间:2026-03-07 来源:FPGA_UCY 关于我们 0
对于模块的书写采用统一的格式便于项目内部成员的理解和维护,我们用批处理建立了一个MODULE模块,其内容解释如下:
端口定义按照输入,输出,双向的顺序:
模块名、模块例化名统一,例化名前加大写U以区分 ( 多次例化另加标识 ),三者关系:
文件名 :xxx .v (小写)
模块名 :XXX (大写)
例化名 :UXXX (大写)
IP 内部所有的模块名都要加IP名或者IP名简称作前缀,如USBCTRL、USBTX_FIFO。
// ***************************** // DEFINE MODULE PORT // // ****************************** // module MODULE_NAME //模块名一行 ( //括号顶格,端口部分换行 // INPUT //尽量先输入,后输出定义 input_port_1, //可同时按接口对象等分类,一行一个 … input_port_m, // OUTPUT output_port_1, … output_port_m, ); // ***************************** // DEFINE PARAMETER // ****************************** parameter… //参数名采用大写 // ****************************** // DEFINE INPUT // ****************************** input rst_n ; // reset, (active low) . //input到寄存器名之间四个tab键,注意对齐 input clk_* ; // clock signal , 50M . //注意注释的格式,简洁有力,尽量使用英文 input [n:0] a_din ; // ***** //此处是在模块名部分没有声明端口类型时用 input [k:0] b_din ; // ***** //注释尽量不要挨到前面,然后全左对齐 // ****************************** // DEFINE OUTPUT // ****************************** output [m:0] a_dout ; // ***** //位宽定义和output之间加一个tab或空格,统一即可 output [i:0] b_dout ; // ***** // ****************************** // OUTPUT ATRRIBUTE // ****************************** // REGS reg [m:0] a_dout ; // ***** //WIRES wire [i:0] b_dout ; // ***** // ****************************** // INSTSNCE MODULE // ****************************** MODULE_NAME_A U_MODULE_NAME_A( //例化名从和模块名相距四个tab,括号后换行 .A (A ), //端口和例化名对齐,后3个tab再括号连线 .B (B ), //括号内3个tab的宽度,全对齐 .C (C ), ); … // ****************************** //MAIN CODE // ****************************** … … … … … … // ****************************** // endmodule //结尾顶格,中间部分均从一个tab开始