FPGA課程設(shè)計(一百進(jìn)制、數(shù)字鐘,交通燈)_第1頁
FPGA課程設(shè)計(一百進(jìn)制、數(shù)字鐘,交通燈)_第2頁
FPGA課程設(shè)計(一百進(jìn)制、數(shù)字鐘,交通燈)_第3頁
FPGA課程設(shè)計(一百進(jìn)制、數(shù)字鐘,交通燈)_第4頁
FPGA課程設(shè)計(一百進(jìn)制、數(shù)字鐘,交通燈)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、F P G A課程設(shè)計報告 專 業(yè):12級電子信息工程班 級: 一 班 姓 名: 李 威 學(xué) 號: 120101011109 指導(dǎo)老師: 祝 宏 制作日期:2014年11月20號 1、任務(wù)書:第九周(10月27號至11月2號):一百進(jìn)制可逆計數(shù)器的模塊原理設(shè)計,代碼編寫,波形仿真,代碼調(diào)試,模塊封裝以及管腳分配任務(wù)。第十周(11月3號至11月9號):完成第二道設(shè)計課題(交通燈)和第三道設(shè)計課題(多功能數(shù)字鐘)模塊原理設(shè)計,代碼編寫,波形仿真,代碼調(diào)試,模塊封裝以及管腳分配任務(wù)。第十一周(11月10號至11月16號):在實驗室使用ED2-115開發(fā)板進(jìn)行功能模塊實際演示。第十二周(11月17號至

2、11月23號):完成對FPGA課程設(shè)計報告的書寫。2、報告內(nèi)容:設(shè)計課題一、一百進(jìn)制可逆計數(shù)器1)實驗要求:設(shè)計一個可控的100進(jìn)制可逆計數(shù)器,要求用DE2-115開發(fā)板下載。(1) 計數(shù)器的時鐘輸入信號周期為1S。(2) 以十進(jìn)制形式顯示。(3) 有一個復(fù)位端clr和兩個控制端plus和minus,在這些控制信號的作用下,計數(shù)器具有復(fù)位、增或減計數(shù)、暫停功能。clrplusminus功能0××復(fù)位為0110遞增計數(shù)101遞減計數(shù)111暫停計數(shù)圖1-12)信號定義:分頻模塊:ncR: 暫停 ; CLOCK_50:500Hz分頻 ; &

3、#160; s:1000Hz分頻;譯碼模塊:indec_07: 譯碼輸入; outdec_07: 譯碼輸出; 計數(shù)模塊:clk : 脈沖 ; clear 復(fù)位端; plus:加計數(shù)使能端;          minus:減計 數(shù)使能端 ; cin:計數(shù)使能端 ;3)主要模塊verilog代碼及注示:  module count100(clk,clear,plus,minus,q

4、out,cin);input clk,clear,plus,minus,cin; /輸入由開關(guān)控制撥上為1,撥下為0 output 7:0 qout;reg7:0 qout; always (posedge clk) begin if (clear) qout<=0; /如果復(fù)位端為1則執(zhí)行復(fù)位功能 else if (plus)&&(!minus) / 若plus為1且minus為0 時加計數(shù) begin if (cin) /使能端為1時才進(jìn)行計數(shù) begin if (qout3:0=9) /模為100的計數(shù) begin qout3:0<=0; if (qout7:

5、4=9) qout7:4<=0; else qout7:4<=qout7:4+1; end else qout3:0<=qout3:0+1; end end else if(!plus)&&(minus) /若plus為0且minus為1進(jìn)行減計數(shù) begin if(cin) if (qout3:0=0) begin qout3:0<=9; if (qout7:4=0) qout7:4<=9; else qout7:4<=qout7:4-1; end else qout3:0<=qout3:0-1; end Else /若plus和mi

6、nus均為1則暫停 qout<=qout; end endmodule 4) 模塊封裝圖: 5)對應(yīng)各模塊功能仿真波形(數(shù)據(jù)分析)分析及結(jié)論 圖1-2如圖1-2所示當(dāng)復(fù)位端clear為1時輸出qout為0,當(dāng)復(fù)位端clear為0時計數(shù)器開始正常計數(shù)us 圖1-3如圖1-3所示當(dāng)復(fù)位端clear為0且使能端cin為1,plus為1,minus為0時進(jìn)行加計數(shù) 圖1-4如圖1-4所示當(dāng)復(fù)位端clear為0且使能端cin為1,plus為0,minus為1時進(jìn)行減計數(shù).6)選用芯片型號、定義芯片管腳號選用芯片型號:CycloneIV E芯片管腳:CLOCK_50InputPIN_Y22B2_N0

