日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

`include在Verilog中的應(yīng)用

 yanDreams 2015-03-18

"文件包含"處理`include

所謂"文件包含"處理是一個(gè)源文件可以將另外一個(gè)源文件的全部內(nèi)容包含進(jìn)來,即將另外的文件包含到本文件之中。Verilog HDL語言提供了`include命令用來實(shí)現(xiàn)"文件包含"的操作。其一般形式為:

`include "文件名"

圖中意思為:在編譯的時(shí)候,需要對(duì)`include命令進(jìn)行"文件包含"預(yù)處理:將File2.v的全部內(nèi)容復(fù)制插入到`include "File2.v"命令出現(xiàn)的地方,即將File2.v被包含到File1.v中,得到圖C的結(jié)果。在接著往下進(jìn)行編譯中,將"包含"以后的File1.v作為一個(gè)源文件單位進(jìn)行編譯。

"文件包含"命令是很有用的,它可以節(jié)省程序設(shè)計(jì)人員的重復(fù)勞動(dòng)??梢詫⒁恍┏S玫暮甓x命令或任務(wù)(task)組成一個(gè)文件,然后用`include命令將這些宏定義包含到自己所寫的源文件中,相當(dāng)于工業(yè)上的標(biāo)準(zhǔn)元件拿來使用。另外在編寫Verilog HDL源文件時(shí),一個(gè)源文件可能經(jīng)常要用到另外幾個(gè)源文件中的模塊,遇到這種情況即可用`include命令將所需模塊的源文件包含進(jìn)來。

[例1]:

(1)文件aaa.v

1
2
3
4
5
6
module aaa(a,b,out);
input a, b;
output out;
wire out;
assign out = a^b;
endmodule

(2)文件 bbb.v

1
2
3
4
5
6
7
8
9
`include "aaa.v"
module bbb(c,d,e,out);
input c,d,e;
output out;
wire out_a;
wire out;
aaa aaa(.a(c),.b(d),.out(out_a));
assign out=e&out_a;
endmodule

在上面的例子中,文件bbb.v用到了文件aaa.v中的模塊aaa的實(shí)例器件,通過"文件包含"處理來調(diào)用。模塊aaa實(shí)際上是作為模塊bbb的子模塊來被調(diào)用的。在經(jīng)過編譯預(yù)處理后,文件bbb.v實(shí)際相當(dāng)于下面的程序文件bbb.v:

1
2
3
4
5
6
module aaa(a,b,out);
input a, b;
output out;
wire out;
assign out = a ^ b;
endmodule
1
2
3
4
5
6
7
8
9
   
module bbb( c, d, e, out);
input c, d, e;
output out;
wire out_a;
wire out;
aaa aaa(.a(c),.b(d),.out(out_a));
assign out= e & out_a;
endmodule

關(guān)于"文件包含"處理的四點(diǎn)說明:

1) 一個(gè)`include命令只能指定一個(gè)被包含的文件,如果要包含n個(gè)文件,要用n個(gè)`include命令。注意下面的寫法是非法的`include"aaa.v""bbb.v"

2) `include命令可以出現(xiàn)在Verilog HDL源程序的任何地方,被包含文件名可以是相對(duì)路徑名,也可以是絕對(duì)路徑名。例如:'include"parts/count.v"

3) 可以將多個(gè)`include命令寫在一行,在`include命令行,只可以出空格和注釋行。例如下面的寫法是合法的。

'include "fileB" 'include "fileC" //including fileB and fileC

4) 如果文件1包含文件2,而文件2要用到文件3的內(nèi)容,則可以在文件1用兩個(gè)`include命令分別包含文件2和文件3,而且文件3應(yīng)出現(xiàn)在文件2之前。例如在下面的例子中,即在file1.v

中定義:

1
2
3
4
5
6
7
8
`include"file3.v"
`include"file2.v"
module test(a,b,out);
input[1:`size2] a, b;
output[1:`size2] out;
wire[1:`size2] out;
assign out= a+b;
endmodule

file2.v的內(nèi)容為:

1
2
3
4
`define size2 `size1+1
.
.
.

file3.v的內(nèi)容為:

1
2
3
4
`define size1 4
.
.
.

這樣,file1.v和file2.v都可以用到file3.v的內(nèi)容。在file2.v中不必再用 `include "file3.v"了。

5) 在一個(gè)被包含文件中又可以包含另一個(gè)被包含文件,即文件包含是可以嵌套的。例如

上面的問題也可以這樣處理。

它的作用和下圖的作用是相同的。

6)‘include語句一般只用于仿真多數(shù)綜合器不支持該語句。 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多