新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PSoC Express和簡單游戲機開發應用

        PSoC Express和簡單游戲機開發應用

        作者:賽普拉斯半導體資深主任應用工程師 翁小平 時間:2008-04-15 來源:電子產品世界 收藏

          PSoC(可編程片上系統)是Cypress半導體公司生產的包含有8位微處理器核和數字與模擬混合的信號陣列芯片,其應用領域與8位的MCU相同。與8位的MCU的區別在于PSoC的數字周邊資源(如定時器、PWM、UART等等)和模擬周邊資源(放大器、比較器、濾波器等等)以數字模塊和模擬模塊的方式給出。不同型號的PSoC芯片的差異,主要是擁有數字模塊和模擬模塊的數量不同,用戶可以根據自己的需要來定義這些模塊。所有這些預定義的模塊稱為用戶模塊。在出現以前,開發PSoC的應用項目與MCU的應用開發相似,使用PSoC Designer集成開發環境,根據項目的需要調用和配置資源(用戶模塊),然后編寫代碼(C或匯編)、編譯、調試等步驟,制成目標芯片。

        本文引用地址:http://www.104case.com/article/81551.htm

          現在由于可以在更高的抽象概念水平上運行,且無需匯編或C語言的軟件開發,因此設計人員只需要數小時或數天時間即可完成對PSoC器件的新設計開發、仿真及編程,而不再耗時數周乃至數月。

          的開發過程

          使用PSoC Express的開發過程主要有四個步驟,它們是:

          1. 選擇輸入和輸出

          運行PSoC Express,選擇 Design選項夾,根據設計的需要選擇相應的輸入、輸出和接口驅動器,并根據要求設定驅動器的參數。

          2. 定義輸出的行為

          根據不同的輸入變化來定義系統的輸出行為。輸入/輸出關系比較簡單時,輸出驅動器提供三種傳輸函數:優先編碼器、狀態編碼器和表格對應器,直接使用這三種傳輸函數建立起輸入和輸出的關系。輸入/輸出的關系比較復雜時,需要使用評估器(Valuator),評估器包含6個傳輸函數,除了輸出驅動器的三種傳輸函數以外,評估器還有環路延時、狀態機和閾值三種傳輸函數。

          3. 仿真和驗證

          仿真為軟仿真,它主要通過交互方式來改變輸入值或狀態,輸出驅動器和評估器的狀態或數值圖形塊中的參數值隨即發生相應的變化,通過觀察這個變化,用戶可以評估和驗證設計結果的正確性。

          4. 生成系統文件和下載十六進制編程文件到PSoC芯片。至此,可以在實驗板上驗證設計功能是否達到了設計的要求。

          優先編碼器傳遞函數和狀態機傳遞函數

          1.優先編碼器傳遞函數

          優先編碼器傳遞函數是最常用的傳遞函數。它是基于表達式的實施一系列IF(…)Then(…)、Else IF(…) Then(…)…的操作,進而得到一個可以用作輸出的值。括號里的表達式類似C語言里的表達式。表達式里的變量來自輸入驅動器的輸出或其他評估器的輸出。對于實施一系列

          IF(…)Then(…)
          Else IF(…) Then(…)
          …

          的操作,從上到下,只要一遇到IF(…)里面的表達式為真,下面的語句將不再執行。由此可知,只有一個IF(…) Then(…)語句真正被執行,越是前面的語句優先級越高。

          2.狀態機傳遞函數

          通常一個系統中會有多個狀態,當滿足一定的條件或被某個事件觸發時,系統會從一個狀態轉變到另一個狀態。在PSoC Express中,僅有評估器的狀態機傳遞函數才能實施這一功能,而輸出驅動器是沒有狀態機傳遞函數的。

          為了實施這一功能,用鼠標右鍵點擊評估器圖標,選擇狀態機傳遞函數。首先要為所有可能的狀態定義狀態名,然后設置觸發條件,并選擇該觸發條件之前和之后的狀態,給每個觸發條件命名。通常觸發條件用表達式來表示。每設置一個觸發條件,就有一條帶箭頭的藍線將兩個轉換之前和之后的狀態連接起來。所有的觸發條件都設置好了以后,我們在屏幕上可以看到所熟悉的狀態轉換圖。狀態機傳遞函數的輸出就是某一個用狀態名表示的狀態,在所有的狀態中必須定義一個狀態為初始狀態,它以綠色表示,如圖1所示。

          簡單游戲機設計

          石頭、剪刀、布游戲機包括三個輸入驅動器、四個輸出驅動器和四個評估器。三個輸入驅動器就是三個輕觸按鍵,分別代表石頭、剪刀、布用于用戶作競猜選擇。四個輸出驅動器都是LCD,分別是一個16X2字符點陣LCD的四個部分,用于顯示每次競猜的輸贏和狀態以及玩家的分數。四個評估器中的兩個用于產生隨機數1或2或3,分別代表石頭、剪刀、布參與和用戶的競猜。一個評估器用于測試三個輕觸按鈕是否處于空閑等待狀態,以便LCD的顯示從競猜結果狀態返回到競猜前的等待狀態。另一個評估器實施各種狀態的轉換,以便在不同的時刻給出一個正確的狀態,如圖2所示。

          輸入驅動器 Rock(石頭)、Scissor(剪刀)和Paper(布)三個輕觸按鈕分別有四個可能的輸出狀態:上升沿、下降沿、ON、OFF,連接AllOff和m評估器。Roll和Pick兩個評估器的傳遞函數產生隨機數1或2或3。Roll的傳遞函數如下:

          if(m_state==m_state__ WaitForYouToPlay)&&(Roll==0)  then Roll = 1
          else if(m_state==m_state__ WaitForYouToPlay)&&(Roll<128)  then Roll = Roll*2
          else if(m_state==m_state__ WaitForYouToPlay)  then Roll = ((Roll-128)*2^0x71

          Pick的傳遞函數僅有一條語句:

          If(1)  then Pick = (Roll%3)+1

          AllOff也使用傳遞函數測試三個輕觸按鈕是否處于空閑等待狀態:

          if(Rock==Rock__On)  then AllOff = 0
          else if(Paper==Paper__On)  then AllOff = 0
          else if(Scissors==Scissors__On)  then AllOff = 0
          else if(1)  then AllOff = 1

          m評估器用狀態機傳遞函數實現9個狀態的轉換如圖3所示。Start為初始狀態用綠顏色表示,如果任意一個按扭被按,觸發條件變為:

          (Rock==Rock__Rising_Edge)||(Paper== Paper__Rising_Edge)||(Scissors== Scissors__Rising_Edge)

          產生觸發從初始狀態進入等待狀態 WaitForYouToPlay,等待用戶競猜。一旦再有按鍵被按,就進入Rock、Scissors、Paper的三個選擇狀態之一。

          接下來馬上實施三個判斷:Pick等于1(Rock)或2(Paper)或3(Scissors)?由于Pick評估器的輸出就是這三個值之一,所以必然有一個條件滿足。無論是Iwin或Draw或YouWin狀態,都無條件地進入到Converge狀態,因為這三個狀態轉換到Converge的觸發條件rrr、ddd、sss都是1。當按鍵被釋放以后,Converge狀態便返回到等待狀態 WaitForYouToPlay,因為它的觸發條件是All Off。

          對于普遍使用的16X2字符點陣LCD模塊(如S01602芯片),針對不同顯示方式,PSoC Express有多個LCD的輸出驅動器。這里用這個LCD模塊的四個四分之一(第一排左邊和右邊,第二排左邊和右邊)以字符和數字來顯示不同的內容。它們都是用優先編碼器傳遞函數來實現狀態和結果顯示。第一個LCD驅動器My Pick在第一排左邊顯示PSoC競猜選擇項目(Rock或Scissor或Paper),在開始狀態顯示Any Key,在等待狀態顯示Please。它的傳遞函數:

          if(m_state==m_state__Start)  then LCDMyPick=LCDMyPick __Label_4
          else if(m_state==m_state__ WaitForYouToPlay)  then LCDMyPick=LCDMyPick__Label_5
          else if(m_state==m_state__ YouSelectedRock)  then LCDMyPick = Pick
          else if(m_state==m_state__ YouSelectedPaper)  then LCDMyPick =Pick
          else if(m_state==m_state__ YouSelectedScissor)  then LCDMyPick = Pick
          Label_4是Any Key, Label_5 是Please在驅動器的參數中設定。第二個至第四個LCD驅動器的傳遞函數從略。

          結語

          在 PSoC Expess的開發環境下用三個輸入驅動器、四個輸出驅動器和四個評估器實現石頭、剪刀、布的游戲,其中四個輸出驅動器和四個評估器中的三個使用了優先編碼器傳遞函數,而僅一個評估器使用了狀態機傳遞函數。可以看到,使用無代碼的圖形化的PSoC芯片的集成開發環境PSoC Expess開發項目簡單而易行,快捷而有趣。



        關鍵詞: PSoC Express 開發應用

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 章丘市| 陆河县| 都江堰市| 新乐市| 明水县| 喀什市| 肇东市| 城口县| 克什克腾旗| 永清县| 保康县| 万州区| 额敏县| 库车县| 家居| 兴化市| 昌黎县| 铁岭市| 静海县| 阿克陶县| 白朗县| 稻城县| 马尔康县| 新密市| 磐安县| 阿坝| 台北县| 竹溪县| 嘉善县| 奎屯市| 柘城县| 四平市| 天等县| 天津市| 许昌市| 大埔区| 花莲县| 砀山县| 孝感市| 达日县| 大厂|