西安交大數子電子技術實驗報告_第1頁
西安交大數子電子技術實驗報告_第2頁
西安交大數子電子技術實驗報告_第3頁
西安交大數子電子技術實驗報告_第4頁
西安交大數子電子技術實驗報告_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.西安交通大學數字電子技術實驗報告姓名:高加西班級:電氣學號:ISE基礎實驗一、 設計要求1) 通過使用ISE軟件和FPGA實現帶有置位和清零端的邊沿D觸發器的邏輯圖。2) 練習verilog語法編寫,掌握用HDL實現基本邏輯功能。二、 HDL綜合實驗任務邊沿D觸發器的設計1. 實驗方法和步驟(1) 建立工程文件,輸入HDL程序如下:module D_Flip_Flop( input clk, input set, input D, input clr, output reg q/注意:always模塊中的輸出必須是寄存器型變量 );always (posedge clk or posedge

2、 clr or posedge set)beginif(clr) q<=0;else if(set) q<=1;else q<=D; endendmodule(2) 編寫約束文件:NET "clk" LOC ="B8" /時鐘NET "D" LOC ="N3" /SW7NET "set" LOC ="L3" /SW1NET "clr" LOC ="P11" /SW0NET "q" LOC =&quo

3、t;G1" /LD7(3) 綜合、實現及生成編程文件;仿真,設計下載:仿真測試文件如下:module test_D_Flip_Flop;/ Inputsreg clk;reg set;reg D;reg clr;/ Outputswire q;/ Instantiate the Unit Under Test (UUT)D_Flip_Flop uut (.clk(clk), .set(set), .D(D), .clr(clr), .q(q);initial begin/ Initialize Inputsclk=0;set=1;D=0; clr=0;/ Wait 100 ns fo

4、r global reset to finish#100;/ Add stimulus hereEndalways#10clk=clk;always#12D=D;always#33clk=clk;always#42set=set;endmodule仿真結果:三、分析與討論由仿真結果可以看出該電路完成了想要實現的邏輯功能(即邊沿D觸發器),通過這次實驗我大體了解了ISE軟件和Verilog程序語言.組合邏輯電路實驗一、 實驗目的及其設計要求1)學習使用ISE軟件生成一個新工程文件2)學習使用HDL進行電路設計3)學會編輯頂層文件和用戶約束文件4)熟悉仿真及綜合及實現還有FPGA配置等5) 熟悉在

5、BASYS2開發板上的簡單外圍設備的控制6)使用HDL設計一個新的邏輯功能并驗證,本實驗設計的邏輯功能函數表達式為:。7) 設計一個4選1多路選擇器,并在開發板上驗證。8) 完成4位數碼管動態顯示設計,實現將8個SW輸入的兩位十六進制對應的8421BCD碼,顯示在數碼管上。二、 組合邏輯電路實驗任務任務1:邏輯功能函數表達式設計實驗方法和步驟(1) 建立工程文件,輸入HDL程序如下:(2) module gate2(3) input a,(4) input b,(5) input c,(6) input d,(7) output z(8) );(9) assign z=(a&b)|(c

6、&d);(10) endmodule(11) 編寫約束文件:NET "a" LOC=P11;NET "b" LOC=L3;NET "c" LOC=K3;NET "d" LOC=B4;NET "z" LOC=M5;(12) 綜合、實現及生成編程文件;仿真,設計下載:仿真測試文件如下:module gates2test;/ Inputsreg a;reg b;reg c;reg d;/ Outputswire y;/ Instantiate the Unit Under Test (UUT)

