可編程邏輯器件與硬件描述語言_第1頁
可編程邏輯器件與硬件描述語言_第2頁
可編程邏輯器件與硬件描述語言_第3頁
可編程邏輯器件與硬件描述語言_第4頁
可編程邏輯器件與硬件描述語言_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Y0Y1Y2Y3Y0Y1Y2Y3Y4Y5Y6Y7圖2-13-8譯碼器表2-1譯碼器功能表組合邏輯電路實驗(一)實驗報告實驗名稱:3-8譯碼器設計二實驗目的掌握ISE開發(fā)工具的使用,掌握FPGA開發(fā)的基本步驟;2?掌握組合邏輯電路設計的一般方法;3?掌握程序下載方法,了解UCF文件的格式;4?初步了解開發(fā)板資源,掌握開發(fā)板使用方法。重點了解滑動開關和LED顯示燈的使用方法。實驗內容1用VHDL實現3-8譯碼器模塊譯碼器電路如圖2-1所示。其功能如表2-1所示。試用VHDL實現該譯碼器,并在開發(fā)板上進行檢驗。3-8譯碼器EN0101001000000110010000000111100000002.將程序下載到FPGA并進行檢驗資源使用要求:用滑動開關SW3~SW1作為輸入A,B,C;滑動開關SWO控制EN;8個LED燈表示8個輸出。檢驗方法:當SW0處于ON(EN=1)位置時,所有LED燈滅;當SW0處于OFF(EN=0),反映當前輸入的譯碼輸出在LED燈上顯示,即當輸入為000(滑動開關SW3-SW1處于OFF狀態(tài)),LED0亮,其它燈滅,等等。實驗步驟1啟動ISE,新建工程文件,編寫3-8譯碼器的VHDL模塊;新建UCF文件,輸入位置約束;3完成綜合、實現,生成下載文件;4連接開發(fā)板USB下載線,開啟開發(fā)板電源;下載到FPGA;6撥動開關,驗證結果是否正確。主要vhd[代碼architectureBehavioralofcoder_38is --3-8譯碼器行為級描述signalx:STD_LOGIC_VECTOR(2downto0);beginx<=A&B&C;process(en,x)beginif(en二'O')thencasexiswhen"000"=>Y<="00000001";when"001"=>Y<="00000010";when"010"=>Y<="00000100";when"011"=>Y<="00001000";when"100"=>Y<="00010000";when"101"=>Y<="00100000";when"110"=>Y<="01000000";when"111"=>Y<="10000000";whenothers=>NULL;endcase;elseY<="00000000";endif;endprocess;endBehavioral;六.心得體會這次實驗內容比較簡單,主要是為了熟悉MinxISE及FPGA實驗板的使用方法,了解整個開發(fā)流程。ISE是一款功能強大的FPGA設計軟件,在實際的設計過程中要注意工程中的FPGA開發(fā)板型號等參數的選擇應與實際硬件一致,并保證UCF位置約束的正確性,要在頭腦中將整個過程無縫銜接,避免細節(jié)處錯誤的發(fā)生。時序邏輯電路實驗(一)實驗報告實驗名稱:可逆計數器設計實驗目的1?進一步熟練ISE開發(fā)工具,鞏固FPGA開發(fā)的基本步驟,掌握功能仿真方法;2?掌握時序邏輯電路設計的一般方法,掌握時鐘分頻程序設計方法;理解VHDL的層次結構設計;4?鞏固程序下載方法;5^解開發(fā)板時鐘資源,以及時鐘分頻方法。實驗內容1基本可逆計數器模塊可逆計數器電路圖及功能表如圖3-1和表3-1所示。根據真值表易寫出可逆計數器的vhdl模塊,要注意的是:由于其中涉及向量類型的算術運算,所以在庫中要添加STD_LOGIC_UNSIGNED.ALL;由于Y[0..7為out類型,不能獲取其值進行操作,應當添加一個信號comb,進行算術運算。圖3-1可逆計數器原理圖表3-1可逆計數器功能表clrenUp/DnelkY7~Y01XXX0000000000XX停止計數011計數器+1操作0J 0 計數器-1操作2.1/50000000分頻器模塊可逆計數器電路圖如圖3-2所示。在實驗板上提供了50MHz的系統時鐘頻率,為獲取1Hz的計數時鐘頻率,需要對其進行分頻,即輸入端輸入50MHz的系統時鐘頻率,然后輸出端每過25M個頻率輸出信號跳變一次,即可得到1Hz的頻率輸出。3二選一電路模塊二選一電路電路圖如圖3-3所示。通過滑動開關即可選擇是通過1Hz時鐘輸入還是通過外部按鍵輸入。4綜合原理圖(頂層原理圖)選擇原理圖模式,將生成的(已封裝)各模塊器件組合成最終形式。如圖3-4所示。50Mclock1Hzclock1/50000000圖3-21/50000000分頻器In1In2Dout圖3-350Mclock1Hzclock1/50000000圖3-21/50000000分頻器In1In2Dout圖3-3二選一電路SW2Y0(LED0)Y3(LED3)Y4(LED4)Y5(LED5)Y6(LED6)Y7(LED7)圖3-4完整的可逆計數器實驗步驟建立工程文件,頂層文件為原理圖;編寫分頻模塊程序,要求輸入為50MHz系統時鐘,輸出為1Hz計數時鐘;3編寫2選1模塊,輸入為按鍵、1Hz時鐘和開關SW2,輸出為計數源;4?編寫計數器模塊主程序模塊;5?在原理圖中,將各個模塊連接,使用pinhead分配引腳資源;對程序進行功能仿真;7?下載程序,進行驗證。主要vhdI代碼--1/50000000分頻模塊architectureBehavioraloffdivissignaltmp:std_logic:='O';beginprocess(cin)variablefd:INTEGER:=0;beginif(cin'eventandcin='1')thenfd:=fd+1;if(fd=25000000)thentmp<=nottmp;fd:=0;cout<=tmp;endif;endif;endprocess;endBehavioral;-二選一電路模塊architectureBehavioralofmux21isbeginprocess?n1,in2,s)beginif(s='O')thendout<=ini;elsedout<=in2;endif;endprocess;endBehavioral;--基本可逆計數器模塊architectureBehavioralofcounterissignalcomb:STD_LOGIC_VECTOR(7downto0):="00000000";beginprocess(clr,en,sel,clk)beginif(clr='1')thencomb<="00000000";elsif(en='1')thenif(clk'eventandclk='1')thenif(sel='1')thencomb<=comb+1;elsif(sel='0')thencomb<=comb-1;endif;endif;endif;endprocess;Y<=comb;endBehavioral;六、心得體會這次的實驗比較綜合,共分為三個模塊,通過三個模塊的組合完成最終設計。通過這次實驗,我不僅對于 vhdl程序的編寫更加熟悉,也初步構建起了硬件設計的模塊化思想,學習了自頂向下的設計方法,學會了利用ise軟件進行電路仿真的方法,并掌握了一些常用的硬件描述方式,大大加深了對于使用vhdl語言描述硬件方式的印象。狀態(tài)機電路實驗(一)實驗報告實驗名稱:按鍵抖動消除及驗證電路設計實驗目的1?進一步熟練ISE開發(fā)工具,鞏固FPGA開發(fā)的基本步驟,掌握功能仿真方法;2?了解按鍵抖動的原因,抖動消除方法掌握狀態(tài)機的設計方法;4?掌握消除抖動的狀態(tài)機設計方法5?鞏固程序下載方法。實驗內容原理簡介按鍵動作發(fā)生時按鍵的輸出會出現不穩(wěn)定的邏輯’0'和邏輯’1'的跳變。該信號直接輸入到計數器之類電路-變。該信號直接輸入到計數器之類電路-會發(fā)生計數錯誤。如圖3-5所示。圖3-5信號抖動狀態(tài)分析設置五個狀態(tài):S0,S1,S2,S3,S4,S5。電路的復位信號RST有效時,電路進入復位狀態(tài)S0,在S0狀態(tài)下,時鐘信號CLK以一定頻率采樣按鍵輸入信號Key」n,如果采樣到Key」n二0'則停留在S0狀態(tài),并繼續(xù)采樣,一旦采樣到Key」n二'’則轉入S1延時狀態(tài),進行消抖延時,當延時結束時,Delay_end=1',則轉入S2狀態(tài),在此狀態(tài)下,時鐘信號CLK以一定頻率采樣按鍵輸入Key_in,如果Key」n二0’則轉入S0,否則轉入S3;狀態(tài)S3,S4的轉換過程和條件與S2相同,在狀態(tài)S4下,如果Key」n='T,則轉入S5狀態(tài),當進入S5時,表示經過S2,S3,S4三個連續(xù)狀態(tài)檢測按鍵輸入Key_in都為‘T,則認為按鍵處于穩(wěn)定狀態(tài),在S5輸出按鍵確認信號Key_confirm='T同時在狀態(tài)S5下,時鐘信號CLK檢測按鍵輸入Key_in,如果Key_in=1'表示按鍵未釋放,繼續(xù)停留在S5,檢測輸入信號,如果檢測到Key_in=1'表示按鍵已經釋放,輸出Key_confirm=0'返回到狀態(tài)SO,等待下一次按鍵操作。狀態(tài)分析圖6卅一Q*延時keyin-1keyin-1延時結束Q0S5S4keyin-1'keyout-1'keyin-keyout='0'6卅一Q*延時keyin-1keyin-1延時結束Q0S5S4keyin-1'keyout-1'keyin-keyout='0'S2keyin-TS3實驗步驟1?畫出電路的狀態(tài)轉換圖;編寫完整的VHDL程序;3?下載程序,進行驗證。主要vhdI代碼(延時消抖模塊)architectureBehavioralofdelayistypestatesis(s0,s1,s2,s3,s4,s5);signalnextstate:states;beginprocess(clk,keyin,keyin)variablenum:integer:=1000;beginiiif(rst='1')thennextstate<=s0;elsif(keyin'eventandkeyin='1')thencasenextstateiswhens0=>if(keyin='1')thennextstate<=s1;elsenull;endif;whens1=>num:=num-1;if(num=0)thennum:=1000;nextstate<=s2;elsenull;endif;whens2=>if(keyin='1')thennextstate<=s3;elsenextstate<=s0;endif;whens3=>if(keyin='1')thennextstate<=s4;elsenextstate<=s0;endif;whens4=>if(keyin='1')thennextstate<=s5;keyout<='1';elsenextstate<=s0;endif;whens5=>if(keyin='0')thennextstate<=s0;keyout<='O';elsenull;endif;endcase;endif;endprocess;endBehavioral;六、心得體會這次實驗只編寫了一個模塊一一按鍵延時消抖模塊, 主要用到了有限狀態(tài)機的相關知識,學會了使用狀態(tài)圖來清晰地顯示出狀態(tài)機的設計思路。有限狀態(tài)機的概念在牽涉到多個固定狀態(tài)之間根據不同條件進行切換的問題中很重要,在生活中隨處可見其蹤影。本次通過編寫一個簡單的有限狀態(tài)機的vhdl模塊,讓我對它的機理與實現過程有了更深入的了解。綜合實驗(一)實驗報告實驗名稱:兩人乒乓球游戲實驗目的1?進一步熟練ISE開發(fā)工具,鞏固FPGA開發(fā)的基本步驟,掌握功能仿真方法;2?鞏固狀態(tài)機的設計方法;3?鞏固按鍵消抖電路設計方法;4?掌握多進程程序設計方法;5?鞏固程序下載方法;6^解開發(fā)板時鐘資源,以及時鐘分頻方法。實驗內容1.原理簡介兩人乒乓游戲機用8個發(fā)光二極管代表乒乓球臺,中間兩個發(fā)光二極管作為乒乓球網,用點亮的發(fā)光二極管按照一定的方向移動來表示球的運動。在游戲機的兩側各設置發(fā)球和擊球開關,甲乙雙方按乒乓球比賽規(guī)則來操作開關。當甲方按動發(fā)球開關時,靠近甲方的第一個發(fā)光二極管亮,然后發(fā)光二極管由甲方向乙方依次點亮,代表乒乓球的移動,當球過網后,按照設計者規(guī)定的球位乙方就可以擊球。 若乙方提前擊球或者未擊到球,則甲方得分。然后重新發(fā)球比賽,直到一方達到21分為止,記分清0,重新開始新一局比賽。2狀態(tài)分析設置七個狀態(tài):“等待發(fā)球狀態(tài)”、“第一盞燈亮狀態(tài)”、“第八盞燈亮狀態(tài)”、“球向乙移動狀態(tài)”、“球向甲移動狀態(tài)”、“允許甲擊球狀態(tài)”、“允許乙擊球狀態(tài)”。開始的時候處于“等待發(fā)球狀態(tài)”,若甲發(fā)球則狀態(tài)轉移到“第一盞燈殼狀態(tài)”,若乙發(fā)球則轉移到“第八盞燈亮狀態(tài),,。以甲發(fā)球為例:若發(fā)球后乙沒有提前擊球(規(guī)定球移動到對方第一個發(fā)光二極管時允許擊球),那么狀態(tài)機從“第一盞燈亮狀態(tài)',轉移到“球向乙移動狀態(tài)”,若此時乙依然沒有提前擊球,狀態(tài)就轉移到“允許乙擊球狀態(tài)”,在此狀態(tài)下,如果乙擊球了,那么狀態(tài)就轉移到“球向甲移動狀態(tài)”。在“第一盞燈殼狀態(tài)”、“球向乙移動狀態(tài)',中,如果乙擊球了,就算提前擊球,這樣甲得分,狀態(tài)轉移到“等待發(fā)球狀態(tài)”等待發(fā)球?!扒蛳蚣滓苿訝顟B(tài)”之后的過程和前面的過程只不過是甲乙角色的調換而已,狀態(tài)轉移規(guī)則一樣。3.狀態(tài)分析圖甲得分 1乙得分四.實驗步驟畫出游戲的狀態(tài)轉換圖;建立程序工程;編寫按鍵去抖進程編寫狀態(tài)機進程;5下載程序,進行驗證。五.主要vhdI代碼(游戲主體模塊)(該代碼與蔡坤、魏浩源合作完成)architectureBehavioralofgameistypestatesis(s0,s1,s2,s3,s4,s5,s6);--分別對應"等待發(fā)球狀態(tài)二"第一盞燈亮狀態(tài)二"第八盞燈亮狀態(tài)"、"球向乙移動狀態(tài)二"球向甲移動狀態(tài)二"允許乙擊球狀態(tài)"和"允許甲擊球狀態(tài)"signalnext_state:states;signalready:STD_LOGIC:='0:beginprocess(clk,rst,hita,hitb,servea,serveb,startbtn)variablenum:integerrange0to10;variableascore,bscore:STD_LOGIC_VECTOR(3downto0);beginif(rst='1')then<="00000000";ready<='0';ascore:="0000";bscore:="0000";elsif(startbtn='1')thenready<='1';<="00011000";next_state<=s0;ascore:="0000";bscore:="0000";elsif(clk'eventandclk='1')thencasenext_stateiswhens0=>if(servea='1')thennext_state<=s1;num:一1;elsif(serveb='1')thennext_state<=s2;num:一6;elsenum:=10;endif;whens1=>if(hitb='1')thenascore:=ascore+'1';Y<=bscore&ascore;next_state<=s0;num:一0;elsenext_state<=s3;num:=2;whens2=>num:一6;if(hita二'1')thenbscore:=bscore+'1';endif;Y<=bscore&ascore;next_state<=sO;num:一0;elsenext_state<=s4;num:=5;endif;whens3=>if(hitb='1')thenascore:=ascore+'1';num:一0;yv一bscore&ascore;next_state<=sO;elsif(num=1)thennum:一2;elsif(num=2)thennum:一3;elsif(num=3)thennum:一4;next_state<=s5;elsif(num=4)thennum:一5;next_state<=s5;endif;whens4=>if(hita='1')thenbscore:=bscore+'1';Y<—bscore&ascore;num:一0;next_state<=s0;elsif(num=6)thennum:一5;elsif(num=5)thennum:一4;elsif(num=4)thennum:一3;next_state<=s6;elsif(num=3)thennum:一2;next_state<=s6;whens5=>if(hitb二'1')thennext_state<=s4;num:二num-1;elsif(num>6)thenascore:=ascore+'1';Y<—bscore&ascore;num:=0;next_sta

溫馨提示

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

最新文檔

評論

0/150

提交評論