成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C語(yǔ)言函數(shù)和任務(wù)的區(qū)別 c語(yǔ)言函數(shù)和任務(wù)的區(qū)別和聯(lián)系

verilog語(yǔ)言中任務(wù)和函數(shù)的區(qū)別

任務(wù)和函數(shù)有助于簡(jiǎn)化程序,有點(diǎn)類(lèi)似與Fortran語(yǔ)言的subroutine和function。

創(chuàng)新互聯(lián)建站是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作成都全網(wǎng)營(yíng)銷(xiāo)。我們專(zhuān)注企業(yè)品牌在網(wǎng)站中的整體樹(shù)立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶(hù)提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶(hù),為客戶(hù)提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

任務(wù)和函數(shù)的共同點(diǎn):

1.任務(wù)和函數(shù)必須在模塊內(nèi)定義,其作用范圍僅適用于該模塊,可以在模塊內(nèi)多次調(diào)用。

2.任務(wù)和函數(shù)中可以聲明局部變量,如寄存器,時(shí)間,整數(shù),實(shí)數(shù)和事件,但是不能聲明線(xiàn)網(wǎng)類(lèi)型的變量。

3.任務(wù)和函數(shù)中只能使用行為級(jí)語(yǔ)句,但是不能包含always和initial塊,設(shè)計(jì)者可以在always和initial塊中調(diào)用任務(wù)和函數(shù)。

任務(wù)和函數(shù)的不同點(diǎn):

函數(shù) 任務(wù)

函數(shù)能調(diào)用另一個(gè)函數(shù),但是不能調(diào)用任務(wù) 任務(wù)可以調(diào)用另一個(gè)任務(wù),也可以調(diào)用函數(shù)

函數(shù)總是在仿真時(shí)刻0開(kāi)始 任務(wù)可以在非零時(shí)刻開(kāi)始執(zhí)行

函數(shù)一定不能包含任何延遲,事件或者時(shí)序控制聲明語(yǔ)句 任務(wù)可以包含延遲,事件或者時(shí)序控制聲明語(yǔ)句

函數(shù)至少要有一個(gè)輸入變量,也可以有多個(gè)輸入變量 任務(wù)可以沒(méi)有或者有多個(gè)輸入,輸出,輸入輸出變量

函數(shù)只能返回一個(gè)值,函數(shù)不能有輸出或者雙向變量 任務(wù)不返回任何值,或者返回多個(gè)輸出或雙向變量值

由上述的特點(diǎn)決定:函數(shù)用于替代純組合邏輯的verilog代碼,而任務(wù)可以代替verilog的任何代碼。

8.2任務(wù)

任務(wù)使用關(guān)鍵字task和endtask來(lái)進(jìn)行聲明,如果子程序滿(mǎn)足下面任何一個(gè)條件,則必須使用任務(wù)而不能使用函數(shù)。

1.子程序中包含有延遲,時(shí)序或者事件控制結(jié)構(gòu)

2.沒(méi)有輸出或者輸出變量超過(guò)一個(gè)

3.沒(méi)有輸入變量

例:

module operation;

parameter delay=10;

reg [15:0] A,B, AB_AND,AB_OR,AB_XOR;

always @(A or B)

begin

bitwise_ope(AB_AND,AB_OR,AB_XOR,A,B);

end

task bitwise_oper;

output [15:0] ab_and,ab_or,ab_xor;

input [15:0] a,b;

begin

#delay ab_and=ab;

ab_or=a|b;

ab_xor=a^b;

end

endtask

always @(posedge clk)

bitwise_xor(ef_xor,e,f);

always @(posedege clk2)

bitwise_xor(cd_xor,c,d)

task autumatic bitwise_xor;

output ab_xor;

input a,b;

begin

ab_xor=a^b;

end

endtask

endmodule

自動(dòng)(可重入)任務(wù):verilog任務(wù)中所有聲明的變量地址空間都是靜態(tài)分配的,因此如果在一個(gè)模塊中多次調(diào)用任務(wù)時(shí),可能會(huì)造成地址空間的沖突,為了避免這個(gè)問(wèn)題,verilog通過(guò)在task關(guān)鍵字后面添加automatic使任務(wù)稱(chēng)為可重入的,這時(shí)在調(diào)用任務(wù)時(shí),會(huì)自動(dòng)給任務(wù)聲明變量分配動(dòng)態(tài)地址空間,這樣有效避免了地址空間的沖突。

