久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

基于FPGA的乒乓球游戲機控制器設(shè)計

時間:2019-05-14 05:48:27下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《基于FPGA的乒乓球游戲機控制器設(shè)計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《基于FPGA的乒乓球游戲機控制器設(shè)計》。

第一篇:基于FPGA的乒乓球游戲機控制器設(shè)計

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第I頁

基于FPGA的乒乓球游戲機設(shè)計

摘 要

Verilog是甚高速集成電路硬件描述語言。目前,verilog已成為許多設(shè)計自動化工具普遍采用的標準化硬件描述語言。verilog語言功能性強,覆蓋面廣,靈活性高,具有很好的實用性。本文設(shè)計一個基于verilog的乒乓游戲機,乒乓游戲機由狀態(tài)機、記分器、譯碼顯示器與按鍵去抖等部分所組成。通過對各部分編寫verilog程序,然后進行編譯、仿真、邏輯綜合、邏輯適配,最后進行編程下載,并且通過EDA實驗箱的驗證,實現(xiàn)乒乓游戲機的基本功能。

關(guān)鍵詞:verilog;EDA;乒乓游戲機

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第II頁

Abstract

VERILOG is high speed IC hardware describe language.VERILOG already becomes the language of normalizing hardware describe that a lot of design automation implement adopts commonly at present.The VERILOG language function is strong.The face covering is broad, flexibility high and have the very good pragmatism.One main body of the book is designed waits for what part group is accomplished owing to that VERILOG table tennis game machine, table tennis game machine go to tremble from state machine, marker, decoding display and button.By compiling and composing VERILOG procedure to every part, then compiling, simulate, logic synthesis, logic fitting.Carry out programming time be loaded with finally.Then verification and by GW48 type EDA experiment box, realize table tennis game machine’s fundamental function.Key words: VERILOG:EDA;Table tennis game machine

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第III頁

目 錄 緒論..............................................................1

1.1課題的背景和意義...........................................1 1.2國內(nèi)外研究現(xiàn)狀.............................................1 1.3本論文的主要內(nèi)容...........................................2 2 Quartus II與Modelsim 軟件簡介....................................3

2.1Quartus II 簡介.............................................3 2.2Modelsim簡介...............................................4 3 方案選擇與系統(tǒng)總體設(shè)計............................................6

3.1整體方案的選擇.............................................6

3.1.1設(shè)計任務(wù)與要求.......................................6 3.1.2設(shè)計的原理和方法.....................................7 3.1.3芯片的選擇...........................................8 3.2系統(tǒng)總體設(shè)計...............................................8

3.2.1乒乓游戲機的組成示意圖...............................8 3.2.2本系統(tǒng)的邏輯分框圖...................................9 系統(tǒng)各部分電路的詳細設(shè)計.........................................10 4.1七段數(shù)碼管顯示譯碼電路....................................10 4.2按鍵去抖電路..............................................11 4.3狀態(tài)機設(shè)計................................................11 4.3.1狀態(tài)機的6種狀態(tài)及狀態(tài)轉(zhuǎn)移..........................11 4.3.2狀態(tài)機/球臺控制電路.................................13

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第IV頁

4.4記分器設(shè)計................................................15 5 系統(tǒng)的整體綜合與仿真.............................................16 5.1頂層文件設(shè)計..............................................16 5.2系統(tǒng)程序框圖:............................................17 5.3整個系統(tǒng)的綜合與仿真......................................18 5.3.1 電路符號...........................................18 5.3.2 系統(tǒng)仿真...........................................18 6 系統(tǒng)的運行與仿真過程.............................................20 6.1系統(tǒng)程序的編譯............................................20 6.2 系統(tǒng)的仿真................................................22 結(jié)論...............................................................24 謝 辭..............................................................25 參考文獻...........................................................26 附錄...............................................................27

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第1頁 緒論

1.1課題的背景和意義

隨著人們的物質(zhì)生活越來越好了,人們開始對娛樂生活有了新的要求,特別是進入新世紀以來各種電子產(chǎn)品的不斷出現(xiàn),更是促進了我國電子行業(yè)的發(fā)展,為此,能夠推出一款新的游戲產(chǎn)品是非常有前景的,本設(shè)計正是考慮了當前的社會現(xiàn)狀,想設(shè)計出一款“乒乓球”游戲機,以往可能有過這方面的設(shè)計出現(xiàn)過,但是那些大多數(shù)都是采用的單片機等來實現(xiàn)的,本設(shè)計將采用最新的FPGA技術(shù)對“乒乓球”游戲機進行實現(xiàn)。

日常娛樂生活中,智能化的娛樂產(chǎn)品非常流行。FPGA具有功能強、可靠性高、使用方便、體積小及重量輕等優(yōu)點。國外已廣泛應(yīng)用于自動化控制的各個領(lǐng)域。近年來,國內(nèi)的FPGA技術(shù)與產(chǎn)品開發(fā)應(yīng)用方面的發(fā)展也很快,各種電子產(chǎn)品已越來越多地采用FPGA控制系統(tǒng)且性價比高。本文從實用的角度以Altera公司的EP2C35F484I8芯片為核心設(shè)計了一種智能“乒乓球”游戲機。實踐證明,該游戲機運行狀況穩(wěn)定、可靠,滿足了智能化要求。

1.2國內(nèi)外研究現(xiàn)狀

隨著社會的進步和工業(yè)技術(shù)的發(fā)展,在電子線路設(shè)計領(lǐng)域中,設(shè)計自動化工具已經(jīng)逐步為設(shè)計者所接受,成為主要的設(shè)計手段。目前,VERILOG已成為許多設(shè)計自動化工具普遍采用的標準化硬件描述語言,掌握VERILOG語言,用VERILOG語言設(shè)計電子線路,是電子線路設(shè)計者必須掌握的基本技能。VERILOG支持數(shù)字電路的開發(fā)環(huán)境,VERILOG也支持各種設(shè)計方法:自頂向下、自底向上或混合的方法[1]。VERILOG語言功能性強,覆蓋面大,靈活性高,具有很好的實用性[2]。本文設(shè)計一個基于VERILOG的乒乓游戲機,乒乓游戲機是由5個發(fā)光二極管代表乒乓球臺,中間的發(fā)光二極管兼作球網(wǎng),用點亮的發(fā)光二極管按一定方向移動來表示球的運動。在游戲機的兩側(cè)各設(shè)置兩個開關(guān),甲乙二人按乒乓球比賽規(guī)則來操作開關(guān)。本設(shè)計由譯碼顯示器、記分器、狀態(tài)機/球臺控制器與按鍵去抖等部

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第2頁

分組成。本設(shè)計是用實驗箱進行模擬乒乓機,用發(fā)光二極管代表乒乓球臺,最中間的發(fā)光二極管作球網(wǎng),用點亮的發(fā)光二極管按一定方向移動來表示球的運動,用按鈕設(shè)置發(fā)球和接球開關(guān)。1.3本論文的主要內(nèi)容

本論文的主要內(nèi)容是設(shè)計一個基于FPGA的“乒乓球”游戲機,在廣泛收集相關(guān)資料的基礎(chǔ)上,對“乒乓球”游戲機進行了深入的研究,利用現(xiàn)場可編程門陣列FPGA完成本次設(shè)計。整個系統(tǒng)以ALtera公司的EP2C35芯片為核心,采用verilog HDL語言進行開發(fā),配置了相應(yīng)的輸入、信號處理及顯示電路,并進行仿真及驗證。

本論文各章的內(nèi)容如下:

第一章介紹了“乒乓球”游戲機設(shè)計的背景及意義,并簡單的的闡述了目前國內(nèi)外在這方面的發(fā)展現(xiàn)狀。

第二章介紹了Quartus II 軟件以及Modelsim軟件的使用和特點。第三章介紹了對于系統(tǒng)的整體設(shè)計以及相關(guān)的設(shè)計任務(wù)和設(shè)計要求,并簡單的分析了整個系統(tǒng)的設(shè)計流程和方法。

第四章主要是介紹在整個“乒乓球”游戲機系統(tǒng)中各個模塊的工作原理及過程。

第五章主要是對系統(tǒng)進行原理圖的設(shè)計和對整個系統(tǒng)的仿真。第六章主要是對整個的設(shè)計過程和仿真的的過程做一個簡單的描述。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第3頁 Quartus II與Modelsim 軟件簡介

2.1Quartus II 簡介

Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學易用等特點。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。

此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。

Maxplus II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。

Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第4頁

2.2Modelsim簡介

Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段,是FPGA/ASIC設(shè)計的首選仿真軟件。主要特點:

? RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺跨版本仿真; ? 單內(nèi)核VHDL和Verilog混合仿真; ? 源代碼模版和助手,項目管理;

? 集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、Signal Spy、虛擬對象Virtual Object、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件斷點等眾多調(diào)試功能;

? C和Tcl/Tk接口,C調(diào)試;

? 對SystemC的直接支持,和HDL任意混合 ? 支持SystemVerilog的設(shè)計功能;

? 對系統(tǒng)級描述語言的最全面支持,SystemVerilog, SystemC, PSL;? ASIC Sign off。

ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSim XE為例,對于代碼少于40000行的設(shè)計,ModelSim SE 比ModelSim XE要快10倍;對于代碼超過40000行的設(shè)計,ModelSim SE要比ModelSim XE快近40倍。ModelSim

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第5頁

SE支持PC、UNIX和LINUX混合平臺;提供全面完善以及高性能的驗證功能;全面支持業(yè)界廣泛的標準;Mentor Graphics公司提供業(yè)界最好的技術(shù)支持與服務(wù)。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第6頁 方案選擇與系統(tǒng)總體設(shè)計

3.1整體方案的選擇

本課題將采用Altera公司的EP2C35F484I8芯片進行基于FPGA的“乒乓球”游戲機設(shè)計。

3.1.1設(shè)計任務(wù)與要求

設(shè)計一個乒乓球游戲機,模擬乒乓球比賽基本過程和規(guī)則,并能自動裁判和計分。具體要求如下:

使用乒乓球游戲機的甲,乙雙方各在不同的位置發(fā)球或擊球。乒乓球的位置和移動方向可由LED顯示燈和一次點亮的方向決定,球的移動速度設(shè)為0.5s移動1位。使用者可按乒乓球的位置發(fā)出相應(yīng)的動作,提前擊球或出界均判失分。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第7頁

3.1.2設(shè)計的原理和方法

乒乓球游戲機是用5個發(fā)光二極管代表乒乓球臺,中間發(fā)光二極管兼作乒乓球網(wǎng),用點亮的發(fā)光二極管按一定的方向移動來表示球的運動。另外設(shè)置發(fā)球開關(guān)Af,Bf以及接球開關(guān)Aj,Bj。利用7段數(shù)碼管作為記分牌。

甲乙雙方按乒乓球比賽規(guī)則來操作開關(guān)。當甲方按動發(fā)球開關(guān)af時,靠近甲方的第一個燈亮,然后按順序向乙方移動;當球過網(wǎng)后,乙方可以接球,接球后燈反方向移動,雙方繼續(xù)比賽;如果一方提前擊球或未擊球,則判失分,對方加分。重新發(fā)球后繼續(xù)比賽。

本設(shè)計主要的設(shè)計方法是采用文本編輯法,利用verilog HDL語言描述乒乓球游戲機,并進行綜合和仿真。

圖3.1 系統(tǒng)設(shè)計流程圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第8頁

3.1.3芯片的選擇

在這次設(shè)計中選用的FPGA芯片是Altera公司的Cyclone(颶風)系列的芯片,型號為:EP2C35。它是基于1.5V的,采用0.13um全銅SRAM工藝、TQFP封裝,有5980個邏輯單元,2個鎖相環(huán),20個M4K RAM塊,其中每個RAM為4kbit,可以另加一位奇偶校驗位。

