freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

語(yǔ)法要點(diǎn)詳細(xì)講解(編輯修改稿)

2024-10-07 04:22 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 傳遞給任務(wù)的變量與任務(wù) I/O端口變量的聲明次序相同 。 雖然傳遞給任務(wù)的變量名可以和任務(wù)內(nèi)聲明的 I/O端口變量名相同 , 但是為了使任務(wù)成為一個(gè)獨(dú)立的可共用的任務(wù)塊 , 建議不要使用與任務(wù)內(nèi)聲明的 I/O端口變量名相同的變量名 , 最好給傳遞到任務(wù)的變量起新的不同的名字 。 ? 在任務(wù)中可以使用時(shí)間控制 。 ? 任務(wù)使 Verilog有更廣闊的適用范圍 。 ? 關(guān)鍵字 disable可以用來(lái)禁止任務(wù)的執(zhí)行 。 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) [注意 ]: 不要在程序的不同部分同時(shí)調(diào)用同一個(gè)任務(wù) 。 這是因?yàn)槿蝿?wù)只有一組本地變量 , 同一時(shí)刻調(diào)用兩次相同的任務(wù)將會(huì)導(dǎo)致錯(cuò)誤 。 這種情況常發(fā)生在使用定時(shí)控制的任務(wù)中 。 在任務(wù)或函數(shù)中 , 引用父模塊中聲明的變量時(shí)要特別注意 ( 即注意變量的層次命名規(guī)則 ) 。 若想在其它模塊中調(diào)用任務(wù)或函數(shù) , 該任務(wù)和函數(shù)中所使用的變量必須全都包含在輸入 /輸出口列表中 。 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) 下面模塊中的任務(wù)只含有一個(gè)雙向總線 ( inout) 端口和一個(gè)內(nèi)部變量 , 沒(méi)有其它輸入端口 、 輸出端口和定時(shí)控制 , 沒(méi)有引用模塊變量 , 不顯示任何內(nèi)容 。 在任務(wù)調(diào)用時(shí) , 任務(wù)的輸入變量 ( 端口 ) 在任務(wù)內(nèi)部被當(dāng)作寄存器類(lèi)型變量處理 。 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) parameter MAX_BITS=8。 reg [MAX_BITS:1] D。 task reverse_bits。 inout [7:0] data。 //雙向總線端口被當(dāng)作寄存器類(lèi)型 ! integer K。 for (k=0。 kMAX_BITS。 K=K+1) reverse_bits [MAXBITS – (K+1)] = data[K]。 endtask always @ (posedge clk) reverse_bits (D)。 …… 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) 下面模塊中定義的任務(wù)含有輸入、輸出、時(shí)間控制和一個(gè)內(nèi)部變量,并且引用了一個(gè)本模塊的變量,但是沒(méi)有輸出,不顯示任何內(nèi)容。任務(wù)調(diào)用時(shí)變量順序應(yīng)與任務(wù)定義中聲明的順序相同。 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) module mult(clk, a, b, out, en_mult)。 input clk, en_mult。 input [3:0] a, b。 output [7:0] out。 reg [15:0] out。 always @ (posedge clk) multme(a, b, out)。 //任務(wù)調(diào)用 task multme。 //任務(wù)定義 input [3:0] xme, tome。 output [7:0] result。 wait (en_mult) result=xme*tome。 endtask endmodule 語(yǔ)法詳細(xì)講解 Verilog 任務(wù) module orand (a, b, c, d, e, out)。 input [7:0] a, b, c, d, e。 output [7:0] out。 reg [7:0] out。 always @ (a or b or c or d or e) out = f_or_and (a, b, c, d, e)。 //函數(shù)調(diào)用 function [7:0] f_or_and。 input [7:0] a, b, c, d, e。 if (e= =1) f_or_and = (a|b) amp。 (c|d)。 else f_or_and=0。 endfunction endmodule 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 雖然函數(shù)不能包含定時(shí)控制 ,但是可以在包含定時(shí)控制的過(guò)程塊中調(diào)用函數(shù) 。 在模塊中 ,使用名為 f_or_and的函數(shù)時(shí) ,是把它作為名為 f_or_and 的寄存器類(lèi)型變量來(lái)處理的 。 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 要點(diǎn) ? 函數(shù)定義不能包含任何定時(shí)控制語(yǔ)句 。 ? 函數(shù)必須至少有一個(gè)輸入 , 但絕不能含有任 何輸出和總線口; ? 一個(gè)函數(shù)只能返回一個(gè)值 , 該值的變量名與 函數(shù)同名 , 數(shù)據(jù)類(lèi)型默認(rèn)為 reg類(lèi)型 。 ? 傳遞給函數(shù)的變量順序與函數(shù)輸入口聲明的 順序相同 。 ? 函數(shù)定義必須包含在模塊定義之內(nèi) 。 ? 函數(shù)不能調(diào)用任務(wù) , 但任務(wù)可以調(diào)用函數(shù) 。 ? 函數(shù)使 Verilog有更廣闊的適用范圍 。 ? 雖然函數(shù)只能返回一個(gè)值 , 但是它的返回值 可以直接賦給一個(gè)由多個(gè)子信號(hào)拼接構(gòu)成的 信號(hào)變量 , 使其實(shí)際等效于產(chǎn)生了多個(gè)輸出 。 {o1, o2, o3, o4} = f_or_and(a, b, c, d, e)。 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 在函數(shù)定義時(shí) , 如果在函數(shù)名前面定義了位寬 , 該函數(shù)就可以返回由多位構(gòu)成的矢量 。如果定義函數(shù)的語(yǔ)句比較多時(shí) , 可以用 begin 和 end 把它們組合起來(lái) 。 在函數(shù)內(nèi) , 無(wú)論以函數(shù)名命名的變量被賦了多少次值 , 函數(shù)只有一個(gè)返回值 。 下例中的函數(shù) , 聲明了一個(gè)內(nèi)部整型變量 。舉例說(shuō)明如下: 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) module foo。 input [7:0] loo。 //也可以用連續(xù)賦值語(yǔ)句調(diào)用函數(shù) wire [7:0] goo = zero_count (loo)。 function [3:0] zero_count。 input [7:0] in_bus。 integer I。 begin zero_count = 0。 for (I=0。 I8。 I= I+1) if (!in_bus[I]) zero_count = zero_count +1。 end endfunction endmodule 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 若把函數(shù)定義為整型 、 實(shí)型或時(shí)間類(lèi)型 , 就可以返回相應(yīng)類(lèi)型的數(shù)據(jù) 。 我們可以在任何類(lèi)型的表達(dá)式中調(diào)用函數(shù) 。 module checksub(neg,in_a,in_b)。 output neg。 input a, b。 reg neg。 function integer subtr。 input [7:0] in_a, in_b。 subtr = in_a – in_b。 //運(yùn)算結(jié)果可以為負(fù)數(shù) endfunction 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) always @ (a or b) begin if ( subtr (a,b) 0) neg = 1。 else neg = 0。 end endmodule 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 函數(shù)類(lèi)型 、 端口和行為定義時(shí)也可以使用參數(shù) , 這樣就可以構(gòu)成參數(shù)化函數(shù)使其返回的數(shù)據(jù)類(lèi)型 、 輸入端口的位寬等很容易做修改。 所以參數(shù)化函數(shù)就有更廣泛的適用范圍 。 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) … . parameter MAX_BITS =8。 reg [MAX_BITS:1] D。 function [ MAX_BIT:1] reverse_bits。 input [7:0] data。 for(K=0。 K MAX_BITS。 K=K+1) reverse_bits[ MAX_BITS – (K+1)] = data [K]。 endfunction always @ (posedge clk) begin … . D= reverse_bits(D)。 … .. end ……… 語(yǔ)法詳細(xì)講解 Verilog 函數(shù) 語(yǔ)法詳細(xì)講解 命名塊 ? 可以通過(guò)在關(guān)鍵字 begin或 fork后加上: 〈 塊名 〉 來(lái)給塊命名 。 module named_blk。 …… begin :seq_blk …… end …… fork : par_blk …… join …… endmodule ? 可以在命名塊中聲明本地變量 。 ? 可以使用 disable禁止命名塊 。 注意: ? 命名塊使 Verilog有更廣闊的適用范圍 。 ? 命名塊的使用縮短了仿真的時(shí)間 。 語(yǔ)法詳細(xì)講解 命名塊 語(yǔ)法詳細(xì)講解 禁止命名塊和任務(wù) module do_arith(out, a, b, c, d, e, clk, en_mult)。 input clk, en_mult。 input [7:0] a, b, c, d, e。 output [15:0] out。 reg [14:0] out。 always @(posedge clk) begin : arith_block //***命名名為 arith_block的塊 *** reg [3:0] tmp1, tmp2。 //***本地變量 *** {tmp, tmp2} = f_or_and(a, b, c, d, e)。 // 函數(shù)調(diào)用 if(en_mult) multme(tmp1, tmp2, out)。 //任務(wù)調(diào)用 end 語(yǔ)法詳細(xì)講解 禁止命名塊和任務(wù) always @(negedge en_mult) begin //停止計(jì)算 disable multme。 //**禁止任務(wù)的執(zhí)行 diable arith_block。 //**禁止命名塊的執(zhí)行 end //在此定義任務(wù)和函數(shù) ………… .. endmodle 注意: ? disable語(yǔ)句用來(lái)終止命名塊或任務(wù)的執(zhí)行 。 這是指在尚未執(zhí)行該命名塊或任務(wù)任何一條語(yǔ)句前 , 就從該命名塊 /任務(wù)執(zhí)行中返回 。 語(yǔ)法: disable 〈 塊名 〉 或 disable 〈 任務(wù)名 〉 ? 禁止執(zhí)行命名塊或任務(wù)后 , 所有在事件隊(duì)列中由該命名塊/任務(wù)安排的事件都將被
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1