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

正文內(nèi)容

語法要點(diǎn)詳細(xì)講解(已修改)

2024-09-17 04:22 本頁面
 

【正文】 語法要點(diǎn)詳細(xì)講解 ? 有關(guān)測試模塊編寫的語法 ; ? 語法的高級(jí)部分: 函數(shù)、任務(wù)、文件、存貯器建立模型、 雙向總線、 UDP、綜合指令。 語法詳細(xì)講解 Verilog測試模塊的編寫 目的: ? 復(fù)習(xí)如何編寫較復(fù)雜的測試文件,對(duì)所做的設(shè)計(jì) 進(jìn)行完整的測試和驗(yàn)證。 ? 掌握組織模塊測試的常用方法;學(xué)會(huì)編寫常用的 測試代碼。 語法詳細(xì)講解 用 Verilog設(shè)計(jì)的步驟 注:虛線表示編譯器能檢查輸入文件的可讀性和是否存在以及是否允許生成輸出文件 include 文件 設(shè)計(jì)文件 廠家元件 庫文件 輸入文件:激勵(lì)和期望的輸出信號(hào) 輸出文件:激勵(lì)和實(shí)際輸出的信號(hào) 編譯器 仿真器 仿真器 語法詳細(xì)講解 測試平臺(tái)的組成 激勵(lì) 信號(hào) 需要驗(yàn)證的 設(shè)計(jì) 激勵(lì)信號(hào) 和用于驗(yàn) 證的結(jié)果 數(shù)據(jù) 需要驗(yàn)證的 設(shè)計(jì) 簡單的測試平臺(tái) 復(fù)雜的測試平臺(tái) 語法詳細(xì)講解 并行塊 在測試塊中常用到 fork… join塊 。 用并行塊能表示以同一個(gè)時(shí)間起點(diǎn)算起的多個(gè)事 件的運(yùn)行 , 并行地執(zhí)行復(fù)雜的過程結(jié)構(gòu) , 如循環(huán)或任務(wù) 。 舉例說明如下: module inline_tb。 reg [7:0] data_bus。 initial fork data_bus= 8?b00。 10 data_bus = 8?h45。 //這兩個(gè) repeat開始執(zhí)行時(shí)間不同 , 但能同時(shí)運(yùn)行 20 repeat (10) 10 data_bus = data_bus +1。 25 repeat (5) 20 data_bus = data_bus 1。 140 data_bua = 8?h0f。 join endmodule 語法詳細(xì)講解 并行塊 時(shí)間 data_bus 0 8?b0000_0000 10 8?b0100_0101 30 8?b0100_0110 40 8?b0100_0111 45 8?b1000_1110 50 8?b1000_1111 60 8?b1001_0000 65 8?b0010_0000 70 8?b0010_0001 時(shí)間 data_bus 80 8?b0010_0010 85 8?b0100_0100 90 8?b0100_0101 100 8?b0010_0001 105 8?b0100_0110 110 8?b1000_1100 120 8?b1000_1110 125 8?b0001_1100 140 8?b0000_1111 上面模塊的仿真輸出如下: 語法詳細(xì)講解 強(qiáng)制激勵(lì) 在一個(gè)過程塊中 , 可以用兩種不同的方式對(duì)信號(hào)變量或表達(dá)式進(jìn)行連續(xù)賦值 。 ? 過程連續(xù)賦值往往是不可以綜合的 , 通常用在測試模塊中 。 ? 兩種方式都有各自配套的命令來停止賦值過程 。 ? 兩種不同方式均不允許賦值語句間的時(shí)間控制 。 assign和 deassign 適用于對(duì)寄存器類型的信號(hào) ( 例如: RTL級(jí)上的節(jié)點(diǎn)或測試模塊中在多個(gè)地方被賦值的信號(hào) ) 進(jìn)行賦值 。 initial begin 10 assign = `init_state。 20 deassign 。 end force 和 release 用于寄存器類型和網(wǎng)絡(luò)連接類型(例如:門級(jí)掃描寄存器的輸出)的強(qiáng)制賦值,強(qiáng)制改寫其它地方的賦值。 initial begin 10 force =0。 20 release 。 end 在以上兩個(gè)例子中,在 10到 20 這個(gè)時(shí)間段內(nèi),網(wǎng)絡(luò)或寄存器類型的信號(hào)被強(qiáng)制賦值,而別處對(duì)該變量的賦值均無效。 force的賦值優(yōu)先級(jí)高于 assign。 如果先使用 assign,再使用 force對(duì)同一信號(hào)賦值,則信號(hào)的值為 force所賦 的值, 語法詳細(xì)講解 強(qiáng)制激勵(lì) 語法詳細(xì)講解 強(qiáng)制激勵(lì) 當(dāng)執(zhí)行 release后,則信號(hào)的值為 assign所賦 的值。 如果用 force對(duì)同一個(gè)信號(hào)賦了幾次值,再執(zhí)行release,則所有賦的值均不再存在。 可以對(duì)信號(hào)的某(確定)位、某些(確定)位或拼接的信號(hào),使用 force和 release賦值;但不能對(duì)信號(hào)的可變位使用 force和 release 來賦值。 不能對(duì)寄存器類型的信號(hào)某位或某些位使用 assign 和 deassign 來賦值。 雖然有時(shí)在設(shè)計(jì)中會(huì)包含時(shí)鐘,但時(shí)鐘通常用在測試模塊中。下面 三個(gè)例子分別說明如何在門級(jí)和行為級(jí)建立不同波形的時(shí)鐘模型。 [例 1] 簡單的對(duì)稱方波時(shí)鐘: reg clk。 always begin period/2 clk=0。 period/2 clk=1。 end reg go。 wire clk。 nand (period/2) ul (clk,clk,go)。 initial begin go=0。 (period/2) go=1。 end 注:在有些仿真器中,如果設(shè)計(jì)所用的時(shí)鐘是由與其相同抽象級(jí)別的時(shí)鐘模型產(chǎn)生的,則仿真器的性能就能得到提高。 語法詳細(xì)講解 建立時(shí)鐘 [例 2]簡單的帶延遲的對(duì)稱方波時(shí)鐘: 語法詳細(xì)講解 建立時(shí)鐘 reg clk。 initial begin clk=0。 (period) forever (period/2) clk=!clk end reg go。 wire clk。 nand (period/2) ul (clk,clk,go)。 initial begin go=0。 (period) go=1。 end 注:這兩個(gè)時(shí)鐘模型有些不同,行為描述的模型延遲期間一直是低電平,而門級(jí)描述的模型開始延遲有半個(gè)周期是不確定的。 [例 3]. 帶延遲、頭一個(gè)脈沖不規(guī)則的、占空比不為 1的時(shí)鐘: reg clk。 initial begin (period+1) clk=1。 (period/21) forever begin (period/4) clk=0。 (3*period/4) clk=1。 end end reg go。 wire clk。 nand (3*period/4,period/4) ul (clk,clk,go)。 initial begin (period/4+1) go=0。 (5*period/41) go=1。 end 注:這兩個(gè)時(shí)鐘模型也有些不同,行為描述的模型一開始就有確定的電平,而門級(jí)描述的模型有延遲 , 開始時(shí)電平是不確定的。 語法詳細(xì)講解 建立時(shí)鐘 [例 2]簡單的帶延遲的對(duì)稱方波時(shí)鐘: 語法詳細(xì)講解 建立時(shí)鐘 reg clk。 initial begin clk=0。 (period) forever (period/2) clk=!clk end reg go。 wire clk。 nand (period/2) ul (clk,clk,go)。 initial begin go=0。 (period) go=1。 end 注:這兩個(gè)時(shí)鐘模型有些不同,行為描述的模型延遲期間一直是低電平,而門級(jí)描述的模型開始延遲有半個(gè)周期是不確定的。 語法詳細(xì)講解 怎樣使用任務(wù) 舉例說明如何使用任務(wù): module bus_ctrl_tb。 reg [7:0] data。 reg data_valid, data_rd。 cpu ul(data_valid,data,data_rd)。 initial begin cpu_driver (8?b0000_0000)。 cpu_driver (8?b1010_1010)。 cpu_driver (8?b0101_0101)。 end 語法詳細(xì)講解 怎樣使用任務(wù) task cpu_driver。 input [7:0] data_in。 begin 30 data_valid =1。 wait (data_rd = =1)。 20 data = data_in。 wait (data_rd= =0)。 20 data = 8?hzz。 30 data_valid = 0。 end endtask endmodule 語法詳細(xì)講解 怎樣使用任務(wù) 在測試模塊中使用任務(wù)可以提高程序代碼的效率,可以用任務(wù)把多次重復(fù)的操作包裝起來。 wait wait wait wait data1 data2 data3 data4 cpu_data clk data_valid data_rd read_cpu_state 語法詳細(xì)講解 存儲(chǔ)建模 目標(biāo) 學(xué)會(huì)如何用 Verilog對(duì)存儲(chǔ)器建模。 學(xué)會(huì)如何用 Verilog中對(duì)雙向(即輸入 /輸出)端口 , ( inout)建模。 存儲(chǔ)器建模必須注意以下兩個(gè)方面的問題: ? 聲明存儲(chǔ)器容量的大小。 ? 明確對(duì)存儲(chǔ)器訪問操作的權(quán)限。 例如:指出可以對(duì)存儲(chǔ)器做以下哪幾種操作: 1)只讀 2)讀寫 3)同步讀寫 4)多次讀,同時(shí)進(jìn)行一次寫 5)多次同步讀寫,同時(shí)提供一些方法保證一致性 語法詳細(xì)講解 存儲(chǔ)器建模 `timescale 1ns/10ps module myrom(read_data,addr,read_en_)。 input read_en_。 input [3:0] addr。 output [3:0] read_data。 reg [3:0] read_data。 reg [3:0] mem [0:15]。 initial $readmemb(“my_rom_data”,mem)。 always @ (addr or read_en_) if(!read_en_) read_data=mem[addr]。 endmodule 語法詳細(xì)講解 簡單 ROM 建模 my_rom_data 0000 0101 1100 0011 1101 0010 0011 1111 1000 1001 1000 0001 1101 1010 0001 1101 ROM的數(shù)據(jù)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1