3.2系統(tǒng)總體設(shè)計

3.2.1乒乓游戲機的組成示意圖

圖3.2 乒乓球游戲機組成示意圖

本設(shè)計中的乒乓游戲機是由5個發(fā)光二極管代表乒乓球臺,中間的發(fā)光二極管兼作球網(wǎng),用點亮的發(fā)光二極管按一定方向移動來表示球的運動。在游戲機的兩側(cè)各設(shè)置兩個開關(guān),一個是發(fā)球開關(guān)af、bf;另一個是擊球開關(guān)aj、bj。甲乙二人按乒乓球比賽規(guī)則來操作開關(guān)。當甲方按動發(fā)球開關(guān)af時,靠近甲方的

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第9頁

第一個發(fā)光二極管亮,然后發(fā)光二極管由甲向乙依次點亮,代表乒乓球的移動。當球過網(wǎng)后按設(shè)計者規(guī)定的球位,乙方就可以擊球。若乙方提前擊球或沒有擊中球,則判乙方失分,甲方的記分牌自動加一分。然后重新發(fā)球,比賽繼續(xù)進行。比賽一直要進行到一方記分牌達到21分,該局才結(jié)束。本設(shè)計由譯碼顯示器、按鍵去抖、狀態(tài)機/球臺控制器和記分器等部分所組成。3.2.2本系統(tǒng)的邏輯分框圖

圖3.2 系統(tǒng)邏輯分框圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第10頁 系統(tǒng)各部分電路的詳細設(shè)計

4.1七段數(shù)碼管顯示譯碼電路

圖4.1 譯碼顯示電路符號

七段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數(shù)的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實現(xiàn)。七段數(shù)碼管分為共陰極和共陽極兩種[8]。簡而言之,對共陰極來說,公共引腳要接地,想要點亮某段數(shù)碼管,就在相應(yīng)的引腳加上高電平;對共陰極來說剛好相反,公共引腳提高電平,想要點亮某段數(shù)碼管,就在相應(yīng)的引腳加上低電平[9]。七段BCD碼譯碼器的設(shè)計,輸出信號LED7S的7位分別接如圖4所示數(shù)碼管的七個段,高位在左,低位在右[9]。例如當LED7S輸出為“1101101” 時,數(shù)碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1,接有高電平的段發(fā)亮,于是數(shù)碼管顯示“5”。

帶使能信號EN的譯碼電路的verilog程序中,EN為高電平時,譯碼器正常工作;EN為低電平時,譯碼器輸出0000000,表示數(shù)碼管無顯示。用選擇信號賦值語句描述,將綜合成組合邏輯電路。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第11頁

4.2按鍵去抖電路

圖4.2 按鍵電路符號

鍵盤的按鍵閉合與釋放瞬間,輸入的信號會有毛刺。如果不進行消抖處理,系統(tǒng)會將這些毛刺誤以為是用戶的另一次輸入,導致系統(tǒng)的誤操作。防抖電路有很多種,最簡單、最容易理解的就是計數(shù)法。其原理是對鍵值進行計數(shù),當某一鍵值保持一段時間不改變時(計數(shù)器達到一定值后),才確認它為有效值;否則將其判為無效鍵值,重新對鍵值進行計算。

4.3狀態(tài)機設(shè)計

4.3.1狀態(tài)機的6種狀態(tài)及狀態(tài)轉(zhuǎn)移

本狀態(tài)機有6種狀態(tài),分別是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含義如下表所示:

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第12頁

狀態(tài)機的6種狀態(tài)及含義:

表4.1 狀態(tài)機6種狀態(tài)表

狀 態(tài) 含 義

WAITSTATE 等待狀態(tài),等待A或B方開球

ATOB 球從A向B方移動

BTOA 球從B向A方移動

ASCORE A得一分

BSCORE B得一分

FINALRESULT 比賽結(jié)束(最終判分),在此狀態(tài)下需要按復(fù)位鍵,才能開始下一輪比賽

結(jié)合上表從下圖中很清楚地看出乒乓游戲機比賽過程中球的移動情況,及加分方法,還可以初步了解到本狀態(tài)機設(shè)計的基本思路:

圖4.3 乒乓游戲機狀態(tài)轉(zhuǎn)移圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第13頁

4.3.2狀態(tài)機/球臺控制電路

狀態(tài)機是種很重要的時序電路,也是本設(shè)計的核心部件。狀態(tài)機屬于時序電路范疇,實現(xiàn)一個控制功能更為方便,并提高了控制速度。本次設(shè)計中狀態(tài)機的符號如下圖所示:

圖4.4 狀態(tài)機、球臺控制電路符號

在本設(shè)計中,狀態(tài)機用兩個信號表示狀態(tài):STATE表示當前狀態(tài),TABLESTATE表示下一個狀態(tài)。此狀態(tài)機由兩個進程構(gòu)成,狀態(tài)機的輸入/輸出引腳的作用如下表所示。其中SCOREAL[3..0]、SCOREAH[3..0]、SCOREBL[3..0]、SCOREBH[3..0]用七段BCD碼譯碼器顯示得分情況,而SCOREA、SCOREB用二進制進行加分,由記分器反饋回來。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第14頁

輸入/輸出引腳的作用:

表4.2 輸入輸出引腳表

引 腳 作 用

CLK

所需時鐘可由系統(tǒng)時鐘分頻得到。此時時鐘決定了球移動的速度,可根據(jù)實際需要調(diào)整。

RESET 復(fù)位鍵,比賽重新開始,記分器清0 af、bf A和B雙方的開始的開球鍵

aj,bj

A和B雙方的擊球鍵(可以將其與開球鍵合并)CLEAR 將記分器清0(給記分器的控制信號)INCREASEA、INCREASEB 分別為A、B雙方的加分信號(給記分器的控制信號)SCOREAL[3..0]SCOREAH[3..0] SCOREBL[3..0]SCOREBH[3..0] SCOREA、SCOREB

A、B雙方的分數(shù)(由記分器給出)

LIGHT[4..0] 接5個發(fā)光二極管

AWIN、BWIN 分別接發(fā)光二極管,表示A或B方勝出

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第15頁

4.4記分器設(shè)計

圖4.5 計分器電路符號

記分器元件符號如上圖所示,本設(shè)計中記分器比較簡單,只須根據(jù)狀態(tài)機給出的兩個信號(INCREASEA和INCREASEB)對六個分數(shù)(SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB)進行操作。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第16頁 系統(tǒng)的整體綜合與仿真

5.1頂層文件設(shè)計

“乒乓球”游戲機系統(tǒng)主要由譯碼電路,按鍵去抖電路,狀態(tài)機/球臺控制電路等構(gòu)成,下圖為系統(tǒng)的頂層文件設(shè)計原理圖:

圖5.1 頂層文件設(shè)計原理圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第17頁

5.2系統(tǒng)程序框圖:

系統(tǒng)的程序框圖如下圖所示,程序清單見附錄:

clk1khzClk1_2hzClk1_2hz上升沿Rst=1NY重置初值判斷a,b,af,aj,bf,bj的值球的位置狀態(tài)shift_1A,B接發(fā)球情況A方得分a_scoreB方得分b_scoreA方得分的各位十位a_one,a_tenB方得分的各位十位b_one,b_ten譯碼顯示譯碼顯示 圖5.2 系統(tǒng)程序框圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第18頁

5.3整個系統(tǒng)的綜合與仿真

5.3.1 電路符號

乒乓球游戲機的電路符號如下圖所示。輸入信號:系統(tǒng)時鐘clk1khz(輸入1KHZ的時鐘信號);系統(tǒng)復(fù)位端rst;甲方發(fā)球af;乙方發(fā)球bf;甲方擊球aj;乙方擊球bj;輸出信號:5個LED顯示模塊shift[4?0];數(shù)碼管地址選擇信號scan[3?0];7段顯示控制信號seg7[6..0]。

圖5.3 系統(tǒng)電路符號

5.3.2 系統(tǒng)仿真

由于本系統(tǒng)的狀態(tài)情況比較的多,下面就幾種典型的情況進行系統(tǒng)的綜合和仿真:

1、甲方發(fā)球后乙方提前擊球,同時甲方得分:下圖為仿真的結(jié)果圖,觀察波形可知,球的移動方向為從左到右,乙提前擊球后a_core加1,即甲方得分。

圖5.4 仿真結(jié)果圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第19頁

2、甲方發(fā)球后,乙方在過網(wǎng)后擊球:此情況的功能仿真結(jié)果如下圖所示,觀察波形可知,乙接到球后,球的運動方向變?yōu)閺挠业阶蟆?/p>

圖5.5 仿真結(jié)果圖

3、甲方發(fā)球后,乙方?jīng)]有擊球:此情況的功能仿真結(jié)果圖如下圖所示,觀察波形可知,乙沒有接球,則甲方加分。

圖5.6 仿真結(jié)果圖

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第20頁 系統(tǒng)的運行與仿真過程

6.1系統(tǒng)程序的編譯

1、運行新建項目向?qū)?,新建一個項目,選擇之前創(chuàng)建好的文件夾,用來存放該項目的文件,如圖6.1所示:

2、該步驟主要是為以后的仿真做準備,如圖6.2所示選擇仿真軟件為modelsim,編程語言為verilog HDL。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第21頁

3、創(chuàng)建完項目之后接著再新建一個verilog HDL file 用來編輯之前設(shè)計好的程序,再編輯區(qū)輸入設(shè)計好的程序之后,點擊編譯按鈕開始編譯文件,通過不斷的調(diào)試修改直到編譯成功為止,如圖6.3所示:

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第22頁

6.2 系統(tǒng)的仿真

1、點擊進入仿真軟件modelsim之后,點擊如圖6.4所示的按鈕,找到之前準備好的文件,開始編譯,觀察信息區(qū),直到編譯成功為止。

2、在work庫中找到編譯成功的文件zhouyou,雙擊準備開始仿真,如圖6.5所示:

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第23頁

3、如圖6.6所示開始給定各個變量的初始值,以及所需的時鐘信號 根據(jù)自己的需要和仿真的方便性考慮時鐘的大小.4、給定完時鐘信號和各個變量的初始值之后,開始點擊進入仿真界面,運行開始仿真,具體的步驟如圖6.7所示:

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第24頁

結(jié)論

本文進行乒乓游戲機軟件設(shè)計,并用EDA實驗箱進行驗證,目標芯片是Altera公司CycloneII系列的EP2C35F484I8,本設(shè)計由狀態(tài)機/球臺控制器、記分器、譯碼顯示器、按鍵去抖等模塊組成。通過實驗箱模擬乒乓球游戲機,用發(fā)光二極管代表乒乓球臺,最中間的發(fā)光二極管作球網(wǎng),用點亮的發(fā)光二極管按一定方向移動來表示球的運動,用按鈕設(shè)置發(fā)球和接球開關(guān)。最終實現(xiàn)乒乓機能模擬乒乓球比賽的基本過程和規(guī)則,并能自動裁判和記分。本設(shè)計用了16個發(fā)光二極管當乒乓球臺。本設(shè)計可以再改進一下,把指示勝利2個發(fā)光二極管用數(shù)碼管來代替,這樣不僅可以完成之前的功能,而且可以顯示比賽的局數(shù)。

通過幾個月的努力,基本完成了畢業(yè)設(shè)計任務(wù)書所要求的內(nèi)容,而且在實驗箱上對大部分功能進行了仿真,取得了預(yù)期的結(jié)果,總之,通過自己的努力以及同學和老師的幫助,圓滿的完成了本次設(shè)計任務(wù)。

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第25頁

謝 辭

