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

正文內(nèi)容

電子電路設計訓練數(shù)字eda部分(編輯修改稿)

2025-07-10 08:38 本頁面
 

【文章內(nèi)容簡介】 tl2: out=a2。 `ctl3: out=a3。 `ctl4: out=a4。 `ctl5: out=a5。 `ctl6: out=a6。 `ctl7: out=a7。 //控制端為 ctl0~ctl7 對應輸出 a0~a7 default: out=439。dx。 //未收到指令時,輸出任意態(tài) endcase 測試程序的核心邏輯設計 ( 1)指令譯碼電路 begin a={$random}%256。 //從 0~255 共 256 個數(shù)中隨機生成一個數(shù)作為輸入 a b={$random}%256。 //從 0~255 共 256 個數(shù)中隨機生成一個數(shù)作為輸入 b opcode=339。h0。 //控制信號設為初值 0,即 39。plus,求和 repeat(times) //repeat 循環(huán)語句使控制及輸入信號重復變化 begin 100 a={$random}%256。 b={$random}%256。 opcode=opcode+1。 //每一時鐘到來時,輸入 a,b 改變一隨機數(shù),控制信號 +1 end 100 $stop。 //系 統(tǒng)任務,暫停仿真以觀察輸出波形 end ( 2) 8 路數(shù)據(jù)選擇器 begin a0={$random}%16。 a1={$random}%16。 10 a2={$random}%16。 a3={$random}%16。 a4={$random}%16。 a5={$random}%16。 a6={$random}%16。 a7={$random}%16。 //從 0~15 中隨機生成輸入 a0~a7 ctl=339。d0。 //控制端置 ctl0 repeat(times) //repeat 語句重復改變輸入 begin 100 a0={$random}%16。 a1={$random}%16。 a2={$random}%16。 a3={$random}%16。 a4={$random}%16。 a5={$random}%16。 a6={$random}%16。 a7={$random}%16。 //隨機生成 a0~a7 ctl=ctl+1。 //控制端每次加 1 end 100 $stop。 end 仿真實驗關鍵結果及其解釋 ( 1)指令譯碼電路 11 圖 6 指令譯碼電路波形 指令譯碼電路輸出波形如圖所示 。 控制信號 opcode 為 0 時,輸出為 a+b;控制信號 opcode 為 1 時,輸出為 ab; ......以此類推。 ( 2) 8 路數(shù)據(jù)選擇器 圖 7 8 選 1 數(shù)據(jù)選擇器波形圖 8 路數(shù)據(jù)選擇器輸出波形如圖 7 所示,控制端 ctl 為 0~7 時對應輸出 a0~a7。 實驗小結 通過實驗二,我掌握了如下內(nèi)容: 1) if...else 條件語句的使用。 2) case 條件語句的使用 12 實驗三、賦值、函數(shù)和任務 實驗任務 1—— 阻塞賦值與非阻塞賦值的區(qū)別 實驗要求 本實驗中兩個模塊 blocking和 non_blocking分別采用阻塞賦值和非阻塞賦值語句,從實驗結果比較他們的區(qū)別。 模塊的核心邏輯設計 ( 1)阻塞賦值 always@(posedge clk) begin b=a。 c=b。 //阻塞賦值, a 賦給 b, b 賦給 c $display(Blocking: a=%d, b=%d, c=%d.,a,b,c)。 //在 Transcript 窗口中顯示賦值后 a,b,c 的值 end ( 2)非阻塞賦值 always@(posedge clk) begin b=a。 c=b。 //非 阻塞賦值 , a 賦給 b, b 賦給 c $display(Non_Blocking:a=%d, b=%d, c=%d.,a,b,c)。 //在 Transcript窗口中顯示賦值后 a,b,c 的值 end ( 3)改變阻塞賦值程序的寫法,再比較二者的區(qū)別( 測試程序僅改變調(diào)用的阻塞賦值模塊 ) always@(posedge clk) 13 begin c=b。 b=a。 //改變 阻塞賦值 的順序 , b 賦給 c, a 賦給 b $display(Blocking: a=%d, b=%d, c=%d.,a,b,c)。 end ( 3)再改變阻塞賦值程序的寫法,比較二者的區(qū)別(測試程序僅改變調(diào)用的阻塞賦值模塊) always@(posedge clk) b=a。 always@(posedge clk) c=b。 測試程序的核心邏輯設計 將阻塞與非阻塞賦值模塊用同一測試程序測試 , 比較其輸出的不同 。 begin a=439。h3。 $display(____________)。 100 a=439。h7。 $display(____________)。 100 a=439。hf。 $display(____________)。 100 a=439。ha。 $display(____________)。 100 a=439。h2。 $display(____________)。 100 $display(___________)。 //每隔 100 個時間單位改變一次輸入 a的值,并顯示輸出 $stop。 end blocking blocking(clk,a,b1,c1)。 //阻塞賦值輸出用 b1,c1 表示 non_blocking non_blocking(clk,a,b2,c2)。 //非阻塞賦值輸出用 b2,c2 表示 14 仿真實驗關鍵結果及其解釋 ( 1)阻塞賦值寫法 1 圖 8 阻塞與非阻塞賦值比較波形圖 圖 9 阻塞與非阻塞賦值輸出結果 如圖 8 所示 , b1,c1 為阻塞賦值輸出, 輸入 a 的值 改變時,輸出 b 的值隨之改變 ,同時 b 的值賦給 c,即賦值語句執(zhí)行完后輸出 b, c 值立即改變,然后塊才結束。 b2,c2 為非阻塞賦值輸出, 賦值語句之后輸出 b, c 的值并不立即改變,而是在塊結束后才進行賦值操作,當下一時鐘上升沿到來時,上一個 a 值才賦給 b,同時上一 b 值賦給 c。以上即阻塞與非阻塞賦值的區(qū)別。 a 和 b 的輸出結果如圖 9 所示。 ( 2)阻塞賦值寫法 2 15 圖 10 阻塞賦值程序變形 1 波形圖 圖 11 阻塞賦值程序變形 1 輸出結果 改變阻塞賦值程序后的波形圖如圖 10 所示,可見將 b=a, c=b 的順序調(diào)換之后 ,阻塞賦值程序先將上一次時鐘上升沿時 b 的值賦給 c,再將這一次時鐘上升沿時 a 的值賦給 b,即 b 與 a 同時變化但 c 的值是上一個 b 值 。 在波形圖上看,由于輸入 a 的變化時刻對應的是時鐘下降沿,而輸出要在下一時鐘上升沿才能顯示,故阻塞與非阻塞輸出 c 在波形圖上看是一致的,實際上在時鐘下降沿 a 發(fā) 生變化時,阻塞輸出 c 的值已經(jīng)發(fā)生變化。 輸出結果如圖 11 ( 3)阻塞賦值寫法 3 16 圖 12 阻塞賦值程序變形 2 波形圖 圖 13 阻塞賦值程序 變形 2 輸出結果 阻塞賦值程序變形 2 的輸出波形與結果如圖 1圖 13 所示。由于兩個阻塞操作用同一個時鐘沿觸發(fā),執(zhí)行順序是不確定的。 實驗任務 2—— 在 Verilog HDL 中使用函數(shù) 實驗要求 ( 1) 設計程序實現(xiàn) 函數(shù) 調(diào)用 ( 2)設計一個帶控制端的邏輯運算電路,分別完成正整數(shù)的平方、立方和最大數(shù)為 5 的階乘運算。 模塊的核心邏輯設計 ( 1) 設計程序實現(xiàn)函數(shù)調(diào)用 17 always@(posedge clk) //clk上升沿觸發(fā)同步運算 begin if(!reset) result=0。 //reset 為低時復位 else begin result=n*factorial(n)/((n*2)+1)。 //調(diào)用 factorial 函數(shù), verilog在整數(shù)除法運算結果中不考慮余數(shù) end end function[31:0] factorial。 //函數(shù)定義,返回一個 32 位的數(shù) input[3:0] operand。 //輸入一個 4 位操作數(shù) reg[3:0] index。 //函數(shù)內(nèi)部計數(shù)用中間變量 begin factorial=operand?1:0。 //操作數(shù)為 0 時函數(shù)輸出為 0,否則為 1 for(index=2。index=operand。index=index+1) factorial=index*factorial。 //表示階乘的迭代運算 end endfunction ( 2)帶控制端的邏輯運算電路 always@(posedge clk) begin if(!reset) result=0。 else begin if(sel==0) result=n*n。 //控制端輸入 sel=0 時,執(zhí)行平方操作 else if(sel==1) result=n*n*n。 //控制端輸入 sel=1 時,執(zhí)行立方操作
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1