7、gates4uut (.a(a), .b(b), .c(c), .d(d), .y(y);initial begin/ Initialize Inputsa = 0;b = 0;c = 0;d = 0;/ Wait 100 ns for global reset to finish#100;/ Add stimulus here#100;a<=0;b<=0;c<=0;d<=1;#200;a<=0;b<=0;c<=1;d<=0;#200;a<=0;b<=0;c<=1;d<=1;#200;a<=0;b<=1;c&l

8、t;=0;d<=0;#200;a<=0;b<=1;c<=0;d<=1;#200;a<=0;b<=1;c<=1;d<=0;#200;a<=0;b<=1;c<=1;d<=1;#200;a<=1;b<=0;c<=0;d<=0;#200;a<=1;b<=0;c<=0;d<=1;#200;a<=1;b<=0;c<=1;d<=0;#200;a<=1;b<=0;c<=1;d<=1;#200;a<=1;b<=1;c<=0

9、;d<=0;#200;a<=1;b<=1;c<=0;d<=1;#200;a<=1;b<=1;c<=1;d<=0;#200;a<=1;b<=1;c<=1;d<=1;#200;endendmodule仿真結果:任務2:4選1多路選擇器的設計與驗證實驗方法和步驟(1)建立工程文件, 輸入HDL程序如下:module MUX( input wire a, input wire b, input wire c, input wire d, input wire s1, input wire s2, output wire y

10、); assign y=(a&(s1)&(s2)|(b&(s1)&(s2)|(c&(s1)&(s2)|(d&(s1)&(s2); (2) 編寫約束文件:NET"s1"LOC=P11;NET"s2"LOC=L3;NET"a"LOC=K3;NET"b"LOC=B4;NET"c"LOC=G3;NET"d"LOC=F3;NET"y"LOC=M5;(3)綜合、實現及生成編程文件;仿真,設計下載:仿真測試

11、文件如下:#100a<=1;b<=0;c<=0;d<=0;s1<=0;s2<=0;#400a<=0;b<=1;c<=0;d<=0;s1<=0;s2<=1;#400a<=0;b<=0;c<=1;d<=0;s1<=1;s2<=0;#400a<=0;b<=0;c<=0;d<=1;s1<=1;s2<=1;end仿真結果:任務3:4位數碼管動態顯示設計實驗方法和步驟建立工程文件,輸入HDL程序如下:module x7seg(input wire7:0x,inpu

12、t wire clk,input wire clr,output reg6:0a_to_g,output reg3:0an );wire 1:0s;reg 3:0digit;reg19:0clkdiv;assign s=clkdiv19:18;always(*)case(s)0:digit=x7:4;1:digit=x3:0;2:digit=0;3:digit=0;default:digit=x7:4;endcasealways(*)case(digit)0:a_to_g=7'b0000001;1:a_to_g=7'b1001111;2:a_to_g=7'b001001

13、0;3:a_to_g=7'b0000110;4:a_to_g=7'b1001100;5:a_to_g=7'b0100100;6:a_to_g=7'b0100000;7:a_to_g=7'b0001111;8:a_to_g=7'b0000000;9:a_to_g=7'b0000100;'hA:a_to_g=7'b0001000;'hB:a_to_g=7'b1100000;'hC:a_to_g=7'b0110001;'hD:a_to_g=7'b1000010;'hE:a_

14、to_g=7'b0110000;'hF:a_to_g=7'b0111000;default:a_to_g=7'b0000001;endcasealways(*)beginan=4'b1111;ans=0;endalways(posedge clk or posedge clr)beginif(clr=1)clkdiv<=0;elseclkdiv<=clkdiv+1;endendmodule (2) 編寫約束文件:NET"a_to_g0"LOC=M12;NET"a_to_g1"LOC=L13;NET&qu

15、ot;a_to_g2"LOC=P12;NET"a_to_g3"LOC=N11;NET"a_to_g4"LOC=N14;NET"a_to_g5"LOC=H12;NET"a_to_g6"LOC=L14;NET"an3"LOC=K14;NET"an2"LOC=M13;NET"an1"LOC=J12;NET"an0"LOC=F12;NET"clk"LOC=B8;NET"clr"LOC=G12;N

16、ET"x0"LOC=P11;NET"x1"LOC=L3;NET"x2"LOC=K3;NET"x3"LOC=B4;NET"x4"LOC=G3;NET"x5"LOC=F3;NET"x6"LOC=E2;NET"x7"LOC=N3;(3)綜合、實現及生成編程文件,設計下載。三、討論與分析由任務一仿真結果可以看出該設計完成了想要實現的邏輯功能(即),仿真圖中a=1、b=1、c=0、d=1時, y=1,與理論結果相同;由任務二仿真結果可以看出該設計

17、完成了想要實現的邏輯功能(即4選1多路選擇器),與理論結果相同。將任務三的程序下載到BASYS2板子上后,通過改變選擇八個開關的0-1狀態,我們發現每兩個數碼管將分別顯示一位16進制數(按10進制顯示),實現了4位數碼管動態顯示的功能。通過這次實驗我對組合邏輯電路有了進一步的認識,并對語言有了初步的了解,為下一步實驗打好了基礎。 時序邏輯電路實驗一、 設計要求1) 設計一個秒脈沖發生器,用LED指示秒脈沖的發放。(檢查秒脈沖發生器的精度,能將1秒的脈沖周期改為2秒或3秒等)。2) 試設計一個帶有異步清零和同步置數信號的4位寄存器,并在開發板上驗證。實驗前編寫好HDL源文件、用戶約束文件和仿真文

18、件,并給出仿真波形。二、 時序邏輯電路實驗任務任務1:秒脈沖發生器的設計實驗方法和步驟(1) 建立工程文件,輸入HDL程序如下:module miaomaichong(input clk,clr,output reg6:0 a_to_g,output wire3:0 an,output reg3:0q);assign an=4'b1110; reg 26:0 counter;always (posedge clk)if(counter=25000000) counter <= 0; else counter <= counter+1;reg clk_div; always

19、(posedge clk)if(counter=25000000) clk_div <= clk_div; always(posedge clk_div or posedge clr)beginif(clr=1)q<=0;else if(q=9)q<=0;else q<=q+1;endalways(*)case(q)0:a_to_g=7'b0000001;1:a_to_g=7'b1001111;2:a_to_g=7'b0010010; 3:a_to_g=7'b0000110;4:a_to_g=7'b1001100;5:a_to_g

20、=7'b0100100;6:a_to_g=7'b0100000;7:a_to_g=7'b0001111;8:a_to_g=7'b0000000;9:a_to_g=7'b0000100;default:a_to_g=7'b0000001;endcaseendmodule(2) 編寫約束文件:NET"a_to_g0"LOC=M12;NET"a_to_g1"LOC=L13;NET"a_to_g2"LOC=P12;NET"a_to_g3"LOC=N11;NET"a_

21、to_g4"LOC=N14;NET"a_to_g5"LOC=H12;NET"a_to_g6"LOC=L14;NET"an0"LOC=F12;NET"an1"LOC=J12;NET"an2"LOC=M13;NET"an3"LOC=K14;NET"clk"LOC=B8;NET"clr"LOC=P11;NET"q3"LOC=G1; /LED7NET"q2"LOC=P4; /LED6NET&qu

22、ot;q1"LOC=N4; /LED5NET"q0"LOC=N5; /LED4(3) 綜合、實現及生成編程文件,設計下載。任務2:帶有異步清零和同步置數信號的4位寄存器設計實驗方法和步驟(1)建立工程文件,輸入HDL程序如下:module register(input load,inputclk,inputclr,input wire3:0d,outputreg3:0q );/定義足夠大的計數器,使時鐘脈沖的周期可分辨reg 27:0q1;always(posedgeclk or posedgeclr)beginif(clr=1)q1<=0;elseq1&l

23、t;=q1+1;endassignmclk=q127;/實現異步清零,同步置數功能always(posedgemclk or posedgeclr)if(clr=1)q<=0;else if(load=1)q<=d;endmodule(2) 編寫約束文件:ProjectNew Source選Implantation Constraints File輸入文件名:register點擊Next按鈕點擊Finish按鈕輸入ucf文件如下:NET"clk"LOC="B8"NET"clr"LOC="P11"NET&

24、quot;load"LOC="L3"NET"d0"LOC="K3"NET"d1"LOC="B4"NET"d2"LOC="G3"NET"d3"LOC="F3"NET"q0"LOC="M5"NET"q1"LOC="M11"NET"q2"LOC="P7"NET"q3"LOC=

25、"P6"(3) 綜合、實現及生成編程文件;仿真,設計下載:仿真測試文件如下:moduleregistertest;/ Inputsreg load;regclk;regclr;reg 3:0 d;/ Outputswire 3:0 q;/ Instantiate the Unit Under Test (UUT)registeruut (.load(load), .clk(clk), .clr(clr), .d(d), .q(q);initial begin/ Initialize Inputsload = 0;clk = 0;clr = 0;d = 4'b0101

26、;/ Wait 100 ns for global reset to finish#100;endalways #24 load=load;always #10 clk=clk;always #42 clr=clr;endmodule仿真結果:寄存器清零信號有效時的仿真結果寄存器置數信號有效時的仿真結果三、討論與分析將任務一的程序下載到BASYS2板子上后,可實現秒脈沖發生器的功能。由任務二的仿真結果可以看出,當清零信號有效時(clr=1),無論輸入數據為何值(此時為0101),寄存器的數據都被清零(即q=0000);當置數信號有效且清零信號無效時(load=1且clr=0),輸入數據(此時為

27、0101)被寄存到寄存器中(即q=0101);通過這次實驗我學習使用HDL進行時序電路設計,并且學習編輯頂層文件和用戶約束文件,并且熟悉了同步與異步的概念及實現方法,熟悉在Basys2開發板簡單外圍設備的控制,了解了時鐘的分頻方法及占空比的調節。HDL綜合實驗一、 設計要求數字鐘:設置一個完整的數字鐘,小時和分鐘用數碼管顯示,秒用發光二極管閃爍顯示,每秒閃爍一次。如有可能,請增加校時功能。二、 HDL綜合實驗任務數字鐘的設計實驗方法和步驟(1) 建立工程文件,輸入HDL程序如下:moduleclocktjjs(inputclk,inputclr,input 1:0FLAG,input 5:0S

28、time,inputSetH,inputSetM,outputSflash,outputreg6:0a_to_g,outputreg3:0an );reg 3:0cent60L;reg 3:0cent60H;reg 3:0cent24L;reg 3:0cent24H;reg 3:0LED1,LED2,LED3,LED4;reg 1:0s;reg 3:0digit;reg 16:0clkdiv;reg 26:0q1;reg sec;integerss;integeri;initial begincent60L=9;cent60H=5;cent24L=3;cent24H=2;ss=0;LED4=c

29、ent60L;LED3=cent60H;LED2=cent24L;LED1=cent24H;endalways(*)beginan=4'b1111;s<=clkdiv16:15;ans=0;case(s)0:digit<=LED1;1:digit<=LED2;2:digit<=LED3;3:digit<=LED4;default:digit<=LED4;endcasecase(digit)0:a_to_g=7'b0000001;1:a_to_g=7'b1001111;2:a_to_g=7'b0010010;3:a_to_g=7

30、'b0000110;4:a_to_g=7'b1001100;5:a_to_g=7'b0100100;6:a_to_g=7'b0100000;7:a_to_g=7'b0001111;8:a_to_g=7'b0000000;9:a_to_g=7'b0001100;'hA:a_to_g=7'b0001000;'hB:a_to_g=7'b1100000;'hC:a_to_g=7'b0110001;'hD:a_to_g=7'b1000010;'hE:a_to_g=7'b

31、0110000;'hF:a_to_g=7'b0111000;default:a_to_g=7'b0000001;endcaseendalways(posedgeclk)beginclkdiv<=clkdiv+1;end/時鐘程序,計時加校時always(posedgeclk or posedgeclr)beginif(clr=1)beginq1<=0;LED1=0;LED2=0;LED3=0;LED4=0;cent60L<=0;cent60H<=0;cent24L<=0;cent24H<=0;ss<=0;endelse if(F

32、LAG=2'b10)/調分狀態beginif(SetM)beginif(Stime<=59)beginfor(i=0;i<6;i=i+1)beginif(Stime5:0-i*10<10)begincent60L<=Stime5:0-i*10;cent60H<=i;i=6;endendendelsebegincent60H<=0;cent60L<=0;endss<=0;LED43:0=cent60L3:0;LED33:0=cent60H3:0;endendelse if(FLAG=2'b11)/調時狀態beginif(SetH)b

