欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告(優(yōu)秀范文五篇)

      時(shí)間:2019-05-14 20:08:23下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告》。

      第一篇:北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告

      報(bào)告名稱:電子電路設(shè)計(jì)訓(xùn)練數(shù)字部

      學(xué)院:儀器科學(xué)與光電工程學(xué)院

      目錄

      實(shí)驗(yàn)報(bào)告概述:...............................................................................................................3

      一、選做實(shí)驗(yàn)總結(jié):.................................................................................................3(1)補(bǔ)充練習(xí)2:樓梯燈設(shè)計(jì).............................................................................3(2)練習(xí)題6:用兩種不同的設(shè)計(jì)方法設(shè)計(jì)一個(gè)功能相同的模塊,完成4個(gè)數(shù)據(jù)的冒泡排序...................................................................................................................5(3)(4)(5)

      二、(1)(2)(3)(4)(5)練習(xí)題3:利用10MB的時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形..................6 練習(xí)題4:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器......................................6 練習(xí)題5:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)算電路.............................................7 練習(xí)一:簡(jiǎn)單組合邏輯設(shè)計(jì).........................................................................7 練習(xí)三:利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻失序電路.............................................7 練習(xí)四:阻塞賦值與非阻塞賦值得區(qū)別.......................................................8 練習(xí)五:用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯電路........................................8 練習(xí)六:在verilog HDL中使用函數(shù)..............................................................9 必做實(shí)驗(yàn)總結(jié):.................................................................................................7(6)練習(xí)七:在verilog HDL中使用任務(wù)..............................................................9(7)練習(xí)八:利用有限狀態(tài)機(jī)進(jìn)行時(shí)許邏輯設(shè)計(jì)..............................................10

      三、實(shí)驗(yàn)總結(jié)及體會(huì):............................................................................................10

      四、選作程序源代碼...............................................................................................11(1)練習(xí)題3:利用10MB的時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形................11(2)練習(xí)題4:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器....................................12(3)練習(xí)題5:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)算電路...........................................13(4)練習(xí)題6:用兩種不同的設(shè)計(jì)方法設(shè)計(jì)一個(gè)功能相同的模塊,完成4個(gè)數(shù)據(jù)的冒泡排序.................................................................................................................14(5)補(bǔ)充練習(xí)2:樓梯燈設(shè)計(jì)...........................................................................16

      圖表目錄

      Figure 1 樓梯燈任務(wù)4..............................................................................................5 Figure 2 組合邏輯.....................................................................................................5 Figure 3 時(shí)序邏輯.....................................................................................................6 Figure 4 周期波形....................................................................................................6 Figure 5 8路數(shù)據(jù)選擇器..........................................................................................6 Figure 6 邏輯運(yùn)算電路.............................................................................................7 Figure 7 組合邏輯設(shè)計(jì).............................................................................................7 Figure 8 計(jì)數(shù)分頻時(shí)序電路......................................................................................8 Figure 9 阻塞賦值與非阻塞賦值得區(qū)別....................................................................8 Figure 10 always塊組合邏輯電路.............................................................................9 Figure 11 使用函數(shù)..................................................................................................9 Figure 12 使用任務(wù)................................................................................................10 Figure 13 有限狀態(tài)機(jī)............................................................................................10

      電子電路設(shè)計(jì)訓(xùn)練(數(shù)字部分)實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)報(bào)告概述:

      本實(shí)驗(yàn)報(bào)告為對(duì)四次電子電路設(shè)計(jì)訓(xùn)練(數(shù)字部分)實(shí)驗(yàn)的總結(jié),主要包括以下四部分:

      第一部分為選做實(shí)驗(yàn)總結(jié),主要包括每個(gè)選擇實(shí)驗(yàn)的設(shè)計(jì)思路、運(yùn)行結(jié)果、注意事項(xiàng)、心得體會(huì);

      第二部分為必做實(shí)驗(yàn)總結(jié),包括運(yùn)行結(jié)果、總結(jié)、心得體會(huì); 第三部分為課程總結(jié)和體會(huì),是對(duì)全部實(shí)驗(yàn)及課程的總結(jié); 第四部分為選做實(shí)驗(yàn)部分源代碼;

      一、選做實(shí)驗(yàn)總結(jié):

      (1)補(bǔ)充練習(xí)2:樓梯燈設(shè)計(jì)

      設(shè)計(jì)思路:

      本題給出樓梯的運(yùn)行規(guī)則,并分別給與四個(gè)相應(yīng)任務(wù)進(jìn)行編程設(shè)計(jì),考慮到程序的通用性及FPGA高速并行處理的優(yōu)點(diǎn),主要思路如下:

      根據(jù)運(yùn)行規(guī)則(8s內(nèi)和大于8s等),對(duì)每個(gè)燈的相應(yīng)狀態(tài)進(jìn)行編程,設(shè)計(jì)時(shí)序邏輯及有限狀態(tài)機(jī);由于在總體上看,每個(gè)燈的狀態(tài)變化相對(duì)獨(dú)立(只有一個(gè)人上樓除外),故對(duì)每個(gè)燈編程所得到的程序代碼可通用于其它燈(只需要改變相應(yīng)寄存器定義即可),此即為燈控制模塊,對(duì)4個(gè)不同的任務(wù),只需設(shè)計(jì)其它部分判斷邏輯,即可完成任務(wù)要求;如此設(shè)計(jì),可大大提高程序設(shè)計(jì)效率、易用性,同時(shí)如果面對(duì)更多的燈控制需要,也可快速進(jìn)行修改部署。

      下面針對(duì)不同任務(wù)給出不同處理方法:

      任務(wù)1/任務(wù)3:由于任務(wù)1和任務(wù)3在定義上有很大相同點(diǎn),比如同樣是一個(gè)人走樓梯,若不考慮一個(gè)人同時(shí)在兩層使兩個(gè)燈亮,則事實(shí)上就是一個(gè)人始終只能使一盞燈亮,亮起后盞時(shí)熄滅前一盞;在保持每個(gè)燈控制模塊不改變的情況下,利用非阻塞賦值,判斷該人目前所處狀態(tài)及位置(上樓/下樓,樓層),同時(shí)規(guī)定輸出,同時(shí)只能亮一盞燈;

      任務(wù)2:由于輸入信號(hào)已被賦值給寄存器變量,此時(shí)只需在系統(tǒng)時(shí)鐘作用下對(duì)寄存器中輸入變量進(jìn)行判斷,滿足要求即為正確信號(hào),再輸入燈控制模塊;

      任務(wù)4:由于已有燈控制模塊,此時(shí)只需結(jié)合任務(wù)2防抖電路,直接輸出狀態(tài)信號(hào)所對(duì)應(yīng)的結(jié)果即可;

      (單個(gè))燈控制模塊代碼:

      always @(posedgeclk)begin signal_test[0]<=signal[0];if(signal_test[0]==signal[0])

      begin

      i0=i0+1;

      end else

      i0=0;if(i0>=5)

      begin signal_reg[0]=signal[0];

      end

      if(state0==light_off)

      begin

      k0=0;

      k0a=0;

      k0b=0;

      end else

      k0=k0+1;

      case(signal_reg[0])

      1: if(!reset)

      begin

      state0=light_off;

      end

      else

      begin

      k0a=k0a+1;*分欄顯示,詳細(xì)代碼見(jiàn)報(bào)告第四部分;

      運(yùn)行結(jié)果:

      if((k0a >= 79)&&(k0<=119))

      state0=light_on12;

      else

      state0=light_on8;

      end

      0:if(!reset)

      begin

      state0=light_off;

      end

      else if(k0a==0)

      state0=light_off;endcase

      case(state0)

      light_off:light_reg[0]=0;

      light_on8:

      begin light_reg[0]=1;

      if(k0b==79)

      state0=light_off;

      else

      k0b=k0b+1;

      end

      light_on12:

      begin

      light_reg[0]=1;

      if(k0b==119)

      state0=light_off;

      else

      k0b=k0b+1;

      end endcase end

      Figure 1樓梯燈任務(wù)4

      Figure 2樓梯燈信號(hào)防抖部分放大結(jié)果

      (2)練習(xí)題6:用兩種不同的設(shè)計(jì)方法設(shè)計(jì)一個(gè)功能相同的模塊,完成4個(gè)數(shù)據(jù)的冒泡排序

      設(shè)計(jì)思路:

      純組合排序中,設(shè)計(jì)sort排序任務(wù)對(duì)數(shù)列中的元素進(jìn)行排序,通過(guò)調(diào)用任務(wù)實(shí)現(xiàn)對(duì)不同元素的排序功能,并將排序完成的結(jié)果直接輸出;

      冒泡排序即為每次將兩個(gè)相鄰數(shù)進(jìn)行比較,大的數(shù)后“浮”,每一趟比較獲得較大值并置于數(shù)列末位;

      根據(jù)題目要求,每比較一次,即將調(diào)換位置的數(shù)字進(jìn)行輸出;同樣設(shè)計(jì)sort任務(wù),對(duì)兩數(shù)字進(jìn)行比較并排序;

      通過(guò)排序控制和邏輯判斷代碼,控制sort任務(wù)的有效調(diào)用,進(jìn)而實(shí)現(xiàn)冒泡排序功能;

      根據(jù)設(shè)計(jì)要求,程序中只設(shè)計(jì)有一個(gè)輸入端口,通過(guò)對(duì)輸入信號(hào)不斷移位,模擬串并行信號(hào)轉(zhuǎn)換,從而完成穿行輸入,并行比較的功能;

      運(yùn)行結(jié)果:

      Figure 3組合邏輯

      Figure 4時(shí)序邏輯

      (3)練習(xí)題3:利用10MB的時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形

      設(shè)計(jì)思路:

      對(duì)輸入時(shí)鐘進(jìn)行計(jì)數(shù),通過(guò)if語(yǔ)句進(jìn)行判斷,若滿足判斷條件,則按要求改變輸出信號(hào);如此循環(huán)往復(fù),即可產(chǎn)生所需單周期形狀的周期波形;

      運(yùn)行結(jié)果:

      Figure 5周期波形

      (4)練習(xí)題4:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器

      設(shè)計(jì)思路:

      利用define宏定義預(yù)先定義,利于后期程序功能的擴(kuò)充和調(diào)整;同時(shí)利用case語(yǔ)句判斷信號(hào),并將相對(duì)應(yīng)信號(hào)輸出,進(jìn)而完成系統(tǒng)目標(biāo)功能;

      運(yùn)行結(jié)果:

      Figure 68路數(shù)據(jù)選擇器

      (5)練習(xí)題5:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)算電路

      設(shè)計(jì)思路:

      設(shè)計(jì)三個(gè)函數(shù)分別完成三個(gè)要求的計(jì)算,通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)相應(yīng)功能;設(shè)計(jì)的控制端為同步控制端,需要通過(guò)時(shí)鐘信號(hào)從而進(jìn)行檢測(cè)復(fù)位;

      運(yùn)行結(jié)果:

      Figure 7邏輯運(yùn)算電路

      二、必做實(shí)驗(yàn)總結(jié):

      (1)練習(xí)一:簡(jiǎn)單組合邏輯設(shè)計(jì)

      語(yǔ)法要點(diǎn):

      Assign語(yǔ)句構(gòu)成的組合邏輯電路,若輸入a,b改變,則輸出equal;

      利用assign equal=(a==b)?1:0語(yǔ)句,可同時(shí)完成判斷賦值功能,大大減少代碼量; 運(yùn)行結(jié)果:

      Figure 8組合邏輯設(shè)計(jì)

      (2)練習(xí)三:利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻時(shí)序電路

      語(yǔ)法要點(diǎn):

      此程序主要練習(xí)了對(duì)輸入時(shí)鐘進(jìn)行計(jì)數(shù),判斷,從而實(shí)現(xiàn)分頻輸出;

      在實(shí)際應(yīng)用中,可以通過(guò)該方式獲得不同占空比或頻率的信號(hào)供系統(tǒng)使用;

      課本程序問(wèn)題修改:

      課本測(cè)試程序中未定義F10M_clk變量,故應(yīng)將測(cè)試程序fdivision_TOP中出現(xiàn)的該變量改為已定義的F10M;

      運(yùn)行結(jié)果:

      Figure 9計(jì)數(shù)分頻時(shí)序電路

      (3)練習(xí)四:阻塞賦值與非阻塞賦值的區(qū)別

      語(yǔ)法要點(diǎn):

      阻塞賦值呈現(xiàn)的是一種立即賦值的狀態(tài),即同一個(gè)變量在前后語(yǔ)句中用到,語(yǔ)句間的順序會(huì)影響到輸出的結(jié)果;

      非阻塞賦值對(duì)每一個(gè)塊中語(yǔ)句間的相對(duì)位置沒(méi)有要求,只在該塊語(yǔ)句全部運(yùn)行完成后同一進(jìn)行賦值;

      運(yùn)行結(jié)果:

      Figure 10阻塞賦值與非阻塞賦值得區(qū)別

      (4)練習(xí)五:用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯電路

      語(yǔ)法要點(diǎn):

      Always@實(shí)現(xiàn)了對(duì)若干輸入信號(hào)的敏感,即只要有一個(gè)信號(hào)改變,輸出即改變; 通過(guò)case語(yǔ)句,實(shí)現(xiàn)了選擇性輸出,對(duì)不同功能進(jìn)行綜合;

      運(yùn)行結(jié)果:

      Figure 11 always塊組合邏輯電路

      (5)練習(xí)六:在verilog HDL中使用函數(shù)

      語(yǔ)法要點(diǎn):

      函數(shù)最基本功能即實(shí)現(xiàn)計(jì)算,通過(guò)對(duì)不同函數(shù)定義,實(shí)現(xiàn)不同的計(jì)算功能;同時(shí)定義函數(shù),可以利于在該模塊外對(duì)某函數(shù)功能的調(diào)用,增強(qiáng)了程序的通用性和功能性,同時(shí)可以使程序結(jié)構(gòu)更加清晰,易讀易懂;

      運(yùn)行結(jié)果:

      Figure 12使用函數(shù)

      (6)練習(xí)七:在verilog HDL中使用任務(wù)

      語(yǔ)法要點(diǎn):

      相比函數(shù),任務(wù)的調(diào)用功能更強(qiáng)大,可以實(shí)現(xiàn)運(yùn)算并輸出多個(gè)結(jié)果的功能,同時(shí)任務(wù)并不返回計(jì)算值,只通過(guò)類似C語(yǔ)言中的形參和實(shí)參的數(shù)據(jù)交換,實(shí)現(xiàn)功能;任務(wù)的定義和調(diào)用可

      以只程序結(jié)構(gòu)更明晰,功能更豐富;

      程序中通過(guò)對(duì)比較順序的設(shè)計(jì),實(shí)現(xiàn)了對(duì)4個(gè)數(shù)字,進(jìn)行5次比較即可成功完成排序功能的目的;

      運(yùn)行結(jié)果:

      Figure 13使用任務(wù)

      (7)練習(xí)八:利用有限狀態(tài)機(jī)進(jìn)行時(shí)許邏輯設(shè)計(jì)

      語(yǔ)法要點(diǎn):

      設(shè)計(jì)有限狀態(tài)機(jī)主要需要進(jìn)行狀態(tài)分配,狀態(tài)編碼,然后利用case語(yǔ)句進(jìn)行判斷,從而改變相應(yīng)狀態(tài),實(shí)現(xiàn)狀態(tài)轉(zhuǎn)移和輸出變換;

      對(duì)涉及時(shí)鐘的一般時(shí)序邏輯,主要運(yùn)用非阻塞(〈=)賦值完成功能;

      課本程序問(wèn)題修改:

      在modelsim 10中,測(cè)試文件時(shí)鐘無(wú)法仿真,故只能保持與課本測(cè)試文件相同的思路,重新編寫(xiě)測(cè)試文件,仿真結(jié)果如下,與課本完全一致;

      運(yùn)行結(jié)果:

      Figure 14有限狀態(tài)機(jī)

      三、實(shí)驗(yàn)總結(jié)及體會(huì):

      通過(guò)半個(gè)學(xué)期的學(xué)習(xí)和實(shí)驗(yàn),我初步掌握了verilogHDL語(yǔ)言和modelsim軟件,可以通過(guò)編程實(shí)現(xiàn)數(shù)字電路基礎(chǔ)中幾乎全部簡(jiǎn)單邏輯芯片的功能,同時(shí)可以用編程實(shí)現(xiàn)相對(duì)復(fù)雜一點(diǎn)的邏輯電路和功能.總體而言,四次實(shí)驗(yàn)內(nèi)容相對(duì)簡(jiǎn)單,幾乎是在課后實(shí)驗(yàn)的基礎(chǔ)上稍稍做了提高,以利于我們掌握并鞏固課上學(xué)習(xí)的知識(shí)。有幾個(gè)課后實(shí)驗(yàn)內(nèi)容,按照程序輸入后無(wú)法進(jìn)行波形仿真,在改正一些錯(cuò)誤定義,或者重寫(xiě)測(cè)試程序后,都能順利完成實(shí)驗(yàn)任務(wù)。通過(guò)實(shí)驗(yàn)上機(jī),鞏固了我們的理論知識(shí),加強(qiáng)了實(shí)際運(yùn)用的能力,對(duì)整個(gè)課程的學(xué)習(xí)起到了很好的作用。

      最后一個(gè)補(bǔ)充實(shí)驗(yàn)相對(duì)復(fù)雜,但實(shí)現(xiàn)的方法卻可以有很多,在實(shí)際寫(xiě)代碼前進(jìn)行構(gòu)思分析,在這個(gè)實(shí)驗(yàn)中顯得尤為重要,例如,如何發(fā)揮FPGA并行處理的能力,如何提高程序的通用性,能夠?qū)⑺O(shè)計(jì)的模塊結(jié)構(gòu)同時(shí)完成四個(gè)任務(wù),如何設(shè)計(jì)代碼提高效率的同時(shí)節(jié)省硬件資源??都是在設(shè)計(jì)構(gòu)思中不得不考慮的環(huán)節(jié),因此,通過(guò)最后一個(gè)實(shí)驗(yàn)的設(shè)計(jì),能夠很好的鍛煉我們解決實(shí)際生活中問(wèn)題的能力,使我們對(duì)所學(xué)的知識(shí)能夠真正有所使用。

      運(yùn)用verilog HDL語(yǔ)言進(jìn)行硬件電路設(shè)計(jì),已成為未來(lái)電路設(shè)計(jì)的主要趨勢(shì),學(xué)習(xí)這門語(yǔ)言及相應(yīng)軟件,能夠幫助我們?cè)谝院蟮膶W(xué)習(xí)及科研中,大大提高我們的效率,使我們能夠快速搭建實(shí)驗(yàn)平臺(tái),完成目標(biāo)功能。

      雖然8周的課,時(shí)間相對(duì)較短,但通過(guò)這8周的學(xué)習(xí),我對(duì)verilog HDL語(yǔ)言有了全面的認(rèn)識(shí),對(duì)基本的語(yǔ)法都有了很好的掌握,雖然時(shí)間有限,不能對(duì)verilog HDL語(yǔ)言有更深入的認(rèn)識(shí),但通過(guò)這8周的學(xué)習(xí),我為我將來(lái)進(jìn)一步深化使用這個(gè)工具打下了堅(jiān)實(shí)的基礎(chǔ)。

      四、選作程序源代碼(1)練習(xí)題3:利用10MB的時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形 主程序:

      module fdivison_2(RESET,F10M,clk_out,j);input F10M,RESET;output clk_out;output[12:0] j;

      regclk_out;

      reg[12:0] j;always @(posedge F10M)begin if(!RESET)begin clk_out<=0;j<=0;end

      else begin if(j==199)

      begin

      j<=j+1;clk_out<=1;

      end

      else if(j==299)

      begin

      j<=j+1;clk_out<=0;

      end

      else if(j==499)

      j<=0;

      else j<=j+1;end end

      endmodule

      output[3:0] out;

      reg[3:0] out;

      always @(a or b or c or d or e or f or g or h or selet)

      begin

      case(selet)

      `s1:out=a;

      `s2:out=b;

      `s3:out=c;

      `s4:out=d;

      `s5:out=e;

      `s6:out=f;

      `s7:out=g;

      `s8:out=h;default:out=4'hz;endcase

      end

      endmodule

      測(cè)試程序: `timescale 1 ns/1 ns

      module muxtest;

      wire[3:0] out;reg[3:0] a,b,c,d,e,f,g,h;reg[2:0] selet;

      parameter times1=8;

      initial

      begin

      a=0;

      b=1;

      c=2;d=3;

      e=4;

      f=5;

      g=6;

      h=7;selet=3'h0;

      repeat(5)測(cè)試程序:

      `timescale 1ns/100ps `define clk_cycle 50 module TOP_2;reg F10M,RESET;wire clk;wire[12:0] j;always #`clk_cycle

      F10M = ~F10M;

      initial

      begin

      RESET=1;

      F10M=0;

      #100 RESET=0;

      #100 RESET=1;

      #10000 $stop;

      end

      fdivison_2 fdivison_2(.RESET(RESET),.F10M(F10M),.clk_out(clk),.j(j));

      endmodule

      (2)練習(xí)題4:運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器

      主程序: `define s1 3'd0 `define s2 3'd1 `define s3 3'd2 `define s4 3'd3 `define s5 3'd4 `define s6 3'd5 `define s7 3'd6 `define s8 3'd7

      module mux_8(a,b,c,d,e,f,g,h,selet,out);

      input[3:0] a,b,c,d,e,f,g,h;

      input[2:0] selet;

      begin

      #100 selet=selet+1;

      end

      selet=0;repeat(times1)

      begin

      #100 selet=selet+1;

      a={$random}%16;

      b={$random}%16;

      c={$random}%16;

      d={$random}%16;

      e={$random}%16;

      f={$random}%16;

      g={$random}%16;

      h={$random}%16;

      end

      #100 $stop;

      end

      mux_8 m0(a,b,c,d,e,f,g,h,selet,out);endmodule

      (3)練習(xí)題5:設(shè)計(jì)一個(gè)帶控制端的邏輯運(yùn)算電路

      主程序:

      `define sqrR 4'd0 `define triR 4'd0 `define factR 4'd0

      module sqr(a,reset,clk,sqr_out,tri_out,fact_out);

      input[3:0] a;input reset,clk;output[7:0] sqr_out,tri_out,fact_out;reg[7:0] sqr_out,tri_out,fact_out;

      always @(posedgeclk)begin

      if(!reset)

      {sqr_out,tri_out,fact_out}={`sqrR,`triR,`factR};

      else

      begin

      sqr_out=sqr_cal(a);tri_out=tri_cal(a);fact_out=fact_cal(a);

      end end

      function[7:0] sqr_cal;

      input[3:0] a;

      begin sqr_cal=a*a;

      end endfunction

      function[7:0] tri_cal;

      input[3:0] a;

      begin tri_cal=a*a*a;

      end endfunction

      function[7:0] fact_cal;

      input[3:0] a;

      begin

      if(a>5)fact_cal=0;

      else

      begin

      case(a)

      0:fact_cal=1;

      1:fact_cal=1;

      2:fact_cal=2;

      3:fact_cal=6;

      4:fact_cal=24;

      5:fact_cal=120;endcase

      end

      end endfunction

      endmodule

      測(cè)試程序:

      `timescale 1 ns/100 ps `define clk_cycle 50

      module sqrTEST;

      reg[3:0] a,i;regreset,clk;

      wire[7:0] sqr_out,tri_out,fact_out;

      initial

      begin clk=0;

      a=0;

      reset=1;

      #100 reset=0;

      #100 reset=1;

      for(i=0;i<=6;i=i+1)

      begin

      #200 a=i;

      end

      #100 $stop;

      end

      always #`clk_cycleclk=~clk;

      sqr m(a,reset,clk,sqr_out,tri_out,fact_out);

      endmodule

      (4)練習(xí)題6:用兩種不同的設(shè)計(jì)方法設(shè)計(jì)一個(gè)功能相同的模塊,完成4個(gè)數(shù)據(jù)的冒泡排序

      組合邏輯實(shí)現(xiàn)程序:

      module bub(ai,bi,ci,di,ao,bo,co,do);

      input[7:0] ai,bi,ci,di;output[7:0] ao,bo,co,do;reg[7:0] ao,bo,co,do;reg[7:0] ar,br,cr,dr;reg[3:0] n;

      parameter so=4;

      //

      always @(ai or bi or ci or di)begin

      {ar,br,cr,dr}={ai,bi,ci,di};

      for(n=so;n>1;n=n-1)

      //

      bb(ar,br,cr,dr,n);

      {ao,bo,co,do}={ar,br,cr,dr};end

      task bb;

      // inout[7:0] x1,x2,x3,x4;

      input[3:0] n;

      // reg[7:0] temp;reg[3:0] s;

      if(n>0)

      for(s=1;s

      begin

      case(s)

      1:sort2(x1,x2);2:sort2(x2,x3);

      3:sort2(x3,x4);endcase

      end endtask

      task sort2;inout[7:0] x,y;reg[7:0] temp;

      if(x>y)

      begin

      temp=x;

      x=y;

      y=temp;

      end endtask

      endmodule

      組合邏輯測(cè)試程序: `timescale 1 ns/100 ps

      module bubTEST;reg[7:0] ai,bi,ci,di;wire[7:0] ao,bo,co,do;

      initial

      begin ai=0;bi=0;ci=0;di=0;

      repeat(4)

      begin

      #100 ai={$random}%256;

      bi={$random}%256;

      ci={$random}%256;

      di={$random}%256;

      end

      #100 $stop;

      end

      bub m0(ai,bi,ci,di,ao,bo,co,do);

      endmodule

      時(shí)序邏輯實(shí)現(xiàn)程序:

      module bub_1(in,clk,ar,br,cr,dr,ao,bo,co,do);

      input[7:0] in;input clk;output[7:0] ao,bo,co,do;output[7:0] ar,br,cr,dr;reg[7:0] ao,bo,co,do;reg[7:0] ar,br,cr,dr;reg[3:0] n,s,q;

      parameter so=4;

      initial

      begin

      n=0;

      s=0;

      q=0;

      end

      always @(posedgeclk)begin

      if(n<=so)

      begin

      n=n+1;ar<=in;br<=ar;cr<=br;dr<=cr;

      end

      if(n==so+1)

      begin

      n<=so+2;

      s<=so;

      q<=1;

      end

      if(s>1)

      begin

      {ao,bo,co,do}<={ar,br,cr,dr};

      if(q

      begin

      case(q)

      1:sort2(ar,br);

      2:sort2(br,cr);

      3:sort2(cr,dr);endcase

      q<=q+1;

      end

      else

      begin

      s<=s-1;

      q<=1;

      end

      end

      end

      task sort2;inout[7:0] x,y;reg[7:0] temp;

      if(x>y)

      begin

      temp=x;

      x=y;

      y=temp;

      end endtask

      endmodule

      時(shí)序邏輯測(cè)試程序: `timescale 1 ns/100 ps

      module bubTEST_1;reg[7:0] in;regclk;

      wire[7:0] ao,bo,co,do,ar,br,cr,dr;

      initial

      begin clk=0;

      in=0;

      begin

      repeat(4)

      #100 in={$random}%256;

      end

      #100 $stop;

      end

      always #50 clk=~clk;

      bub_1 m0(in,clk,ar,br,cr,dr,ao,bo,co,do);

      endmodule

      (5)補(bǔ)充練習(xí)2:樓梯燈設(shè)計(jì) 主程序:

      module final2(signal,reset,clk,light);

      input[2:0] signal;

      input reset,clk;

      output[2:0] light;

      reg[2:0]

      signal_reg,light_reg,light_test,signal_test;

      reg[11:0] k0,k1,k2,k0a,k1a,k2a,k0b,k1b,k2b;

      reg[1:0] state0,state1,state2;

      reg[3:0] i0,i1,i2;

      parameter light_off=2'b00,light_on8=2'b01,light_on12=2'b10;initial begin

      k0=0;k1=0;k2=0;

      k0a=0;k1a=0;k2a=0;

      k0b=0;k1b=0;k2b=0;

      i0=0;i1=0;i2=0;light_reg=3'b000;

      state0=light_off;

      state1=light_off;

      state2=light_off;signal_reg=0;signal_test=signal;end

      //

      //

      always @(posedgeclk)begin

      signal_test[0]<=signal[0];if(signal_test[0]==signal[0])

      begin

      i0=i0+1;

      end else

      i0=0;if(i0>=5)

      begin

      signal_reg[0]=signal[0];

      end

      if(state0==light_off)

      begin

      k0=0;

      k0a=0;

      k0b=0;

      end else

      k0=k0+1;

      case(signal_reg[0])

      1: if(!reset)

      begin

      state0=light_off;

      end

      else

      begin

      k0a=k0a+1;

      if((k0a >= 79)&&(k0<=119))

      state0=light_on12;

      else

      state0=light_on8;

      end

      0:if(!reset)

      begin

      state0=light_off;

      end

      else if(k0a==0)

      state0=light_off;endcase

      case(state0)

      light_off:light_reg[0]=0;

      light_on8:

      begin light_reg[0]=1;

      if(k0b==79)

      state0=light_off;

      else

      k0b=k0b+1;

      end

      light_on12:

      begin light_reg[0]=1;

      if(k0b==119)

      state0=light_off;

      else

      k0b=k0b+1;

      end endcase end

      always @(posedgeclk)begin

      signal_test[1]<=signal[1];if(signal_test[1]==signal[1])

      begin

      i1=i1+1;

      end else

      i1=0;

      if(i1>=5)

      begin

      signal_reg[1]=signal[1];

      end

      if(state1==light_off)

      begin

      k1=0;

      k1a=0;

      k1b=0;

      end else

      k1=k1+1;

      case(signal_reg[1])

      1: if(!reset)

      begin

      state1=light_off;

      end

      else

      begin

      k1a=k1a+1;

      if((k1a >= 79)&&(k1<=119))

      state1=light_on12;

      else

      state1=light_on8;

      end

      0:if(!reset)

      begin

      state1=light_off;

      end

      else if(k1a==0)

      state1=light_off;endcase

      case(state1)

      light_off:light_reg[1]=0;

      light_on8:

      begin light_reg[1]=1;

      if(k1b==79)

      state1=light_off;

      else

      k1b=k1b+1;

      end

      light_on12:

      begin light_reg[1]=1;

      if(k1b==119)

      state1=light_off;

      else

      k1b=k1b+1;

      end endcase end

      //

      // always @(posedgeclk)begin signal_test[2]<=signal[2];if(signal_test[2]==signal[2])

      begin

      i2=i2+1;

      end else

      i2=0;if(i2>=5)

      begin signal_reg[2]=signal[2];

      end

      if(state2==light_off)

      begin

      k2=0;

      k2a=0;

      k2b=0;

      end else

      k2=k2+1;

      case(signal_reg[2])

      1: if(!reset)

      begin

      state2=light_off;

      end

      else

      begin

      k2a=k2a+1;

      if((k2a >= 79)&&(k2<=119))

      state2=light_on12;

      else

      state2=light_on8;

      end

      0:if(!reset)

      begin

      state2=light_off;

      end

      else if(k2a==0)

      state2=light_off;endcase

      case(state2)

      light_off:light_reg[2]=0;

      light_on8:

      begin light_reg[2]=1;

      if(k2b==79)

      state2=light_off;

      else

      k2b=k2b+1;

      end

      light_on12:

      begin light_reg[2]=1;

      if(k2b==119)

      state2=light_off;

      else

      k2b=k2b+1;

      end endcase

      casex(light_reg)

      3'b000:light_test=000;

      3'b001:light_test=001;

      3'b01x:light_test=010;

      3'b1xx:light_test=100;endcase end

      assign light=light_test;endmodule

      測(cè)試程序:

      `timescale 10ms/10ms

      module final_TOP2;reg[2:0] signal;regclk,reset;

      wire[2:0] light;

      initial begin clk=0;

      reset=1;

      #2 reset=0;

      #10 reset=1;

      #10 signal=3'b111;

      #10 signal=3'b000;

      #900 signal=3'b111;

      #100 signal=3'b000;

      #900 signal=3'b011;

      #100 signal=3'b000;

      #900 signal=3'b001;

      #900 signal=3'b000;

      #100 $stop;end

      always #5 clk=~clk;

      final2 m(signal,reset,clk,light);endmodule

      第二篇:北航eda實(shí)驗(yàn)報(bào)告數(shù)字部分

      Verilog數(shù)字電路設(shè)計(jì)

      實(shí)驗(yàn)報(bào)告

      院系: 組員:

      年月日

      Verilog實(shí)驗(yàn)報(bào)告

      目錄

      分組概況....................................................................................................................................3 分組概況................................................................................................................................3 實(shí)驗(yàn)概況................................................................................................................................4 實(shí)驗(yàn)感想................................................................................................................................5

      實(shí)驗(yàn)內(nèi)容....................................................................................................................................9 實(shí)驗(yàn)一....................................................................................................................................9 實(shí)驗(yàn)二..................................................................................................................................15 實(shí)驗(yàn)三..................................................................................................................................25 實(shí)驗(yàn)四..................................................................................................................................33

      Verilog實(shí)驗(yàn)報(bào)告

      一、分組概況

      組長(zhǎng):

      主要負(fù)責(zé)各次實(shí)驗(yàn)的總體進(jìn)程,以及選做實(shí)驗(yàn)的代碼編譯。在實(shí)驗(yàn)報(bào)告中負(fù)責(zé)統(tǒng)籌規(guī)劃及后期編排。

      組員:

      負(fù)責(zé)各次實(shí)驗(yàn)必做實(shí)驗(yàn)源代碼的錄入及仿真。在實(shí)驗(yàn)報(bào)告中負(fù)責(zé)報(bào)告前期錄入,包括各次實(shí)驗(yàn)的簡(jiǎn)要內(nèi)容、步驟等。

      Verilog實(shí)驗(yàn)報(bào)告

      二、實(shí)驗(yàn)概況

      本課程共安排四次實(shí)驗(yàn),其內(nèi)容是:

      1、練習(xí)

      一、簡(jiǎn)單的組合邏輯設(shè)計(jì)

      練習(xí)

      二、簡(jiǎn)單分頻時(shí)序邏輯電路的設(shè)計(jì) 選做

      一、設(shè)計(jì)一個(gè)字節(jié)(8位)的比較器

      2、練習(xí)

      三、利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻時(shí)序電路

      練習(xí)

      五、用always塊實(shí)現(xiàn)較復(fù)雜組合邏輯電路 選做

      一、利用10MB時(shí)鐘設(shè)計(jì)一個(gè)單周期波形 選做

      二、運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器

      3、練習(xí)

      四、阻塞賦值與非阻塞賦值的區(qū)別

      練習(xí)

      六、在Verilog中使用函數(shù) 練習(xí)

      七、在Verilog中使用任務(wù)

      練習(xí)題

      5、綜合一個(gè)可以計(jì)算正整數(shù)平方、立方、階乘的函數(shù) 思考題

      3、在blocking模塊中實(shí)現(xiàn)對(duì)兩種寫(xiě)法的仿真

      4、必做

      一、設(shè)計(jì)一個(gè)串行數(shù)據(jù)檢測(cè)器

      必做

      二、樓梯燈——基本任務(wù) 選做

      一、樓梯燈——擴(kuò)展任務(wù)

      Verilog實(shí)驗(yàn)報(bào)告

      三、感想

      通過(guò)這4次的實(shí)驗(yàn),我們基本熟悉Modelsim 軟件,掌握了Modelsim 軟件的編譯、仿真方法。同時(shí)在編寫(xiě)程序的過(guò)程中,加深了我們對(duì)課上所講的語(yǔ)法的認(rèn)識(shí)以及學(xué)會(huì)了測(cè)試模塊的編寫(xiě)。經(jīng)過(guò)實(shí)驗(yàn)一,我們掌握了基本組合邏輯電路,基本時(shí)序電路;經(jīng)過(guò)實(shí)驗(yàn)二,我們掌握條件語(yǔ)句在簡(jiǎn)單時(shí)序模塊設(shè)計(jì)中的使用、在Verilog模塊中應(yīng)用計(jì)數(shù)器以及用always實(shí)現(xiàn)較大組合邏輯電路;經(jīng)過(guò)實(shí)驗(yàn)三,我們掌握阻塞賦值與非阻塞賦值的概念與區(qū)別,了解函數(shù)的定義和在模塊設(shè)計(jì)中的使用,掌握任務(wù)在verilog模塊設(shè)計(jì)中的應(yīng)用;經(jīng)過(guò)實(shí)驗(yàn)四,我們掌握利用有限狀態(tài)機(jī)實(shí)現(xiàn)一般時(shí)序邏輯分析的方法。在實(shí)驗(yàn)過(guò)程中,我們也遇到過(guò)程序編寫(xiě)以及軟件仿真上的問(wèn)題。程序編寫(xiě)時(shí),要注意一些細(xì)節(jié),比如符號(hào),全角與半角等。軟件仿真過(guò)程中,我們出現(xiàn)過(guò)程序無(wú)錯(cuò),但添加波形運(yùn)行后,卻沒(méi)有波形的情況,最后上網(wǎng)百度,找到了解決方法。實(shí)驗(yàn)總體來(lái)說(shuō),都比較順利。對(duì)于難度較大的實(shí)驗(yàn)四,只要思路清晰,考慮到所有的情況,就能做出來(lái)。

      Verilog實(shí)驗(yàn)報(bào)告

      四、實(shí)驗(yàn)內(nèi)容 第一次實(shí)驗(yàn)課:

      練習(xí)一 簡(jiǎn)單的組合邏輯設(shè)計(jì)

      實(shí)驗(yàn)?zāi)康模海?)掌握基本組合邏輯電路的實(shí)現(xiàn)方法(2)初步了解兩種基本組合邏輯電路的生成方法(3)學(xué)習(xí)測(cè)試模塊的編寫(xiě)(4)通過(guò)綜合和布局布線了解不同層次仿真的物理意義 實(shí)驗(yàn)原理:

      實(shí)驗(yàn)代碼提供的是一個(gè)可綜合的數(shù)據(jù)比較器。從語(yǔ)句中可以看出是比較數(shù)據(jù)a,b的結(jié)果,結(jié)果相同輸出1,否則輸出0.測(cè)試模塊用于檢測(cè)模塊設(shè)計(jì)是否正確,給出輸入信號(hào),觀察模塊的內(nèi)部信號(hào)和輸出信號(hào)以確定設(shè)計(jì)是否正確。綜合就是把compare.v文件送到synplify或其他綜合器進(jìn)行處理,啟動(dòng)綜合器編譯。布局布線就是把綜合后的另一種文件(EDIF),在布線工具控制下進(jìn)行處理,啟動(dòng)布局布線的編譯。實(shí)驗(yàn)內(nèi)容:

      模塊源代碼的組合邏輯仿真與測(cè)試

      實(shí)驗(yàn)代碼:

      module compare(equal,a,b);inputa,b;output equal;

      assign equal =(a==b)?1:0;

      endmodule

      實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/1ns `include “./compare.v”

      module t;rega,b;wire equal;initial begin a=0;b=0;#100 a=0;b=1;#100 a=1;b=1;#100 a=1;b=0;

      Verilog實(shí)驗(yàn)報(bào)告

      #100 a=0;b=0;#100 $stop;end

      compare m(.equal(equal),.a(a),.b(b));

      endmodule 仿真結(jié)果:

      練習(xí)二 簡(jiǎn)單分頻時(shí)序邏輯電路的設(shè)計(jì)

      實(shí)驗(yàn)?zāi)康模海?)掌握最基本時(shí)序電路的實(shí)現(xiàn)方法(2)學(xué)習(xí)時(shí)序電路測(cè)試模塊的編寫(xiě)(3)學(xué)習(xí)綜合和不同層次的仿真 實(shí)驗(yàn)原理:

      對(duì)于組合邏輯電路,可綜合成具體電路結(jié)構(gòu)的時(shí)序邏輯電路也有準(zhǔn)確的表達(dá)方式。在可綜合的模型中,通常用always塊或者@(posedgeclk)或(negedgeclk)結(jié)構(gòu)表達(dá)時(shí)序邏輯。實(shí)驗(yàn)為二分之一分頻器模型。

      在always塊中,被賦值信號(hào)都必須定義為reg型,對(duì)于reg型數(shù)據(jù),如果未對(duì)它進(jìn)行賦值,仿真工具會(huì)認(rèn)為它是不定態(tài)的。為了正確觀察結(jié)果,在可綜合模塊中,常定義一個(gè)復(fù)位信號(hào)reset,其為低電平時(shí)對(duì)寄存器進(jìn)行復(fù)位。實(shí)驗(yàn)內(nèi)容:

      分頻時(shí)序電路的仿真測(cè)試

      實(shí)驗(yàn)代碼:

      modulehalf_clk(reset,clk_in,clk_out);inputclk_in,reset;outputclk_out;regclk_out;always @(posedgeclk_in)begin if(!reset)clk_out=0;elseclk_out=~clk_out;end endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      Verilog實(shí)驗(yàn)報(bào)告

      `timescale 1ns/100ps `define clk_cycle 50 module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initial begin clk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;end half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));endmodule 仿真結(jié)果:

      選做一 設(shè)計(jì)一個(gè)字節(jié)(8位)比較器

      實(shí)驗(yàn)內(nèi)容:

      比較兩個(gè)字節(jié)的大小,若a[7:0]大于b[7:0],則輸出高電平,否則輸出低電平。

      實(shí)驗(yàn)代碼:

      module compare8(equal,a,b);input [7:0]a,b;output equal;reg equal;always@(a or b)if(a>b)equal=1;else equal=0;endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/1ns

      Verilog實(shí)驗(yàn)報(bào)告

      `include “./compare8.v” module test8;reg [7:0]a;reg [7:0]b;wire equal;initial begin a=8'b10000000;b=8'b00000000;#100 a=8'b00001000;b=8'b00001111;#100 a=8'b00001111;b=8'b00011111;#100 a=8'b11111111;b=8'b11111111;#100 a=8'b10101010;b=8'b00001111;#100 $stop;end compare8 m(.equal(equal),.a(a),.b(b));endmodule 仿真結(jié)果:

      第二次實(shí)驗(yàn)課

      練習(xí)三 利用條件語(yǔ)句實(shí)現(xiàn)計(jì)數(shù)分頻時(shí)序電路

      實(shí)驗(yàn)?zāi)康模海?)掌握條件語(yǔ)句在簡(jiǎn)單時(shí)序模塊設(shè)計(jì)中的使用(2)學(xué)習(xí)在Verilog模塊中應(yīng)用計(jì)數(shù)器(3)學(xué)習(xí)測(cè)試模塊的編寫(xiě)、綜合和不同層次的仿真 實(shí)驗(yàn)原理:

      在可綜合的Verilog HDL模型中,常用的條件語(yǔ)句有if ?else和case?endcase兩種結(jié)構(gòu),用法和C語(yǔ)言相似。1.if語(yǔ)句(1)if(表達(dá)式)語(yǔ)句

      (2)if(表達(dá)式)語(yǔ)句1 else語(yǔ)句2(3)if(表達(dá)式1)語(yǔ)句1;

      else if(表達(dá)式2)語(yǔ)句2; else if(表達(dá)式3)語(yǔ)句3;

      Verilog實(shí)驗(yàn)報(bào)告

      ?? 2.case語(yǔ)句

      (1)case(表達(dá)式)endcase(2)casez(表達(dá)式)endcase(3)casex(表達(dá)式)endcase 前者用于不太復(fù)雜的分支關(guān)系,實(shí)際編寫(xiě)模塊時(shí)常用的是后者。實(shí)驗(yàn)代碼是一個(gè)可綜合風(fēng)格的分頻器,可將10M時(shí)鐘分頻為500K,基本原理和二分之一分頻器類似,但需要定義一個(gè)計(jì)數(shù)器以準(zhǔn)確獲得1/20分頻。實(shí)驗(yàn)內(nèi)容:

      進(jìn)行所給代碼計(jì)數(shù)分頻器的仿真測(cè)試并觀察輸出波形

      實(shí)驗(yàn)代碼:

      modulefdivsion(RESET,F10M,F500K);input F10M,RESET;output F500K;reg F500K;reg [7:0]j;always @(posedge F10M)if(!RESET)begin F500K<=0;j<=0;end else begin if(j==9)begin j<=0;F500K<=~F500K;end else j<=j+1;end endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/100ps `defineclk_cycle 50 moduledivision_top;reg F10M,RESET;wire F500K_clk;always #`clk_cycle F10M=~F10M;initial

      Verilog實(shí)驗(yàn)報(bào)告

      begin RESET=1;F10M=0;#100 RESET=0;#100 RESET=1;#10000 $stop;end fdivsion m0(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));endmodule

      仿真結(jié)果:

      練習(xí)五 用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯電路

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)掌握用always實(shí)現(xiàn)較大組合邏輯電路的方法;

      (2)進(jìn)一步了解assign與always兩種組合電路實(shí)現(xiàn)方法的區(qū)別和注意點(diǎn);(3)學(xué)習(xí)測(cè)試模塊中隨機(jī)數(shù)的產(chǎn)生和應(yīng)用;(4)學(xué)習(xí)綜合不同層次的仿真,并比較結(jié)果。實(shí)驗(yàn)原理:

      (1)自觸發(fā)always塊:

      例:采用非阻塞賦值的自觸發(fā)振蕩器

      module osc2(clk);outputclk;regclk;initial #10 clk=0;always @(clk)#10 clk<=~clk;endmodule @(clk)的第一次觸發(fā)之后,非阻塞賦值的RHS表達(dá)式便計(jì)算出來(lái),并把值賦給LHS的時(shí)間并安排在更新事件隊(duì)列中。在非阻塞賦值更新事件隊(duì)列被激活之前,又遇到了@(clk)觸發(fā)語(yǔ)句,并且always塊再次對(duì)clk的值變化產(chǎn)生反應(yīng)。當(dāng)非阻塞LHS的值在同一時(shí)刻被更新時(shí),@(clk)再一次觸發(fā)。

      本實(shí)驗(yàn)示例中使用了電平敏感的always塊,所謂電平敏感的觸發(fā)條件:@后的括號(hào)內(nèi)電平里表中的任何一個(gè)電平發(fā)生變化(與時(shí)序邏輯不同,它在@后的括號(hào)內(nèi)沒(méi)有沿敏感關(guān)鍵詞,如posedge或negedge),就能觸發(fā)always塊的動(dòng)作。(2)assign與always

      Verilog實(shí)驗(yàn)報(bào)告

      使用assign結(jié)構(gòu)來(lái)實(shí)現(xiàn)組合邏輯電路,如果邏輯關(guān)系比較復(fù)雜,不容易理解語(yǔ)句的功能,而適當(dāng)采用always來(lái)設(shè)計(jì)組合邏輯,使源代碼語(yǔ)句的功能容易理解。

      同一組合邏輯電路分別用always塊和連續(xù)賦值語(yǔ)句assign描述時(shí),代碼的形式大相徑庭,但在always中,若適當(dāng)運(yùn)用default(在case結(jié)構(gòu)中)和else(在if?else結(jié)構(gòu)中)語(yǔ)句時(shí),通??梢跃C合為純組合邏輯,盡管被賦值的變量一定要定義為reg型;若不使用default或else對(duì)默認(rèn)項(xiàng)進(jìn)行說(shuō)明,則易生成意想不到的鎖存器,這一點(diǎn)一定注意!

      實(shí)驗(yàn)代碼:

      `define plus 3'd0 `define minus 3'd1 `define band 3'd2 `definebor 3'd3 `defineunegate 3'd4 modulealu(out,opcode,a,b);output[7:0] out;reg[7:0] out;input[2:0] opcode;input[7:0] a,b;always@(opcode or a or b)begin case(opcode)`plus: out=a+b;`minus: out=a-b;`band: out=a&b;`bor: out=a|b;`unegate: out=~a;default: out=8'hx;endcase end endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/1ns `include “./alu.v” moduleaultest;wire[7:0] out;reg[7:0] a,b;reg[2:0] opcode;parameter times=5;initial begin a={$random}%256;

      Verilog實(shí)驗(yàn)報(bào)告

      b={$random}%256;opcode=3'h0;repeat(times)begin #100 a={$random}%256;b={$random}%256;opcode=opcode+1;end #100 $stop;end alu alu1(out,opcode,a,b);endmodule 仿真結(jié)果:

      選做

      一、利用10MB時(shí)鐘設(shè)計(jì)一個(gè)單周期波形

      實(shí)驗(yàn)內(nèi)容:

      利用原有代碼,自己編寫(xiě)模塊源代碼和測(cè)試模塊代碼,利用10M時(shí)鐘,設(shè)計(jì)一個(gè)單周期形狀的周期波形

      實(shí)驗(yàn)代碼:

      module fdivision2(RESET,clk,out);inputclk,RESET;output out;reg out;reg [15:0]j;always @(posedgeclk)if(!RESET)begin out<=0;j<=0;end else begin if(j==199)begin j<=j+1;out<=~out;end

      Verilog實(shí)驗(yàn)報(bào)告

      else begin if(j==299)begin j<=j+1;out<=~out;end else if(j==499)j<=0;else j<=j+1;end end endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/100ps `defineclk_cycle 50 modulefdivision_top;regclk,RESET;wireout_clk;always #`clk_cycleclk=~clk;initial begin RESET=1;clk=0;#1000 RESET=0;#1000 RESET=1;#100000 $stop;end fdivision2fdivision(.RESET(RESET),.clk(clk),.out(out_clk));endmodule 仿真結(jié)果:

      Verilog實(shí)驗(yàn)報(bào)告

      選做

      二、用always塊實(shí)現(xiàn)較復(fù)雜的組合邏輯電路

      實(shí)驗(yàn)內(nèi)容:

      運(yùn)用always塊設(shè)計(jì)一個(gè)8路數(shù)據(jù)選擇器。要求:每路輸入數(shù)據(jù)與輸出數(shù)據(jù)均為4位2進(jìn)制數(shù),當(dāng)選擇開(kāi)關(guān)(至少3位)或輸入數(shù)據(jù)變化時(shí),輸出數(shù)據(jù)也相應(yīng)的變化。

      實(shí)驗(yàn)代碼:

      module lianxi4(out,opcode,a,b,c,d,e,f,g,h);output[3:0] out;reg[3:0] out;input[2:0] opcode;input[3:0] a,b,c,d,e,f,g,h;

      always@(opcode or a or b or c or d or e or f or g or h)begin case(opcode)3'd0:out=a;3'd1:out=b;3'd2:out=c;3'd3:out=d;3'd4:out=e;3'd5:out=f;3'd6:out=g;3'd7:out=h;endcase end endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/1ns `include “./lianxi4.v” module lianxi4_t;wire[3:0] out;reg[3:0] a,b,c,d,e,f,g,h;reg[2:0] opcode;parameter times=8;initial begin a={$random}%16;b={$random}%16;c={$random}%16;d={$random}%16;e={$random}%16;

      Verilog實(shí)驗(yàn)報(bào)告

      f={$random}%16;g={$random}%16;h={$random}%16;opcode=3'b0;repeat(times)begin #100 a={$random}%16;b={$random}%16;c={$random}%16;d={$random}%16;e={$random}%16;f={$random}%16;g={$random}%16;h={$random}%16;opcode=opcode+1;仿真結(jié)果:

      Verilog實(shí)驗(yàn)報(bào)告

      第三次實(shí)驗(yàn)課

      練習(xí)四 阻塞賦值與非阻塞賦值的區(qū)別

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)通過(guò)實(shí)驗(yàn),掌握阻塞賦值與非阻塞賦值的概念與區(qū)別;(2)了解非阻塞與阻塞賦值的不同使用場(chǎng)合;

      (3)學(xué)習(xí)測(cè)試模塊的編寫(xiě)、綜合和不同層次的仿真。實(shí)驗(yàn)原理:

      非阻塞賦值方式:在語(yǔ)句塊中,上面語(yǔ)句所賦的變量值不能立即就為下面的語(yǔ)句所用;塊結(jié)束后才能完成這次賦值操作,而所賦的變量值是上一次賦值所得;在編寫(xiě)可綜合的時(shí)序邏輯模塊時(shí),這是最常用的賦值方法。

      阻塞賦值方式:賦值語(yǔ)句執(zhí)行完后,塊才結(jié)束;被賦的值才賦值語(yǔ)句執(zhí)行完后立刻就改變;在時(shí)序邏輯中使用時(shí),可能會(huì)產(chǎn)生意想不到的結(jié)果。

      在always塊中,阻塞賦值可以理解為賦值語(yǔ)句是順序執(zhí)行的,而非阻塞賦值可以理解為賦值語(yǔ)句是并發(fā)執(zhí)行的。在時(shí)序邏輯設(shè)計(jì)中,通常使用非阻塞賦值語(yǔ)句,而在實(shí)現(xiàn)組合邏輯的assign結(jié)構(gòu)中,或者always塊結(jié)構(gòu)中都必須采用阻塞賦值語(yǔ)句。

      實(shí)驗(yàn)代碼:

      module blocking(clk,a,b,c);output[3:0] b,c;input [3:0] a;inputclk;reg [3:0] b,c;always@(posedgeclk)begin b=a;c=b;$display(“blocking:a=%d,b=%d,c=%d.”,a,b,c);end endmodule

      modulenonblocking(clk,a,b,c);output[3:0] b,c;input [3:0] a;inputclk;reg [3:0] b,c;always@(posedgeclk)begin b<=a;c<=b;$display(“nonblocking:a=%d,b=%d,c=%d.”,a,b,c);end endmodule 實(shí)驗(yàn)仿真:

      Verilog實(shí)驗(yàn)報(bào)告

      測(cè)試程序:

      `timescale 1ns/100ps `include“./blocking.v” `include“./nonblocking.v” modulecomparetop;wire [3:0] b1,c1,b2,c2;reg[3:0] a;regclk;initial begin clk=0;forever #50 clk=~clk;end initial begin a=4'h3;$display(“_”);#100 a=4'h7;$display(“_”);#100 a=4'hf;$display(“_”);#100 a=4'ha;$display(“_”);#100 a=4'h2;$display(“_”);$stop;end nonblockingnonblocking(clk,a,b2,c2);blocking blocking(clk,a,b1,c1);endmodule 測(cè)試結(jié)果:

      思考題3在blocking模塊中實(shí)現(xiàn)對(duì)兩種寫(xiě)法的仿真

      實(shí)驗(yàn)內(nèi)容:

      在blocking模塊中按如下兩種寫(xiě)法,仿真與綜合的結(jié)果會(huì)有什么樣的變化?做出仿真波形。

      實(shí)驗(yàn)代碼:

      Verilog實(shí)驗(yàn)報(bào)告

      module blocking1(clk,a,b,c);output[3:0] b,c;input [3:0] a;inputclk;reg [3:0] b,c;always@(posedgeclk)begin c=b;b=a;end endmodule

      module blocking2(clk,a,b,c);output[3:0] b,c;input [3:0] a;inputclk;reg [3:0] b,c;always@(posedgeclk)b=a;always@(posedgeclk)c=b;endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `include“./blocking1.v” `include“./blocking2.v” module top;wire [3:0] b1,c1,b2,c2;reg[3:0] a;regclk;initial begin clk=0;forever #50 clk=~clk;end initial begin a=4'h3;$display(“_”);#100 a=4'h7;$display(“_”);#100 a=4'hf;$display(“_”);#100 a=4'ha;$display(“_”);

      Verilog實(shí)驗(yàn)報(bào)告

      #100 a=4'h2;$display(“_”);$stop;end blocking2 blocking2(clk,a,b2,c2);blocking1 blocking1(clk,a,b1,c1);endmodule 測(cè)試結(jié)果:

      練習(xí)六 在Verilog HDL中使用函數(shù)

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)了解函數(shù)的定義和在模塊設(shè)計(jì)中的使用;(2)了解函數(shù)的綜合性問(wèn)題;

      (3)了解許多綜合器不能綜合復(fù)雜的算術(shù)運(yùn)算。實(shí)驗(yàn)原理:

      與一般的程序設(shè)計(jì)語(yǔ)言一樣,Verilog HDL中也可使用函數(shù)以適應(yīng)對(duì)不同變量采取同一種運(yùn)算的操作。Verilog HDL函數(shù)在綜合時(shí)被理解成具有獨(dú)立運(yùn)算功能的電路,每調(diào)用一次函數(shù)相當(dāng)于改變這部分電路的輸入以得到相應(yīng)的計(jì)算結(jié)果。函數(shù)的目的是返回一個(gè)用于表達(dá)式的值。(1)函數(shù)定義

      Function<返回值的類型或范圍>(函數(shù)名); <端口說(shuō)明語(yǔ)句> <變量類型說(shuō)明語(yǔ)句> Begin <語(yǔ)句>

      ?? End Endfuction(2)函數(shù)調(diào)用

      <函數(shù)名>(<表達(dá)式>,?<表達(dá)式>)實(shí)驗(yàn)內(nèi)容:

      采用同步時(shí)鐘觸發(fā)運(yùn)算的執(zhí)行,每個(gè)clk時(shí)鐘周期都會(huì)執(zhí)行一次運(yùn)算,并且在測(cè)試模塊中,通過(guò)調(diào)用系統(tǒng)任務(wù)$display及在時(shí)鐘的下降沿顯示每次計(jì)算的結(jié)果。

      實(shí)驗(yàn)代碼:

      moduletryfunct(clk,n,result,reset);output [31:0] result;input [3:0] n;

      Verilog實(shí)驗(yàn)報(bào)告

      inputreset,clk;reg [31:0] result;

      always @(posedgeclk)begin if(!reset)result<=0;else begin result<=n*factorial(n)/((n*2)+1);end end

      function [31:0] factorial;input [3:0] operand;reg [3:0] index;begin factorial=operand?1:0;for(index=2;index<=operand;index=index+1)factorial=index*factorial;end endfunction

      endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `include “./tryfunct.v” `timescale 1ns/1ns `define clk_cycle 50

      module tryfunct_test;reg[3:0] n,i;reg reset,clk;wire [31:0] result;

      initial begin clk=0;n=0;reset=1;#100 reset=0;#100 reset=1;for(i=0;i<=15;i=i+1)

      Verilog實(shí)驗(yàn)報(bào)告

      begin #200 n=i;end #100 $stop;end

      always #`clk_cycle clk=~clk;

      tryfunct m(.clk(clk),.n(n),.result(result),.reset(reset));

      endmodule 測(cè)試結(jié)果:

      練習(xí)七 在Verilog HDL中使用任務(wù)(task)

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)掌握任務(wù)在verilog模塊設(shè)計(jì)中的應(yīng)用;

      (2)學(xué)會(huì)在電平敏感列表的always中使用拼接操作、任務(wù)和阻塞賦值等語(yǔ)句,并生成復(fù)雜組合邏輯的高級(jí)方法。實(shí)驗(yàn)原理:

      當(dāng)我們希望能夠?qū)⒁恍┬盘?hào)進(jìn)行運(yùn)算并輸出多個(gè)結(jié)果時(shí),采用函數(shù)結(jié)構(gòu)就顯得非常不方便,而任務(wù)結(jié)構(gòu)在這方面的優(yōu)勢(shì)則十分突出。任務(wù)本身并不返回計(jì)算值,但它通過(guò)類似C語(yǔ)言中的形參與實(shí)參的數(shù)據(jù)變換,非常容易實(shí)現(xiàn)運(yùn)算結(jié)果的調(diào)用。此外,還常常利用任務(wù)來(lái)包裝模塊設(shè)計(jì)中的許多復(fù)雜的過(guò)程,將許多復(fù)雜的操作步驟用一個(gè)命名清晰易懂的任務(wù)隱藏起來(lái),大大提高程序可讀性。(1)任務(wù)和函數(shù)的不同

      函數(shù)只能與主模塊共用同一個(gè)仿真時(shí)間單位,而任務(wù)可以定義自己的仿真時(shí)間單位;函數(shù)不能啟動(dòng)任務(wù)但任務(wù)能啟動(dòng)其他任務(wù)和函數(shù);函數(shù)至少要有一個(gè)輸入變量,而任務(wù)可以沒(méi)有或有多個(gè)任何類型的變量;函數(shù)返回一個(gè)值,任務(wù)則不返回值。(2)任務(wù)定義

      Task<任務(wù)名> <端口及數(shù)據(jù)類型聲明語(yǔ)句> <語(yǔ)句1> ?? Endtask(3)任務(wù)調(diào)用

      <任務(wù)名>(端口1,端口2,?端口n); 實(shí)驗(yàn)內(nèi)容:

      Verilog實(shí)驗(yàn)報(bào)告

      利用電平敏感的always快和一個(gè)比較兩變量大小排序的任務(wù),設(shè)計(jì)出四個(gè)(4位)并行輸入數(shù)的高速排序組合邏輯。

      實(shí)驗(yàn)代碼:

      module sort4(ra,rb,rc,rd,a,b,c,d);output[3:0] ra,rb,rc,rd;input[3:0] a,b,c,d;reg[3:0] ra,rb,rc,rd;reg[3:0] va,vb,vc,vd;

      always @(a or b or c or d)begin {va,vb,vc,vd}={a,b,c,d};sort2(va,vc);sort2(vb,vd);sort2(va,vb);sort2(vc,vd);sort2(vb,vc);{ra,rb,rc,rd}={va,vb,vc,vd};end

      task sort2;inout[3:0] x,y;reg[3:0] tmp;if(x>y)begin tmp=x;x=y;y=tmp;end endtask

      endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/100ps `include “sort4.v”

      moduletask_test;reg[3:0] a,b,c,d;wire[3:0] ra,rb,rc,rd;

      initial

      Verilog實(shí)驗(yàn)報(bào)告

      begin a=0;b=0;c=0;d=0;repeat(50)begin #100 a={$random}%15;b={$random}%15;c={$random}%15;d={$random}%15;end

      #100 $stop;end

      sort4 sort4(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd));

      endmodule 測(cè)試結(jié)果:

      選做一 綜合一個(gè)可以計(jì)算整數(shù)平方、立方、階乘的函數(shù)

      實(shí)驗(yàn)內(nèi)容:

      設(shè)計(jì)一個(gè)函數(shù),可以計(jì)算整數(shù)平方、立方、以及不大于5的階乘

      實(shí)驗(yàn)代碼:

      modulelianxi(clk,n,opcode,result,reset);output [7:0] result;input [3:0] n,opcode;inputreset,clk;reg [7:0] result;

      always @(posedgeclk)begin if(!reset)result<=0;else begin case(opcode)3'd0: result<=pingfang(n);

      Verilog實(shí)驗(yàn)報(bào)告

      3'd1: result<=lifang(n);3'd2: result<=jiecheng(n);default: result=8'hx;endcase end end

      function [7:0] jiecheng;input [3:0] operand;reg [3:0] index;begin jiecheng=operand?1:0;for(index=2;index<=operand;index=index+1)jiecheng=index*jiecheng;end endfunction

      function [7:0] pingfang;input [3:0] operand;pingfang=operand*operand;endfunction

      function [7:0] lifang;input [3:0] operand;lifang=operand*operand*operand;endfunction

      endmodule 實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `include “./lianxi.v” `timescale 1ns/1ns `define clk_cycle 50

      module lianxi_test;reg[3:0] n,opcode;regreset,clk;wire [7:0] result;parameter times=20;

      initial begin clk=0;

      Verilog實(shí)驗(yàn)報(bào)告

      n=0;reset=1;opcode=0;#100 reset=0;#100 reset=1;begin n={$random}%6;opcode={$random}%3;repeat(times)begin #100 n={$random}%6;opcode={$random}%3;end end

      #1000 $stop;end

      always #`clk_cycleclk=~clk;

      lianxi lian(.clk(clk),.n(n),.opcode(opcode),.result(result),.reset(reset));

      endmodule 仿真結(jié)果:

      第四次實(shí)驗(yàn)課

      必做一[練習(xí)題七]設(shè)計(jì)一個(gè)串行數(shù)據(jù)檢測(cè)器

      實(shí)驗(yàn)?zāi)康模?/p>

      (1)掌握利用有限狀態(tài)機(jī)實(shí)現(xiàn)一般時(shí)序邏輯分析的方法;(2)掌握用Verilog編寫(xiě)可綜合的有限狀態(tài)機(jī)的標(biāo)準(zhǔn)模板;(3)掌握用Verilog編寫(xiě)狀態(tài)機(jī)模塊的測(cè)試文件的一般方法。實(shí)驗(yàn)原理:

      (1)有限狀態(tài)機(jī)

      有限狀態(tài)機(jī)是指輸出取決于過(guò)去輸入部分和當(dāng)前輸入部分的時(shí)序邏輯電路。一般來(lái)說(shuō),除了輸入部分和輸出部分外,有限狀態(tài)機(jī)還含有一組具有“記憶”功能的寄存器,這些寄存器的功能是記憶有限狀態(tài)機(jī)的內(nèi)部狀態(tài),它們常被稱為狀態(tài)寄存

      Verilog實(shí)驗(yàn)報(bào)告

      器。在有限狀態(tài)機(jī)中,狀態(tài)寄存器的的下一個(gè)狀態(tài)不僅與輸入信號(hào)有關(guān),而且還與該寄存器的當(dāng)前狀態(tài)有關(guān),因此有限狀態(tài)機(jī)又可以認(rèn)為是組合邏輯和寄存器邏輯的一種組合。其中,寄存器邏輯的功能是存儲(chǔ)有限狀態(tài)機(jī)的內(nèi)部狀態(tài);而組合邏輯又可以分為次態(tài)邏輯和輸出邏輯兩部分,次態(tài)邏輯的功能是確定有限狀態(tài)機(jī)的下一個(gè)狀態(tài),輸出邏輯的功能是確定有限狀態(tài)機(jī)的輸出。(2)有限狀態(tài)機(jī)設(shè)計(jì)

      邏輯抽象,得出狀態(tài)裝換圖;狀態(tài)化簡(jiǎn);狀態(tài)分配;選定觸發(fā)器的類型并求出狀態(tài)方程、驅(qū)動(dòng)方程和輸出方程;按照方程得出邏輯圖。

      在數(shù)字電路中我們已經(jīng)學(xué)習(xí)過(guò)通過(guò)建立有限狀態(tài)機(jī)來(lái)進(jìn)行數(shù)字邏輯的設(shè)計(jì),而在Verilog HDL硬件描述語(yǔ)言中,這種設(shè)計(jì)方法得到進(jìn)一步的發(fā)展。通過(guò)Verilog HDL提供的語(yǔ)句,我們可以直觀地設(shè)計(jì)出適合更為復(fù)雜的時(shí)序邏輯的電路。實(shí)驗(yàn)內(nèi)容:

      設(shè)計(jì)一個(gè)串行數(shù)據(jù)檢測(cè)器。要求是:連續(xù)4個(gè)或4個(gè)以上為1時(shí)輸出為1,其他輸入情況下為0。編寫(xiě)測(cè)試模塊對(duì)設(shè)計(jì)的模塊進(jìn)行各種層次的仿真,并觀察波形,編寫(xiě)實(shí)驗(yàn)報(bào)告。

      實(shí)驗(yàn)代碼:

      module lianxiti7(x,z,clk,rst,state);inputx,clk,rst;output z;output[2:0]state;reg[2:0]state;wire z;

      parameter IDLE='d0,A='d1,B='d2,C='d3,D='d4;

      always@(posedgeclk)if(!rst)begin state<=IDLE;end else case(state)IDLE: state<=x ?A : IDLE;A: state<=x ?B : IDLE;B: state<=x ?C : IDLE;C: state<=x ?D :IDLE;D: state<=x ?state : IDLE;

      default:state=IDLE;endcase assign z=(state==D);endmodule

      Verilog實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 1ns/1ns `include “./lianxiti7.v” modulelianxititop;regclk,rst;reg[23:0] data;wire[2:0] state;wirez,x;assign x=data[23];always #10 clk=~clk;always @(posedgeclk)data={data[22:0],data[23]};

      initial begin clk=0;rst=1;#2 rst=0;#30 rst=1;data='b1001_1110_0111_1101_0101;#500 $stop;end lianxiti7 m(x,z,clk,rst,state);endmodule 仿真結(jié)果:

      必做二 樓梯燈——基本任務(wù)

      實(shí)驗(yàn)內(nèi)容:

      樓下到樓上依次有3個(gè)感應(yīng)燈:燈

      1、燈

      2、燈3。當(dāng)行人上下樓梯時(shí),各個(gè)燈感應(yīng)到后自動(dòng)點(diǎn)亮,若在8s內(nèi)感應(yīng)信號(hào)消失,則點(diǎn)亮8s,若感應(yīng)信號(hào)存在時(shí)間超過(guò)8s,則感應(yīng)信號(hào)消失4s后燈自動(dòng)關(guān)閉。

      任務(wù)1:做出如上邏輯電路設(shè)計(jì)并仿真; 任務(wù)2:考慮去抖,對(duì)于感應(yīng)信號(hào)到達(dá)存在毛刺(小于0.5s),設(shè)計(jì)邏輯并剔出。

      實(shí)驗(yàn)代碼:

      module loutid1(clk10,rst,switch,light);

      input clk10,rst;input[2:0]switch;output[2:0]light;

      reg[2:0]state1,state2,state3;reg[7:0]count1,count2,count3;reg[2:0]count_1,count_2,count_3;reg[2:0]light;

      parameter

      state1_start=3'b000,state2_start=3'b000,state3_start=3'b000,state1_work=3'b001,state2_work=3'b001,state3_work=3'b001,state1_up=3'b010,state2_up=3'b010,state3_up=3'b010,state1_down=3'b011,state2_down=3'b011,state3_down=3'b011,state1_other=3'b100,state2_other=3'b100,state3_other=3'b100;

      always@(posedge clk10)if(!rst)begin state1<=state1_start;count1<=8'b0;count_1<=3'b0;end else if(switch[0]=='b1&&count_1<4)count_1<=count_1+1;else case(state1)

      state1_start: if(switch[0]=='b1)begin state1<=state1_up;count1<=78;end

      Verilog實(shí)驗(yàn)報(bào)告

      else begin

      state1<=state1_start;light[0]<='b0;end

      state1_up: begin

      light[0]<='b1;

      state1<=state1_work;end

      state1_work: if(count1>0)begin

      count1<=count1-1;end else

      if(switch[0]=='b0)begin

      state1<=state1_down;end else begin

      state1<=state1_other;

      count1<=39;end

      state1_other: if(switch[0]=='b1)

      state1<=state1_other;else

      if(count1>0)begin

      count1<=count1-1;end else

      state1<=state1_down;

      state1_down: begin light[0]<='b0;count_1<=3'b0;state1<=state1_start;end

      default: state1<=state1_start;

      endcase

      always@(posedge clk10)if(!rst)begin state2<=state2_start;count2<=8'b0;count_2<=3'b0;end else if(switch[1]=='b1&&count_2<4)count_2<=count_2+1;else case(state2)

      state2_start: if(switch[1]=='b1)begin state2<=state2_up;count2<=78;end else begin state2<=state2_start;light[1]<='b0;end

      state2_work: if(count2>0)begin count2<=count2-1;end else if(switch[1]=='b0)begin

      Verilog實(shí)驗(yàn)報(bào)告

      state2<=state2_down;end else begin

      state2<=state2_other;

      count2<=39;end

      state2_other: if(switch[1]=='b1)

      state2<=state2_other;else

      if(count2>0)begin

      count2<=count2-1;end else

      state2<=state2_down;

      state2_down: begin

      light[1]<='b0;

      count_2<=3'b0;

      state2<=state2_start;end

      state2_up: begin

      light[1]<='b1;

      state2<=state2_work;end

      default:

      state2<=state2_start;

      endcase

      always@(posedge clk10)if(!rst)begin

      state3<=state3_start;count3<=8'b0;count_3<=3'b0;end else if(switch[2]=='b1&&count_3<4)count_3<=count_3+1;else case(state3)

      state3_start: if(switch[2]=='b1)begin state3<=state3_up;count3<=78;end else begin state3<=state3_start;light[2]<='b0;end

      state3_work: if(count3>0)begin count3<=count3-1;end else if(switch[2]=='b0)begin

      state3<=state3_down;end else begin state3<=state3_other;

      實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 10ms/1ms module loutid1_t;reg clk10,rst;reg[2:0] swh;wire[2:0] light;

      Verilog實(shí)驗(yàn)報(bào)告

      count3<=39;end

      state3_other: if(switch[2]=='b1)

      state3<=state3_other;else

      if(count3>0)begin

      count3<=count3-1;end else

      state3<=state3_down;

      state3_down: begin

      light[2]<='b0;

      count_3<=3'b0;

      state3<=state3_start;end

      state3_up: begin

      light[2]<='b1;

      state3<=state3_work;end

      default:

      state3<=state3_start;

      endcase

      endmodule

      Verilog實(shí)驗(yàn)報(bào)告

      parameter HALF_PERIOD = 5;

      always #HALF_PERIOD clk10=~clk10;

      initial begin

      clk10 = 0;

      rst = 1;

      swh=3'b000;

      #1 rst = 0;

      #10 rst = 1;

      #100 swh=3'b000;

      #100 swh=3'b001;#400 swh=3'b000;#40 swh=3'b001;#500 swh=3'b010;#900 swh=3'b000;#400 swh=3'b100;#400 swh=3'b000;#600 swh=3'b001;#40 swh=3'b000;

      #1000 $stop;end 仿真結(jié)果:

      選做一:樓梯燈——拓展任務(wù)

      實(shí)驗(yàn)內(nèi)容:

      任務(wù)3:若為節(jié)約能源,下一個(gè)燈點(diǎn)亮的同時(shí)將自動(dòng)關(guān)閉上一個(gè)燈,作出如上邏輯設(shè)計(jì)并仿真(僅考慮一個(gè)人的情況);

      任務(wù)4:考慮存在多個(gè)人上下樓梯的情況,比如:

      行人1已經(jīng)從燈1到達(dá)燈2,燈2受感應(yīng)自動(dòng)點(diǎn)亮,但此時(shí)行人2剛上樓梯到達(dá)燈1的位置,則燈1和燈2都須點(diǎn)亮,更加復(fù)雜一點(diǎn),如果行人2是下樓梯剛到達(dá)燈3位置,作出如上邏輯設(shè)計(jì)并仿真;

      實(shí)驗(yàn)代碼:

      modulelight_All(clk10,rst,switch,light);

      input clk10,rst;input[2:0]switch;output[2:0]light;

      reg[2:0]state1,state2,state3;reg[7:0]count1,count2,count3;reg[2:0]count_1,count_2,count_3;reg[2:0]light;

      parameter

      state1_start=3'b000,state2_start=3'b000,state3_start=3'b000,state1_work=3'b001,state2_work=3'b001,state3_work=3'b001,state1_up=3'b010,state2_up=3'b010,state3_up=3'b010,state1_down=3'b011,state2_down=3'b011,state3_down=3'b011,state1_other=3'b100,state2_other=3'b100,state3_other=3'b100;

      always@(posedge clk10)if(!rst)begin state1<=state1_start;count1<=8'b0;count_1<=3'b0;end else if(switch[0]=='b1&&count_1<4)count_1<=count_1+1;else case(state1)

      state1_start: if(switch[0]=='b1)

      Verilog實(shí)驗(yàn)報(bào)告

      begin

      state1<=state1_up;count1<=78;end else begin

      state1<=state1_start;light[0]<='b0;end

      state1_work: if(count1>0)begin

      count1<=count1-1;

      if(switch[0]=='b0&&(state2==3'b010||state3==3'b010))begin

      light[0]<='b0;state1<=state1_down;end end else

      if(switch[0]=='b0)begin

      state1<=state1_down;end else begin

      state1<=state1_other;count1<=39;end

      state1_other: if(switch[0]=='b1)

      state1<=state1_other;else

      if(count1>0)begin

      count1<=count1-1;if(switch[0]=='b0&&(state2==3'b010||state3==3'b010))begin

      light[0]<='b0;state1<=state1_down;end end else state1<=state1_down;

      state1_down: begin light[0]<='b0;count_1<=3'b0;state1<=state1_start;end

      state1_up: begin light[0]<='b1;state1<=state1_work;end

      default: state1<=state1_start;

      endcase

      always@(posedge clk10)if(!rst)begin state2<=state2_start;count2<=8'b0;count_2<=3'b0;end else if(switch[1]=='b1&&count_2<4)count_2<=count_2+1;else case(state2)

      state2_start: if(switch[1]=='b1)begin state2<=state2_up;count2<=78;

      Verilog實(shí)驗(yàn)報(bào)告

      end else begin

      state2<=state2_start;light[1]<='b0;end

      state2_work: if(count2>0)begin

      count2<=count2-1;

      if(switch[1]=='b0&&(state1==3'b010||state3==3'b010))begin

      light[1]<='b0;state2<=state2_down;end end else

      if(switch[1]=='b0)begin

      state2<=state2_down;end else begin

      state2<=state2_other;count2<=39;end

      state2_other: if(switch[1]=='b1)

      state2<=state2_other;else

      if(count2>0)begin

      count2<=count2-1;if(switch[1]=='b0&&(state1==3'b010||state3==3'b010))begin

      light[1]<='b0;

      state2<=state2_down;end end else state2<=state2_down;

      state2_down: begin light[1]<='b0;count_2<=3'b0;state2<=state2_start;end

      state2_up: begin light[1]<='b1;state2<=state2_work;end

      default: state2<=state2_start;

      endcase

      always@(posedge clk10)if(!rst)begin state3<=state3_start;count3<=8'b0;count_3<=3'b0;end else if(switch[2]=='b1&&count_3<4)count_3<=count_3+1;else case(state3)

      state3_start: if(switch[2]=='b1)begin state3<=state3_up;count3<=78;end else begin state3<=state3_start;

      Verilog實(shí)驗(yàn)報(bào)告

      light[2]<='b0;end

      state3_work: if(count3>0)begin

      count3<=count3-1;

      if(switch[2]=='b0&&(state1==3'b010||state2==3'b010))begin

      light[2]<='b0;state3<=state3_down;end end else

      if(switch[2]=='b0)begin

      state3<=state3_down;end else begin

      state3<=state3_other;count3<=39;end

      state3_other: if(switch[2]=='b1)

      state3<=state3_other;else

      if(count3>0)begin

      count3<=count3-1;if(switch[2]=='b0&&(state1==3'b010||state2==3'b010))begin

      light[2]<='b0;

      state3<=state3_down;end end else

      state3<=state3_down;

      Verilog實(shí)驗(yàn)報(bào)告

      state3_down: begin light[2]<='b0;count_3<=3'b0;state3<=state3_start;end

      state3_up: begin light[2]<='b1;

      state3<=state3_work;end

      default:

      state3<=state3_start;

      endcase

      endmodule實(shí)驗(yàn)仿真:

      測(cè)試程序:

      `timescale 10ms/1ms moduletest_light_All;reg clk10,rst;reg[2:0] up,down;wire[2:0] swh;wire[2:0] light;

      parameter HALF_PERIOD = 5;

      always #HALF_PERIOD clk10=~clk10;

      initial

      begin

      clk10 = 0;

      rst = 1;

      up = 3'b000;down = 3'b000;

      #1 rst = 0;

      #10 rst = 1;

      #100 up = 3'b001;down = 3'b000;

      #300 up =3'b010;down = 3'b000;

      #600 up = 3'b010;down = 3'b010;

      #30 up = 3'b010;

      #900 up = 3'b100;down = 3'b001;

      #1000 $stop;

      end

      assignswh = up | down;

      light_Allm5(clk10,rst,swh,light);endmodul仿真結(jié)果:

      第三篇:數(shù)字電子時(shí)鐘實(shí)驗(yàn)報(bào)告

      華大計(jì)科學(xué)院

      數(shù)字邏輯課程設(shè)計(jì)說(shuō)明書(shū)

      題目:

      多功能數(shù)字鐘

      專業(yè):

      計(jì)算機(jī)科學(xué)與技術(shù)

      班級(jí):

      網(wǎng)絡(luò)工程1班

      姓名:

      劉群 學(xué)號(hào):

      1125111023

      完成日期:

      2013-9

      一、設(shè)計(jì)題目與要求

      設(shè)計(jì)題目:多功能數(shù)字鐘 設(shè)計(jì)要求:

      1.準(zhǔn)確計(jì)時(shí),以數(shù)字形式顯示時(shí)、分、秒的時(shí)間。2.小時(shí)的計(jì)時(shí)可以為“12翻1”或“23翻0”的形式。

      3.可以進(jìn)行時(shí)、分、秒時(shí)間的校正。

      二、設(shè)計(jì)原理及其框圖 1.數(shù)字鐘的構(gòu)成

      數(shù)字鐘實(shí)際上是一個(gè)對(duì)標(biāo)準(zhǔn)頻率1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路。由于計(jì)數(shù)的起始時(shí)間不可能與標(biāo)準(zhǔn)時(shí)間(如北京時(shí)間)一致,故需要在電路上加一個(gè)校時(shí)電路。圖 1 所示為數(shù)字鐘的一般構(gòu)成框圖。

      圖1 數(shù)字電子時(shí)鐘方案框圖 ⑴多諧振蕩器電路

      多諧振蕩器電路給數(shù)字鐘提供一個(gè)頻率1Hz 的信號(hào),可保證數(shù)字鐘的走時(shí)準(zhǔn)確及穩(wěn)定。⑵時(shí)間計(jì)數(shù)器電路

      時(shí)間計(jì)數(shù)電路由秒個(gè)位和秒十位計(jì)數(shù)器、分個(gè)位和分十位計(jì)數(shù)器及時(shí)個(gè)位和時(shí)十位計(jì)數(shù)器電路構(gòu)成。其中秒個(gè)位和秒十位計(jì)數(shù)器、分個(gè)位和分十位計(jì)數(shù)器為60 進(jìn)制計(jì)數(shù)器。而根據(jù)設(shè)計(jì)要求,時(shí)個(gè)位和時(shí)十位計(jì)數(shù)器為24 進(jìn)制計(jì)數(shù)器。⑶譯碼驅(qū)動(dòng)電路

      譯碼驅(qū)動(dòng)電路將計(jì)數(shù)器輸出的8421BCD 碼轉(zhuǎn)換為數(shù)碼管需要的邏輯狀態(tài),并且為保證數(shù)碼管正常工作提供足夠的工作電流。⑷數(shù)碼管

      數(shù)碼管通常有發(fā)光二極管(LED)數(shù)碼管和液晶(LCD)數(shù)碼管。本設(shè)計(jì)提供的為L(zhǎng)ED數(shù)碼管。2.數(shù)字鐘的工作原理 ⑴多諧振蕩器電路

      555 定時(shí)器與電阻R1、R2,電容C1、C2 構(gòu)成一個(gè)多諧振蕩器,利用電容的充放電來(lái)調(diào)節(jié)輸出V0,產(chǎn)生矩形脈沖波作為時(shí)鐘信號(hào),因?yàn)槭菙?shù)字鐘,所以應(yīng)選擇的電阻電容值使頻率為1HZ。⑵時(shí)間計(jì)數(shù)單元

      六片74LS90 芯片構(gòu)成計(jì)數(shù)電路,按時(shí)間進(jìn)制從右到左構(gòu)成從低位向高位的進(jìn)位電路,并通過(guò)譯碼顯示。在六位LED 七段顯示起上顯示對(duì)應(yīng)的數(shù)值。⑶校時(shí)電源電路

      當(dāng)重新接通電源或走時(shí)出現(xiàn)誤差時(shí)都需要對(duì)時(shí)間進(jìn)行校正。通常,校正時(shí)間的方法是:首先截?cái)嗾5挠?jì)數(shù)通路,然后再進(jìn)行人工出觸發(fā)計(jì)數(shù)或?qū)㈩l率較高的方波信號(hào)加到需要校正的計(jì)數(shù)單元的輸入端,校正好后,再轉(zhuǎn)入正常計(jì)時(shí)狀態(tài)即可。

      根據(jù)要求,數(shù)字鐘應(yīng)具有分校正和時(shí)校正功能。因此,應(yīng)截?cái)喾謧€(gè)位和時(shí)個(gè)位的直接計(jì)數(shù)通路,并采用正常計(jì)時(shí)信號(hào)與校正信號(hào)可以隨時(shí)切換的電路接入其中。圖8所示即為帶有基本RS 觸發(fā)器的校時(shí)電路。

      三、元器件

      1.實(shí)驗(yàn)中所需的器材 單刀雙擲開(kāi)關(guān)4 個(gè).5V 電源.共陰七段數(shù)碼管 6 個(gè).74LS90D 集成塊 6 塊.74HC00D 6個(gè) LM555CM 1個(gè) 電阻 6個(gè) 10uF 電容 2個(gè)

      2.芯片內(nèi)部結(jié)構(gòu)及引腳圖

      圖2 LM555CM集成塊

      圖3 74LS90D集成塊

      五、各功能塊電路圖

      1秒脈沖發(fā)生器主要由555 定時(shí)器和一些電阻電容構(gòu)成,原理是利用555 定時(shí)器的特性,通過(guò)電容的充放電使VC 在高、低電平之間轉(zhuǎn)換。其中555 定時(shí)器的高、低電平的門閥電壓分別是2/3VCC 和1/3VCC電容器充電使VC 的電壓大于2/3VCC 則VC 就為高電平,然

      而由于反饋?zhàn)饔糜謺?huì)使電容放電。當(dāng)VC 小于1/3VCC 時(shí),VC 就為低電平。同樣由于反饋?zhàn)饔糜謺?huì)使電容充電。通過(guò)555 定時(shí)器的這一性質(zhì)我們就可以通過(guò)計(jì)算使他充放電的周期剛好為1S這樣我們就會(huì)得到1HZ 的信號(hào)。其中555 定時(shí)器的一些功能對(duì)照后面目錄。其中 555 定時(shí)器組成的脈沖發(fā)生器電路見(jiàn)附圖4.圖4 555 定時(shí)器組成的脈沖發(fā)生器

      由于我們要得到1HZ 的信號(hào),所以我們就可以通過(guò)555 定時(shí)器充放電一次所需的時(shí)間的公式。將那時(shí)間設(shè)為1S然后設(shè)定兩個(gè)電阻計(jì)算出另外那個(gè)電容值.在設(shè)定電阻值時(shí)我們要記住將電阻值設(shè)為比較常用的那種電阻值,得到的電容值也盡可能讓它是比較普遍使用 的。這樣就避免了在實(shí)際組裝過(guò)程中很難買到當(dāng)初設(shè)定的那電阻和計(jì)算出 的電容值。

      在這次設(shè)定中我們?cè)O(shè)定的電阻值RA=10KΩ,RB=62kΩ,C=10uF 經(jīng)公式

      f = 1.43 ÷【(RA + 2RB)×C 】 可得近似為1HZ。

      2、利用一個(gè)LED 數(shù)碼管一塊74LS90D 連接成一個(gè)十進(jìn)制計(jì)數(shù)器,電路在晶振的作用下數(shù)碼管從0—9 顯示見(jiàn)圖5。

      圖5、利用2 片74LS90D 芯片連接成一個(gè)六十進(jìn)制電路,電路可從0—59 顯示。第一片74LS90D芯片構(gòu)成10 進(jìn)制計(jì)數(shù)器,第二片74LS90D 芯片構(gòu)成6 進(jìn)制計(jì)數(shù)器。74LS90D 具有異步清零功能。

      在第一片74ls90 構(gòu)成的十進(jìn)制計(jì)數(shù)器中,當(dāng)?shù)谑畟€(gè)脈沖來(lái)到時(shí)。此時(shí)他的四級(jí)觸發(fā)器的狀態(tài)為“1001”。這時(shí)他就會(huì)自動(dòng)清零。同時(shí)給第二片74ls90 構(gòu)成的6 進(jìn)制計(jì)數(shù)器進(jìn)一,第六個(gè)脈沖進(jìn)位到來(lái)時(shí),此時(shí)第二片74ls90 芯片的觸發(fā)器的狀態(tài)為“0110”,這時(shí)QB,QC 均為高電平。將QB 與RO1 相連,將Ro2 與Qc 相連,就會(huì)進(jìn)行異步清零。如此循環(huán)就會(huì)構(gòu)成60 進(jìn)制計(jì)數(shù)器.見(jiàn)附圖6.圖6 十六進(jìn)制電路

      4、利用2 片74LS90D 芯片構(gòu)成24 進(jìn)制計(jì)數(shù)器。一片構(gòu)成二進(jìn)制計(jì)數(shù)器,一片構(gòu)成四進(jìn)制計(jì)數(shù)器。由于74LS90D 芯片清零是由兩個(gè)清零端控制的,所以當(dāng)?shù)?4 個(gè)脈沖到來(lái)時(shí),第一片74lLS90D芯片的Qc 為高電平。第二片74LS90D 芯片的Qb 為高電平,讓第一片74LS90D 芯片的Qc 與兩片芯片的Ro1 相連.讓第二片74ls90 芯片的QB 與兩片芯片的Ro2 相連。當(dāng)?shù)?4 個(gè)脈沖到來(lái)時(shí)就會(huì)進(jìn)行異步清零。如此循環(huán)就會(huì)構(gòu)成24 進(jìn)制計(jì)數(shù)器。見(jiàn)附圖7.圖7 24進(jìn)制電路

      5、數(shù)字鐘電路由于秒信號(hào)的精確性和穩(wěn)定性不可能坐到完全準(zhǔn)確無(wú)誤,又因?yàn)殡娐分衅渌脑驍?shù)字鐘總會(huì)產(chǎn)生走時(shí)誤差的現(xiàn)象。所以,電路中就應(yīng)該有校準(zhǔn)時(shí)間功能的電路。在這次設(shè)計(jì)中教時(shí)電路用的是一個(gè)RS 基本觸發(fā)器的單刀雙置開(kāi)關(guān),每搬動(dòng)開(kāi)關(guān)一次產(chǎn)生一個(gè)計(jì)數(shù)脈沖.實(shí)現(xiàn)校時(shí)功能。見(jiàn)附圖8。

      7、利用兩個(gè)六十進(jìn)制和一個(gè)二十四進(jìn)制連接成一個(gè)時(shí)、分、秒都會(huì)進(jìn)位的電路總圖。見(jiàn)附圖8

      圖8 總電路圖

      六、心得體會(huì)

      在這次設(shè)計(jì)中我們深深地體會(huì)到了理論跟實(shí)踐的不同,理論學(xué)的再好不會(huì)動(dòng)手那也只能是紙上談兵。我們了解了集成電路芯片的型號(hào)命名規(guī)律,懂得了沒(méi)有某種芯片時(shí)的替代方法,以及在網(wǎng)上查找電子電路資料的方法,掌握了各芯片的邏輯功能及使用方法,進(jìn)一步熟悉了集成電路的引腳安排,掌握了數(shù)字鐘的設(shè)計(jì)方法,明白了數(shù)字鐘的組成原理以及工作原理。掌握了計(jì)數(shù)器的工作原理,以及計(jì)數(shù)器進(jìn)制的組成方法和級(jí)聯(lián)方法,實(shí)現(xiàn)了一次理論指導(dǎo)實(shí)踐、理論向?qū)嵺`過(guò)渡的跨越,雖然期間遇到一些困難,但這些困難卻增強(qiáng)了我們分析問(wèn)題、解決問(wèn)題的能力,使我們以后不僅只學(xué)習(xí)書(shū)本中的理論知識(shí),而且知道學(xué)以致用,動(dòng)過(guò)動(dòng)手實(shí)踐是我們對(duì)書(shū)本中的理論知識(shí)掌握地跟牢固、理解地跟深刻,這對(duì)我們今后的工作及學(xué)習(xí)有積極的影響。這次課程設(shè)計(jì)不僅再次復(fù)習(xí)了數(shù)字電子和模擬電子,而且讓我對(duì)于芯片的使用更加了解。增加了我的動(dòng)手操作能力,加深了對(duì)該軟件的了解。這就是這次課程設(shè)計(jì)的成果,相信這些實(shí)際的操作經(jīng)驗(yàn)會(huì)是我們以后的寶貴財(cái)富。

      第四篇:數(shù)字電子技術(shù)設(shè)計(jì)性實(shí)驗(yàn)報(bào)告

      數(shù)字電子技術(shù)設(shè)計(jì)性實(shí)驗(yàn)報(bào)告

      設(shè)計(jì)題目:

      專業(yè)

      班級(jí)

      學(xué)號(hào)

      學(xué)生姓名

      指導(dǎo)教師

      教師評(píng)分

      年月日

      第五篇:數(shù)字電子實(shí)習(xí)報(bào)告

      數(shù)字電子實(shí)習(xí)報(bào)告

      班級(jí):

      姓名:

      學(xué)號(hào):

      課程設(shè)計(jì)任務(wù)書(shū)

      一、設(shè)計(jì)題目

      本次課程設(shè)計(jì)的題目為:汽車尾燈模擬控制電路設(shè)計(jì)

      二、功能要求:

      利用開(kāi)關(guān)來(lái)控制汽車的運(yùn)行和轉(zhuǎn)向。

      三、設(shè)計(jì)要求

      1.設(shè)計(jì)過(guò)程:先寫(xiě)總體設(shè)計(jì)方案(包括框圖和總電路圖),然后是各個(gè)模塊

      的設(shè)計(jì)(要求有相應(yīng)的電路圖),結(jié)果分析。2.完成電路硬件制做。3.最后是設(shè)計(jì)總結(jié)。

      四、所需器件

      74LS76; 雙JK觸發(fā)器 LED:6個(gè);

      74LS04:2個(gè); 六非門

      74LS138; 3線8線譯碼器 74LS00:2個(gè); 2輸入四個(gè) 與非門 74LS10; 3輸入三個(gè) 與非門 74LS86; 2輸入四 異或門 開(kāi)關(guān):2個(gè); 電阻:200Ω,8個(gè); 電源:+5v;

      要求查閱相關(guān)芯片資料,用所給芯片設(shè)計(jì)電路

      設(shè)計(jì)過(guò)程

      主電路圖 2.電路結(jié)構(gòu)與原理圖

      (1)開(kāi)關(guān)控制電路(如圖2)

      圖2 開(kāi)關(guān)控制電路

      開(kāi)關(guān)兩端一端接高電平,一端接地(低電平)。74LS86D與74LS138的輸入控制端連接,當(dāng)開(kāi)關(guān)同時(shí)閉合或斷開(kāi)的時(shí)候,輸入相同,74LS86輸出為“0”,則74LS138不譯碼。若兩開(kāi)關(guān)同時(shí)斷開(kāi),則74LS04D的輸出為“1”;而74LS10D接有CP脈沖,所以此時(shí)74LS00D的輸出完全決定于CP脈沖;當(dāng)兩開(kāi)關(guān)同時(shí)閉合,74LS00D輸出為“1”; B開(kāi)關(guān)打開(kāi);B開(kāi)關(guān)閉合,A開(kāi)關(guān)打開(kāi)時(shí)的分析也按照上面的方法來(lái)分析實(shí)現(xiàn)。

      (2)三進(jìn)制計(jì)數(shù)器電路(如圖3)

      圖3 三進(jìn)制計(jì)數(shù)器電路

      三進(jìn)制計(jì)數(shù)電路由2個(gè)主從JK觸發(fā)器構(gòu)成。第一個(gè)主從JK觸發(fā)器的輸出Q1端直接接入74LS138譯碼器的輸入端,第二個(gè)主從JK觸發(fā)器的輸出Q2端輸入也直接接入74LS138的輸入端,同時(shí),第二個(gè)主從JK觸發(fā)器的另一端輸出直接作為第一個(gè)主從JK觸發(fā)器的J端輸入,注意,Q2應(yīng)比Q1的權(quán)高。并且,兩個(gè)主從JK觸發(fā)器的K端輸入都是接的高電平,這樣就能使變化后的脈沖的周期為3,從而實(shí)現(xiàn)了三進(jìn)制計(jì)數(shù)。

      (3)譯碼電路(如圖4)

      圖4 譯碼電路

      74LS138譯碼器是一種經(jīng)常使用的3線8線譯碼器,如圖所示,4、5端接地,6端接控制電路提供的控制信號(hào),1、2、3分別第一個(gè)和第二個(gè)主從JK觸發(fā)器的輸出信號(hào)Q1、Q2、和控制電路的控制信號(hào)。由于只要求有6個(gè)指示燈,所以在74LS138的輸出端只接了6個(gè)端口(左轉(zhuǎn)彎:Y0 Y1 Y2;右轉(zhuǎn)彎 :Y4 Y5 Y6)用以控制信號(hào)燈。并且,按照以下真值表來(lái)實(shí)現(xiàn)。

      (4)驅(qū)動(dòng)電路:如圖5

      圖5 驅(qū)動(dòng)電路

      使用發(fā)光二極管來(lái)顯示運(yùn)行結(jié)果。發(fā)光二極管正端接5V電源,當(dāng)非門的右邊輸入的是高電平,則經(jīng)過(guò)非門以后變成低電平,則發(fā)光二極管亮;當(dāng)非門的右邊輸入的為低電平,則經(jīng)過(guò)非門以后變成高電平,則發(fā)光二極管熄滅。

      下載北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告(優(yōu)秀范文五篇)word格式文檔
      下載北航_電子實(shí)習(xí)_數(shù)字部分實(shí)驗(yàn)報(bào)告(優(yōu)秀范文五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        電子工藝實(shí)習(xí)實(shí)驗(yàn)報(bào)告

        電子工藝實(shí)習(xí)實(shí)驗(yàn)報(bào)告1 一、實(shí)習(xí)目的了解日光燈的工作原理。學(xué)習(xí)安裝簡(jiǎn)單的照明線路。練習(xí)如何認(rèn)識(shí)和使用試電筆。二、實(shí)習(xí)內(nèi)容日光燈結(jié)構(gòu)日光燈燈管的內(nèi)壁上涂有一層熒光......

        電子工藝實(shí)習(xí)實(shí)驗(yàn)報(bào)告

        電子工藝實(shí)驗(yàn)報(bào)告 一、常用電子元件概述 電子元件:如電阻器、電容器、電感器、喇叭、開(kāi)關(guān)等。因?yàn)樗旧聿划a(chǎn)生電子,它對(duì)電壓、電流無(wú)控制和變換作用,所以又稱無(wú)源器件。其中,電......

        北航matlab上機(jī)實(shí)驗(yàn)報(bào)告

        MATLAB基礎(chǔ)上機(jī)指導(dǎo)書(shū) 實(shí)驗(yàn)?zāi)康?MATLAB基礎(chǔ)上機(jī)實(shí)驗(yàn)的目的主要是在深入理解和掌握課程中的基本概念和原理的基礎(chǔ)上培養(yǎng)學(xué)習(xí)者用計(jì)算機(jī)解決實(shí)際問(wèn)題的意識(shí),訓(xùn)練和提高學(xué)生分析......

        電工電子實(shí)習(xí)實(shí)驗(yàn)報(bào)告總結(jié)

        電工電子實(shí)習(xí)實(shí)驗(yàn)報(bào)告總結(jié) 兩個(gè)星期的電子電工實(shí)習(xí)時(shí)間并不算太長(zhǎng).但是在這并不長(zhǎng)的兩個(gè)星期里面卻依然學(xué)到了不少的東西.在電工方面,了解并掌握了鋼絲鉗、尖嘴鉗、螺絲刀等......

        電子工藝實(shí)習(xí)實(shí)驗(yàn)報(bào)告心得

        電子工藝實(shí)習(xí)實(shí)驗(yàn)報(bào)告心得 編輯點(diǎn)評(píng):實(shí)踐是檢驗(yàn)真理正確與否的唯一標(biāo)準(zhǔn),課堂上學(xué)到的知識(shí)如何有效運(yùn)用到實(shí)際生活中,需要我們課后多去實(shí)習(xí)和動(dòng)手操作。電子工藝實(shí)習(xí)是電子專業(yè)......

        數(shù)字電子鐘實(shí)驗(yàn)報(bào)告

        本科實(shí)驗(yàn)報(bào)告 學(xué)號(hào): 指導(dǎo)教師: 2016年7月19日 課程名稱: 姓名: 院系: 專業(yè): 電子電路安裝與調(diào)試 陳肖葦、李曉杰、張晨靖 信息與電子工程學(xué)院 電子科學(xué)與技術(shù) 3140104544 王子......

        電子裝配實(shí)習(xí)報(bào)告 數(shù)字電子鐘(合集)

        電子裝配實(shí)習(xí)報(bào)告 數(shù) 字 電 子 鐘 姓名: 班級(jí): 學(xué)號(hào): 成績(jī): 一、 實(shí)習(xí)實(shí)習(xí)地點(diǎn):電子裝配實(shí)訓(xùn)室(二) 二、 時(shí)間:2-5周 三、 指導(dǎo)教師: 四、 實(shí)習(xí)總結(jié)(1500字左右) 電子元器件的基本知識(shí)......

        電子測(cè)量實(shí)驗(yàn)報(bào)告

        電子測(cè)量調(diào)研報(bào)告 題目: 電子測(cè)量技術(shù)發(fā)展與儀器姓 名:學(xué) 院: 信息科學(xué)技術(shù)學(xué)院 專 業(yè): 班 級(jí): 學(xué) 號(hào): 2013年 6月16日 電子測(cè)量技術(shù)發(fā)展與儀器 摘要::科學(xué)技術(shù)的不斷發(fā)展促進(jìn)了......