通過兩個多月的畢業(yè)設(shè)計,我學習了怎樣運用FPGA設(shè)計乒乓球游戲機系統(tǒng)。非常感謝我的指導老師孫禾,在整個設(shè)計過程中一直耐心教導,認真負責,細心教誨,讓我領(lǐng)略到如何實現(xiàn)一個系統(tǒng)的設(shè)計,以及如何使用書本知識到實際應(yīng)用上去。在很多細節(jié)上,孫老師的指導與教誨,讓人受益匪淺。

感謝四年來測控技術(shù)與儀器專業(yè)各位老師的孜孜教誨和學校的細心培養(yǎng),讓我能有今天的進步,在今后的工作中發(fā)揮自己的價值。

最后要感謝我身后的父親,母親,一直以來對我的信任和支持,有朝一日,希望可以回給他們同樣的愛。

感謝遼寧科技學院四年的學習!

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第26頁

參考文獻

[1] 邊計年.用VHDL設(shè)計電子線路[M].北京:清華出版社,2000:2.[2] 黃任.VHDL入門?解惑?經(jīng)典實例?經(jīng)驗總結(jié)[M].北京:北京航天大學出版社,2005:3-5,115.[3] 尹常永.EDA技術(shù)/電子設(shè)計實驗講義[M].西安:西安電子科技大學出版社,2004:3.[4] 楊剛.現(xiàn)代電子技術(shù)—VHDL與數(shù)字系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2004:6.[5] 甘歷.VHDL應(yīng)用與開發(fā)實驗[M].北京:科學出版社,2003:4.[6] 侯伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學出版社,1999:27.[7] 潭會生,張昌凡.EDA技術(shù)及應(yīng)用[M].西安:西安電子科技大學出版社,2004:81,233,256.[8] 王振紅.VHDL數(shù)字電路設(shè)計與應(yīng)用實踐教程[M].北京:機械工業(yè)出版社,2005:35,37.[9] 李宜達.數(shù)字邏輯電路設(shè)計與實現(xiàn)[M].北京:科學出版社,2004:144.遼寧科技學院本科生畢業(yè)設(shè)計(論文)第27頁

附錄

1、系統(tǒng)程序:

module zhouyou(shift,scan,seg7,clk1khz,rst,af,aj,bf,bj);output[4:0] shift;output[3:0] scan;output[6:0] seg7;input clk1khz;input af;input aj;input bf;input bj;input rst;reg[4:0] shift;reg[3:0] scan;reg[6:0] seg7;reg clk1_2hz;reg[3:0] a_score,b_score;reg[1:0] cnt;reg[3:0] data;reg[3:0] a_one,a_ten,b_one,b_ten;reg[7:0] count;reg a,b;

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第28頁

reg[4:0] shift_1;

always@(posedge clk1khz)begin if(count=='b1111_1010)begin clk1_2hz<=~clk1_2hz;count<=0;end else begin count<=count+1;end

if(cnt=='b11)begin cnt<='b00;end else begin cnt<=cnt+1;end end

always@(posedge clk1khz)begin if(rst)begin a_score<=0;b_score<=0;a<=0;b<=0;shift_1<=0;end else begin

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第29頁

if(!a&&!b&&af)begin a<=1;shift_1<='b10000;end else if(!a&&!b&&bf)begin b<=1;shift_1<='b00001;end else if(a&&!b)begin if(shift_1>'b00100)begin if(bj)begin a_score<=a_score+1;a<=0;b<=0;shift_1<='b00000;end else begin shift_1[4:1]<=shift_1[4:1]>>1;end end else if(shift_1=='b0)begin a_score<=a_score+1;a<=0;b<=0;end else begin if(bj)begin a<=0;b<=1;end

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第30頁

else begin shift_1[4:1]<=shift_1[4:1]>>1;end end end else if(b&&!a)begin if(shift_1<'b00100&&shift_1!='b0)begin if(aj)begin b_score<=b_score+1;a<=0;b<=0;shift_1<='b00000;end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end else if(shift_1=='b0)begin b_score<=b_score+1;a<=0;b<=0;end else begin if(aj)

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第31頁

begin a<=1;b<=0;end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end end end shift<=shift_1;if(a_score=='b1011&&!rst)begin a_score<=a_score;b_score<=b_score;end if(b_score=='b1011&&!rst)begin a_score<=a_score;b_score<=b_score;end end always@(posedge clk1khz)begin case(a_score[3:0])'b0000:begin a_one<='b0000;a_ten<='b0000;end 'b0001:begin a_one<='b0001;a_ten<='b0000;end 'b0010:begin a_one<='b0010;a_ten<='b0000;end 'b0011:begin a_one<='b0011;a_ten<='b0000;end 'b0100:begin a_one<='b0100;a_ten<='b0000;end 'b0101:begin a_one<='b0101;a_ten<='b0000;end 'b0110:begin a_one<='b0110;a_ten<='b0000;end

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第32頁

'b0111:begin a_one<='b0111;a_ten<='b0000;end 'b1000:begin a_one<='b1000;a_ten<='b0000;end 'b1001:begin a_one<='b1001;a_ten<='b0000;end 'b1010:begin a_one<='b0000;a_ten<='b0001;end 'b0011:begin a_one<='b0001;a_ten<='b0001;end default:begin a_one<='bx;a_ten<='bx;end endcase

case(b_score[3:0])'b0000:begin b_one<='b0000;b_ten<='b0000;end 'b0001:begin b_one<='b0001;b_ten<='b0000;end 'b0010:begin b_one<='b0010;b_ten<='b0000;end 'b0011:begin b_one<='b0011;b_ten<='b0000;end 'b0100:begin b_one<='b0100;b_ten<='b0000;end 'b0101:begin b_one<='b0101;b_ten<='b0000;end 'b0110:begin b_one<='b0110;b_ten<='b0000;end 'b0111:begin b_one<='b0111;b_ten<='b0000;end 'b1000:begin b_one<='b1000;b_ten<='b0000;end 'b1001:begin b_one<='b1001;b_ten<='b0000;end 'b1010:begin b_one<='b0000;b_ten<='b0001;end 'b0011:begin b_one<='b0001;b_ten<='b0001;end default:begin b_one<='bx;b_ten<='bx;end

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第33頁

endcase

case(cnt[1:0])'b00:begin data<=b_one;scan<='b0001;end 'b01:begin data<=b_ten;scan<='b0010;end 'b10:begin data<=a_one;scan<='b0100;end 'b11:begin data<=a_ten;scan<='b1000;end default:begin data<='bx;scan<='bx;end endcase

case(data[3:0])'b0000: seg7[6:0]=7'b1111110;'b0001: seg7[6:0]=7'b0110000;'b0010: seg7[6:0]=7'b1101101;'b0011: seg7[6:0]=7'b1111001;'b0100: seg7[6:0]=7'b0110011;'b0101: seg7[6:0]=7'b1011011;'b0110: seg7[6:0]=7'b1011111;'b0111: seg7[6:0]=7'b1110000;'b1000: seg7[6:0]=7'b1111111;'b1001: seg7[6:0]=7'b1111011;

遼寧科技學院本科生畢業(yè)設(shè)計(論文)第34頁

default: seg7[6:0]='bx;endcase end

endmodule

第二篇:基于FPGA的交通燈控制器設(shè)計

數(shù)字系統(tǒng)課程設(shè)計

基于FPGA的交通控制燈設(shè)計

姓名:

學號:

班級:

摘要

隨著社會的發(fā)展,城市規(guī)模的不斷擴大,城市交通成為制約城市發(fā)展的一大因素。人口和汽車日益增長,市區(qū)交通也日益擁擠,人們的安全問題當然也日益重要。因此,紅綠交通信號燈成為交管部門管理交通的重要工具之一。有了交通燈,人們的安全出行也有了很大的保障。自從交通燈誕生以來,其內(nèi)部的電路控制系統(tǒng)就不斷的被改進,設(shè)計方法也開始多種多樣,從而使交通燈顯得更加智能化。尤其是近幾年來,隨著電子與計算機技術(shù)的飛速發(fā)展,電子電路分析和設(shè)計方法有了很大的改進,電子設(shè)計自動化也已經(jīng)成為現(xiàn)代電子系統(tǒng)中不可或缺的工具和手段,這些都為交通燈控制系統(tǒng)的設(shè)計提供了一定的技術(shù)基礎(chǔ)。本課程設(shè)計運用erilog HDL語言描述交通控制器,通過狀態(tài)機計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示,并最后進行了軟件實現(xiàn),達到了系統(tǒng)要求的功能。

設(shè)計原理

1.1設(shè)計要求

設(shè)計一個交通控制器,用LED顯示燈表示交通狀態(tài),并以7段數(shù)碼顯示器顯示當前狀態(tài)剩余秒數(shù) 主干道綠燈亮時,支干道紅燈亮;反之亦然,二者交替允許通行,主干道每次放行35s,支干道每次放行25s。每次由綠燈變?yōu)榧t燈的過程中,亮光的黃燈作為過渡,黃燈的時間為5s。能進行特殊狀態(tài)顯示,特殊狀態(tài)時東西、南北路口均顯示紅燈狀態(tài)。用LED燈顯示倒計時,并且能實現(xiàn)總體清零功能,計數(shù)器由初始狀態(tài)開始計數(shù),對應(yīng)狀態(tài)的顯示燈亮。能實現(xiàn)特殊狀態(tài)的功能顯示,1.2設(shè)計思路和原理

本次設(shè)計是針對十字路口,進行南北和東西直行情況下交通燈控制。設(shè)定東西方向為主干道方向,根據(jù)交通燈的亮的規(guī)則,在初始狀態(tài)下四個方向的都為紅燈亮啟,進入正常工作狀態(tài)后,當主干道上綠燈亮時,支干道上紅燈亮,持續(xù)35S后,主干道和支干道上的黃燈都亮啟,持續(xù)5S后,主干道上紅燈亮啟,支干道上綠燈亮啟持續(xù)25S,之后主干道和支干道上的黃燈都亮啟5s,一個循環(huán)完成。循環(huán)往復(fù)的直行這個過程。其過程如下圖所示:

0s主干道方向25s綠燈亮30s紅燈亮黃燈亮65s支干道方向0s紅燈亮35s綠燈亮黃燈亮60s65s

圖1.交通燈點亮時間控制說明

1.3實現(xiàn)方法

本次采用文本編輯法,即利用Verilog HDL語言描述交通控制器,通過狀態(tài)機計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示。設(shè)計中用兩組紅黃綠LED模擬兩個方向上的交通燈,用4個7段數(shù)碼管分別顯示兩個方向上的交通燈剩余時間,控制時鐘由試驗箱上頻率信號提供。

Verilog HDL程序設(shè)計

2.1整體設(shè)計

根據(jù)上章設(shè)計原理,交通燈控制的關(guān)鍵是各個狀態(tài)之間的轉(zhuǎn)換和進行適當?shù)臅r間延時,根據(jù)狀態(tài)機的設(shè)計規(guī)范,本次設(shè)計了三個狀態(tài)之間的循環(huán)轉(zhuǎn)化,其真值表及狀態(tài)轉(zhuǎn)化圖如下所示:

狀狀00狀狀00狀狀10狀狀11狀狀01狀狀01狀狀11狀狀10狀狀狀狀狀狀狀狀狀狀001狀狀狀狀狀010狀狀狀狀狀100狀狀狀狀狀010狀狀狀狀狀狀狀狀狀狀100狀狀狀狀狀010狀狀狀狀狀001狀狀狀狀狀010

圖2.交通燈控制狀態(tài)轉(zhuǎn)化

說明:該狀態(tài)圖為交通燈在正常情況下的狀態(tài)轉(zhuǎn)化圖,進入控制后,狀態(tài)00時主干道綠燈及支干道紅燈亮起,進入狀態(tài)01后兩路黃燈亮起,狀態(tài)11時主干道紅燈及支干道綠燈亮起。進入10狀態(tài)兩路黃燈亮起。結(jié)束一個循環(huán),從00狀態(tài)重新開始循環(huán)。

為實現(xiàn)控制與顯示的功能,需要設(shè)計交通燈點亮順序控制程序,倒數(shù)計時程序,七段數(shù)碼管顯示程序,數(shù)碼管顯示掃描程序,其系統(tǒng)結(jié)構(gòu)圖如下所示:

holdrst狀狀狀狀1Hz狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀clk1KHz狀狀狀狀狀狀狀1Hz狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀狀 圖3.交通燈控制系統(tǒng)結(jié)構(gòu)圖

其中rst為復(fù)位信號,clk為時鐘信號,hold為特殊情況控制信號,輸入hold時兩個方向紅燈無條件亮起。

2.2 具體設(shè)計

根據(jù)整體設(shè)計要求,編寫各個功能部分Verilog HDL程序,設(shè)置各輸入輸出變量說明如下 clk: 為計數(shù)時鐘; qclk:為掃描顯示時鐘;

en: 使能信號,為1 的話,則控制器開始工作; rst: 復(fù)位信號,為1的話,控制及技術(shù)回到初始狀態(tài);

hoid:特殊情況控制信號,為1的話,則兩個方向無條件顯示為紅燈;

light1: 控制主干道方向四盞燈的亮滅;其中,light1[0]~light[2],分別控制主干道方向的 綠燈、黃燈和紅燈;

light2: 控制支干道方向四盞燈的亮滅;其中,light2[0] ~ light2[2],分別控制支干道方向的 綠燈、黃燈和紅燈;

num1: 用于主干道方向燈的時間顯示,8 位,可驅(qū)動兩個數(shù)碼管; num2: 用于支干道方向燈的時間顯示,8 位,可驅(qū)動兩個數(shù)碼管; counter:用于數(shù)碼管的譯碼輸出; st1,st2:數(shù)碼管掃描信號。輸入輸出及中間變量設(shè)置如下:

module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;

1.二極管點亮控制

該部分程序的作用是根據(jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段數(shù)碼管的譯碼電路。此外,當檢測到特殊情況(hold=‘1’)發(fā)生時,無條件點亮紅燈的二極管,當檢測到復(fù)位信號,兩個方向計數(shù)與控制回復(fù)到00狀態(tài)。因為主、支干道兩個方向二極管點亮的順序與延遲時間不同,顧編寫兩個獨立的部分來控制,具體程序如下: 1)主干道方向 always @(posedge clk)begin

if(rst)//復(fù)位與特殊情況控制

begin light1<=3'b001;num1<=green1;end else if(hold)begin light1<=3'b100;num1<=green1;end else if(en)

begin //使能有效開始控制計數(shù)

if(!tim1)//

begin //主干道交通燈點亮控制

tim1<=1;

case(state1)

2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end

2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end

2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end

2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;end

default:light1<=3'b100;

endcase

end 2)支干道方向