33、eginif(Stime<=23)beginfor(i=0;i<=3;i=i+1)beginif(Stime5:0-i*10<10)begincent24L<=Stime5:0-i*10;cent24H<=i;i=6;endendendelsebegincent24L<=0;cent24H<=0;endss<=0;LED23:0=cent24L3:0;LED13:0=cent24H3:0;endendelse if(FLAG=2'b00)beginif(q1=50000000)beginq1<=0;sec=sec;LED43:0=c

34、ent60L3:0;LED33:0=cent60H3:0;LED23:0=cent24L3:0;LED13:0=cent24H3:0;ss<=ss+1;if(ss=59)beginss<=0;cent60L<=cent60L+1;if(cent60L=9)begincent60L<=0;cent60H<=cent60H+1;endif(cent60H=5&&cent60L=9)begincent60L<=0;cent60H<=0;cent24L<=cent24L+1;if(cent24L=9)begincent24L<=0;

35、cent24H<=cent24H+1;endif(cent24H=2&&cent24L=3)begincent24L<=0;cent24H<=0;endendendendelseq1<=q1+1;endendassignSflash=sec;endmodule(2) 編寫約束文件:NET"a_to_g6"LOC=L14;NET"a_to_g5"LOC=H12;NET"a_to_g4"LOC=N14;NET"a_to_g3"LOC=N11;NET"a_to_g2"LOC=P12;NET"a_to_g1"LOC=L13;NET"a_to_g0"LOC=M12;NET"an3"LOC=F12;NET"an2"LOC=J12;NET"an1"LOC=M13;NET"an0"LOC=K14;NET"clk"LOC="B8"NET"clr"LOC="G12"NET"Sflash&q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論