8.3 函數(shù)

函數(shù)使用關(guān)鍵字function和endfunction定義,對(duì)于子程序,如果滿(mǎn)足下述所有條件則可以用函數(shù)來(lái)完成:

1.在子程序中不含有延遲時(shí)序或者控制結(jié)構(gòu)

2.子程序只有一個(gè)返回值

3.至少有一個(gè)輸入變量

4.沒(méi)有輸出或者雙向變量

5.不含有非阻塞賦值語(yǔ)句

例:

module parity;

reg [31:0] addr;

reg parity;

always @(addr)

begin

parity=calc_parity(addr);

end

function calc_parity;

input [31:0] addr;

begin

calc_parity=^addr;

end

endfunction

endmodule

跟任務(wù)調(diào)用一樣,在模塊中如果調(diào)用多次函數(shù),也會(huì)碰到地址沖突的問(wèn)題,因此也引入automatic關(guān)鍵字來(lái)對(duì)函數(shù)可重用性聲明。沒(méi)有進(jìn)行可重用性聲明的函數(shù)不可以多次或者遞歸調(diào)用,進(jìn)行了可重用性聲明的函數(shù)可以遞歸調(diào)用。

常量函數(shù)和帶符號(hào)函數(shù)(函數(shù)聲明時(shí)加signed關(guān)鍵字說(shuō)明)

module ram;

parameter RAM_DEPTH=256;

input [clogb2(RAM_DEPTH)-1:0] addr;//clogb2函數(shù)返回值為8

function integer clogb2(input integer depth);

begin

for(clogb2=0; depth0;clogb2=clogb2+1)

depth=depth1;

end

endfunction

endmodule

練習(xí):用兩種不同的方法設(shè)計(jì)一個(gè)功能相同的模塊,完成4個(gè)8位2進(jìn)制輸入數(shù)據(jù)的冒泡排序。第一種,用純組合邏輯實(shí)現(xiàn);第二種,假設(shè)8位數(shù)據(jù)按照時(shí)鐘節(jié)拍串行輸入,要求時(shí)鐘觸發(fā)任務(wù)的執(zhí)行,每個(gè)時(shí)鐘周期完成一次數(shù)據(jù)交換的操作。

//----------------- 第一種 ------------------

module sort4(ra,rb,rc,rd,a,b,c,d);

output[7:0] ra,rb,rc,rd;

input[7:0] a,b,c,d;

reg[7:0] ra,rb,rc,rd;

reg[7:0] va,vb,vc,vd;

always @ (a or b or c or d)

begin

{va,vb,vc,vd}={a,b,c,d};

change(va,vb);

change(vb,vc);

change(vc,vd);

change(va,vb);

change(vb,vc);

change(va,vb);

{ra,rb,rc,rd}={va,vb,vc,vd};

end

task change; //make a task of comparing

inout[7:0] x,y;

reg[7:0] tmp;

if(xy)

begin

tmp=x;

x=y;

y=tmp;

end

endtask

endmodule

//----------------- 第二種 ------------------

module sort4(clk,reset,ra,rb,rc,rd,a);

output[7:0] ra,rb,rc,rd;

input[7:0] a;

input clk,reset;

reg[7:0] ra,rb,rc,rd;

reg[7:0] va,vb,vc,vd;

always @ (posedge clk)

begin

if(!reset)

begin

va=0;vb=0;vc=0;vd=0;

end

else

va=a;

end

always @ (posedge clk)

begin

change(va,vb);

change(vb,vc);

change(vc,vd);

change(va,vb);

change(vb,vc);

change(va,vb);

{ra,rb,rc,rd}={va,vb,vc,vd};

end

task change; //make a task of comparing

inout[7:0] x,y;

reg[7:0] tmp;

if(xy)

begin

tmp=x;

x=y;

y=tmp;

end

endtask

endmodule

C語(yǔ)言函數(shù)的特點(diǎn)及其定義?

