隨著集成電路應用的飛速發展,片上系統的結構變的越來越復雜,這對嵌入式微控制器(Embedded MCU)的性能提出了更高的要求。和目前的16位甚至32位的微控制器相比,8位微控制器結構簡單、代碼密度高,是嵌入式系統的重要組成部分。傳統的8位MCU結構比較成熟,但是作為嵌入式應用,其各方面性能還遠不能令人滿意。此外,一般在嵌入式系統的應用中,都需要 使用幾十種甚至是更多的模擬或數字外圍元器件。熟悉MCU開發的工程師們都知道,在MCU的開發過程中,最需要花時間和精力的就是元器件的選購,以及元器件兼容性方面的考慮。目前在市場上有成千上萬不同種外圍元器件,設計人員要想從中尋找到適合自己應用的元器件是一件令人頭痛的事情。因此,設計工程師的理想方案似乎是采用定制的SoC芯片,但是如果采用定制微控制器、ASIC和PLD器件,一方面價格比較昂貴,另一方面需要設計人員具有專門的設計技能。因此,研制一個高效率、外圍元器件可嵌入配置的、低功耗的≮位微控制器是很有必要的。 作為ASIC(Application Specific IC)設計方法學中的新技術,SoC始于20世紀90年代中斷。1994年Motorola發布的Flex CoreTM系統(用來制作基于68000TM和Power PCTM的定制微處理器)和1995年LSI Logic公司為SONY公司設計的SoC,可能是基于IP(Intellectual Property)核完成SoC設計的最早報導。由于SoC可以充分利用已有的設計積累,顯著地提高ASIC的設計能力,因此發展非常迅速。 PSoC(Programmable System on Chip)是美國Cypress MicroSystems公司于最近推出的新一代功能強大的8位可配置的嵌入式單片機。該系列單片機與傳統單片機的根本區別在于其內部集成的數字和模擬block模塊,工程師可以根據不同設計要求調用不同的數字和模擬block模塊,完成芯片內部的功能設計;實現使用一塊芯片就可以配置成具有多種不同外圍元器件的微控制器,建立一種可配置嵌入式微控制器;用以實現從確定系統功能開始,到軟/硬件劃分,并完成設計的整個過程。因此,PSoC能夠適應非常復雜的實時控制需求,使用它進行產品開發可以大大提高開發效率,降低系統開發的復雜性和費用,同時增強系統的要可靠性和抗干擾能力;因此,它特別適用于各種控制和自動化領域。 1 PSoC的動態配置能力及實現 閃速存儲器(Flash Memory)是一類非易失性存儲器NVM(Non-Volatile Memory),它即使在供電電源關閉后仍能保持片內信息;而諸如DRAM、SRAM這類易失性存儲器,當供電電源關閉時其片內信息隨丟失。閃速存儲器還集合了其它非易失性存儲的特點:與EPROM相比較,閃速存儲器在系統電可擦除和可重復編程具有明顯的優勢,它不需要特殊的高電壓就可以完成擦除和/或編程操作;與EEPROM相比較,閃速存儲器具有成本低、密度大的特點。其獨特的性能使其廣泛地運用于各個領域,包括嵌入式系統。 PSoC器件內就集成有一個SONOSTM(硅/氧化氮/氧化硅)工藝制造的閃速存儲器,以及快速微控制器(MCU)和SRAM及模擬和數字的可編程陣列模塊(即PSoC block)。在PSoC芯片內共有2個256字節的寄存器空間。這些寄存器空間可以用于個性化和參數化設定片上資源和數據讀寫;通過系統提供的PSoC Designer開發工具,設計人員可以合理地配置數字和模擬PSoC block參數,并且寫入PSoC芯片的閃速存儲器中,完成PSoC芯片的設計工作。當PSoC芯片工作時,芯片根據已配置的數字和模擬PSoC block參數,完成對寄存器空間設定,配置系統硬件;根據不同的系統需求,設計人員可以改變數字和模擬PSoC block參數的配置,實現多種特定配置的MCU外圍元器件的功能。這就是可編程嵌入式片上系統的配置能力。不但如此,PSoC還可以實現動態重新配置,即在運行時,根據系統不同時刻的需求,通過編程動態地改變存儲在片內閃速存儲器中設定的參數,重新定義系統所需要的功能模塊的種類和數量,動態地完成芯片上資源的重新分配,實現新的外圍元器件的功能。這就是可編程片上系統的動態重新配置能力(Dynamic ReConfigurability)。 為了節省設計時間及減少重復性勞動,Cypress也提供各種用戶模塊,在其器件庫中存儲有多種預設計外圍元器件模塊。用戶通過使用其系統提供的IDE,調用這些功能模塊;在功能模塊設計方面,在反復考察微控制器上的外圍器件和用于典型設計的模擬集成電路基礎上,Cypress提供了多種常用的數字和模擬外圍器件以供調用。目前在PSoC Designer 3.10版本的外圍器件庫中包含的用戶模塊有: 數/模轉換器(6位、8位); 模/數轉換器(增量式、Σ-Δ式……); 放大器(8位、16位、32位); 計數器(8位、16位、32位); 定時器(8位、16位、32位); 濾波器(高通、低通、帶通); 脈寬調制(PWM8、PWM16、PWM32); 各種數字設備(包括液晶模塊、E2PROM); 通信模塊(SPI主、SPI從、TX、RX、UART); …… 其提供的集成開發環境(IDE)還包含用戶模塊描述、說明,以及用戶指導/代碼摘錄、應用程序接口API(Application Programming Interface)和中斷服務程序ISR(Interrupt Service Routine),不用戶調用用戶模塊時和設備配置表產生時,功能模塊被自動插入到工程文件中。設計工程師可以使用API或者ISR以完成用戶程序的編制,實現任何定制的應用。 其提供的集成開發環境(IDE)還包含用戶模塊描述、說明,以及用戶指導/代碼摘錄、應用程序接口API(Application Programming Interface)和中斷服務程序ISR(Interrupt Service Routine),當用戶調用用戶模塊時和設備配置表產生時,功能模塊被自動插入到工程文件中。設計工程師可以使用API或者ISR以完成用戶程序的編制,實現任何定制的應用。 下面利用動態重新配置能力,完成如下功能需求的PSoC芯片設計工作。在不同的時刻,系統需要二套不同功能的外圍器件,時刻一是系統需要完成數據的接收工作,時刻二需要完成數據的發 送工作。使用普通的芯片,需要搭建大量的外圍電路;這項功能。系統不同時刻需要的帶有外圍器件的功能需求如圖1所示。 要完成此塊含有相當豐富功能的微控制器芯片,必須通過應用IDE內的Device Editor完成用戶模塊的選用及參考配置工作。首先,根據時間先后,劃分出基本配置和其它功能配置;在基本配置內必須完成對共有資源(定時器、計數器、模數、數模轉換等)的選用、放置和參數配置工作(時鐘頻率、輸入/輸出總線、I/O)。然后,完成功能配置要求(半雙工UART接收、發送模塊功能配置),在各自不同的功能配置中,根據功能要求設定系統參數。 在Application Editor部分產生配置文件,編寫應用程序代碼。利用程序完成功能配置的裝入、卸載工作以及實現相應的功能轉換,完成預定的芯片功能。具體的示例程序代碼如下: ;******************************************* area bss(RAM) ;定義變量 RXdata; blk 1 area text(ROM,REL) ;********************************************* _main: call Counter8_1_Start;基本配置 call Timer16_1_Start …… ;********************************************* receiver: ;動態完成UART接收器重新配置工作 call LoadConfig_receiver ;裝入UART接收配置 call RX8_1_Start ;啟動RX模塊工作 receiverIoop: tst reg[RX8_1_CONTROL_REG], RX8_RX_COMPLETE ;測試接收 jz receiverloop ;判斷完成 call bRX8_1_ReadRxData ;讀寫存儲數據 mov [RXdata],A ;********************************************* transmitter: ;動態完成UART發送器重新配置工作 call LoadConfig_transmitter ;裝入UART發送配置 call TX8_1_Start ;啟動TX模塊工作 inc [RXdata] mov A,[RXdata] ;準備數據發送 call TX8_1_SendData ;發送數據 ;********************************************* transmitterloop: tst reg[TX8_1_CONTROL_REG], TX8_TX_COMPLETE ;測試發送 jz transmitterloop ;判斷完成 jmp trceiver ;返回數據接收 通過應用IDE,就可以簡單地實現以上特定的MCU的需求,根據設計進展過程和功能需求的改變,對PSoC微控制器進行配置和重新配置。因此,PSoC可以降低成本,擴大PSoC資源利用率,簡單實現或重復實現任何定制的應用。 2 PSoC在系統編程 通過以上討論,了解了PSoC的動態重新配置能力;但在實際應用中,我們常常必須在工業現場完成對PSoC的重新配置。因此,在系統編程(ISP)技術在實現應用中顯著尤為重要。所謂在系統編程(ISP)就是一種可以讓最終用戶對已經安裝在電路板上的設備進行編程和重新編程的技術。它可以允許在制造過程和應用現場中進行對微控制器編程。 PSoC芯片內部提供一個包含二個引腳的特殊串行接口, 使用它們可以發送和接收來自在系統編程的數據。但是這種在系統編程需要使用仿真器作為編程設備。編程器包含5根信號線(Vcc、GND、Xres、SCLK、DATA);系統提供兩種編程模式:設備復位編程和設備電源循環編程。一般推薦使用設備復位編程模式。在PSoC Designer內選定編程模式,就可以通過圖2的相應連接完成在系統編程。要注意的是,在設備復位編程模式下不需要Vcc信號;在設備電源循環編程目標板消耗的電流不能超過300 mA,否則會造成仿真器損壞。 使用圖2所提供的系統連接方式,用戶可以非常簡單地對PSoC芯片實現在系統編程。同樣,用戶也可以使用UART接口、并行接口或者用戶自定義的接口來完成ISP編程,但是由于PSoC片內不直接提供代碼支持這種應用,因此用戶必須自己完成外部應用電路及ISP代碼的編寫。通過使用PSoC片內提供管理員ROM和重新配置的應用來解決此ISP代碼編寫的問題。用戶編寫ISP代碼存儲在片內閃存的高端地址空間內,不可擦除;用戶代碼存儲在片內閃存的低端空間地址空間內,當ISP代碼執行時,它將重新配置PSoC MCU系統,通過特定的接口與主機通信,接收來自于此接口的數據包,然后對芯片編程(使用用戶代碼)。編程完成后,PC指針跳回地址0,系統復位,根據新的用戶代碼重新配置芯片,用戶可以根據需要指定用戶代碼和ISP代碼空間大小,但是當使用在系統編程時,ISP應用代碼不可以覆蓋。用戶新的代碼可以對ISP代碼進行調用。圖3是一個應用UART接口完成ISP應用的基本電路。 在此電路內使用DB9連接器和RS232轉換電路完成ISP編程特性。主機通過串口對芯片進行編程。P0.4和P0.6用作TXD和RXD。因此在ISP應用過程中,PSoC MCU配置此2個引腳作為通信引腳,并且與內部UART模塊相聯,用戶同樣也可以設定其它需要的用戶模塊,并設定一個按鈕以外部觸發ISP應用。用戶在程序內增加一部分代碼監測按鈕的狀態,以執行ISP應用程序。程序內可以使用中斷或掃描方式監測按鈕狀態。具體的程序流程如圖4所示。 結語 PSoC的動態配置能力給開發者提供了快速方便的編程和開發方法,同時也為單片機的應用開拓了更大的空間。合理地利用片內集成的閃速存儲器可以降低產品開發成本,縮短產品開發周期。因此,本MCU結構具有廣闊的應用推廣前景。 |