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

正文內(nèi)容

語法要點(diǎn)詳細(xì)講解-文庫吧資料

2024-09-09 04:22本頁面
  

【正文】 14:0] out。 input [7:0] a, b, c, d, e。 語法詳細(xì)講解 命名塊 語法詳細(xì)講解 禁止命名塊和任務(wù) module do_arith(out, a, b, c, d, e, clk, en_mult)。 注意: ? 命名塊使 Verilog有更廣闊的適用范圍 。 …… begin :seq_blk …… end …… fork : par_blk …… join …… endmodule ? 可以在命名塊中聲明本地變量 。 … .. end ……… 語法詳細(xì)講解 Verilog 函數(shù) 語法詳細(xì)講解 命名塊 ? 可以通過在關(guān)鍵字 begin或 fork后加上: 〈 塊名 〉 來給塊命名 。 K=K+1) reverse_bits[ MAX_BITS – (K+1)] = data [K]。 for(K=0。 function [ MAX_BIT:1] reverse_bits。 語法詳細(xì)講解 Verilog 函數(shù) … . parameter MAX_BITS =8。 end endmodule 語法詳細(xì)講解 Verilog 函數(shù) 函數(shù)類型 、 端口和行為定義時(shí)也可以使用參數(shù) , 這樣就可以構(gòu)成參數(shù)化函數(shù)使其返回的數(shù)據(jù)類型 、 輸入端口的位寬等很容易做修改。 //運(yùn)算結(jié)果可以為負(fù)數(shù) endfunction 語法詳細(xì)講解 Verilog 函數(shù) always (a or b) begin if ( subtr (a,b) 0) neg = 1。 input [7:0] in_a, in_b。 reg neg。 output neg。 我們可以在任何類型的表達(dá)式中調(diào)用函數(shù) 。 I= I+1) if (!in_bus[I]) zero_count = zero_count +1。 for (I=0。 integer I。 function [3:0] zero_count。 input [7:0] loo。 下例中的函數(shù) , 聲明了一個(gè)內(nèi)部整型變量 。如果定義函數(shù)的語句比較多時(shí) , 可以用 begin 和 end 把它們組合起來 。 {o1, o2, o3, o4} = f_or_and(a, b, c, d, e)。 ? 函數(shù)使 Verilog有更廣闊的適用范圍 。 ? 函數(shù)定義必須包含在模塊定義之內(nèi) 。 ? 函數(shù)必須至少有一個(gè)輸入 , 但絕不能含有任 何輸出和總線口; ? 一個(gè)函數(shù)只能返回一個(gè)值 , 該值的變量名與 函數(shù)同名 , 數(shù)據(jù)類型默認(rèn)為 reg類型 。 在模塊中 ,使用名為 f_or_and的函數(shù)時(shí) ,是把它作為名為 f_or_and 的寄存器類型變量來處理的 。 else f_or_and=0。 if (e= =1) f_or_and = (a|b) amp。 //函數(shù)調(diào)用 function [7:0] f_or_and。 reg [7:0] out。 input [7:0] a, b, c, d, e。 wait (en_mult) result=xme*tome。 //任務(wù)定義 input [3:0] xme, tome。 always (posedge clk) multme(a, b, out)。 output [7:0] out。 input clk, en_mult。任務(wù)調(diào)用時(shí)變量順序應(yīng)與任務(wù)定義中聲明的順序相同。 endtask always (posedge clk) reverse_bits (D)。 kMAX_BITS。 //雙向總線端口被當(dāng)作寄存器類型 ! integer K。 task reverse_bits。 語法詳細(xì)講解 Verilog 任務(wù) parameter MAX_BITS=8。 語法詳細(xì)講解 Verilog 任務(wù) 下面模塊中的任務(wù)只含有一個(gè)雙向總線 ( inout) 端口和一個(gè)內(nèi)部變量 , 沒有其它輸入端口 、 輸出端口和定時(shí)控制 , 沒有引用模塊變量 , 不顯示任何內(nèi)容 。 在任務(wù)或函數(shù)中 , 引用父模塊中聲明的變量時(shí)要特別注意 ( 即注意變量的層次命名規(guī)則 ) 。 這是因?yàn)槿蝿?wù)只有一組本地變量 , 同一時(shí)刻調(diào)用兩次相同的任務(wù)將會導(dǎo)致錯(cuò)誤 。 ? 關(guān)鍵字 disable可以用來禁止任務(wù)的執(zhí)行 。 ? 在任務(wù)中可以使用時(shí)間控制 。 傳遞給任務(wù)的變量與任務(wù) I/O端口變量的聲明次序相同 。 end endmodule 要點(diǎn): ? 任務(wù)調(diào)用是通過在 Verilog模塊中寫入任務(wù)名來實(shí)現(xiàn)的 。 neg_clocks(5)。 neg_clocks(3)。 a=1。 repeat(number_of_edges) (negedge clk)。 語法詳細(xì)講解 Verilog 任務(wù) task neg_clocks。 DUT u1(out, a, b, clk)。 module top。 語法詳細(xì)講解 Verilog中的高級結(jié)構(gòu) 語法詳細(xì)講解 Verilog 任務(wù) 下面模塊中的任務(wù)含有定時(shí)控制和一個(gè)輸入,并且引用了一個(gè)本模塊的變量,但是沒有輸出,也沒有雙向總線和內(nèi)部變量,不顯示任何內(nèi)容。 ? 只有當(dāng)任務(wù)或函數(shù)調(diào)用并執(zhí)行完后,才能有返回值。 ? 在任務(wù)和函數(shù)中不能聲明網(wǎng)絡(luò)連接類型的變量。 3) 函數(shù)只有 input變量 , 雖然沒有 output變量 , 4) 但可以通過函數(shù)名返回一個(gè)值 。 其中可以包含時(shí)間控制 ( 如: delays, , wait);也可以包含 input, output 、 inout 端口定義和參數(shù);也可以調(diào)用其他的任務(wù)或函數(shù) 語法詳細(xì)講解 Verilog中的高級結(jié)構(gòu) ? 函數(shù) : 1) 一般用于計(jì)算 , 或者用來代替組合邏輯 。 語法詳細(xì)講解 Verilog中的高級結(jié)構(gòu) 通過把代碼分成小的模塊或者使用任務(wù)和函數(shù) , 可把一項(xiàng)任務(wù)分成許多較小的 、 易于管理的部分 , 從而提高代碼的可讀性 、 可維護(hù)性和可重用性 。 ? 學(xué)會怎樣禁止命名塊和任務(wù) 。 語法詳細(xì)講解 雙向口建模 目標(biāo) : ? 學(xué)會怎樣定義或調(diào)用任務(wù)和函數(shù) 。 在 rd處于高電平時(shí) , 上述存儲單元通過數(shù)據(jù)總線讀出數(shù)據(jù) 。 endmodule 當(dāng) rd等于 1時(shí) datareg的值被賦給 databus 當(dāng) wr的下降沿到達(dá)時(shí),databus的值被寫入datareg 測試模塊 RAM單元 數(shù)據(jù)總線 數(shù)據(jù) 寄存 器 rd wr [注意 ]: 上頁中存儲單元在 wr的下降沿到達(dá)時(shí)存入數(shù)據(jù)。 assign databus = rd ? datareg:?bz。 input rd,wr。 //結(jié)構(gòu)模塊邏輯 endmodule 當(dāng) en_a_b = 1時(shí), bus_a的值傳到 bus_b上 當(dāng) en_b_a = 1時(shí), bus_b的值傳到 bus_a上 存儲器的端口建模: 語法詳細(xì)講解 雙向口建模 module ram_cell(databus,)。 assign bus_b = en_a_b? bus_a:?bz。 inout bus_a,bus_b。 所以必須把控制信號 en_a_b 和 en_b_a 在時(shí)間上分開 。 //結(jié)構(gòu)模塊邏輯 endmodule 當(dāng) en_a_b=1時(shí),元器件b1激活, bus_a的值傳到 bus_b上 當(dāng) en_b_a=1時(shí),元器件 b1激活, bus_b的值傳到bus_a上 使用連續(xù)賦值為雙向口建模: 語法詳細(xì)講解 雙向口建模 b2 b1 en_a_b en_b_a bus_a bus_b [注意 ]:在 assign語句中 , 通過 en_a_b和 en_b_a控制 bus_a與bus_b之間的數(shù)據(jù)交換 。 bufifl b1(bus_b,bus_a,en_a_b)。 inout bus_a,bus_b。 所以必須把控制信號 en_a_b 和 en_b_a 在時(shí)間上分開。當(dāng)把 inout口作為輸入口時(shí),必須通過控制邏輯禁止輸出到 inout口。不允許在過程塊( initial 或always塊)中對網(wǎng)絡(luò)連接類型的數(shù)據(jù)進(jìn)行過程賦值;但可以在過程塊外把一個(gè)寄存器數(shù)據(jù)類型通過連續(xù)賦值語句賦給它( inout口),或者把它與用戶定義的源語( UDP)相連。 語法詳細(xì)講解 怎樣使用雙向口 [注意 ]: ? 聲明一個(gè) inout口,可以用來輸入或輸出數(shù)據(jù)。 例如:當(dāng)使用總線讀 RAM中的數(shù)據(jù)時(shí) , 如果同時(shí)又向 RAM模型的雙向數(shù)據(jù)總線寫數(shù)據(jù) , 就會產(chǎn)生邏輯競爭 , 導(dǎo)致總線數(shù)據(jù)無法確定 。 ( 所以仿真器能確定多個(gè)驅(qū)動源的最終值 。 inout [7:0] databus。 注意:上面兩項(xiàng)必須寫 在 initial 塊中,加載這些初始化數(shù)據(jù)不需要時(shí)間。 ? 調(diào)用 $readmem系統(tǒng)任務(wù)。imemsize。 ? 使用循環(huán)把值賦給存儲器數(shù)組。 //存儲器地址 從 1 開始 //地址一個(gè)一個(gè)地增加直到包含了每個(gè)地址對應(yīng)的存儲器 wire [wordsize:1] mem_word = mem[address+1]。 [注意 ] !! 在上例中,存儲字的范圍從 0開始的,而不是從 1開始,這是因?yàn)榇鎯卧侵苯油ㄟ^地址線尋址定位的。 //mem declaration //output one word of memory wire [wordsize:1] mem_word=mem[address]。 //word of memory input [addr_bits:1] address。 //width of a word parameter words=(1addr_bits)。 parameter addr_bits=8。 ? 上頁的 RAM 模塊是可綜合的,但綜合出來是一大堆寄存器,占比較大的面積,經(jīng)濟(jì)上不太合算。 //從總線寫入存儲器 always (posedge write) memory[addr]=data。 reg [3:0] memory [0:15]。 inout [3:0] addr。 語法詳細(xì)講解 簡單 RAM建模 `ti
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1