7、3.3-V SW4InputPIN_AB275B5_N12.5 VSW3InputPIN_AD275B5_N22.5 VSW2InputPIN_AC275B5_N22.5 VSW1InputPIN_AC285B5_N22.5 VSW0InputPIN_AB285B5_N12.5 VHEX06OutputPIN_H226B6_N02.5 VHEX05OutputPIN_J226B6_N02.5 VHEX04OutputPIN_L256B6_N12.5 VHEX03OutputPIN_L266B6_N12.5 VHEX02OutputPIN_E177B7_N22.5 VHEX01OutputPIN

8、_F227B7_N02.5 VHEX00OutputPIN_G187B7_N22.5 VHEX16OutputPIN_U245B5_N02.5 VHEX15OutputPIN_U235B5_N12.5 VHEX14OutputPIN_W255B5_N12.5 VHEX13OutputPIN_W225B5_N02.5 VHEX12OutputPIN_W215B5_N12.5 VHEX11OutputPIN_Y225B5_N02.5 VHEX10OutputPIN_M246B6_N22.5 V 表1-2設(shè)計課題二、交通燈 1)實驗要求:交通燈控制系統(tǒng),要求用DE2-115開發(fā)板下載。(1) 設(shè)計一

9、個十字路口交通信號燈的定時控制電路。要求紅、綠燈按一定的規(guī)律亮和滅,綠燈亮?xí)r,表示該車道允許通行;紅燈亮?xí)r,該車道禁止通行。并在亮燈期間進(jìn)行倒計時,并將運行時間用數(shù)碼管顯示出來。(2)要求主干道每次通行時間為40秒,支干道每次通行時間為30秒。每次變換運行車道前綠燈閃爍,持續(xù)時間為5秒。即車道要由主干道轉(zhuǎn)換為支干道時,主干道在通行時間只剩5秒鐘時,綠燈閃爍5秒顯示,支干道仍為紅燈,以便主干道上已過停車線的車?yán)^續(xù)通行,未過停車線的車停止通行。同理,當(dāng)車道由支干道轉(zhuǎn)換為主干道時,支干道綠燈閃爍顯示5秒鐘,主干道仍為紅燈。(3)定時器要求采用遞減計時方式進(jìn)行計時。注:TimeH、TimeL分別表示計

10、數(shù)器的高位和低位HG、HR分別表示主干道的綠燈和紅燈CG、CR分別表示支干道的綠燈和紅燈兩個定時時間:綠燈閃爍和綠燈停止閃爍4個狀態(tài):S0:主干道綠燈亮,支干道紅燈亮。S1:主干道綠燈閃爍,支干道紅燈亮。S2:支干道綠燈亮,主干道紅燈亮。S3:支干道綠燈閃爍,主干道紅燈亮。2) 頂層邏輯電路圖組成、信號定義及原理簡單敘述 圖2-13)信號定義:分頻模塊:ncR:暫停 CLOCK_50:500Hz分頻 s:1000Hz分頻譯碼模塊:indec_07:譯碼輸入 outdec_07:譯碼輸出功能模塊:en:脈沖 acount:主干道計數(shù)器 bcount:支干道計數(shù)器 lampa0:主干道綠燈 lam

11、pa1:主干道紅燈 lampb0:支干道綠燈 lampb1:支干道紅燈4)交通燈代碼:module traffic(clk,en,lampa0,lampb0,lampa1,lampb1,acount,bcount);output 7:0 acount,bcount; /acount 代表主干道計數(shù)器bcount代表支干道計數(shù)器output lampa0,lampb0,lampa1,lampb1; /0代表綠燈1代表紅燈 a代表主干道b代表支干道input clk,en;reg 2:0 counta,countb;reg 7:0 numa,numb;reg tempa,tempb;reg 7:0

12、 ared,agreen,bred,bgreen;reg lampa0,lampb0,lampa1,lampb1; always(en) if(!en) /設(shè)置燈亮的時間 begin ared <=8'h30; /主干道紅燈亮30秒 agreen <=8'h40; /主干道綠燈亮40秒 bred <=8'h40; /支干道紅燈亮40秒 bgreen <=8'h30; /支干道綠燈亮30秒 endassign acount=numa; /設(shè)置中間變量進(jìn)行計數(shù)assign bcount=numb;always(posedge clk) beg

