《EDAVerilog語言》PPT課件
《《EDAVerilog語言》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《EDAVerilog語言》PPT課件(81頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、sl 1) Net( 網(wǎng) 絡(luò) 連 線 ) :由模 塊 或 門 驅(qū) 動 的 連 線 。驅(qū) 動 端 信 號 的 改 變 會 立 刻傳 遞 到 輸 出 的 連 線 上 。例 如 : 右 圖 上 , selb的 改變 , 會 自 動 地 立 刻 影 響 或門 的 輸 出 。 netsab selbselansl out如 果 不 明 確 地 說 明 連 接 是 何種 類 型 , 應(yīng) 該 是 指 wire 類 型 。Verilog語 言 2) 寄 存 器 ( reg) 類 型 數(shù) 據(jù) 儲 存 單 元 的 抽 象 。 默 認(rèn) 初 始 值 為 X 常 用 行 為 語 句 結(jié) 構(gòu) 來 給 寄 存 器 類 型
2、的 變 量 賦 值 。 用 來 表 示always塊 內(nèi) 的 指 定 信 號absl selbnsl outreg_areg_selreg_b常 為 寄 存 器 或觸 發(fā) 器 的 輸 出 Verilog語 言( 在 always塊 內(nèi) 被 賦 值 的 每 個(gè) 信 號都 必 須 定 義 成 reg型 )sela 格 式 : regn-1:0 數(shù) 據(jù) 名 1, 數(shù) 據(jù) 名 2, , 數(shù) 據(jù) 名 i;或 regn:1 數(shù) 據(jù) 名 1, 數(shù) 據(jù) 名 2, , 數(shù) 據(jù) 名 i;例 : reg rega; reg3:0 regb, regc; 可 以 賦 正 值 也 可 以 賦 負(fù) 值 , 但 當(dāng) 一 個(gè)
3、 reg型 數(shù) 據(jù) 是 一 個(gè) 表 達(dá) 式中 的 操 作 數(shù) 時(shí) , 它 的 值 被 當(dāng) 作 無 符 號 值 , 即 正 值 。如 regb被 賦 值 為 -1, 在 表 達(dá) 式 中 被 認(rèn) 為 是 ? ? Verilog語 言 例 : 寄 存 器 的 聲 明 和 使 用 reg reset; initial begin reset=1b1; #100 reset=1b0; end reg signed 63:0 m;integer i;Verilog語 言 3) 整 數(shù) 、 實(shí) 數(shù) 和 時(shí) 間 寄 存 器 類 型integer( 通 用 寄 存 器 數(shù) 據(jù) 類 型 , 用 于 對 數(shù) 量 進(jìn)
4、 行 操 作 ) 例 : integer counter;/一 般 用 途 , 做 為 計(jì) 數(shù) 器 inital counter=-1;real 實(shí) 常 量 和 實(shí) 寄 存 器 數(shù) 據(jù) 類 型 使 用 , 默 認(rèn) 值 為 0 例 : Verilog語 言 time 保 存 仿 真 時(shí) 間 , 通 過 系 統(tǒng) 函 數(shù) $time可 以 得 到 當(dāng) 前 的 仿 真 時(shí) 間例 : time sve_sim_time; initial save_sim_time=$time; 4) 向 量線 網(wǎng) 和 寄 存 器 類 型 的 數(shù) 據(jù) 均 可 聲 明 為 向 量 ( 位 寬 大 于 1) 。 若 沒 有
5、指 定 位寬 , 則 默 認(rèn) 為 標(biāo) 量 ( 1位 ) 。例 : wire a; wire 7:0 bus; wire 31:0 busA,busB,busC; reg clock; reg 0:40 virtual_addr;/最 高 有 效 位 為 第 0位Verilog語 言 向 量 域 選 擇對 上 例 中 向 量 , 可 以 指 定 它 的 某 一 位 或 若 干 個(gè) 相 鄰 位busA 7bus 2:0 /不 可 以 寫 成 bus0:2,高 位 應(yīng) 寫 在 范 圍 說 明 的 左 側(cè)virtual_addr 0:1可 變 的 向 量 域 選 擇+:width 從 起 始 位 開
6、始 遞 增 , 位 寬 為 width-:width 從 起 始 位 開 始 遞 減 , 位 寬 為 widthVerilog語 言 Verilog語 言reg255:0 data1;reg0:255 data2;reg7:0 byte;byte=data1 31-:8;從 第 31位 算 起 , 寬 度 為 8位 , 相 當(dāng) 于data131:24byte=data1 24+:8;byte=data2 31-:8;從 第 31位 算 起 , 寬 度 為 8位 , 相 當(dāng) 于data124:31byte=data2 24+:8;/起 始 位 可 以 是 變 量 , 但 寬 度 必 須 為 常
7、數(shù) for (j=0;j=31;j=j+1) byte=data1(j*8)+:8;data1 (byteNum*8)+:8=8b0; 5) 數(shù) 組Verilog中 允 許 聲 明 reg, integer, time, real, realtime及 其 向 量 類 型 的數(shù) 組 , 對 數(shù) 組 的 維 數(shù) 沒 有 限 制 , 線 網(wǎng) 數(shù) 組 也 可 用 于 連 接 實(shí) 例 的 端 口integer count 0:7;reg bool31:0;time chk_point 1:100;/由 100個(gè) 時(shí) 間 檢 查 變 量 組 成 的 數(shù) 組reg 4:0 port_id 0:7;/由 8
8、個(gè) 端 口 標(biāo) 識 變 量 組 成 的 數(shù) 組 , 端 口 變 量 的 位 寬 為 5integer matrix 4:00:255;/二 維 的 整 數(shù) 型 數(shù) 組reg 63:0 array_4d 15:07:07:0255:0;/四 維 64位 寄 存 器 型 數(shù) 組wire 7:0 w_array17:05:0;/聲 明 8位 線 型 變 量 的 二 維 數(shù) 組Verilog語 言 count5=0;chk_point100=0;port_id3=0;matrix 10=33559; /第 1行 第 0列 的 整 數(shù) 型 單 元 置 為 33559array_4d000015:0=0;
9、 /把 四 維 數(shù) 組 中 索 引 號 為 0000的 寄 存 器 型 單 元 的 015位 置 為 0port_id=0; /非 法matrix1=0; /非 法 Verilog語 言 6) memory類 型通 過 擴(kuò) 展 reg型 數(shù) 據(jù) 的 地 址 范 圍 生 成 格 式 : regn-1:0 存 儲 器 名 m-1:0;或 者 regn-1:0 存 儲 器 名 m:1;例 : reg7:0 memea255:0; 必 須 為 常 數(shù)表 達(dá) 式Parameter wordsize=16, memsize=256 ;regwordsize-1:0 memmemsize-1:0, wrei
10、tereg, readreg;Verilog語 言 注 意 : regn-1:0 rega; reg meman-1:0; rega=0; mema=0; mema3=0; Verilog語 言 7) 參 數(shù)使 用 關(guān) 鍵 字 parameter在 模 塊 內(nèi) 定 義 常 數(shù) , 不 能 像 變 量 那 樣 賦 值 , 但 每個(gè) 模 塊 實(shí) 例 的 參 數(shù) 值 可 以 在 編 譯 階 段 被 重 載 ( defparam)parameter cache_line_width=256;/定 義 高 速 緩 沖 器 寬 度parameter signed 15:0 WIDTH;/把 參 數(shù) WID
11、TH規(guī) 定 為 有 正 負(fù) 號 , 寬 度 為 16位局 部 參 數(shù) 使 用 localparam定 義 , 值 不 能 改 變 , 不 能 通 過 參 數(shù) 重 載 或有 序 參 數(shù) 列 表 或 命 名 參 數(shù) 賦 值 來 直 接 修 改例 : 狀 態(tài) 機(jī) 的 狀 態(tài) 編 碼loacalparam state1=4b0001, state2=4b0010, state3=4b0100, state4=4b1000; Verilog語 言 參 數(shù) 值 的 改 寫 (方 法 之 一 )舉 例 說 明 :module mod ( out, ina, inb);parameter cycle = 8,
12、 real_constant=2.039, file = “/user1/jmdong/design/mem_file.dat”;endmodulemodule test; mod mk(out,ina,inb); defparam mk.cycle=6, mk.file=“./my_mem.dat”; endmodule Verilog語 言 參 數(shù) 值 的 改 寫 (方 法 之 二 )舉 例 說 明 :module mod ( out, ina, inb);parameter cycle = 8, real_constant=2.039, file = “/user1/jmdong/des
13、ign/mem_file.dat”;endmodulemodule test; mod # (5, 3.20, “./my_mem.dat”) mk(out,ina,inb); endmodule Verilog語 言 模 塊 DUT的 邊 界輸 入 口 輸 出 口輸 出 /入 口netnet/register net/registernet inoutVerilog語 言 8) 端 口 net net可 以 將 端 口 看 成 是 由 相 互連 接 的 兩 個(gè) 部 分 組 成 。 輸 入 口 ( input)對 于 模 塊 內(nèi) 部 , 必 須 為 線 網(wǎng) 類 型 ; 從 模 塊 外 部 看
14、, 可 以 為 線 網(wǎng) 或 reg型輸 出 口 (output)從 模 塊 內(nèi) 部 看 , 可 以 是 線 網(wǎng) 或 reg型 ; 從 外 部 看 , 必 須 為 線 網(wǎng) 類 型輸 入 /輸 出 口 (inout)從 模 塊 內(nèi) 部 看 , 必 須 為 線 網(wǎng) 類 型 ; 從 外 部 看 , 也 必 須 為 線 網(wǎng) 類 型對 模 塊 調(diào) 用 時(shí) , Verilog允 許 端 口 的 內(nèi) 、 外 具 有 不 同 的 位 寬 , 但 Verilog仿 真 器 會 對 此 警 告Verilog允 許 模 塊 實(shí) 例 的 端 口 保 持 未 連 接 狀 態(tài) , 如 調(diào) 試 端 口例 : fulladd4
15、 fa0 (SUM, ,A,B,C_IN);Verilog語 言 端 口 與 外 部 信 號 的 連 接定 義 端 口 列 表 中 的 sum, c_out, a, b,c_in具 有 完 全 一 致 的 順 序Verilog語 言 非 順 序 端 口 連 接Verilog語 言 m1( SR_latch) 激 勵(lì) ( 根 層 )n1( nand) n2( nand) Q, Qbar,S,R q, qbar,set,resetVerilog語 言 8) 層 次 命 名 stimulusstimulus.qbar stimulus.qstimulus.reset stimulus.setstim
16、ulus.m1.Q stimulus.m1stimulus.m1.S stimulus.m1.Qbarstimulus.n1 stimulus.m1.RVerilog語 言 門 級 建 模1. 門 級 ( 低 級 抽 象 層 次 )電 路 用 邏 輯 門 來 描 述 直 觀 性 Verilog描 述 和 電 路 邏 輯 圖 之 間 一 一 對 應(yīng) Verilog語 言 通 過 提 供 預(yù) 定 義 的 邏 輯 門 原 語 來 支 持 用 戶 使 用 邏 輯 門 設(shè) 計(jì) 電 路 Verilog基 本 門 單 元 ( primitives) 大 多 數(shù) ASIC和 FPGA元 件 庫 是 用 這 些
17、 基 本 單 元 開 發(fā) 的 ?;?本 單 元 名 稱 功 能andornotbufxornandnorxnor Logical And Logical Or Inverter Buffer Logical Exclusive Or Logical And Inverted Logical Or Inverted Logical Exclusive Or Inverted門 級 建 模 門 級 建 模 門 級 建 模 Verilog的 條 件 基 本 單 元這 四 種 基 本 單 元 只 能 有 三 個(gè) 引 腳 : output, input, enable基 本 單 元 名 稱 功 能buf
18、if1 條 件 緩 沖 器 , 邏 輯 1 使 能bufif0 條 件 緩 沖 器 , 邏 輯 0 使 能notif1 條 件 反 相 器 , 邏 輯 1 使 能notif0 條 件 反 相 器 , 邏 輯 1 使 能門 級 建 模 門 級 建 模 門 級 建 模 門 級 建 模門 實(shí) 例 語 句 格 式gate_typeinstance_name(term1,term2,.,termN);instance_name為 可 選 項(xiàng) ;gate_type為 前 面 列 出 的 某 種 門 類 型 ;各 term用 于 表 示 與 門 的 輸 入 /輸 出 端 口 相 連 的 線 網(wǎng) 或 寄 存
19、器 。同 一 門 類 型 的 多 個(gè) 實(shí) 例 能 夠 在 一 個(gè) 結(jié) 構(gòu) 形 式 中 定 義 。 語 法 如 下 :gate_typeinstance_name1(term11,term12,.,term1N),instance_name2(term21,term22,.,term2N), .instance_nameM(termM1,termM2,.,termMN); 門 級 建 模門 實(shí) 例 數(shù) 組 門 級 建 模 多 輸 入 門 ( and, nand, nor, or, xor, xnor)多 輸 入 門 實(shí) 例 語 句 的 語 法 如 下 :multiple_input_gate_t
20、ypeinstance_name(OutputA,Input1,Input2,.,InputN); 門 級 建 模 多 輸 出 門 ( buf, not)實(shí) 例 語 句 的 基 本 語 法 如 下 :multiple_output_gate_typeinstance_name(Out1,Out2,.OutN,InputA); 門 級 建 模多 路 選 擇 器i0i2i1i3 s1 s0 out 74253 門 級 建 模多 路 選 擇 器 門 級 描 述 門 級 建 模多 路 選 擇 器 激 勵(lì) 模 塊 ( 略 ) 門 級 建 模 門 延 遲 上 升 延 遲 : 在 門 的 輸 入 發(fā) 生 變
21、 化 的 情 況 下 ,門 的 輸 出 從 0, X, Z 變 化 為 1所 需 的 時(shí) 間下 降 延 遲 : 門 的 輸 出 從 1, X, Z 變 化 為 0所需 的 時(shí) 間關(guān) 斷 延 遲 : 門 的 輸 出 從 0, 1 , X 變 化 為 Z所需 的 時(shí) 間 任 何 值 變 化 到 不 確 定 值 X, 所 需 時(shí) 間 可 以 看 為 以 上 三 種 延 遲 值 中 最 小 的 那個(gè) 門 級 建 模Verilog中 門 延 遲 說 明 類 型例 : 門 級 建 ???結(jié) : 門 級 建 模 最 小 /典 型 /最 大 延 遲 ( 對 前 面 每 類 延 遲 來 描述 ) 排 列 形 式
22、 ( 最 小 : 典 型 : 最 大 ) 門 級 建 模實(shí) 例 Dbac e out#4#5 Verilog描 述 測 試 激 勵(lì) 模 塊 門 級 建 模 模 塊 的 測 試被 測 模 塊激 勵(lì) 和 控 制信 號 輸 出 響 應(yīng)和 驗(yàn) 證 測 試 模 塊 常 見 的 形 式 : module t; reg ; / 被 測 模 塊 輸 入 /輸 出 變 量 類 型 定 義 wire; / 被 測 模 塊 輸 入 /輸 出 變 量 類 型 定 義 initial begin fork join end / 產(chǎn) 生 測 試 信 號 Testedmd m(.in1(ina), .in2(inb), .
23、out1(outa), .out2(outb) );/ 被 測 模 塊 的 實(shí) 例 引用 initial begin . end / 記 錄 輸 出 和 響 應(yīng) endmodule 嵌 套 塊 模 塊 的 測 試 激 勵(lì) 信 號 的 描 述 : module t; reg a, b, sel; wire out;/引 用 多 路 器 實(shí) 例 mux2_m (out, a, b, sel);/加 入 激 勵(lì) 信 號 initial begin a=0; b=1; sel=0; #10 b=0; #10 b=1; sel=1; #10 a=1; #10 $stop; end 模 塊 的 測 試 觀
24、 察 被 測 模 塊 的 響 應(yīng) :$time 返 回 當(dāng) 前 的 仿 真 時(shí) 刻$monitor 只 要 在 其 變 量 列 表 中 有 某 一 個(gè) 或 某 幾 個(gè) 變 量 值 發(fā) 生 變 化 , 便 在 仿真 單 位 時(shí) 間 結(jié) 束 時(shí) 顯 示 其 變 量 列 表 中 所 有 變 量 的 值 。 initial begin $monitor ($time, , “out=%b a=%b sel=%b”, out,a,b,sel); end 模 塊 的 測 試 如 何 把 被 測 模 塊 的 輸 出 變 化 記 錄 到 數(shù) 據(jù) 庫 文 件 中 ?可 用 以 下 幾 個(gè) 系 統(tǒng) 任 務(wù) :$f
25、open(“”); /打 開 記 錄 數(shù) 據(jù) 變 化 的 數(shù) 據(jù) 文 件$fdisplay(,p1,p2, ,pn); /寫 文 件$fmonitor(,p1,p2, ,pn); /寫 文 件 $fclose (); /關(guān) 閉 文 件 %m /顯 示 層 次$strobe /選 通 顯 示 模 塊 的 測 試 值 變 轉(zhuǎn) 儲 文 件 ( VCD) :$dumpfile(“file.dump”); /打 開 VCD數(shù) 據(jù) 庫 用 于 記 錄$dumpvars(); /選 擇 需 要 記 錄 的 模 塊 實(shí) 例 或 模 塊 實(shí) 例 信 號$dumpflush; /將 VCD數(shù) 據(jù) 保 存 到 磁
26、盤$dumpoff; /停 止 記 錄 數(shù) 據(jù) 變 化$dumpon; /重 新 開 始 記 錄 數(shù) 據(jù) 變 化$dumplimit(); /規(guī) 定 VCD文 件 的 大 小 ( 字 節(jié) )$dumpall; /記 錄 所 有 指 定 信 號 的 變 化 值模 塊 的 測 試 下 面 的 Verilog 代 碼 段 可 以 代 替 測 試 文 件 中 的 系 統(tǒng) 任 務(wù)$monitor initial begin $dumpfile(“vlog.dump”) ; $dumpvars(0,top); end 模 塊 的 測 試0代 表 轉(zhuǎn) 儲 top下各 層 的 所 有 信 號 1.連 續(xù) 賦
27、值 語 句數(shù) 據(jù) 流 建 模 的 基 本 語 句 , 用 于 對 線 網(wǎng) 賦 值 。 必 須 以 關(guān) 鍵 詞 assign開始 , 語 法 如 下 :continuous_assign :=assign drive_strength delay3 list_of_net_assignments;list_of_net_assignments :=net_assignment ,net_assignmentnet_assignment :=net_value=expressiondrive_strength是 可 選 項(xiàng) , 默 認(rèn) 為 strong1和 strong0delay3也 可 選 ,
28、 用 于 指 定 賦 值 的 延 遲數(shù) 據(jù) 流 級 建 模 強(qiáng) 度 相 同 信 號 間 或 Strong0和 Strong1發(fā) 生 競 爭 , 結(jié) 果 為 X只 有 treg類 型 線 網(wǎng) 可 具 有 存 儲 強(qiáng) 度 , 為 large、 medium、 small模 塊 的 測 試 數(shù) 據(jù) 流 級 建 模連 續(xù) 賦 值 語 句 特 點(diǎn)1、 連 續(xù) 賦 值 語 句 左 側(cè) 必 須 是 一 個(gè) 標(biāo) 量 或 向 量 線 網(wǎng) , 或 標(biāo) 量 和 向 量 線 網(wǎng) 的拼 接 , 不 能 是 向 量 或 向 量 寄 存 器2、 連 續(xù) 賦 值 總 處 于 激 活 狀 態(tài) , 有 任 一 個(gè) 操 作 數(shù) 變
29、 化 , 表 達(dá) 式 都 會 被 重 新計(jì) 算 并 賦 給 左 邊 的 線 網(wǎng)3、 操 作 數(shù) 可 以 是 標(biāo) 量 或 向 量 的 線 網(wǎng) 或 寄 存 器 , 也 可 以 是 函 數(shù) 或 調(diào) 用4、 賦 值 延 遲 用 于 控 制 對 線 網(wǎng) 賦 予 新 值 的 時(shí) 間 , 根 據(jù) 仿 真 單 位 進(jìn) 行 說 明 ,對 于 描 述 電 路 中 的 時(shí) 序 非 常 有 用 數(shù) 據(jù) 流 級 建 模例 : 數(shù) 據(jù) 流 級 建 模 隱 式 連 續(xù) 賦 值在 線 網(wǎng) 聲 明 的 同 時(shí) 進(jìn) 行 賦 值由 于 線 網(wǎng) 只 能 被 聲 明 一 次 , 因 此 對 線 網(wǎng) 的 隱 式 聲 明 賦 值 只 能
30、有 一 次 數(shù) 據(jù) 流 級 建 模 隱 式 線 網(wǎng) 聲 明如 果 一 個(gè) 信 號 被 用 在 連 續(xù) 賦 值 語 句 的 左 側(cè) , 則 Verilog編 譯 器 認(rèn) 為 該 信號 是 一 個(gè) 隱 式 聲 明 的 線 網(wǎng)如 果 線 網(wǎng) 被 連 接 到 模 塊 的 端 口 上 , 則 Verilog編 譯 器 認(rèn) 為 隱 式 聲 明 線 網(wǎng)的 寬 度 等 于 模 塊 端 口 的 寬 度 數(shù) 據(jù) 流 級 建 模2.延 遲 普 通 賦 值 延 遲 在 連 續(xù) 賦 值 語 句 中 說 明 延 遲 值 慣 性 延 遲 :任 何 小于 該 延 時(shí) 值 的 變 化都 不 能 被 傳 輸 下 去 ,如 果 是
31、 傳 輸 延 時(shí) 沒有 這 個(gè) 限 制 。 (對 于 慣 性 延 遲 )慣 性 延 時(shí) ( inertial delay) 通 常 在 信 號 通 過 邏 輯 門 的 時(shí) 候 發(fā) 生 。脈 沖 寬 度 小 于 復(fù) 制 延 遲 的 輸 入 變 化 不 會 對 輸 出 產(chǎn) 生 影 響 。原 語 門 , 開 關(guān) , 連 續(xù) 賦 值 語 句 和 MIPD ( module input port delay) 的 延 遲 只 能 是 慣 性 延 遲 。 (對 于 傳 輸 延 遲 )傳 輸 延 時(shí) ( Transport delay) 相 當(dāng) 于 信 號 通 過 了 一 條 擁 有 固 定 延 時(shí) 的傳
32、輸 線 數(shù) 據(jù) 流 級 建 模 隱 式 連 續(xù) 賦 值 延 遲用 隱 式 連 續(xù) 賦 值 語 句 來 說 明 對 線 網(wǎng) 的 賦 值 以 及 賦 值 延 遲 線 網(wǎng) 聲 明 延 遲在 聲 明 線 網(wǎng) 時(shí) 指 定 一 個(gè) 延 遲 , 對 該 線 網(wǎng) 的 任 何 賦 值 都 會 被 推 遲 指 定 的 時(shí) 間 數(shù) 據(jù) 流 級 建 模四 位 脈 沖 進(jìn) 位 計(jì) 數(shù) 器 的 RTL級 建 模 3. 操 作 符 類 型操 作 符 類 型 符 號連 接 及 復(fù) 制 操 作 符一 元 操 作 符算 術(shù) 操 作 符邏 輯 移 位 操 作 符關(guān) 系 操 作 符相 等 操 作 符按 位 操 作 符 邏 輯 操 作
33、 符條 件 操 作 符 ! parameter five = 5; integer ans, int; reg 3: 0 rega, regb; reg 3: 0 num; initial begin rega = 3; regb = 4b1010; int = -3; /int = 11111111_1101 end initial fork #10 ans = five * int; / ans = -15 #20 ans = (int + 5)/ 2; / ans = 1 #30 ans = five/ int; / ans = -1 #40 num = rega + regb; / n
34、um = 1101 #50 num = rega + 1; / num = 0100 #60 num = int; / num = 1101 #70 num = regb % rega; / num = 1 #80 $finish; joinendmodule 注 意 integer是有 符 號 數(shù) , 而reg是 無 符 號 數(shù) 。 not reg 3: 0 rega, regb, regc; reg 3: 0 num; initial begin rega = 4b1001; regb = 4b1010; regc = 4b11x0; end initial fork #10 num =
35、rega / num = 0000 #20 num = rega / num = 1000 #30 num = rega | regb; / num = 1011 #40 num = regb / num = 10 x0 #50 num = regb | regc; / num = 1110 #60 $finish; joinendmodule 按 位 操 作 符 對 矢 量 中 相 對 應(yīng) 位 運(yùn) 算 。 位 值 為 x時(shí) 不 一 定 產(chǎn) 生 x結(jié) 果 。當(dāng) 兩 個(gè) 操 作 數(shù) 位 數(shù) 不 同 時(shí) , 位 數(shù) 少 的操 作 數(shù) 零 擴(kuò) 展 到 相 同 位 數(shù) 。a = 4b1011;b =
36、8b01010011;c = a | b; / a零 擴(kuò) 展 為 8b00001011 按 位 操 作 符 數(shù) 據(jù) 流 級 建 模 module logical (); parameter five = 5; reg ans; reg 3: 0 rega, regb, regc; initial begin rega = 4b0011; /邏 輯 值 為 “ 1” regb = 4b10 xz; /邏 輯 值 為 “ 1” regc = 4b0z0 x; /邏 輯 值 為 “ x” end initial fork #10 ans = rega / ans = 0 #20 ans = rega
37、 | 0; / ans = 1 #30 ans = rega / ans = 1 #40 ans = regb / ans = 1 #50 ans = regc | 0; / ans = x #60 ans=! regb; / ans = 0 #70$finish; joinendmodule! not reg 3: 0 rega, regb; reg 3: 0 bit; reg log; initial begin rega = 4b1011; regb = 4b0000; end initial fork #10 bit = rega; / num = 0100 #20 bit = reg
38、b; / num = 1111 #30 log = !rega; / num = 0 #40 log = !regb; / num = 1 #50 $finish; joinendmodule! logical not 邏 輯 反 bit-wise not 位 反邏 輯 反 的 結(jié) 果 為 一 位 1, 0或 x。位 反 的 結(jié) 果 與 操 作 數(shù) 的 位 數(shù) 相 同 數(shù) 據(jù) 流 級 建 模 數(shù) 據(jù) 流 級 建 模 reg 9: 0 num, num1; reg 7: 0 rega, regb; initial rega = 8b00001100; initial fork #10 num =
39、 rega 5 ; / num = 01_1000_0000 #10 regb = rega 5 ; / regb = 1000_0000 #20 num 3; / num = 00_0000_0001 #20 regb 3 ; / regb = 0000_0001 #30 num = 10b11_1111_0000; #40 rega = num 2; /rega = 1100_0000 #40 num1 = num 2;/num1=11_1100_0000 #50 rega 2; /rega = 1111_1100 #50 num1 2;/num1=00_1111_1100 joinend
40、module 邏 輯 右 移 ( 非 循 環(huán) ) 算 術(shù) 右 移3); /結(jié) 果 為 -2, 由 于 算 術(shù) 運(yùn) 算 , 右 移 三 位 , 空 缺 位 補(bǔ) 1 數(shù) 據(jù) 流 級 建 模 module relationals (); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b0 x10; end initial fork #10 val = regc rega ; / val = x #20 val = regb = rega ; / val = 1 #40 v
41、al = regb regc ; / val = 1 #50 $finish; joinendmodule 大 于= 大 于 等 于regcrega和 regc的關(guān) 系 取 決 于 x 關(guān) 系 操 作 符 數(shù) 據(jù) 流 級 建 模 注 意 邏 輯 等 與case等 的 差 別2b1x=2b0 x 值 為 0, 因 為 不 相 等2b1x=2b1x 值 為 x, 因 為 可 能 不相 等 , 也 可 能 相 等2b1x=2b0 x 值 為 0, 因 為 不 相 同2b1x=2b1x 值 為 1, 因 為 相 同= 賦 值 操 作 符 , 將 等 式 右 邊 表 達(dá) 式 的 值 拷 貝 到 左 邊
42、。= =邏 輯 等= = 0 1 x z0 1 0 x x1 0 1 x xx x x x xz x x x x= = =case等= = 0 1 x z0 1 0 0 01 0 1 0 0 x 0 0 1 0 z 0 0 0 1 a = 2b1x;b = 2b1x;if (a = b) $display( a is equal to b);else $display( a is not equal to b);a = 2b1x;b = 2b1x;if (a = b) $display( a is identical to b);else $display( a is not identica
43、l to b);Case等 只 能 用 于 行 為 描述 , 不 能 用 于 RTL描 述 。 相 等 操 作 符 數(shù) 據(jù) 流 級 建 模 ! = 邏 輯 不 等 module equalities1(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb !
44、= regc; / val = x #40 val = regc = regc; / val = x #50 $finish; joinendmodule其 結(jié) 果 是 1b1、 1b0或1bx。 如 果 左 邊 及 右 邊 為 確 定 值并 且 不 相 等 , 則 結(jié) 果 為 1。 如 果 左 邊 及 右 邊 為 確 定 值并 且 相 等 , 則 結(jié) 果 為 0。 如 果 左 邊 及 右 邊 有 值 不 能確 定 的 位 , 但 值 確 定 的 位 相等 , 則 結(jié) 果 為 x。!=的 結(jié) 果 與 = =相 反 數(shù) 據(jù) 流 級 建 模 ! =不 相 同 (case不 等 ) module e
45、qualities2(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb = regc; / val = 0 #40 val = regc = regc; / val = 1 #50 $finish; joinendmodule其 結(jié) 果 是 1 b1、
46、1 b0或1 bx。 如 果 左 邊 及 右 邊 的 值 相 同( 包 括 x、 z), 則 結(jié) 果 為 0。如 果 左 邊 及 右 邊 的 值 不 相同 , 則 結(jié) 果 為 1。!=的 結(jié) 果 與 = 相 反綜 合 工 具 不 支 持 數(shù) 據(jù) 流 級 建 模 ?: 條 件 module likebufif( in, en, out); input in; input en; output out; assign out = (en = 1) ? in : bz;endmodulemodule like4to1( a, b, c, d, sel, out); input a, b, c, d;
47、 input 1: 0 sel; output out; assign out = sel = 2b00 ? a : sel = 2b01 ? b : sel = 2b10 ? c : d; endmodule 條 件 操 作 符 數(shù) 據(jù) 流 級 建 模 registger = condition ? true_value:false_value;每 個(gè) 條 件 操 作 符 必 須 有 三 個(gè) 參 數(shù) , 缺 少 任 何 一 個(gè) 都 會 產(chǎn) 生 錯(cuò) 誤 。最 后 一 個(gè) 操 作 數(shù) 作 為 缺 省 值 。若 condition為 真 , 則 register=true_value;若 cond
48、ition為 假 , 則 register=false_value;如 果 條 件 值 不 確 定 , 則 對 兩 個(gè) 結(jié) 果 逐 位 比 較 , true_value=false_value 則 該位 值 為 操 作 數(shù) 中 該 位 值 , true_value false_value, 則 取 x。例 如 : assign out = (sel = 0) ? a : b;若 sel為 0則 out =a; 若 sel為 1則 out = b。如 果 sel為 x或 z, 若 a = b =0, 則 out = 0; 若 ab, 則 out值 不 確 定 。數(shù) 據(jù) 流 級 建 模 級 聯(lián)從
49、不 同 矢 量 中 選 擇 位 并 用 它們 組 成 一 個(gè) 新 的 矢 量 。 module concatenation; reg 7: 0 rega, regb, regc, regd; reg 7: 0 new; initial begin rega = 8b0000_0011; regb = 8b0000_0100; regc = 8b0001_1000; regd = 8b1110_0000; end initial fork #10 new = regc 4: 3, regd 7: 5, regb 2, rega 1: 0; / new = 8b11111111 #20 $fini
50、sh; joinendmodule每 個(gè) 操 作 數(shù) 必 須 有 確 定 位寬類 似 錯(cuò) 誤 的 例 子 : a7:0 = 4 b10; b7:0 = 2 5; c3:0 = 3b011, b0;級 聯(lián) 時(shí) 不 限 定 操 作 數(shù) 的 數(shù)目 。 在 操 作 符 符 號 中 , 用逗 號 將 操 作 數(shù) 分 開 。 例 如 : A, B, C, D 級 聯(lián) 操 作 符 數(shù) 據(jù) 流 級 建 模 復(fù) 制復(fù) 制 一 個(gè) 變 量 或 在 中 的 值前 兩 個(gè) 符 號 之 間 的 正 整 數(shù)指 定 復(fù) 制 次 數(shù) 。 復(fù) 制 數(shù) 據(jù) 流 級 建 模module replicate (); reg 3: 0
51、 rega; reg 1: 0 regb, regc; reg 7: 0 bus; initial begin rega = 4b1001; regb = 2b11; regc = 2b00; end initial fork #10 bus = 4 regb; / bus = 11111111 / regb is replicated 4 times. #20 bus = 2 regb, 2 regc ; / bus = 11110000. regc and regb are each / replicated, and the resulting vectors / are concatenated together #30 bus = 4 rega1, rega ; / bus = 00001001. rega is sign-extended #40 $finish; joinendmodule 數(shù) 據(jù) 流 級 建 模用 邏 輯 方 程 描 述 四 選 一 多 路 選 擇 器 數(shù) 據(jù) 流 級 建 模用 條 件 操 作 語 句 描 述 四 選 一 多 路 選 擇 器 四 選 一激 勵(lì) 模 塊
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。