always @(posedge clk)begin

if(rst)//復(fù)位與特殊情況控制

begin

light2<=3'b100;

num2<=red2;

end

else if(hold)

begin

light2<=3'b100;

num2<=red2;

end

else if(en)

begin

if(!tim2)

begin

tim2<=1;

case(state1)

2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end

2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end

2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end

2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;end

default:light2<=3'b100;

endcase

end

2.倒數(shù)計時

該部分程序完成二極管發(fā)光時延的計數(shù),并將計數(shù)結(jié)果送到數(shù)碼管顯示電路,每切換到一個狀態(tài),計數(shù)器的初值都被重置,以實現(xiàn)不同顏色二極管不同的時延要求。本次設(shè)計直接用邏輯運算完成2位十進制數(shù)的計數(shù),未采用分位器的設(shè)計。因為主、支干道上計數(shù)器的結(jié)構(gòu)完全相同,顧只列出一路的程序,其具體程序如下所示:

always @(posedge clk)begin else begin //倒數(shù)計時

if(num1>0)

if(num1[3:0]==0)

begin

num1[3:0]<=4'b1001;

num1[7:4]<=num1[7:4]-1;

end

else num1[3:0]<=num1[3:0]-1;

if(num1==1)tim1<=0;

end

end

else

begin

light1<=3'b010;

num1=2'b00;

tim1<=0;

end end

3.數(shù)碼管的譯碼及掃描顯示

該段程序主要完成4個7段數(shù)碼管的譯碼顯示及掃描,使系統(tǒng)能正常顯示主、支干道兩個方向上的剩余時間。譯碼的時鐘頻率要低,為Hz級。掃描的時鐘頻率要高,最低不得小于人眼分辨頻率50Hz,具體程序如下所示: always @(posedge qclk)begin //數(shù)碼管掃描

if(rst1)

begin

st1=0;

st2=0;

end else

begin

case({st2,st1})

2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01;end

2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10;end

2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11;end

2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00;end

endcase

end end always @(posedge qclk)begin //數(shù)碼管譯碼顯示 case(num)4'b0000: counter<=7'b0111111;//0 4'b0001: counter<=7'b0000110;//1 4'b0010: counter<=7'b1011011;//2 4'b0011: counter<=7'b1001111;//3 4'b0100: counter<=7'b1100110;//4 4'b0101: counter<=7'b1101101;//5 4'b0110: counter<=7'b1111101;//6 4'b0111: counter<=7'b0000111;//7 4'b1000: counter<=7'b1111111;//8 4'b1001: counter<=7'b1101111;//9 default: counter<=7'b0111111;//0 endcase end endmodule 總體程序見程序清單所示

仿真與硬件調(diào)試

3.1 波形仿真

在QuartursⅡ軟件下創(chuàng)建工程,新建編輯設(shè)計文件,將程序輸入,整體編譯后,新建波形仿真文件。設(shè)置仿真時間,時鐘周期,輸入輸出端口,進行波形仿真。具體仿真波形圖及說明如下所示: 仿真截止時間:100us; 時鐘:clk 1us,qclk 0.1us 1.正常工作時波形仿真圖

圖4.正常工作時波形仿真圖

圖形說明

波形仿真主要完成了控制與計數(shù)以及數(shù)碼管顯示的波形圖。en為低電品時,計數(shù)器置初值,高電平時開始正??刂婆c計數(shù)??刂瓢l(fā)光二極管首次輸出為“l(fā)ight1=001,light2=100”,表示主干道路綠燈亮,支桿道路紅燈亮,計數(shù)器num1和num2從“00110101”開始遞減計數(shù),計數(shù)至“00000000”時,進入下一個狀態(tài),控制輸出量為light=010,light2=010,表示主、支干道黃燈均亮起,計數(shù)器num1和num2從“00000101”開始計數(shù)遞減,計數(shù)至”00000000”時進入下一個狀態(tài),light=100,light2=001,表示主干道路紅燈亮,支桿道路綠燈亮。Counter根據(jù)num1,num2變化隨時鐘上升沿輸出譯碼后的數(shù)據(jù)。由于屏幕顯示大小有限,未仿真出一個完整周期。

2.特殊情況仿真波形

圖5.特殊情況仿真波形

圖形說明

當hold輸入高電平時,在時鐘上升沿的控制下,light 1與light2被強制置位為”100”,表示兩路紅燈均亮起

3.復(fù)位情況仿真波形

圖6.復(fù)位情況仿真波形

圖形說明

當rst輸入高電平時,在時鐘上升沿控制下,計數(shù)與控制都回到00狀態(tài),即light1=001,light2=100,計數(shù)器num1和num2從“00110101”開始遞減計數(shù)。3.2 硬件調(diào)試

完成時序仿真確認無誤后,進行實驗箱管腳設(shè)置,注意設(shè)置完成后一定要再進行一次全局仿真,使程序真正對應(yīng)于硬件輸出輸出。具體連接說明如下所示

輸入變量:rst、clk、qclk、hold、en 其中en,hold,rst接”0-1”撥碼開關(guān),以穩(wěn)定的輸出可變化的電平。計數(shù)時鐘clk接實驗箱上1Hz時鐘,掃描顯示時鐘qclk接125Khz時鐘。

輸出變量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2 其中l(wèi)ight1[0]、light2[0]分別接綠色的發(fā)光二極管;light1[1]、light2[1] 分別接黃色的發(fā)光二極管;light1[2]、light2[2]分別接紅色的發(fā)光二極管。counter[0]~counter[6],分別接七段數(shù)碼管的a~f,st1、st2分別接試驗箱上”4-16”譯碼器的低兩位。

完成接線后將程序燒寫到芯片上,開始功能調(diào)試。分辨改變使能信號,復(fù)位信號以及特殊情況信號,觀察數(shù)碼管以及發(fā)光二級管情況。

程序清單

module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;

always @(en)if(!en)begin //設(shè)置計數(shù)初值 green1<=8'b00110101;red1<=8'b00100101;yellow1<=8'b00000101;green2<=8'b00100101;red2<=8'b00110101;yellow2<=8'b00000101;end

always @(posedge clk)begin if(rst)//復(fù)位與特殊情況控制

begin

light1<=3'b001;num1<=green1;

end else if(hold)

begin

light1<=3'b100;

num1<=green1;

end

else if(en)

begin //使能有效開始控制計數(shù)

if(!tim1)//開始控制

begin //主干道交通燈點亮控制

tim1<=1;

case(state1)

2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end

2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end

2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end

2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;end

default:light1<=3'b100;

endcase

end

else

begin //倒數(shù)計時

if(num1>0)

if(num1[3:0]==0)

begin

num1[3:0]<=4'b1001;

num1[7:4]<=num1[7:4]-1;

end

else num1[3:0]<=num1[3:0]-1;

if(num1==1)tim1<=0;

end

end

else

begin

light1<=3'b010;

num1=2'b00;

tim1<=0;

end

end

always @(posedge clk)begin

if(rst)//復(fù)位與特殊情況控制

begin

light2<=3'b100;

num2<=red2;

end

else if(hold)

begin

light2<=3'b100;

num2<=red2;

end

else if(en)

begin

if(!tim2)

begin

tim2<=1;

case(state1)

2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end

2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end

2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end

2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;end

default:light2<=3'b100;

endcase

end

else

begin //倒數(shù)計時

if(num2>0)

if(num2[3:0]==0)

begin

num2[3:0]<=4'b1001;

num2[7:4]<=num2[7:4]-1;

end

else num2[3:0]<=num2[3:0]-1;

if(num2==1)tim2<=0;

end

end

else

begin

tim2<=0;

state2<=2'b00;

light2<=3'b010;

end

end

always @(posedge qclk)begin //數(shù)碼管掃描

if(rst1)

begin

st1=0;

st2=0;

end else

begin

case({st2,st1})

2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01;end

2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10;end

2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11;end

2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00;end

endcase

end end always @(posedge qclk)begin //數(shù)碼管譯碼顯示 case(num)4'b0000: counter<=7'b0111111;//0 4'b0001: counter<=7'b0000110;//1 4'b0010: counter<=7'b1011011;//2 4'b0011: counter<=7'b1001111;//3 4'b0100: counter<=7'b1100110;//4 4'b0101: counter<=7'b1101101;//5 4'b0110: counter<=7'b1111101;//6 4'b0111: counter<=7'b0000111;//7 4'b1000: counter<=7'b1111111;//8 4'b1001: counter<=7'b1101111;//9 default: counter<=7'b0111111;//0 endcase end endmodule

總結(jié)

在設(shè)計中采用V erilog HDL語言設(shè)計交通燈控制系統(tǒng), 借助其功能強大的語言結(jié)構(gòu), 簡明的代碼描述復(fù)雜控制邏輯設(shè)計, 與工藝無關(guān)特性, 在提高工作效率的同時達到求解目的, 并可以通過V erilog HDL 語言的綜合工具進行相應(yīng)硬件電路生成, 具有傳統(tǒng)邏輯設(shè)計方法所無法比擬的優(yōu)越性。

