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文件放在同一文件夾下,以方便觀察和管理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM