版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、n數(shù)字電路數(shù)字電路n組合電路組合電路n與非門等與非門等n時序電路時序電路nD觸發(fā)器觸發(fā)器電路輸出完全依賴電路輸入電路輸出在一定程度不依賴電路輸入運算運算記憶記憶第第3 3章章 組合邏輯電路設計組合邏輯電路設計1組合電路時序時序電路實現(xiàn)功能使功能有序23.3 Verilog 過程及譯碼電路過程及譯碼電路nAlways 過程語句過程語句nalways定義的過程塊是一個電路,定義的過程塊是一個電路,電路電路從上電開始就會一直執(zhí)行;從上電開始就會一直執(zhí)行;n (從代碼一開始就執(zhí)行,執(zhí)行完了再回(從代碼一開始就執(zhí)行,執(zhí)行完了再回到過程塊的最初來執(zhí)行,周而復始,不到過程塊的最初來執(zhí)行,周而復始,不會停止,
2、直到代碼執(zhí)行完畢)會停止,直到代碼執(zhí)行完畢) 3.3 常用過程語句常用過程語句 if else/ “begin” 和和 “end”就好比就好比C語言中的語言中的“”和和“”.if (enable = = 1b1) begin data = 10; / 十進制賦值十進制賦值 address = 16hDEAD; /十六進制十六進制 wr_enable = 1b1; /二進制二進制 end else begin data = 32b0; wr_enable = 1b0; address = address + 1; end3.3 過程語句過程語句casecase(address) 0 : $dis
3、play (It is 11:40PM); 1 : $display (I am feeling sleepy); 2 : $display (Let me skip this tutorial); default : $display (Need to complete); endcase3.3 過程語句過程語句while module counter (clock,rst,enable,count); input clock, rst, enable; output 3:0 count; reg 3:0 count; always (posedge clock or posedge rst
4、) if (rst) count = 0;else begin : COUNT while (enable) begin count = count + 1; disable COUNT; end end endmodule3.3 過程中的阻塞賦值與過程中的阻塞賦值與 非阻塞賦值非阻塞賦值 n阻塞式阻塞式 (blocking) 的操作符為的操作符為 “ = ”n 非阻塞式非阻塞式 (non-blocking)的操作符)的操作符為為 “ = ”n 阻塞賦值和非阻塞賦值的基本區(qū)別是:阻塞賦值和非阻塞賦值的基本區(qū)別是:阻塞賦值是順序執(zhí)行語句,而非阻塞賦阻塞賦值是順序執(zhí)行語句,而非阻塞賦值是并行執(zhí)行語
5、句。兩種語句的含義不值是并行執(zhí)行語句。兩種語句的含義不同,建模的應用也就不同。同,建模的應用也就不同。 3.3 對比對比module top(clk,a, c);input a,clk;output c;reg c,b;always ( posedge clk )beginb=a;C=b;endendmodulemodule top(clk,a,c);input a,clk;output c;reg c,b;always ( posedge clk )beginb=a;c=b;endendmodule3.3譯碼器電路譯碼器電路輸入輸入輸出輸出A BY0 Y1 Y2 Y30 01 0 0 00
6、10 1 0 01 00 0 1 01 10 0 0 12 2線線4 4線譯碼器真值表線譯碼器真值表00mBAY 33mABY 22mBAY 11mBAY 邏輯函數(shù):邏輯函數(shù):2線線4線譯碼器電路線譯碼器電路3-8譯碼器電路譯碼器電路重溫設計過程重溫設計過程n1. 文本編輯文本編輯n2. 設定器件設定器件n3. 輸入管腳輸入管腳n4. 綜合、布局布線綜合、布局布線n5. 設定下載端口設定下載端口n6. 下載下載n能不能自己實現(xiàn)能不能自己實現(xiàn)3-8譯碼器電路?譯碼器電路?3.3實訓實訓 3-8譯碼器譯碼器1、建立工程、建立工程2、使用、使用Verilog語言設計語言設計module 3_8yim
7、aqi (data_in,data_out); input2:0 data_in; output7:0 data_out; reg 7:0 data_out;always(data_in)begin case(data_in) 3b000:data_out=8b0000_0001; 3b001:data_out=8b0000_0010; 3b010:data_out=8b0000_0100; 3b011:data_out=8b0000_1000; 3b100:data_out=8b0001_0000; 3b101:data_out=8b0010_0000; 3b110:data_out=8b0
8、100_0000; 3b111:data_out=8b1000_0000; endcase endendmodule3.4 三態(tài)門電路三態(tài)門電路輸入信號雙向信號輸出信號rwco_dataout_datain_data1co_dataxco_data0out_dataout_dataout_data三態(tài)門電路結構單元三態(tài)門電路結構單元 如果使能端G為低電平,取值為0時,三態(tài)門電路與B點之間連接的兩個MOS管都關斷,B在芯片內(nèi)部的連接處于高阻態(tài),也就是為Z,此時外部信號可以通過B送到C,作為輸入狀態(tài)。當G為低高平,取值為1時,三態(tài)門電路與B連接的兩個MOS管中可以有一個管子導通,B的取值和A一致,
9、而此時外部對B不能進行信號驅動,否則就會出現(xiàn)短路。 CMOS傳輸門三態(tài)門電路傳輸門三態(tài)門電路 3.5 數(shù)碼管顯示數(shù)碼管顯示3.5 例:在數(shù)碼管上顯示例:在數(shù)碼管上顯示2module seg7(data_out); output6:0 data_out; assign data_out=7b 1011011endmodule 3.5 七段譯碼器結構七段譯碼器結構七段LED數(shù)碼管顯示電路in0ag3.5 BCD數(shù)段碼對應表數(shù)段碼對應表七段數(shù)碼管顯示電路輸入七段數(shù)碼管顯示電路輸入七段數(shù)碼管顯示電七段數(shù)碼管顯示電路輸出路輸出LED顯示顯示字形字形in3 in2 in1 in0gfedcba 0 0 0
10、 001111110 0 0 0 100001101 0 0 1 010110112 0 0 1 110011113 0 1 0 011001104 0 1 0 111011015 0 1 1 011111006 0 1 1 100001117 1 0 0 011111118 1 0 0 1110011193.5 代碼代碼module qiduan(data_in;/七段數(shù)碼管顯示電路的輸入,對應圖的七段數(shù)碼管顯示電路的輸入,對應圖的in3-in0,in3對應高位對應高位data_out);/七段數(shù)碼管顯示電路的輸出,對應圖中的七段數(shù)碼管顯示電路的輸出,對應圖中的g-a,g對應高位對應高位in
11、put3:0 data_in;/輸入輸出端口定義輸入輸出端口定義output6:0 data_out;reg6:0 data_out;/使用使用always建模組合邏輯需要定義輸出為寄存器建模組合邏輯需要定義輸出為寄存器always(data_in) /輸入為輸入為data_inbegin case(data_in)/輸入的不同情況輸入的不同情況 4b0000: data_out = 7b0111111; / 0 4b0001: data_out = 7b0000110; / 1 4b0010: data_out = 7b1011011; / 2 4b0011: data_out = 7b10
12、01111; / 3 4b0100: data_out = 7b1100110; / 4 4b0101: data_out = 7b1101101; / 5 4b0110: data_out = 7b1111100; / 6 4b0111: data_out = 7b0000111; / 7 4b1000: data_out = 7b1111111; / 8 4b1001: data_out = 7b1100111; / 9 default: data_out = 7b0000000; /default,當輸入為其他值時,當輸入為其他值時,輸出有效,為全輸出有效,為全0 endcaseende
13、ndmodule3.5 實例實例2:用數(shù)碼管顯示:用數(shù)碼管顯示9527需要輪流打開4個數(shù)碼管,每個數(shù)碼管顯示1/4的時間,由于視覺暫留效應,就好像顯示4個不同的數(shù)字設計思路:設計思路:1.打開scan0的時候,在abcdefg線上賦值“9”2.打開scan1的時候,在abcdefg線上賦值“5”3.打開scan2的時候,在abcdefg線上賦值“2”4.打開scan3的時候,在abcdefg線上賦值“7”首先:設計首先:設計SCAN信號信號n首先要降低掃描速度,生成一個大約為首先要降低掃描速度,生成一個大約為0.01s-0.1s的時鐘的時鐘n利用這個時鐘信號產(chǎn)生一個利用這個時鐘信號產(chǎn)生一個sc
14、an信號如信號如下:下:reg1:0 state; reg3:0 scan;/注意要用注意要用always就必就必須是須是regalways(posedge clk_div)state=state+1b1;always (state)case (state)2b00 : scan=4b0001;2b01 : scan =4b0010;2b10 : scan =4b0100;2b11 : scan =4b1000;default: scan =4b0000;endcase分不同的時間把分不同的時間把9、5、2、7放到放到bin上面去上面去reg3:0 bin;/不在不在always里面賦值就用里
15、面賦值就用wire,否則用,否則用regalways(state)case (state)2b00 : bin=4d9;2b01 : bin=4d5;2b10 : bin=4d2;2b11 : bin=4d7;default: bin=4d0;endcase再對再對9527從二進制到從二進制到abdcdefg譯碼譯碼reg6:0 abcdefg;always(bin) begin case(bin) 4b0000: abcdefg= 7b0111111; . . default: abcdefg= 7b0000000; endcase3.5 實例實例3:計數(shù)牌子:計數(shù)牌子n任務分析:任務分析:
16、 設計一個計數(shù)牌子,能從設計一個計數(shù)牌子,能從0000計數(shù)計數(shù)到到9999,每隔,每隔1秒鐘跳動一下。通過復秒鐘跳動一下。通過復位可以把系統(tǒng)清零為位可以把系統(tǒng)清零為0000【涉及涉及】動態(tài)數(shù)碼管顯示,復位,分頻電路等動態(tài)數(shù)碼管顯示,復位,分頻電路等設計思路:設計思路:1.內(nèi)部所有數(shù)據(jù)都是內(nèi)部所有數(shù)據(jù)都是2進制的,所以需要設進制的,所以需要設計計4個個4位位2進制的進制的reg,分別對應顯示的,分別對應顯示的4個數(shù)字,再通過動態(tài)掃描電路送到個數(shù)字,再通過動態(tài)掃描電路送到LED上面去顯示。上面去顯示。2.利用利用1秒的時鐘,構建秒的時鐘,構建“個、十、百、千個、十、百、千”位的變換規(guī)律位的變換規(guī)律
17、 設計模塊設計模塊1:分頻電路:分頻電路n代碼:略代碼:略1.產(chǎn)生一個產(chǎn)生一個1秒的時鐘秒的時鐘:clk_1s2.產(chǎn)生一個產(chǎn)生一個0.01秒的時鐘(為了動態(tài)顯示秒的時鐘(為了動態(tài)顯示使用)使用):clk_div設計模塊設計模塊2:計數(shù)器:計數(shù)器reg3:0 gewei; /各位數(shù)各位數(shù)always(posedge clk_1s)if(reset=1b1) gewei=4b0;else if(gewei=4d9) gewei=4b0; else gewei=gewei+1b1; reg3:0 shiwei; /十位數(shù)十位數(shù)always(posedge clk_1s)if(reset=1b1) s
18、hiwei=4b0;else if(gewei=4d9) begin if(shiwei=4d9); shiwei=4b0; else shiwei=shiwei+1b1;endreg3:0 baiwei; /百位數(shù)百位數(shù)always(posedge clk_1s)if(reset=1b1) baiwei=4b0;else if(gewei=4d9)&(shiwei=4d9) begin if(baiwei=4d9); baiwei=4b0; else baiwei=baiwei+1b1;endreg3:0 qianwei; /千位數(shù)千位數(shù)always(posedge clk_1s)if(re
19、set=1b1) qianwei=4b0;else if(gewei=4d9)&(shiwei=4d9)&(baiwei=4d9) begin if(qianwei=4d9); qianwei=4b0; else qianwei=shiwei+1b1;end3.5實例實例4:動態(tài)譯碼顯示:動態(tài)譯碼顯示n回想一下:回想一下:我們是如何把我們是如何把9527顯示出來的?顯示出來的?設計設計SCAN信號信號n首先要降低掃描速度,生成一個大約為首先要降低掃描速度,生成一個大約為0.01s-0.1s的時鐘的時鐘n利用這個時鐘信號產(chǎn)生一個利用這個時鐘信號產(chǎn)生一個scan信號如信號如下:下:reg1:0 state; reg3:0 scan;/注意要用注意要用always就必就必須是須是regalways(posedge clk_div)state=stats+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版企業(yè)互相融資合同書樣本一
- 2024年綜合人工費用承包合同樣本版B版
- 二零二五年度會議場地租賃與品牌展示及推廣協(xié)議3篇
- 2024建筑工程木工分包勞務合同范文
- 2025年度金融科技勞動合同范本及數(shù)據(jù)安全合規(guī)協(xié)議3篇
- 四年級數(shù)學(小數(shù)加減運算)計算題專項練習與答案
- 2024年食品冷凍加工合作合同
- 2024水渠工程節(jié)水技術改造及運行維護合同3篇
- 2024年簡化版現(xiàn)金貸款協(xié)議樣式版B版
- 2025年度酒店前臺客房預訂預訂金退還服務協(xié)議3篇
- 山東省濟南市2023-2024學年高一上學期1月期末考試數(shù)學試題(解析版)
- 文字學概要完整版本
- 手術室搶救工作制度
- ce自我聲明模板
- 鋼閘門監(jiān)理評估報告
- 高檔養(yǎng)老社區(qū)項目計劃書
- 蛇年銷售年會發(fā)言稿范文
- 國管局住房制度改革相關政策解答
- 無縫鋼管服務方案
- 排澇泵站養(yǎng)護方案范本
- XX醫(yī)院臨床醫(yī)療質(zhì)量考核通用記錄表
評論
0/150
提交評論