在設(shè)計過程中,覺得最難的部分是波形仿真部分,雖然程序編譯通過但仿真出不了正確的波形,不是計數(shù)器無法正常計數(shù),就是控制輸出無法進入到下一個狀態(tài),每次出現(xiàn)問題就必須返回重新修改程序。實踐證明,在編寫一個較復(fù)雜的程序時,一開始一定要畫流程圖,弄清楚各個功能及實現(xiàn)它們的邏輯算法,做到心中有數(shù)后在開始下筆寫編寫程序。在編寫的時候要尤其要注意語言的規(guī)范,如本次設(shè)計中編寫的V erilog在Quartus8.1中可以正常生成時序圖,而在低版本的軟件中卻無法生成,原因就是語言使用不規(guī)范,在解決這個問題時我總結(jié)了一些經(jīng)驗,首先程序要邏輯清晰,簡潔明了,避免不必要的嵌套與條用,其次要適當?shù)亟o程序加上注解文字,提高可讀性,以方便之后的程序出錯時進行查找,最后充分利用仿真軟件提供的各項編譯工具與報錯消息,按圖索驥,有方向的完成程序調(diào)試。

完成仿真后進行,進行試驗箱上的硬件調(diào)試,該步驟主要是要求細心,按照引腳清單,逐一完成連線,本次設(shè)計用到兩個時鐘輸入,注意一定要選擇合適頻率的時鐘,以便達到期望的效果。注意觀察實物的現(xiàn)象,看是否滿足設(shè)計要求,不滿足時檢查是硬件問題還是程序問題,如果是程序問題,在修改完之后必須要重新編譯,重新燒入。不斷排查錯誤,直至達到滿意的效果。

通過這次課程設(shè)計,熟悉了簡單EDA設(shè)計的整個流程,加深了對Verilog HDL硬件描述語言的理解,提高了動手能力,并且鍛煉了自己的耐心,收獲頗豐,我會把在本次課程設(shè)計中學到的東西應(yīng)用到今后的工作學習中。

參考資料

[1] 夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的V erilog HDL設(shè)計技術(shù) [M ].北京: 北京航空航天大學出版社, 1998 [2] 郭梯云.移動通信[M ].西安: 西安電子科技大學出版社, 1995 [3] [法]M ichelMouly, M arie Bernadet te Pautet1GSM 數(shù)字移動通信系統(tǒng)[M ].駱健霞, 顧龍信, 徐云霄譯.北京: 電子工業(yè)出版社, 1996 [4] 張毅剛, 喬立巖.虛擬儀器軟件開發(fā)環(huán)境L abW indow s?CV I 610 編程指南[M ].北京: 機械工業(yè)出版社, 2002 [5] 劉國權(quán).GSM 手機的測試[J ].中國無線電管理, 2003 [6] 俞定玖, 劉湘慧.GSM 數(shù)字蜂窩移動交換系統(tǒng)測試[J ].電信科學, 2000 [7] 張明.V erilog HDL 實用教程[M ].成都: 電子科技大學出版社, 1999 [8] Hyde D C.Bucknell Handbook on V erilog HDL 1Computer Science Department, Bucknell U niversity L ew is burg, 1995 [9] 康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M ].北京: 高等教育出版社, 1988

第三篇:基于FPGA的彩燈控制器設(shè)計

鄭州輕工業(yè)學院

可編程數(shù)字系統(tǒng)設(shè)計

題 目 學生姓名 專業(yè)班級 學 號 院(系)指導教師 完成時間

基于FPGA的彩燈控制器的設(shè)計 張煥煥 電子信息工程10-2班 電氣信息工程學院

基于FPGA的彩燈控制器設(shè)計

摘 要

隨著科技的發(fā)展 , 在現(xiàn)代生活中, 彩燈作為一種景觀應(yīng)用越來越多。而在電子電路設(shè)計領(lǐng)域中,電子設(shè)計自動化(EDA)工具已成為主要的設(shè)計手段,VHDL語言則是EDA的關(guān)鍵技術(shù)之一,它采用自頂向下的設(shè)計方法,即從系統(tǒng)總體要求出發(fā),自上至下地將設(shè)計任務(wù)分解為不同的功能模塊,最后將各功能模塊連接形成頂層模塊,完成系統(tǒng)硬件的整體設(shè)計。本文介紹了基于EDA技的多路彩燈控制器的設(shè)計與分析。在MAX+PLUSII環(huán)境下采用VHDL語言實現(xiàn),論述了基于VHDL語言和FPGA芯片的數(shù)字系統(tǒng)設(shè)計思想和實現(xiàn)過程。電子設(shè)計自動化技術(shù)EDA的發(fā)展給電子系統(tǒng)的設(shè)計帶來了革命性的變化,EDA軟件設(shè)計工具,硬件描述語言,可編程邏輯器件使得EDA技術(shù)的應(yīng)用走向普及。FPGA是新型的可編程邏輯器件,采用FPGA進行產(chǎn)品開發(fā)可以靈活地進行模塊配置,大大縮短了產(chǎn)品開發(fā)周期,也有利于產(chǎn)品向小型化,集成化的方向發(fā)展。

關(guān)鍵詞: VHDL 彩燈 仿真

1、概述

1.1、設(shè)計目的:

設(shè)計一個彩燈控制器,使彩燈(LED管)可以實現(xiàn)四種花樣循環(huán)變化及兩種不同頻率的閃爍,有復(fù)位開關(guān)。整個系統(tǒng)有七個輸入信號CLK,CLR,A,B,C,D,OPT,六個輸出信號控制六個彩燈。OPT的高低電平控制彩燈閃爍的快慢,A,B,C,D控制各種不同花樣彩燈的變換。此彩燈控制系統(tǒng)設(shè)定有四種花樣變化。四種花樣分別為:a.彩燈從左到右逐次亮起,再逐次從右到左熄滅;b.彩燈兩邊同時亮兩個,再逐次向中間亮;c.彩燈從左到右兩個兩個的亮,再從右到左兩個兩個逐次的亮;d.彩燈中間兩個亮,再同時向兩邊散開。

1.2、設(shè)計要求:

? 掌握FPGA 的程序設(shè)計方法。? 掌握硬件描述語言語法。

? 程序設(shè)計完成后要求在軟件中實現(xiàn)功能仿真。

2、系統(tǒng)設(shè)計

2.1、設(shè)計原理:

整個系統(tǒng)共有七個輸入信號:基準時鐘信號CLK,系統(tǒng)清零信號(復(fù)位信號)CLR,彩燈節(jié)奏快慢選擇開關(guān)OPT;共有4個輸出信號Q[3..0],分別用于控制四路彩燈。據(jù)此,我們可將整個彩燈控制器CDKZQ分為四大部分:彩燈花樣控制部分、分頻部分、定時部分和計數(shù)部分。當各個模塊均完成上述操作之后,形成最后的四路彩燈顯示系統(tǒng),并且進行仿真。仿真通過,即可下載到指定的FPGA芯片里面,并進行實際連線,進行最后的硬件測試。把分頻部分的不同頻率的時鐘信號CP輸送到計數(shù)部分 ,從而控制彩燈閃爍速度的快慢 ,定時部分控制每種速度維持的時間長短。

圖表 1 2.

2、設(shè)計方案:

在電路中以 1 代表燈亮,以 0 代表燈滅,由 0、1按不同的規(guī)律組合代表不同的燈光圖案,同時使其選擇不同的頻率,從而實現(xiàn)多種圖案多種頻率的花樣功能顯示。在該電路中只需簡單的修改程序就可以靈活地調(diào)整彩燈圖案和變化方式。下面就以一個四路彩燈控制系統(tǒng)的實現(xiàn)為例進行簡單說明。此四路彩燈控制系統(tǒng)設(shè)定有四種花樣變化。彩燈圖案狀態(tài)變換的速度有快、慢兩種。

3、程序仿真過程

start compilation先編譯

generate functional simulation netlist然后生成功能仿真網(wǎng)絡(luò)表 assignments–setting—simulation setting設(shè)置成功能仿真 然后新建一個vector waveform file 通過view—utility windows--node finder 把輸入輸出管腳添加進波形仿真圖里 點擊start simulation 得到仿真圖WAVEFORM1:

由圖可見:正常情況下 燈按照花樣abcd的順序循環(huán)d在80NS---120NS的高電平使得花樣變?yōu)镈花樣,D高電平結(jié)束,燈順序進行A花樣。

OPT 在80NS---170NS高電平使得燈變換速度提高2倍 但是001100和100000這兩種燈的狀態(tài)任然占用了兩個時鐘周期,這是因為花樣d和花樣a狀態(tài)轉(zhuǎn)換之間沒有立即銜接,導致220NS處CLR高電平使得燈全部清0,不再變化DIV2是二分頻輸出,由圖可見是輸入時鐘CLK的二分頻

4、實驗結(jié)果分析

實驗表明 ,此設(shè)計方法能夠滿足多種不同花樣彩燈的變化要求 ,并且該方法便于擴展不同變化模式的彩燈花樣,同時又實現(xiàn)了彩燈的兩種不同頻率的閃爍。如果不按任何按鍵時候,燈就按四種花樣順序循環(huán)跑,如果按下某個鍵再松開,比如按下C鍵然后松開,那么不管之前燈跑到哪個花樣,按鍵后燈就會從C代表的花樣處開始跑,然后是D花樣,然后是A花樣,依次循環(huán)。但是A,B,C,D認為是按下會彈起的按鍵,因為這個程序里,如果一直按著按鍵不松手,會導致燈只是反復(fù)跑一個花樣。比如按著B鍵不松手,那么就會反復(fù)跑B花樣。還有不能允許同時按下兩個鍵,三個鍵,4個鍵,也就是說,同一時刻ABCD只能有一個是高電平,否則會出錯,因為這個程序并沒有防錯機制。

5、心得體會

本次設(shè)計的課題是彩燈控制器的設(shè)計,當拿到這個課題的時候經(jīng)過分析就知道關(guān)鍵是計數(shù)器和分頻器的使用,分頻的方法有很多種,對于同一種功能的實現(xiàn),用VHDL可以采用多種方式進行描述,每種方式之間各有優(yōu)劣,本次設(shè)計只采用了其中較簡單的一種,應(yīng)盡量用最簡潔的語言寫出所需功能的程序。

通過這次課程設(shè)計對EDA技術(shù)有了更進一步的熟悉,VHDL 語言和C語言等其他語言還是有很大的區(qū)別。VHDL是EDA技術(shù)的重要組成部分,其具有與具體硬件電路無關(guān)和與設(shè)計平臺無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計方面,表現(xiàn)了強大的生命力和應(yīng)用潛力。其主要的也是最大的優(yōu)點就在于設(shè)計者可以專心致力于其功能的實現(xiàn),而不需要對不影響功能的與工藝有關(guān)的因素花費過多的時間和精力。在實際操作中發(fā)現(xiàn)設(shè)計和課本上的知識有很大聯(lián)系,但又高于課本,一個簡單的原理要把它應(yīng)用以及和其他功能綜合起來就有些困難。通過設(shè)計也鞏固了我們的書本知識以及通過借閱書籍和上網(wǎng)查找資料,也豐富了自己對EDA的了解。

6、致謝

7、參考文獻

[1] 周潤景.基于QuartusⅡ的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例[M].電子工業(yè)出版社.2007,8

[2] 潘松 黃繼業(yè).EDA技術(shù)實用教程(第二版).北京:科學出版社,2006.9 [3] 林明權(quán) 馬維旻 VHDL數(shù)字控制系統(tǒng)設(shè)計范例.電子工業(yè)出版社2003,1 [4] 褚振勇.FPGA設(shè)計及應(yīng)用(第三版)[M].西安電子科技大學出版社.2012,4

