verilog中include的用法

Verilog  的`include和C语言的include用法是一样一样的,要说区别可能就在于那个点吧。

include一般就是包含一个文件,对于Verilog这个文件里的内容无非是一些参数定义,所以

这里再提几个关键字:`ifdef    `define   `endif(他们都带个点,呵呵)。

他们联合起来使用,确实能让你的程序多样化,就拿彬哥VGA程序说事吧。

首先,你可以新建一个.h文件(可以直接新建一个TXT,让后将后缀换成.h)其实这个后缀

没所谓,.v也是可以的,我觉得,写成.h更能体现出这个文件的意义。

lcd_para.h中内容如下:

//    640 * 480 
`ifdef       VGA_640_480_60FPS_25MHz 
`define    H_FRONT    11'd16 
`define    H_SYNC     11'd96  
`define    H_BACK     11'd48  
`define    H_DISP    11'd640 
`define    H_TOTAL    11'd800     
                     
`define    V_FRONT    11'd10  
`define    V_SYNC     11'd2   
`define    V_BACK     11'd33 
`define    V_DISP     11'd480   
`define    V_TOTAL    11'd525 
`endif

//--------------------------------- 
//    800 * 600 
`ifdef       VGA_800_600_72FPS_50MHz 
`define    H_FRONT    11'd56 
`define    H_SYNC     11'd120  
`define    H_BACK     11'd64  
`define    H_DISP     11'd800 
`define    H_TOTAL    11'd1040 
                    
`define    V_FRONT    11'd37  
`define    V_SYNC     11'd6   
`define    V_BACK     11'd23  
`define    V_DISP     11'd600  
`define    V_TOTAL    11'd666 
`endif

//---------------------------------

`define    H_Start    (`H_SYNC + `H_BACK) 
`define    H_END     (`H_SYNC + `H_BACK + `H_DISP)

`define    V_Start    (`V_SYNC + `V_BACK) 
`define    V_END     (`V_SYNC + `V_BACK + `V_DISP)

这里为VGA定义了两种分辨率,通过

`define   VGA_800_600_60MHz VGA_640_480_60FPS_25MHz 或

`define   VGA_800_600_72FPS_50MHz

来觉得使用哪种分辨率。

比如,我的xxx.v文件想调用lcd_para.h,xxx.v我可以写到: 

`define    VGA_800_600_60MHz  //这句要放在"lcd_para.v"的上面,不然编译不通过 
`include "lcd_para.h"

那么xxx.v文件中就可以用lcd_para.h中的参数了,且对应是VGA_800_600_60MHz下

的参数。

其次`include "lcd_para.h" 这个路径也有一点讲究,xxx.v作为引用lcd_para.h的文件

它和lcd_para.h在同一文件夹下才能怎么写,就是相对路径一说了。也就是以xxx.v

为当前路径去引索lcd_para.h文件的位子。所以如果他们不再一个文件夹那么请写出

更详细(正确)的路径。顺便说一句,lcd_para.h添不添加到工程是无所谓的,只要路径

对了即可,当然我还是建立添加到工程,且和.v文件放在同一文件夹下,以方便观察和管理。

原文地址:https://www.cnblogs.com/icdz1990/p/4197066.html