亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA“乒乓球比賽游戲機(jī)”的設(shè)計

        2010-01-20 01:44:00曹莉凌劉雨青
        現(xiàn)代電子技術(shù) 2009年21期
        關(guān)鍵詞:狀態(tài)機(jī)

        曹莉凌 劉雨青

        摘 要:FPGA的低成本正推動其在消費電子產(chǎn)品中的應(yīng)用,為進(jìn)一步挖掘其在娛樂產(chǎn)品應(yīng)用中的巨大商機(jī),基于Altera公司FPGA,在Quartus Ⅱ8.1環(huán)境下,運用VHDL語言、采用有限狀態(tài)機(jī)等設(shè)計方法設(shè)計了一款乒乓球比賽游戲機(jī)。介紹了該游戲機(jī)系統(tǒng)功能模塊劃分及關(guān)鍵模塊具體設(shè)計方案,給出設(shè)計和調(diào)試中遇到的問題及解決途徑,并進(jìn)行了仿真測試。仿真結(jié)果表明,該乒乓球游戲機(jī)工作正常,具有發(fā)球權(quán)控制、自動計分、犯規(guī)提示等多種功能,能有效模擬實際乒乓球比賽。

        關(guān)鍵詞:乒乓球比賽游戲機(jī);FPGA;VHDL;狀態(tài)機(jī)

        中圖分類號:TN40 文獻(xiàn)標(biāo)識碼:A

        文章編號:1004-373X(2009)21-131-04

        Design of Table Tennis Game Player Based on FPGA

        CAO Liling,LIU Yuqing

        (College of Engineering Science and Technology,Shanghai Ocean University,Shanghai,201306,China)

        Abstract:Low-cost of FPGA has promoted its applications in consumer electronic products.To further grasp its enormous business opportunities in entertainment products,a table tennis game player has been designed which is based on Altera Corporation FPGA,using Quartus Ⅱ8.1 and VHDL language,adopting some design methods such as the finite state machine,the functional modules division of the game player and the specific design schemes of main modules are introduced,problems and appropriate solutions during designing and debugging are summaried,the simulation and tests are given,the results show that the design of such table tennis game player is correct,it gets many functions such as control of right to serve,automatic counting and signal of illegality so that it can simulate the actual table tennis effectively.

        Keywords:table tennis game player;FPGA;VHDL;state machine

        可編程邏輯器件FPGA以其開發(fā)周期短、成本低、功耗低、可靠性高等優(yōu)勢,廣泛應(yīng)用于通信、航空、醫(yī)療等領(lǐng)域[1-3],近年來在消費電子領(lǐng)域[4]中的應(yīng)用也日漸增加。為進(jìn)一步挖掘FPGA在家庭娛樂如游戲機(jī)開發(fā)與應(yīng)用中的巨大商機(jī),介紹了一款以Altera公司FPGA芯片為控制核心,附加少量外圍電路組成的乒乓球比賽游戲機(jī)[5]。整個系統(tǒng)設(shè)計模塊劃分清晰:包括裁判端、選手端、控制端、顯示端及模擬乒乓球臺;功能齊全:包括發(fā)球權(quán)控制、犯規(guī)提示、局?jǐn)?shù)比分顯示等,模擬實際乒乓球比賽相似程度高。采用了VHDL[6,7]語言編程實現(xiàn),在Quartus Ⅱ8.1[8,9]集成環(huán)境下進(jìn)行了模擬仿真,結(jié)果表明在設(shè)定的比賽規(guī)則下,游戲機(jī)運行正常,通過進(jìn)一步優(yōu)化可將其商品化,推入市場。

        1 系統(tǒng)組成

        乒乓球比賽游戲機(jī)的組成如圖1所示。比賽規(guī)則約定:五局三勝;11分一局;裁判發(fā)出比賽開始信號,觸發(fā)FPGA內(nèi)部隨機(jī)數(shù)發(fā)生器模塊產(chǎn)生首次發(fā)球權(quán)方;比賽進(jìn)行中,選手連續(xù)兩次獲得發(fā)球權(quán)后,發(fā)球權(quán)交予對方,如未獲發(fā)球權(quán)方發(fā)球,裁判端犯規(guī)音響電路鳴響;13個LED排列成行模擬乒乓球臺;點亮的LED模擬乒乓球,受FPGA控制從左到右或從右到左移動;比賽選手通過按鈕輸入模擬擊球信號,實現(xiàn)LED移位方向的控制;若發(fā)亮的LED運動在球臺中點至對方終點之間時,對方未能及時按下?lián)羟虬粹o使其向相反方向移動,即失去一分。

        圖1 基于FPGA乒乓球比賽游戲機(jī)組成框圖

        2 功能模塊設(shè)計

        圖1中,基于FPGA設(shè)計的控制端為整個系統(tǒng)的核心,其內(nèi)部主要由簡易隨機(jī)數(shù)發(fā)生器、發(fā)球權(quán)控制器、乒乓球位置控制器、甲乙方計分控制器、犯規(guī)音響控制器等模塊組成。整個控制端采用模塊化設(shè)計,先用VHDL語言編寫功能模塊,然后用頂層原理圖將各功能模塊連接起來。設(shè)計的難點在于協(xié)調(diào)各模塊工作,嚴(yán)格遵守各信號間時序關(guān)系。本系統(tǒng)采用1 kHz系統(tǒng)時鐘。

        2.1 簡易隨機(jī)數(shù)發(fā)生器

        比賽首次發(fā)球權(quán)由隨機(jī)數(shù)發(fā)生器產(chǎn)生的數(shù)據(jù)決定,其隨機(jī)性要求不嚴(yán),因此,采用非常簡單的模式產(chǎn)生,即一旦FPGA上電,系統(tǒng)時鐘百分頻產(chǎn)生一方波信號square,當(dāng)裁判閉合開始比賽開關(guān)產(chǎn)生start信號上升沿時,讀取此時square信號值作為隨機(jī)數(shù)發(fā)生器輸出randq。模塊仿真如圖2所示,結(jié)果滿足設(shè)計要求。此模塊設(shè)計時保證了square信號周期應(yīng)遠(yuǎn)大于start信號上升沿建立時間,保證隨機(jī)數(shù)據(jù)的正確讀取。

        圖2 簡易隨機(jī)數(shù)發(fā)生器模塊仿真

        2.2 發(fā)球權(quán)控制器

        發(fā)球權(quán)控制器的控制過程為:如果按下復(fù)位按鈕,發(fā)球權(quán)數(shù)碼管顯示8,否則,開始比賽開關(guān)閉合時,顯示隨機(jī)數(shù)發(fā)生器的值(0或1,0代表甲方、1代表乙方)。而在比賽中,為遵守發(fā)球權(quán)交換規(guī)則,設(shè)計甲乙雙方計分器總和信號sum_sc是不為0的偶數(shù)時(即計分總和最低位sum_sc0下降沿到來時),發(fā)球權(quán)數(shù)碼管顯示由0變?yōu)?或由1變?yōu)?。

        此模塊設(shè)計中,發(fā)球權(quán)數(shù)碼管的信號控制受多個時鐘的控制,即開始比賽開關(guān)start和計分值sum_sc0信號,這在VHDL編程語言中無法用一個進(jìn)程實現(xiàn),必須將兩個信號組合成一個時鐘信號,并統(tǒng)一兩個時鐘的觸發(fā)沿。因此最佳時鐘觸發(fā)方式如圖3所示的fqq_en信號。為滿足這種時序要求,借助計分總和次低位sum_sc1信號設(shè)計entity sum_sc_mod2,由于start和sum_sc1的頻率都遠(yuǎn)低于系統(tǒng)時鐘信號clk頻率,則可借助clk 高頻信號捕捉其邊沿產(chǎn)生新的時鐘信號fqq_en,并產(chǎn)生其計數(shù)值,仿真波形如圖4(a)所示。為保證發(fā)球權(quán)數(shù)碼管顯示正確,設(shè)計 entity led_fqq_ctl在fqq_en下降沿時,根據(jù)其計數(shù)值產(chǎn)生相應(yīng)的數(shù)碼管輸出信號led_fqq,仿真波形如圖4(b)所示。

        發(fā)球權(quán)控制器的VHDL核心程序如下:

        entity sum_sc_mod2:

        process(clk)

        begin

        if clk′event and clk=′1′ then--系統(tǒng)時鐘

        mod2_en1<=sum_sc1;mod2_en2<=mod2_en1;

        start1<=start;start2<=start1;

        end if;

        end process;

        fqq_en<=(mod2_en1 xor mod2_en2) or (start1 xor start2);

        mod2_en<=(mod2_en1 xor mod2_en2) or (start1 xor start2);

        process(mod2_en)

        begin

        if mod2_en′event and mod2_en=′1′ then

        cnt1<=cnt1+1;

        end if;

        end process;

        cnt<=cnt1;

        entity led_fqq_ctl:

        process(reset,cnt)

        begin

        if reset =′0′ then led<="1000";--復(fù)位按鈕按下,發(fā)球權(quán)數(shù)碼管顯示8

        elsif fqq_en′event and fqq_en=′0′ then

        if cnt=1 then led<="000"&rand;

        else led<="000"? led(0);

        --fqq_en第一個下降沿顯示隨機(jī)數(shù)的值,其他下降沿交換發(fā)球權(quán)

        end if;

        end if;

        end process;

        圖3 發(fā)球權(quán)顯示控制器控制時鐘

        圖4 發(fā)球權(quán)控制器模塊仿真

        2.3 乒乓球位置控制、甲乙計分、犯規(guī)音響控制

        乒乓球位置控制電路為FPGA控制端的核心,依據(jù)比賽規(guī)則,采用了Mealy型狀態(tài)機(jī)[10]來實現(xiàn),大大降低了設(shè)計難度。狀態(tài)機(jī)共定義了7個狀態(tài),各狀態(tài)定義如表1所示,狀態(tài)轉(zhuǎn)換如圖5所示,轉(zhuǎn)換條件如表2所示,具體程序如下。

        表1 Mealy型狀態(tài)機(jī)狀態(tài)定義

        狀態(tài)定義

        s0發(fā)球權(quán)為0時,乒乓球位置為最左端;發(fā)球權(quán)為1時,乒乓球位置為最右端

        s1如果甲擊球,乒乓球右移;如果乙擊球,犯規(guī)音響電路鳴響

        s2判斷乒乓球進(jìn)入乙方臺面后,乙是否擊球; 判斷乒乓球是否仍處于甲方臺面及中點;否則,甲方得分

        s3乒乓球右移

        s4如果乙擊球,乒乓球左移;如果甲擊球,犯規(guī)音響電路鳴響

        s5判斷乒乓球進(jìn)入甲方臺面后,甲是否擊球; 判斷乒乓球是否仍處于乙方臺面及中點;否則,乙方得分

        s6乒乓球左移

        表2 狀態(tài)轉(zhuǎn)換條件

        源狀態(tài)目的狀態(tài)轉(zhuǎn)換條件

        s0s1發(fā)球權(quán)歸甲方:(!led_fqq)

        s0s4發(fā)球權(quán)歸乙方:(led_fqq)

        s1s0乙方擊球:(!fq_b)

        s1s1等待甲方擊球:(fq_b).(fq_a)

        s1s2甲方擊球:(!fq_a).(fq_b)

        s2s0球至最右乙未擊球:ppq(0)=′1′ and fq_b=′1′

        s2s3 球仍在甲方臺面及中點位置或進(jìn)入乙方臺面但乙方尚未擊球:(ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′) and fq_b=′1′) or ppq(12)=′1′ or ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′ or ppq(6)=′1′

        s2s6球移至乙方臺面乙擊球:(ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′ or ppq(0)=′1′) and fq_b=′0′

        s3s2乒乓球右移后無條件轉(zhuǎn)移

        s4s0甲方擊球:(!fq_a)

        s4s4等待乙方擊球(fq_b).(fq_a)

        s4s5乙方擊球(!fq_b).(fq_a)

        s5s0球至最左甲未擊球:ppq(12)=′1′ and fq_a=′1′

        s5s3球移至甲方臺面甲擊球:(ppq(12)=′1′ or ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′) and fq_a=′0′

        s5s6球仍在乙方臺面及中點位置或進(jìn)入甲方臺面但甲方尚未擊球:(ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′ )and fq_a=′1′) or ppq(6)=′1′ or ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′ or ppq(0)=′1′

        s6s5乒乓球左移后無條件轉(zhuǎn)移

        圖5 乒乓球位置控制電路狀態(tài)轉(zhuǎn)換圖

        library ieee;

        use ieee.std_logic_1164.all;

        entity position is

        port(reset:in std_logic;

        led_fqq,fq_a,fq_b,clk: in std_logic ;

        --fq_a,fp_b選手擊球信號,clk:1Hz信號

        led_ppq: out std_logic_vector(12 downto 0);

        --模擬乒乓球臺

        cnta,cntb: inout integer range 0 to 11;

        --甲乙雙方計分輸出

        speaker: out std_logic);

        end position;

        architecture pst_st of position is

        type states is (s0,s1,s2,s3,s4,s5,s6);

        signal state: states;

        signal ppq: std_logic_vector(12 downto 0);

        signal ca,cb:integer range 0 to 11;

        begin

        process(clk)

        begin

        if reset=′0′ then state<=s0;

        elsif (clk′event and clk=′1′) then

        case state is

        when s0 =>

        speaker<=′0′;

        if cnta=11 or cntb=11 then ca<=0;cb<=0;

        end if;--任一方先得11分,一局結(jié)束,計分清零

        if led_fqq=′0′ then ppq<="1000000000000";

        state<=s1;

        end if;

        if led_fqq=′1′ then ppq<="0000000000001";

        state<=s4;

        end if;--依據(jù)發(fā)球權(quán)數(shù)碼管顯示判斷狀態(tài)轉(zhuǎn)換

        when s1=>

        if fq_a=′0′ then ppq<=′0′&ppq;(12 downto 1);

        state<=s2;

        end if;--若甲擊球,乒乓球右移

        if fq_b=′0′ then speaker<=′1′;

        state<=s0;

        end if;--若乙擊球,犯規(guī)音響電路鳴響

        when s2=>

        if (ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′ or ppq(0)=′1′) and fq_b=′0′ then state<=s6;

        --若右移到乙方臺面,乙方接球,進(jìn)入s5狀態(tài)

        elsif((ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′) and fq_b=′1′) or ppq(12)=′1′ or ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′ or ppq(6)=′1′ then state<=s3;

        --若右移還未過中點,進(jìn)入s3狀態(tài)

        else ca<=ca+1;

        state<=s0;--若右移到最右位置乙方未接球,甲方得分

        end if;

        when s3=>

        ppq<=′0′&ppq;(12 downto 1);

        state<=s2;--控制乒乓球右移

        when s4=>

        if fq_b=′0′ then ppq<=ppq(11downto 0)&′0′;

        state<=s5;

        end if;--若乙擊球,乒乓球左移

        if fq_a=′0′ then speaker<=′1′;

        state<=s0;

        end if;--若甲擊球,犯規(guī)音響電路鳴響

        when s5=>

        if (ppq(12)=′1′ or ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′) and fq_a=′0′ then state<=s3;

        --若左移到對方臺面,對方接球,進(jìn)入s2狀態(tài)

        elsif ((ppq(11)=′1′ or ppq(10)=′1′ or ppq(9)=′1′ or ppq(8)=′1′ or ppq(7)=′1′ )and fq_a=′1′) or ppq(6)=′1′ or ppq(5)=′1′ or ppq(4)=′1′ or ppq(3)=′1′ or ppq(2)=′1′ or ppq(1)=′1′ or ppq(0)=′1′ then state<=s6;

        --若左移還未過中點,進(jìn)入s6狀態(tài)

        else cb<=cb+1;

        state<=s0;

        --若左移到最左位置甲方未接球,乙方得分

        end if;

        when s6=>

        ppq<=ppq(11 downto 0)&′0′;

        state<=s5;--控制乒乓球左移

        end case;

        end if;

        end process;

        led_ppq<=ppq;cnta<=ca;

        cntb<=cb;

        end pst_st;

        3 頂層模塊仿真測試

        由于篇幅限制,本系統(tǒng)中的分頻器、譯碼器等常用模塊的設(shè)計就不再此贅述,最終頂層原理圖設(shè)計如圖6所示,仿真波形如圖7所示,分析波形可知,圖中開始比賽信號產(chǎn)生后,首次發(fā)球權(quán)方為乙方,甲方發(fā)球造成犯規(guī)音響電路鳴響,即speaker 信號為高電平,然后乙方發(fā)球,乒乓球依次移位,甲方接球成功后乙方未接球成功,甲方得分,cnta信號為“0110000”,注意,此處輸出為驅(qū)動數(shù)碼管輸出信號,代表數(shù)字“1”。通過仿真可知,該系統(tǒng)設(shè)計滿足游戲機(jī)比賽規(guī)則要求。

        圖6 基于FPGA“乒乓球比賽游戲機(jī)”頂層原理圖

        圖7 頂層文件仿真波形

        4 結(jié) 語

        采用VHDL語言編程,基于FPGA成功設(shè)計了一款乒乓球比賽游戲機(jī),通過仿真驗證可知,結(jié)果滿足設(shè)計需求,系統(tǒng)具有發(fā)球權(quán)控制、自動計分、犯規(guī)提示等多種功能,能有效模擬實際乒乓球比賽。該系統(tǒng)進(jìn)一步改進(jìn)思路為:改用人體感應(yīng)傳感器來采集擊球信號,采用FPGA產(chǎn)生視頻信號傳送到電視機(jī)或監(jiān)視器,更直觀地展示乒乓球運動軌跡,從而真正實現(xiàn)人機(jī)互動,優(yōu)化虛擬效果。

        參考文獻(xiàn)

        [1]李果.基于FPGA的擴(kuò)頻通信芯片設(shè)計及應(yīng)用[D].武漢:武漢理工大學(xué),2008.

        [2]張帆.基于FPGA的航電總線適配器設(shè)計[D].南京:南京理工大學(xué),2006.

        [3]高士峰.醫(yī)療機(jī)器人主操作手接口研究與開發(fā)[D].天津:天津大學(xué),2005.

        [4]Lattice Semiconductor Corporation.利用低成本FPGA設(shè)計下一代游戲控制臺[EB/OL].http://www.eeworld.com.cn/FPGA/2009/0424/article_574.html,2009.

        [5]彭介華.電子技術(shù)課程設(shè)計指導(dǎo)[M].北京:高等教育出版社,1997.

        [6]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2007.

        [7] Pedroni V A.VHDL數(shù)字電路設(shè)計教程[M].喬廬峰,譯.北京:電子工業(yè)出版社,2005.

        [8]Altera International Limited.Quartus II Handbook v9.0[EB/OL].http://www.altera.com.cn/literature/lit-qts.jsp,2009.

        [9]周立功.EDA實驗與實踐[M].北京:北京航空航天大學(xué)出版社,2007.

        [10] 克里茲.高級FPGA設(shè)計結(jié)構(gòu)、實現(xiàn)和優(yōu)化[M].孟憲元,譯.北京:機(jī)械工業(yè)出版社,2009.

        作者簡介

        曹莉凌 女,1982年出生,助理實驗師,碩士。研究方向為EDA技術(shù)的應(yīng)用。

        劉雨青 女,1976年出生,講師,博士。研究方向為自動化控制。

        猜你喜歡
        狀態(tài)機(jī)
        基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
        基于狀態(tài)機(jī)比對的狀態(tài)機(jī)推斷方案
        江蘇通信(2015年5期)2015-03-16 01:16:51
        雙口RAM讀寫正確性自動測試的有限狀態(tài)機(jī)控制器設(shè)計方法
        FPGA設(shè)計中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計
        基于VHDL的一個簡單Mealy狀態(tài)機(jī)
        人妻av一区二区三区高| 99精品国产一区二区三区| 国产真人无码作爱视频免费| 国产 中文 制服丝袜 另类| 国产一区亚洲一区二区| 免费国产在线精品一区二区三区免| 亚洲国产精品成人综合色| 欧美色aⅴ欧美综合色| 国产精品香蕉网页在线播放| 亚洲不卡av一区二区三区四区 | 亚洲夫妻性生活免费视频 | 亚洲免费观看在线视频| 人妻系列影片无码专区| 一本久道久久丁香狠狠躁| 欧美最猛黑人xxxx黑人猛交| 亚洲黄色电影| av无码电影一区二区三区| 免费在线视频亚洲色图| 尤物在线精品视频| 四虎精品视频| 国产麻豆精品久久一二三| 久久精品免费一区二区喷潮| 亚洲视频在线视频在线视频| 美女被内射中出在线观看| 欧美老熟妇乱xxxxx| 人妻熟妇乱又伦精品视频app| 无码中文字幕久久久久久| 极品美女调教喷水网站| а天堂中文在线官网在线| 美丽的熟妇中文字幕| 亚洲国产福利成人一区二区 | 国产精品视频流白浆免费视频| 精品女同一区二区三区免费播放| 欧美性猛交xxx嘿人猛交| 被群cao的合不拢腿h纯肉视频| 91亚洲欧洲日产国码精品| 区一区二区三区四视频在线观看| 天天躁日日躁狠狠躁| 国产欧美日韩网站| 人妻有码中文字幕在线 | 欧洲女人性开放免费网站|