8、附錄

彩燈控制器的源程序

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity horseracelamp is port(clk:in std_logic;clr:in std_logic;a:in std_logic;b:in std_logic;c:in std_logic;d:in std_logic;opt:in std_logic;q:out std_logic_vector(5 downto 0);div2:out std_logic);end;architecture one of horseracelamp is

type states is(s0,s1,s2,s3);

signal present:states;

signal q1:std_logic_vector(5 downto 0);

signal count:std_logic_vector(3 downto 0);

signal halfclk:std_logic_vector(1 downto 0);

signal clkin:std_logic_vector(1 downto 0);begin

process(clk)--------------------該進程實現(xiàn)二分頻 begin if clk'event and clk='1' then

halfclk<=halfclk+1;end if;end process;

process(opt)---------------------該進程實現(xiàn)OPT高時候用原來的時鐘,OPT低的時候用二分頻后的時鐘,信號CLKIN(0)會傳遞到下一個進程里

begin

if opt='0' then

clkin(0)<=halfclk(0);

else

clkin(0)<=clk;

end if;

end process;

process(clk,clr,a,b,c,d)

------------S1,S2,S3,S4分別對應(yīng)

A,B,C,D四種花樣,它們之間會自動按順序循環(huán),也

會因為A,B,C,D中某個置高而改變循環(huán)順序,所以用了大量的IF ELSIF語句

begin if clr='1' then

present<=s0;

q1<=(others=>'0');elsif clkin(0)'event and clkin(0)='1' then

case present is

when s0=>if q1=“000000”then

q1<=“100000”;else

if count=“1100” then

count<=(others=>'0');q1<=“100001”;present<=s1;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif c='1'then

count<=(others=>'0');

q1<=“110000”;

present<=s2;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is when “0000”=>q1<=“100000”;when “0001”=>q1<=“110000”;when “0010”=>q1<=“111000”;when “0011”=>q1<=“111100”;when “0100”=>q1<=“111110”;when “0101”=>q1<=“111111”;when “0110”=>q1<=“111110”;when “0111”=>q1<=“111100”;when “1000”=>q1<=“111000”;when “1001”=>q1<=“110000”;when “1010”=>q1<=“100000”;when “1011”=>q1<=“000000”;when others=>null;end case;

count<=count+1;present<=s0;

end if;end if;

when s1=>if count=“0011” then

count<=(others=>'0');q1<=“110000”;present<=s2;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif c='1'then

count<=(others=>'0');

q1<=“110000”;

present<=s2;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is when “0000”=>q1<=“100001”;when “0001”=>q1<=“110011”;when “0010”=>q1<=“111111”;when others=>null;end case;

count<=count+1;present<=s1;

end if;

when s2=>if count=“0110” then

count<=(others=>'0');q1<=“001100”;present<=s3;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif d='1'then count<=(others=>'0');

q1<=“001100”;

present<=s3;

else

case count is

when “0000”=>q1<=“110000”;when “0001”=>q1<=“111100”;when “0010”=>q1<=“111111”;when “0011”=>q1<=“000011”;when “0100”=>q1<=“001100”;when “0101”=>q1<=“110000”;when others=>null;end case;

count<=count+1;present<=s2;

end if;

when s3=>if count=“0011” then

count<=(others=>'0');q1<=“100000”;present<=s0;elsif a='1'then

count<=(others=>'0');

q1<=“100000”;

present<=s0;

elsif b='1'then

count<=(others=>'0');

q1<=“100001”;

present<=s1;

elsif c='1'then count<=(others=>'0');

q1<=“110000”;

present<=s2;

else

case count is when “0000”=>q1<=“001100”;when “0001”=>q1<=“010010”;when “0010”=>q1<=“100001”;when others=>null;end case;

count<=count+1;present<=s3;

end if;

end case;

end if;

end process;

div2<=halfclk(0);

q<=q1;

end;

第四篇:基于FPGA模數(shù)轉(zhuǎn)換控制器的設(shè)計

EDA課程設(shè)計任務(wù)書

1、設(shè)計題目:基于FPGA模數(shù)轉(zhuǎn)換控制器的設(shè)計

2、設(shè)計目的:

(1)熟悉掌握VHDL語言設(shè)計基本知識,熟練運用QuartusⅡ軟件對各單元電路進行軟件模擬、仿真;

(2)學習用狀態(tài)機對A/D轉(zhuǎn)換器ADC0809的采樣控制電路的實現(xiàn),使設(shè)計能夠?qū)崿F(xiàn)8路數(shù)據(jù)的采集;

(3)通過本次課程設(shè)計的學習,復(fù)習所學的專業(yè)知識,使課堂學習的理論知識應(yīng)用于實踐,通過本次課程設(shè)計的實踐提高我們的實踐操作能力、提高分析問題和解決問題的能力。

3、設(shè)計要求:

(1)給出模數(shù)轉(zhuǎn)換采樣控制電路的方案設(shè)計,利用QuartusⅡ軟件進行軟件模擬、仿真;要求能夠?qū)崿F(xiàn)8路數(shù)據(jù)的采集。分析A/D轉(zhuǎn)換原理及時序、建立項目的實施方案,并畫出控制狀態(tài)圖;

(2)認真完成設(shè)計后,提交課程設(shè)計報告:給出控制器的方案設(shè)計,包括綜合設(shè)計概況、主要技術(shù)指標、相應(yīng)模塊的實現(xiàn)方法;模塊的電路原理圖;所采用的器件資料,等等。報告格式參照中原工學院畢業(yè)設(shè)計指導手冊。

4、設(shè)計內(nèi)容:利用QuartusⅡ軟件對本次設(shè)計(模數(shù)轉(zhuǎn)換采樣控制電路)進行文本編輯輸入和仿真測試;給出仿真波形;最后進行引腳鎖定并進行測試,硬件驗證編程電路對ADC0809的控制功能。

中原工學院畢業(yè)設(shè)計報告紙

目錄

一、概述………………………………………………………(4)

二、設(shè)計內(nèi)容…………………………………………………(5)

? ? ? ?

? ? ? ? ? 2.2

設(shè)計流程

2.2.1 建立工程文件夾和編輯設(shè)計文件 2.2.2 編譯前設(shè)置 2.2.3 全程編譯 2.2.4 時序仿真 2.1

設(shè)計原理

2.1.1 ADC0809引腳圖及功能介紹

2.1.2 用狀態(tài)機對ADC0809的采樣控制電路的實現(xiàn) 2.1.3 對ADC0809的控制功能的電路描述的程序

三、心得體會…………………………………………………(12)

中原工學院畢業(yè)設(shè)計報告紙

一.概述

隨著現(xiàn)代芯片工藝的改進,F(xiàn)PGA的等效系統(tǒng)門達到到幾百萬門,而且工作頻率也隨之提高。FPGA也就大量的在電子產(chǎn)品中出現(xiàn),得到了廣泛的應(yīng)用。芯片設(shè)計的工藝的改進,45nm工藝的出現(xiàn),使得FPGA成為必不可少的流行的實惠的器件。FPGA 最大的特點就是靈活,實現(xiàn)你想實現(xiàn)的任何數(shù)字電路,可以定制各種電路。減少受制于專用芯片的束縛。真正為自己的產(chǎn)品量身定做。在設(shè)計的過程中可以靈活的更改設(shè)計。而且它強大的邏輯資源和寄存器資源可以讓你輕松的去發(fā)揮設(shè)計理念,其并行執(zhí)行,硬件實現(xiàn)的方式可以應(yīng)對設(shè)計中大量的高速電子線路設(shè)計需求。FPGA比DSP擁有更快的速度,可以實現(xiàn)非常復(fù)雜的高速邏輯,F(xiàn)PGA比ASIC(專用芯片)有更短的設(shè)計周期和靈活性,免去昂貴的開版費用,而且可以隨時裁減,增加你想要的功能達到規(guī)避設(shè)計風險,回避芯片廠商的限制。另外知識產(chǎn)權(quán)的概念不斷涌現(xiàn),仿制別人抄襲,F(xiàn)PGA完全讓設(shè)計的智慧得以保護。讓公司的利益在較長時間內(nèi)得到保證。隨FPGA芯片供應(yīng)商的重視和第三方公司的重視,現(xiàn)在有非常現(xiàn)成的IP核被提供,進一步縮短設(shè)計周期縮短,減小開發(fā)成本。

FPGA具有可編程邏輯器件現(xiàn)場可編程的靈活性,又具有門陳列器件功能強、高集成度和高速度的優(yōu)點,因此在要求功能越來越強,體積越來越小,功耗越來越低的現(xiàn)代通信系統(tǒng)設(shè)計中被越來越廣泛的應(yīng)用。隨著超大規(guī)模集成電路的發(fā)展,尤其是微電子技術(shù)和計算機技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,數(shù)字化成為目前通信技術(shù)發(fā)展的趨勢,它具有可靠性高,靈活性強,易大規(guī)模集成等優(yōu)點,日益受到重視。目前,數(shù)字化的手段主要有專用集成電路(ASIC)和通用數(shù)字信號處理器(DSP)。專用集成電路優(yōu)點是處理速度快,缺點是靈活性差。DSP能完成十分復(fù)雜的算法,使用靈活,易實現(xiàn)模塊化,缺點是受處理器速度的限制。FPGA提供了實現(xiàn)數(shù)字信號處理的第三種解決方案,它結(jié)合了ASIC和DSP兩種方式的優(yōu)勢,既具有很高的處理速度,又具有一定的靈活性。大規(guī)??删幊踢壿嬈骷﨔PGA因其成本低,靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)等優(yōu)點,已成為目前應(yīng)用最為廣泛的可編程專用集成電路。

Quartus II 是Altera的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學易用等特點。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可

中原工學院畢業(yè)設(shè)計報告紙

以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具.此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。Maxplus II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。

本次設(shè)計以FPGA芯片ADC0809為核心利用VHDL語言設(shè)計來實現(xiàn)模數(shù)轉(zhuǎn)換采樣控制電路。其頂層采用原理圖設(shè)計方式,各模塊采用VHDL語言設(shè)計,完成了對模數(shù)轉(zhuǎn)換采樣控制電路的軟件仿真和硬件電路設(shè)計。FPGA設(shè)計人體分為系統(tǒng)規(guī)范、設(shè)計輸入、綜合、功能仿真(前仿真)、實現(xiàn)、時序仿真(后仿真)、配置下載等六個步驟整個系統(tǒng)是在QuartusⅡ環(huán)境下,利用VHDL語言實現(xiàn)的,在Ⅱ環(huán)境下經(jīng)系統(tǒng)仿真實現(xiàn)模數(shù)轉(zhuǎn)換采樣控制系統(tǒng)。

二.設(shè)計內(nèi)容

2.1 設(shè)計原理

2.1.1 ADC0809引腳圖及功能介紹

ADC0809是CMOS的8位A/D轉(zhuǎn)換器,片內(nèi)有8路模擬開關(guān),可控制8個模擬量中的一個進入轉(zhuǎn)換器中。轉(zhuǎn)換時間約100μs,含鎖存控制的8路多路開關(guān),輸出有三態(tài)緩沖器控制,單5V電源供電。

中原工學院畢業(yè)設(shè)計報告紙

圖1 ADC0809的引腳圖

圖2 ADC0809工作時序圖