C語(yǔ)言中一個(gè)函數(shù)(function)是一個(gè)可以從程序其它地方調(diào)用執(zhí)行的語(yǔ)句塊。

1、通過(guò)使用函數(shù)(functions)我們可以把我們的程序以更模塊化的形式組織起來(lái),從而利用C語(yǔ)言所支持的結(jié)構(gòu)化程序設(shè)計(jì)。

2、從數(shù)學(xué)角度,函數(shù)即集合A和集合B之間的映射關(guān)系。實(shí)際上計(jì)算機(jī)中的函數(shù)概念也是源于此,因此,一般函數(shù),都有形參和返回值。

3、從計(jì)算機(jī)組成原理的角度來(lái)看,函數(shù)即是一個(gè)小型的計(jì)算機(jī)系統(tǒng),依據(jù)馮諾伊曼的“存儲(chǔ)程序原理”,每一個(gè)計(jì)算機(jī)系統(tǒng)包含:輸入系統(tǒng)、輸出系統(tǒng)、運(yùn)算器以及控制器,實(shí)際上對(duì)于C語(yǔ)言中的函數(shù)來(lái)說(shuō),它是“存儲(chǔ)程序原理”的軟實(shí)現(xiàn),其中形參、實(shí)參這是輸入系統(tǒng),返回值是輸出系統(tǒng),函數(shù)體中的運(yùn)算符,比如+、-、*、/四則運(yùn)算即為運(yùn)算器,而邏輯運(yùn)算符以及if、while等控制語(yǔ)句便是一個(gè)控制器。

C語(yǔ)言的關(guān)鍵字和函數(shù)有什么區(qū)別

關(guān)鍵字通俗的說(shuō)就是命令。例如int關(guān)鍵字是定義int類(lèi)型變量的命令。 函數(shù)是封裝了一些代碼可以完成某項(xiàng)任務(wù)。例如printf()函數(shù),是封裝了輸出代碼,至于里邊有什么代碼不必知道,知道函數(shù)是干什么的就成。函數(shù)可以自定義,你也可以把自己常用的一段代碼封裝起來(lái),最為一個(gè)函數(shù),下次用就不用再寫(xiě)這段代碼了,直接調(diào)用函數(shù)就ok了。

C語(yǔ)言中函數(shù)和函數(shù)體的區(qū)別是什么?

C語(yǔ)言中函數(shù)和函數(shù)體的區(qū)別為:傳遞參數(shù)不同、返回值不同、調(diào)用不同。

一、傳遞參數(shù)不同

1、函數(shù):函數(shù)具有明確的入口傳遞參數(shù)。

2、函數(shù)體:函數(shù)體沒(méi)有明確的入口傳遞參數(shù),內(nèi)部進(jìn)行定義和說(shuō)明。

二、返回值不同

1、函數(shù):函數(shù)可以有返回值也可以設(shè)為void,不返回返回值。

2、函數(shù)體:函數(shù)體沒(méi)有返回值。

三、調(diào)用不同

1、函數(shù):由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次。

2、函數(shù)體:函數(shù)體可以調(diào)用一個(gè)或多個(gè)函數(shù),但函數(shù)體之間不能互相調(diào)用。

網(wǎng)站名稱(chēng):C語(yǔ)言函數(shù)和任務(wù)的區(qū)別 c語(yǔ)言函數(shù)和任務(wù)的區(qū)別和聯(lián)系
文章地址:http://jinyejixie.com/article34/ddojgse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、、服務(wù)器托管、網(wǎng)站設(shè)計(jì)域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
宜州市| 长春市| 汉沽区| 全南县| 余姚市| 厦门市| 邯郸县| 麟游县| 易门县| 曲阜市| 临邑县| 曲麻莱县| 乌什县| 胶州市| 乌兰浩特市| 涞源县| 琼海市| 玛纳斯县| 丰城市| 阿克苏市| 长汀县| 霞浦县| 广水市| 东方市| 凯里市| 蓬安县| 盈江县| 保靖县| 景洪市| 锦屏县| 谷城县| 汤阴县| 东港市| 孟连| 洪雅县| 大悟县| 长宁区| 陈巴尔虎旗| 延津县| 朝阳区| 三亚市|