13、in if(en) begin /設(shè)置中間變量使計數(shù)可以循環(huán)進(jìn)行 if(!tempa) /若tenpa為0 則繼續(xù)往下執(zhí)行 begin tempa<=1; case(counta) /用counta作為主干道狀態(tài)選擇0則亮綠燈1則亮紅燈 0: begin numa<=agreen; lampa0<=1;lampa1<=0; counta<=1;end 1: begin numa<=ared; lampa0<=0;lampa1<=1;counta<=0;end endcase end else begin /開始倒計時 if(numa>

14、1) if(numa3:0=0) begin numa3:0<=4'b1001; numa7:4<=numa7:4-1; end else numa3:0<=numa3:0-1; if(numa=2) tempa<=0; end end else begin lampa0<=0;lampa1<=1;tempa<=0;counta<=0; end if(numa<7)&&(counta=1)&&(numa>1) lampa0<=lampa0; /最后5秒/綠燈閃爍 endalways(pos

15、edge clk) begin if(en) begin if(!tempb) /設(shè)置中間變量使計數(shù)可以循環(huán)進(jìn)行 begin tempb<=1; case(countb) /用countb作為支干道狀態(tài)選擇0則亮紅燈1則亮綠燈 0: begin numb<=bred; lampb0<=0;lampb1<=1; countb<=1; end 1: begin numb<=bgreen; lampb0<=1;lampb1<=0;countb<=0;end endcase end else begin if(numb>1) /開始倒計時 i

16、f(numb3:0=0) begin numb3:0<=4'b1001; numb7:4<=numb7:4-1; end else numb3:0<=numb3:0-1; if(numb=2) tempb<=0; end end else begin lampb0<=0;lampb1<=1;tempb<=0;countb<=0; end if(numb<7)&&(numb>1)&&(lampa1=1) lampb0<=lampb0; /最后5秒綠燈閃爍 endendmodule 5) 模塊

17、封裝圖: 6)對應(yīng)各模塊功能仿真波形(數(shù)據(jù)分析)分析及結(jié)論 圖2-2 如圖2-2所示主干道綠燈(lampa0)亮40秒(acount)同時支干道紅燈(lampb1)亮,最后5秒主干道綠燈閃爍,然后紅綠燈轉(zhuǎn)換。 圖2-3 如圖2-3所示支干道綠燈(lampb0)亮30秒(bcount)同時主干道紅燈(lampb1)亮30秒,最后5秒支干道綠燈閃爍,然后紅綠燈轉(zhuǎn)換,最后如上述進(jìn)行依次循環(huán)。7)選用芯片型號、定義芯片管腳號(列表格示意)及簡述下載過程選用芯片型號:CycloneIV E芯片管腳:CLOCK_50InputPIN_Y22B2_N03.3-VHEX06OutputPIN_H226B6_N

18、02.5 VHEX05OutputPIN_J226B6_N02.5 VHEX04OutputPIN_L256B6_N12.5 VHEX03OutputPIN_L266B6_N12.5 VHEX02OutputPIN_E177B7_N22.5 VHEX01OutputPIN_F227B7_N02.5 VHEX00OutputPIN_G187B7_N22.5 VHEX16OutputPIN_U245B5_N02.5 VHEX15OutputPIN_U235B5_N12.5 VHEX14OutputPIN_W255B5_N12.5 VHEX13OutputPIN_W225B5_N02.5 VHEX1

19、2OutputPIN_W215B5_N12.5 VHEX11OutputPIN_Y225B5_N02.5 VHEX10OutputPIN_M246B6_N22.5 VHEX26OutputPIN_W285B5_N12.5 VHEX25OutputPIN_W275B5_N12.5 VHEX24OutputPIN_Y265B5_N12.5 VHEX23OutputPIN_W265B5_N12.5 VHEX22OutputPIN_Y255B5_N12.5 VHEX21OutputPIN_AA265B5_N12.5 VHEX20OutputPIN_AA255B5_N12.5 VHEX36OutputP

20、IN_Y194B4_N03.3-VHEX35OutputPIN_AF234B4_N03.3-V HEX34OutputPIN_AD244B4_N03.3-V HEX33OutputPIN_AA214B4_N03.3-V HEX32OutputPIN_AB204B4_N03.3-V HEX31OutputPIN_U215B5_N02.5 VHEX30OutputPIN_V215B5_N12.5 VLEDG1OutputPIN_E227B7_N02.5 VLEDG0OutputPIN_E217B7_N02.5 VLEDR1OutputPIN_F197B7_N02.5 VLEDR0OutputPIN