上圖1和圖2分別是ADC0809的引腳圖、A/D轉(zhuǎn)換時序,下圖3為其采樣控制狀態(tài)圖。時序圖中,START為轉(zhuǎn)換啟動控制信號,上升沿有效;一旦START有效后,狀態(tài)信號EOC即變?yōu)榈碗娖?,表示進入轉(zhuǎn)換狀態(tài),轉(zhuǎn)換時間約100微秒。轉(zhuǎn)換結(jié)束后,EOC將變?yōu)楦唠娖?。此后外部控制可以使OE由低電平變?yōu)楦唠娖剑ㄝ敵鲇行В?,此時,0809的輸出數(shù)據(jù)總線D[7..0]從原來的高阻態(tài)變?yōu)檩敵鰯?shù)據(jù)有效。由狀態(tài)圖也可以看到,在狀態(tài)st2中需要對0809工作狀態(tài)信號EOC進行測試,如果為低電平,表示轉(zhuǎn)換沒有結(jié)束,仍需要停留在st2狀態(tài)中等待,直到變成高電平后才說明轉(zhuǎn)換結(jié)束,在下一時鐘脈沖到來時轉(zhuǎn)向狀態(tài)st3.在狀態(tài)st3,由狀態(tài)機向0809發(fā)出轉(zhuǎn)換好的8位數(shù)據(jù)輸出允許命令,這一狀態(tài)周期同時可作為數(shù)據(jù)輸出穩(wěn)定周期,以便能在下一狀態(tài)中向鎖存器中鎖入可靠的數(shù)據(jù)。在狀態(tài)st4,由狀態(tài)機向FPGA中的鎖存器發(fā)出鎖存信號(LOCK的上升沿),將0809輸出的數(shù)據(jù)進行鎖存。

中原工學院畢業(yè)設(shè)計報告紙

圖3 控制ADC0809采樣狀態(tài)圖

2.1.2用狀態(tài)機對ADC0809的采樣控制電路的實現(xiàn)

Quartus II 是Altera的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。利用QuartusⅡ?qū)﹄娐愤M行文本編輯輸入和仿真測試;給出仿真波形。最后進行引腳鎖定并進行測試,硬件驗證電路對ADC0809的控制功能。本次設(shè)計描述的狀態(tài)機屬于Moore機,由二個主控進程構(gòu)成,外加一個輔助進程,即鎖存器進程LATCH1,各進程分工明確。狀態(tài)及結(jié)構(gòu)框圖1如下所示:

中原工學院畢業(yè)設(shè)計報告紙

圖4

采樣狀態(tài)機結(jié)構(gòu)框圖

在一個完整的采樣周期中,狀態(tài)機中最先被啟動的是以CLK為敏感信號的時序進程,接著組合進程COM被啟動,因為他們以信號current_state為敏感信號。最后被啟動的是鎖存器進程,它是在狀態(tài)機進入狀態(tài)st4后才被啟動的,即此時LOCK產(chǎn)生了一個上升沿信號,從而啟動進程LATCH1,將0809在本采樣周期輸出的8位數(shù)據(jù)鎖存到寄存器中,以便外部電路能從Q端讀到穩(wěn)定正確的數(shù)據(jù)。

2.1.3 對ADC0809的控制功能的電路描述程序如下:

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK : IN STD_LOGIC;

EOC : IN STD_LOGIC;

ALE : OUT STD_LOGIC;

START : OUT STD_LOGIC;

OE : OUT STD_LOGIC;

ADDA : OUT STD_LOGIC;

中原工學院畢業(yè)設(shè)計報告紙

LOCK0 : OUT STD_LOGIC;

Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ADCINT;ARCHITECTURE behav OF ADCINT IS TYPE states IS(st0, st1, st2, st3,st4);

SIGNAL current_state, next_state: states :=st0;

SIGNAL REGL

: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL LOCK

: STD_LOGIC;

BEGIN ADDA <= '1';

Q <= REGL;LOCK0 <= LOCK;

COM: PROCESS(current_state,EOC)BEGIN

CASE current_state IS

WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0';

next_state <= st1;

-WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0';next_state <= st2;--啟動采樣

WHEN st2=> ALE<='0';START<='0';LOCK<='0';OE<='0';

IF(EOC='1')THEN next_state <= st3;

ELSE next_state <= st2;END IF;

WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1';next_state <= st4;

WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1';next_state <= st0;

WHEN OTHERS => next_state <= st0;

END CASE;END PROCESS COM;

REG: PROCESS(CLK)

BEGIN

IF(CLK'EVENT AND CLK='1')THEN current_state<=next_state;END IF;

END PROCESS REG;

LATCH1: PROCESS(LOCK)

BEGIN

IF LOCK='1' AND LOCK'EVENT THEN

REGL <= D;END IF;

END PROCESS LATCH1;

END behav;

中原工學院畢業(yè)設(shè)計報告紙

2.2 設(shè)計流程

2.2.1 建立工程文件夾和編輯設(shè)計文件

(1)新建文件夾ADCINT(2)輸入源程序。打開QuartusⅡ,選擇File→New,在New窗口中的Device Design Files中選擇編譯文件的語言類型為VHDL File,輸入2.1.3中的程序。

(3)文件存盤。File→Save As命令,注意存盤文件名應(yīng)與實體名一致。當出現(xiàn)下圖5時,就直接單擊“是”按鈕,則直接創(chuàng)建工程。

2.2.2 2.2.3 編譯前設(shè)置 全程編譯

選擇Processing菜單的Start Compilation項,啟動全程編譯。

中原工學院畢業(yè)設(shè)計報告紙

2.2.4 時序仿真

(1)打開波形編譯器。

中原工學院畢業(yè)設(shè)計報告紙

(2)設(shè)計仿真時間區(qū)域。(3)波形文件存盤。

(4)將工程ADCINT的端口名選入波形編輯器中。選擇View菜單中的Utility Windows項的Node Finder選項。

中原工學院畢業(yè)設(shè)計報告紙

(5)編輯輸入波形(輸入激勵信號)。(6)總線數(shù)據(jù)格式設(shè)計,仿真參數(shù)設(shè)計。(7)啟動仿真器,觀察仿真結(jié)果如下:

中原工學院畢業(yè)設(shè)計報告紙

三.心得體會

第五篇:基于FPGA的彩燈控制器設(shè)計

《EDA原理及應(yīng)用》 課程設(shè)計報告

課題名稱: 基于數(shù)碼管顯示的彩燈控制器 院 系: 機電工程學院

專 業(yè): 電子信息工程

學生姓名: 陳納爽 學生學號: 201033285123

彩燈及數(shù)碼管顯示控制

摘 要

隨著科技的發(fā)展 , 在現(xiàn)代生活中, 彩燈作為一種景觀應(yīng)用越來越多。而在電子電路設(shè)計領(lǐng)域中,電子設(shè)計自動化(EDA)工具已成為主要的設(shè)計手段,VHDL語言則是EDA的關(guān)鍵技術(shù)之一,它采用自頂向下的設(shè)計方法,即從系統(tǒng)總體要求出發(fā),自上至下地將設(shè)計任務(wù)分解為不同的功能模塊,最后將各功能模塊連接形成頂層模塊,完成系統(tǒng)硬件的整體設(shè)計。本文介紹了基于EDA技的多路彩燈控制器的設(shè)計與分析。在MAX+PLUSII環(huán)境下采用VHDL語言實現(xiàn),論述了基于VHDL語言和FPGA芯片的數(shù)字系統(tǒng)設(shè)計思想和實現(xiàn)過程。電子設(shè)計自動化技術(shù)EDA的發(fā)展給電子系統(tǒng)的設(shè)計帶來了革命性的變化,EDA軟件設(shè)計工具,硬件描述語言,可編程邏輯器件使得EDA技術(shù)的應(yīng)用走向普及。FPGA是新型的可編程邏輯器件,采用FPGA進行產(chǎn)品開發(fā)可以靈活地進行模塊配置,大大縮短了產(chǎn)品開發(fā)周期,也有利于產(chǎn)品向小型化,集成化的方向發(fā)展。

關(guān)鍵詞: VHDL 彩燈 仿真

1、概述

1.1、設(shè)計目的:

設(shè)計一個彩燈控制器,使彩燈(LED管)可以實現(xiàn)彩燈逐漸增多及兩種不同頻率的閃爍,有復(fù)位開關(guān)。整個系統(tǒng)有四個輸入信號clk,option,fan,clr,三個輸出信號控制倆個八路彩燈及數(shù)碼管顯示。option的高低電平控制彩燈閃爍的快慢,fan的高低電平控制彩燈的逐漸增多減少。

1.2、設(shè)計要求:

? 掌握FPGA 的程序設(shè)計方法。? 掌握硬件描述語言語法。

? 程序設(shè)計完成后要求在軟件中實現(xiàn)功能仿真。

2、系統(tǒng)設(shè)計

2.1、設(shè)計原理:

整個系統(tǒng)共有四個輸入信號:基準時鐘信號clk,系統(tǒng)清零信號(復(fù)位信號)clr,彩燈節(jié)奏快慢選擇開關(guān)option;共有3個輸出信號ledout[7..0],shuguan[6..0],doubleled[7..0],分別用于控制彩燈及數(shù)碼管的顯示。據(jù)此,我們可將整個彩燈控制器CDKZQ分為四大部分:彩燈花樣控制部分、分頻部分、定時部分和計數(shù)部分。當各個模塊均完成上述操作之后,形成最后的彩燈顯示系統(tǒng),并且進行仿真。仿真通過,即可下載到指定的FPGA芯片里面,并進行實際連線,進行最后的硬件測試。把分頻部分的不同頻率的時鐘信號CP輸送到計數(shù)部分 ,從而控制彩燈閃爍速度的快慢 ,定時部分控制每種速度維持的時間長短。

原理圖

模塊原理圖

管腳圖

2.2、設(shè)計方案:

在電路中以 1 代表燈亮,以 0 代表燈滅,由 0、1按不同的規(guī)律組合代表不同的燈光圖案,同時使其選擇不同的頻率,從而實現(xiàn)多種圖案多種頻率的花樣功能顯示。在該電路中只需簡單的修改程序就可以靈活地調(diào)整彩燈圖案和變化方式。下面就以一個彩燈控制系統(tǒng)的實現(xiàn)為例進行簡單說明。此彩燈控制系統(tǒng)設(shè)定有兩種花樣變化。彩燈圖案狀態(tài)變換的速度有快、慢兩種。

3、程序仿真圖

start compilation先編譯

generate functional simulation netlist然后生成功能仿真網(wǎng)絡(luò)表 assignments–setting—simulation setting設(shè)置成功能仿真 然后新建一個vector waveform file 通過view—utility windows--node finder 把輸入輸出管腳添加進波形仿真圖里 點擊start simulation 得到仿真圖WAVEFORM1:

4、實驗結(jié)果分析

實驗表明 ,此設(shè)計方法能夠滿足多種不同花樣彩燈的變化要求 ,并且該方法便于擴展不同變化模式的彩燈花樣,同時又實現(xiàn)了彩燈的兩種不同頻率的閃爍。如果不按任何按鍵時候,燈就按四種花樣順序循環(huán)跑,如果按下某個鍵再松開,比如按下C鍵然后松開,那么不管之前燈跑到哪個花樣,按鍵后燈就會從C代表的花樣處開始跑,然后是D花樣,然后是A花樣,依次循環(huán)。但是A,B,C,D認為是按下會彈起的按鍵,因為這個程序里,如果一直按著按鍵不松手,會導致燈只是反復(fù)跑一個花樣。比如按著B鍵不松手,那么就會反復(fù)跑B花樣。還有不能允許同時按下兩個鍵,三個鍵,4個鍵,也就是說,同一時刻ABCD只能有一個是高電平,否則會出錯,因為這個程序并沒有防錯機制。

5、心得體會

本次設(shè)計的課題是彩燈控制器的設(shè)計,當拿到這個課題的時候經(jīng)過分析就知道關(guān)鍵是計數(shù)器和分頻器的使用,分頻的方法有很多種,對于同一種功能的實現(xiàn),用VHDL可以采用多種方式進行描述,每種方式之間各有優(yōu)劣,本次設(shè)計只采用了其中較簡單的一種,應(yīng)盡量用最簡潔的語言寫出所需功能的程序。

通過這次課程設(shè)計對EDA技術(shù)有了更進一步的熟悉,VHDL 語言和C語言等其他語言還是有很大的區(qū)別。VHDL是EDA技術(shù)的重要組成部分,其具有與具體硬件電路無關(guān)和與設(shè)計平臺無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計方面,表現(xiàn)了強大的生命力和應(yīng)用潛力。其主要的也是最大的優(yōu)點就在于設(shè)計者可以專心致力于其功能的實現(xiàn),而不需要對不影響功能的與工藝有關(guān)的因素花費過多的時間和精力。在實際操作中發(fā)現(xiàn)設(shè)計和課本上的知識有很大聯(lián)系,但又高于課本,一個簡單的原理要把它應(yīng)用以及和其他功能綜合起來就有些困難。通過設(shè)計也鞏固了我們的書本知識以及通過借閱書籍和上網(wǎng)查找資料,也豐富了自己對EDA的了解。

6、致謝

7、參考文獻

[1] 周潤景.基于QuartusⅡ的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例[M].電子工業(yè)出版社.2007,8

[2] 潘松 黃繼業(yè).EDA技術(shù)實用教程(第二版).北京:科學出版社,2006.9 [3] 林明權(quán) 馬維旻 VHDL數(shù)字控制系統(tǒng)設(shè)計范例.電子工業(yè)出版社2003,1 [4] 褚振勇.FPGA設(shè)計及應(yīng)用(第三版)[M].西安電子科技大學出版社.2012,4

8、附錄

彩燈顯示控制器的源程序

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncomment the following library declaration if instantiating----any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;

entity colorled is

Port(clk : in STD_LOGIC;

clr : in STD_LOGIC;

option : in STD_LOGIC;

fan:in std_logic;

ledout:out STD_LOGIC_VECTOR(7 downto 0);

shuma:out std_logic_vector(6 downto 0);

doubleled:out std_logic_vector(7 downto 0));end colorled;architecture rtl of colorled is component timer is port(clk : in std_logic;

clr : in std_logic;

option : in std_logic;fan:in std_logic;fanout:out std_logic;clkout : out std_logic);end component timer;component shower is port(clk : in std_logic;

clr : in std_logic;

fanin:in std_logic;ledout:out std_logic_vector(7 downto 0);shuma:out std_logic_vector(6 downto 0);

doubleled:out std_logic_vector(7 downto 0));end component shower;signal clk_tmp:std_logic;signal fan_tmp:std_logic;begin U1:timer port map(clk,clr,option,fan,fan_tmp,clk_tmp);U2:shower port map(clk_tmp,clr,fan_tmp,ledout,shuma,doubleled);end rtl;以上為頂層文件代碼

以下為分頻計數(shù)模塊及彩燈顯示控制模塊的代碼 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;----Uncomment the following library declaration if instantiating----any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity timer is

Port(clk : in STD_LOGIC;--時鐘

clr : in STD_LOGIC;--復(fù)位

fan:in std_logic;

fanout:out std_logic;

option : in STD_LOGIC;--快慢分頻

clkout : out STD_LOGIC);--輸出時鐘 end timer;architecture rtl of timer is signal clk_tmp:std_logic;signal fan_tmp:std_logic;--signal counter:std_logic_vector(1 downto 0);--計數(shù)器 signal counter:integer range 0 to 16000000;begin process(clk,clr,option)begin

if clr='1' then

clk_tmp<='0';

counter<=0;elsif clk'event and clk='1' then

if option='0' then--四分頻

if counter=16000000 then

counter<=0;clk_tmp<=not clk_tmp;else

counter<=counter+1;

end if;

else--八分頻

if counter=8000000 then

counter<=0;clk_tmp<=not clk_tmp;else

counter<=counter+1;end if;

end if;end if;end process;--begin--

if clr='1' then--

clk_tmp<='0';--

counter<=“00”;--elsif clk'event and clk='1' then--

if option='0' then--四分頻----------

if counter=“01” then

counter<=“00”;clk_tmp<=not clk_tmp;else

counter<=counter+'1';------------------

end if;

else--八分頻

if counter=“11” then

counter<=“00”;clk_tmp<=not clk_tmp;else

counter<=counter+'1';end if;

end if;--end if;--end process;clkout<=clk_tmp;--輸出分頻時鐘 fan_tmp<=fan;fanout<=fan_tmp;end rtl;

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;----Uncomment the following library declaration if instantiating----any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;

entity shower is

Port(clk : in STD_LOGIC;

clr : in STD_LOGIC;

fanin:in std_logic;

ledout:out STD_LOGIC_VECTOR(7 downto 0);出

doubleled:out std_logic_vector(7 downto 0));

shuma:out std_logic_vector(6 downto 0);--8位彩燈輸end shower;

architecture rtl of shower is type states is

(s0,s1,s2,s3,s4,s5,s6,s7);--Moore狀態(tài) signal state:states;begin process(clk,clr,fanin)begin

if clr='1' then

state<=s0;

ledout<=“00000000”;

doubleled<=“00000000”;

shuma<=“0000000”;

elsif clk'event and clk='1' then

case state is

when s0=>

if fanin='1' then

state<=s7;

ledout<=“11111110”;

doubleled<=“11111110”;

shuma<=“1111001”;

else

state<=s1;

ledout<=“00000000”;

doubleled<=“00000000”;

shuma<=“0000000”;end if;when s1=> if fanin='1' then

state<=s0;

ledout<=“00000000”;

doubleled<=“00000000”;

shuma<=“0000000”;else

state<=s2;

ledout<=“10000000”;

doubleled<=“10000000”;

shuma<=“1111000”;

end if;

when s2=> if fanin='1' then

state<=s1;

ledout<=“10000000”;

doubleled<=“10000000”;

shuma<=“1111000”;

else

state<=s3;

ledout<=“11000000”;

doubleled<=“11000000”;

shuma<=“0000010”;

end if;

when s3=>

if fanin='1' then

state<=s2;

ledout<=“11000000”;

doubleled<=“11000000”;

shuma<=“0000010”;

else

state<=s4;

ledout<=“11100000”;

doubleled<=“11100000”;

shuma<=“0010010”;end if;when s4=> if fanin='1' then

state<=s3;

ledout<=“11100000”;

doubleled<=“11100000”;

shuma<=“0010010”;else

state<=s5;

ledout<=“11110000”;

doubleled<=“11110000”;

shuma<=“0011001”;

end if;when s5=> if fanin='1' then

state<=s4;

ledout<=“11110000”;

doubleled<=“11110000”;

shuma<=“0011001”;else

state<=s6;

ledout<=“11111000”;

doubleled<=“11111000”;

shuma<=“0110000”;end if;when s6=> if fanin='1' then

state<=s5;

ledout<=“11111000”;

doubleled<=“11111000”;

shuma<=“0110000”;else

state<=s7;

ledout<=“11111100”;

doubleled<=“11111100”;

shuma<=“0100100”;end if;

when s7=>

if fanin='1' then

state<=s6;

ledout<=“11111100”;

doubleled<=“11111100”;

shuma<=“0100100”;

else

state<=s0;

ledout<=“11111110”;

doubleled<=“11111110”;

shuma<=“1111001”;

end if;

end case;end if;end process;end rtl;

下載基于FPGA的乒乓球游戲機控制器設(shè)計word格式文檔
下載基于FPGA的乒乓球游戲機控制器設(shè)計.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關(guān)范文推薦

    基于FPGA的交通紅綠燈控制器

    基于FPGA的交通紅綠燈控制器 姓名: 學號:專業(yè): 班級: 目錄 1.設(shè)計思路................................................... 3 1.1設(shè)計思想....................................

    基于FPGA的(帶有緊急情況處理的)交通燈控制器的設(shè)計.

    學號成績 評語 《現(xiàn)代數(shù)字系統(tǒng)設(shè)計》課程論文 題目基于FPGA的(帶有緊急情況處理的交通燈控制器的設(shè)計 作者班級 院別信息與通信工程專業(yè)電子信息工程完成時間 2011年5月12日......

    FPGA搶答器設(shè)計報告

    Vb開辦上海電力學院 課程設(shè)計報告 信息工程系 搶答器設(shè)計報告 一、 設(shè)計目的: 本課程的授課對象是電子科學與技術(shù)專業(yè)本科生,是電子類專業(yè)的一門重要的實踐課程,是理論與實踐相......

    基于傳遞函數(shù)的控制器設(shè)計

    【實驗名稱】 基于傳遞函數(shù)的控制器設(shè)計 【實驗?zāi)康摹?1.熟練掌握用MATLAB語句繪制頻域曲線。 2.掌握控制系統(tǒng)頻域范圍內(nèi)的分析校正方法。 3.掌握用頻率特性法進行串聯(lián)校正設(shè)......

    數(shù)字PID控制器設(shè)計

    數(shù)字PID控制器設(shè)計 設(shè)計任務(wù): 設(shè)單位反饋系統(tǒng)的開環(huán)傳遞函數(shù)為: 設(shè)計數(shù)字PID控制器,使系統(tǒng)的穩(wěn)態(tài)誤差不大于0.1,超調(diào)量不大于20%,調(diào)節(jié)時間不大于0.5s。采用增量算法實現(xiàn)該PID控制......

    路燈控制器設(shè)計報告

    路燈控制器的設(shè)計 一.設(shè)計任務(wù)和要求 設(shè)計要求: 1、自制電路供電的穩(wěn)壓電源; 2、LED采用恒流供電。 3、該控制器具有環(huán)境亮度檢測和控制功能,當處于暗(亮)環(huán)境下能夠自動開(關(guān))燈,為......

    交通燈控制器設(shè)計實驗報告

    設(shè)計性實驗項目名稱交通燈控制器設(shè)計 實驗項目學時:3學時 實驗要求:■ 必修□ 選修 一、實驗?zāi)康?1、 學習與日常生活相關(guān)且較復(fù)雜數(shù)字系統(tǒng)設(shè)計; 2、 進一步熟悉EDA實驗裝置......

主站蜘蛛池模板: 日韩亚洲国产中文永久| 亚洲在线观看| 风流少妇又紧又爽又丰满| 九九九精品成人免费视频小说| 亚洲精品久久久久avwww潮水| 国产制服丝袜亚洲日本在线| 国产精品美女一区二区视频| 蜜桃av抽搐高潮一区二区| 狼人大香伊蕉在人线国产| 久久国产成人午夜av影院| 美女扒开尿口让男人桶| 欧美疯狂xxxxxbbbbb| 国产真实乱对白精彩久久| 尤物网址在线观看| 乱妇乱女熟妇熟女网站| 亚洲色av性色在线观无码| 国产亚洲欧美在线观看三区| 国产精品久线在线观看| 国产农村乱对白刺激视频| 综合人妻久久一区二区精品| 欧美色就是色| 酒店大战丝袜高跟鞋人妻| 久久久这里只有免费精品| 国产成人综合美国十次| 亚洲日本精品国产第一区二区| 手机看片久久国产永久免费| 午夜福利精品亚洲不卡| 欧美日韩一区二区综合| 国产日韩在线亚洲色视频| 亚洲熟妇无码av不卡在线| 尤物国精品午夜福利视频| 国产巨大爆乳在线观看| 黑人巨大无码中文字幕无码| 久久久欧美精品激情| 亚洲欧美综合国产精品二区| 秋霞av无码观看一区二区三区| 日韩人妻中文无码一区二区| 国产免费av片在线播放| 综合色天天鬼久久鬼色| 亚洲αv久久久噜噜噜噜噜| 久久亚洲av成人无码电影|