21、_G197B7_N22.5 VSW1InputPIN_AC285B5_N22.5 VSW0InputPIN_AB285B5_N12.5 V 表2-1設(shè)計課題三、多功能數(shù)字鐘1) 實驗要求:多功能數(shù)字鐘系統(tǒng)(層次化設(shè)計),要求用DE2-115開發(fā)板下載。(1)基本功能:60秒60分24小時。(2)擴(kuò)展功能:報時;每小時59分51,53,55,57秒低頻報時,59秒高頻報時。校時校分;時段控制;6點18點 輸出燈不亮,其它時間燈亮。獨立設(shè)計除上述3種功能以外的擴(kuò)展功能,可加分。2) 信號定義:分頻模塊:ncR:暫停 CLOCK_50:500Hz分頻 s:1000Hz分頻譯碼模塊:indec_07:

22、譯碼輸入 outdec_07:譯碼輸出功能模塊 clk:原始脈沖 clks,clkm:秒鐘、分鐘的進(jìn)位脈沖light:背景燈 remain1、remain2:整點報時信號outh、outm、outs:時鐘、分鐘、秒鐘輸出端alarm:鬧鐘輸出3)功能模塊代碼、封裝圖以及仿真波形圖:時鐘模塊代碼module hours(clkm,outh,light); /時鐘模塊:含24進(jìn)制以及背景燈時段控制output outh,light; /輸出端口:outh(時鐘顯示),light(背景燈)reg7:0 outh; reg light; input clkm; /輸入端口:clkm(由分鐘進(jìn)位產(chǎn)生的時

23、鐘信號)always(posedge clkm)begin/*二十四進(jìn)制的實現(xiàn)(始)*/ if(outh3:0<9) /低位小于9的時候begin if(outh3:0=3&&outh7:4=2) /到達(dá)23后下一個狀態(tài)為0begin outh3:0=0; outh7:4=0;end elseouth3:0=outh3:0+1; /未到23,低位加一end else /低位等于9的時候begin outh7:4=outh7:4+1; /高位加1 outh3:0=0; /低位為0end/*二十四進(jìn)制的實現(xiàn)(終)*/*背景燈時段控制的實現(xiàn)*/ if(outh7:4<1)

24、 /高位為0的時候(0:009:59)begin if(outh3:0<6) /低位小于6(0:005:59)背景燈亮light=1; elselight=0;end else /當(dāng)高位不小于1(10:0023:59)begin if(outh3:0>=8|outh7:4>1) /當(dāng)高位大于1(20:0023:59)或低位大于等于8(18:0019:59)背景燈亮light=1; elselight=0;endendendmodule分鐘模塊代碼module minute(clks,outm,clkm,sound); /分鐘模塊:含60時進(jìn)制以及整點報時output outm

25、,clkm,sound; /輸出端口:outm(分鐘顯示),clkm(分鐘進(jìn)位信號)sound(整點報時信號(59分)reg clkm,sound; reg7:0 outm;input clks; /輸入端口:clks(秒鐘進(jìn)位產(chǎn)生的時鐘信號)always(posedge clks)begin if(outm3:0=9) /當(dāng)?shù)臀粸?begin if(outm3:0=9&&outm7:4=5) /如果此時為59分,下個時鐘上升沿來臨begin /分鐘歸0,產(chǎn)生進(jìn)位信號,整點報時信號清零 outm3:0=0; outm7:4=0; clkm= 1; sound=0;end els

26、e /否則高位加1,低位為0begin outm7:4=outm7:4+1; outm3:0=0;end end else /如果低位不為(小于)9,begin if(outm3:0=8&&outm7:4=5) /如果此時是58分,當(dāng)下一個時鐘上升沿來臨begin outm3:0=outm3:0+1; /低位加1(59),整點報時為1,進(jìn)位信號清零 sound=1; clkm=0;end else /此時不是58分,低位加1,進(jìn)位信號清零begin outm3:0=outm3:0+1; clkm=0;endendendendmodule秒鐘模塊代碼module second(c

27、lks,outs,clk,sound,remain1,remain2); /秒鐘模塊output outs,clks,remain1,remain2; /remain1,remain2為整點報時的兩種信號reg clks,remain1,remain2;reg7:0 outs;input clk,sound;always(posedge clk)begin if(outs3:0=9)begin if(outs3:0=9&&outs7:4=5)begin outs3:0=0; outs7:4=0; clks=clks+1;end elsebegin outs7:4=outs7:4

28、+1; outs3:0=0;endend else begin outs3:0=outs3:0+1; clks=0; end if(sound) /當(dāng)分鐘到達(dá)59分,sound信號來臨 begin if(outs7:4=5&&outs3:0>0&&outs3:0<9) /5158秒信號燈1開始閃爍 remain1=remain1; else if(outs7:4=5&&outs3:0=9) /59秒信號燈2開始閃爍 remain2=1; else begin remain1=0; remain2=0; end endendendmod

29、ule時鐘電路部分的各模塊封裝圖:時鐘電路部分的頂層模塊結(jié)構(gòu):校時校分功能模塊校時校分功能可以通過增大時鐘和分鐘的時鐘信號頻率來實現(xiàn),在這個項目里我給通過一個選擇模塊來改變他們各自的時鐘信號頻率選擇模塊代碼:module choice(ina,inb,inc,out);input ina,inb,inc;output out;reg out;always (ina or inb or inc)beginif(inc)out=ina; /inc為高電平,選擇ina輸出elseout=inb; /inc為低電平,選擇inb輸出endendmodule其中我們可以將ina看做分頻模塊的輸出時鐘頻率(

30、1Hz或5Hz),將inb看做秒鐘或分鐘的實際進(jìn)位信號頻率(1/60Hz或1/3600Hz),當(dāng)inc為低電平,時鐘電路正常運轉(zhuǎn),當(dāng)inc為高電平時,由于時鐘與分鐘的時鐘信號不再是低位的進(jìn)位信號,而是分頻模塊的輸出時鐘頻率,此頻率很高故而實現(xiàn)短時間內(nèi)精確校時校分,頂層模塊的線路連接也是按照此種連接方式進(jìn)行。鬧鐘功能模塊module alarmH(clk,keyh,outh,seth,sign) ; /鬧鐘功能的時鐘模塊output sign,seth;reg sign; /seth:鬧鐘的時鐘時間輸出 sign:鬧鈴信號(時鐘部分)input 7:0 outh;input clk,keyh;

31、/keyh:鬧鐘的時鐘時間設(shè)置reg 7:0 seth;always(posedge clk)begin if(keyh) /當(dāng)鬧鐘時鐘設(shè)置端置1,開始設(shè)定鬧鐘時鐘/*二十四進(jìn)制(始)*/ begin if(seth3:0<9) begin if(seth3:0=3&&seth7:4=2) begin seth3:0=0; seth7:4=0; end else seth3:0=seth3:0+1; end else begin seth7:4=seth7:4+1; seth3:0=0; endend/*二十四進(jìn)制(終)*/elseseth7:0=seth7:0;if(o

32、uth7:0=seth7:0) /如果鬧鐘設(shè)置的時鐘與實際時鐘一致sign=1; /*時鐘部分的鬧鐘信號置1(當(dāng)時鐘部分與分鐘部分鬧鐘信號都為1,開始鬧鈴)*/elsesign=0;endendmodulemodule alarmM(clk,keym,outm,setm,sign); /鬧鐘功能的分鐘模塊output sign,setm;reg sign; /seth:鬧鐘的分鐘時間輸出 sign:鬧鈴信號(時鐘部分)input 7:0 outm;input clk,keym; /keyh:鬧鐘的分鐘時間設(shè)置reg 7:0 setm;always(posedge clk)begin if(ke

33、ym) /當(dāng)鬧鐘分鐘設(shè)置端置1,開始設(shè)定鬧鐘分鐘/*六十進(jìn)制(始)*/ begin if(setm3:0=9) begin if(setm3:0=9&&setm7:4=5) begin setm3:0=0; setm7:4=0; end elsebegin setm7:4=setm7:4+1; setm3:0=0;end end else setm3:0=setm3:0+1;end/*六十進(jìn)制(終)*/elsesetm7:0=setm7:0;if(outm7:0=setm7:0) /如果鬧鐘設(shè)置的時鐘與實際時鐘一致sign=1; /*時鐘部分的鬧鐘信號置1(當(dāng)時鐘部分與分鐘部分鬧鐘信號都為1,開始鬧鈴)*/el

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論