隨著上層應用軟件的日趨多樣化,現(xiàn)在的便攜式電子產(chǎn)品對嵌入式芯片的功能需求越來越高,單一或僅可以局部定制的傳統(tǒng)芯片已經(jīng)不能滿足需要。因此數(shù)字系統(tǒng)和模擬系統(tǒng)都可以根據(jù)需要靈活定制成為芯片設計、開發(fā)的發(fā)展方向。Cypress 為滿足業(yè)界需要繼 PSoC1 之后開發(fā)了 PSoC3 和 PSoC5 全新可編程模擬和數(shù)字嵌入式芯片。其中 PSoC3 使用基于單循環(huán)流水線的高性能 8051 內(nèi)核(67MHz/33MIPS),PSoC5 則是基于 32 位 ARM Cortex-M3 的內(nèi)核(80MHz/100MIPS);兩者都內(nèi)置閃存、SRAM,支持片外存儲器訪問,在 8、16 和 32bit 應用中同時實現(xiàn)了高集成度和高靈活性。本文重點講述了 PSoC3 在多通訊接口設計中的應用,以及如何使用多 DMA 技術提高通訊的速度和效率。
一、 Cypress PSoC3 芯片介紹Cypress PSoC3 使用基于單循環(huán)流水線的高性能 8051 內(nèi)核 (67MHz/33MIPS),提供業(yè)界廣泛采用的 5.5V 至 0.5V 電壓范圍和低至 200nA 的休眠電流,可以滿足極低功耗的應用場合。PSoC3 的高性能模擬子系統(tǒng)和數(shù)字系統(tǒng)都擁有可編程通路,允許將任何模擬或數(shù)字信號(包括可編程時鐘)分配到任何通用 I/O 引腳,這為使用者提供了真正的“系統(tǒng)級”可編程能力。Cypress PSoC3 的芯片編號是 CY8C38xx,該系列芯片依據(jù)功能模塊的不同包含多種芯片。表1 是 CY8C38xx 系列的選型指南,除了表中列出的特性外,每個 CY8C38xx 芯片還包含:1.024V±0.1%的精密片上電壓參考源,帶 PLL 的 1~66MHz±1%的精密可編程時鐘源,有 ECC(錯誤校正碼)功能的 Flash,DMA(直接存儲器訪問),4KB 可調(diào)試跟蹤的 RAM,JTAG/SWD 編程/調(diào)試接口,支持片外存儲器訪問等。Cypress PSoC3 內(nèi)部采用 CPLD 的結構實現(xiàn)了完全的數(shù)字可編程電路。圖 1 顯示了 CY8C38xx系列內(nèi)部的可編程邏輯圖。從圖 1 中可以看出,外設和邏輯部分可以彼此互聯(lián),也可以連接到任何引腳。數(shù)字可編程邏輯包括了以下部分。UDB(Universal Digital Blocks)形成了可編程數(shù)字系統(tǒng)的核心功能,由 PLD 和 Datapath 組成,可以創(chuàng)建各種通用外設和定制化功能。UDB Array 由多個 UDB 通過矩陣和可編程互聯(lián)組成,支持 UDB 和 DSI(Digital SystemInterconnect)之間很靈活的擴展。DSI 是數(shù)字信號的集中互聯(lián),包括 UDB,固定功能外設,I/O,中斷,DMA 和其它部分的數(shù)字信號。強大的模擬資源以及靈活的模擬布線資源也是 PSoC3 的一大亮點之一。圖 2 是 CY8C38 系列芯片的片內(nèi)模擬資源圖,通過這些可編程的模擬電路,可以構成標準的模擬信號處理模塊。并且這些模擬資源可以通過內(nèi)部的模擬互連子系統(tǒng)進行連接,提供高度的模擬設計自由度以及 IP 資源的保護。模擬子系統(tǒng)有以下系統(tǒng)構成。·有模擬全局和局部總線,模擬開關構成的高度可配置的結構。·高精度的 Delta-Sigma ADC.·支持 8 位的電壓或者電流 DAC.·四路比較器并且可以有選擇性的互聯(lián)到 LUT 中.·多達四個的 SC/CT 模塊可以構成 OPAMP 等模擬電路·多達四個內(nèi)部的 OPAMP,可以連接到 GPIO 作為大電流輸出的緩沖器。·CapSense 子系統(tǒng)支持電容觸摸的檢測。·內(nèi)部高精度參考電壓源。除了模擬和數(shù)字可編程邏輯外,CY8C38 系列芯片都包含了一個專用于數(shù)字濾波的硬件加速器 DFB(Digital Filter Block),它內(nèi)部的專用乘法器和加速器可以在一個系統(tǒng)時鐘內(nèi)計算一個 24 位數(shù)與 24 位數(shù)的乘法。使用 DFB 可以方便的實現(xiàn) FIR 和 IIR 數(shù)字濾波器,而且?guī)缀醪徽加?MCU 的資源。在實現(xiàn)濾波器之外,DFB 還可以作為 PSoC3 的算法加速器,可以很方便快捷的實現(xiàn)各種數(shù)字算法,而且不需要占用 PSoC3 的 CPU 資源。圖 3 是 DFB 的模塊框圖,典型應用是將某個片內(nèi)數(shù)據(jù)源(例如 ADC 或某個 DMA)的數(shù)據(jù)連接到 DFB,經(jīng) DFB 處理后將結果輸出到另一個片內(nèi)數(shù)據(jù)源(例如 DAC 或另一個 DMA)。數(shù)據(jù)的移入和移出可以設定由特定的 DMA 控制,也可以由 MCU 直接移動。除了可編程的資源之外,PSoC3 內(nèi)部還提供了特定功能的模塊。這些模塊可以不占用模擬,數(shù)字可編程以及 MCU 資源,完成相應的功能。這些模塊包括:·支持高達 1MBPS 的 Can 總線控制器,兼容 ISO-11898-1 標準。·全速 USB2.0 控制器,支持 8 個端點和 DMA 數(shù)據(jù)傳輸控制。·支 持 50k/100k/400k/1M BPS 的 I2C 主/從總線控制器,兼容 Philips ‘The I2CSpecification’ Version 2.1。·16 Bit 專用的定時,計數(shù)和 PWM 等常用的嵌入式系統(tǒng)模塊。二、 Cypress PSoC® Creator™ 集成開發(fā)環(huán)境 Cypress PSoC Creator 開發(fā)環(huán)境是 Cypress 為 PSoC3 / PSoC5 可編程片上系統(tǒng)提供的高效,易用的繼承開發(fā)環(huán)境。 該獨特的新型設計軟件使得工程師能夠按照自己的思維方式進行設計。使用基于電路圖的方式完成對可編程模擬,數(shù)字以及布線資源的設計。該軟件還提供了特有的嵌入式系統(tǒng)的組件庫來應用其內(nèi)部的資源,通過在組件庫中選擇組件并使用基于電路圖的方式可以使得整個開發(fā)過程就像搭積木一樣,簡單高效的實現(xiàn)工程師的設計。該軟件工具通過電路綜合可以自動的把用戶的設計轉(zhuǎn)化成對可編程電路的配置,使得用戶即使不了解芯片的細節(jié)也可以完成復雜的電路設計。使用 PSoC Creator 進行設計的時候,客戶是根據(jù)應用需求急性設計,而不是目標器件的限制。重新構建設計就像修改程序一樣,不需要復雜的電路板級修改。 PSoC Creator 將一個最新的軟件開發(fā) IDE 與一個革命性的圖形設計編輯器結合在一起,構成一個獨特的強有力的軟硬件同步設計環(huán)境。它提供內(nèi)容豐富的、存有幾十個預先配置過的模擬和數(shù)字外設庫,可以方便地拖放進電路圖設計界面并組成強大的系統(tǒng)。該工具還可以自動為所有片上信號分配管腳,如有需要,甚至還能將 I/O 分配到最佳管腳。每個外設元件的參數(shù)均經(jīng)過仔細的配置,以保證應用效果能最好地滿足設計者的要求,且沒有資源浪費。構建過程會為每一個元件產(chǎn)生一個一致的、容易記住的 API 系列,這樣,軟件開發(fā)者即可控制硬件,而無需為基本執(zhí)行指令操心。 定制的設計及其相關的 API 還可以方便地存儲在庫中,用于將來的項目或在組織內(nèi)部分享。 PSoC Creator 內(nèi)部包含了全功能免費的編譯器,其獨特的綜合布線工具能夠自動綜合客戶的設計輸入,并生成相應的 API。PSoC3 的工程采用了工業(yè)界常用的 Keil CA51 編譯器,而GNU GCC-ARM 編譯器也包含其中,能夠針對 PSoC5 的設計進行編譯。在綜合,編譯等完成之后,生成兼容 Intel Hex 格式的配置文件對芯片進行配置。 PSoC Creator 目前的版本是: PSoC Creator 1.0 Production. 該軟件運行界面如下圖 4。PSoC Creator 提供給用戶的設計入口如下:原理圖編輯器:該編輯器是創(chuàng)建設計的主要工具。支持對設計進行原理圖編輯。文本編輯器:該工具允許用戶編輯 C,匯編,Verilog, C#等語言代碼。設計資源編輯器:該工具用于配置整個設計的參數(shù),包括電源,編譯開關,調(diào)試開關,F(xiàn)lash 保護信息,以及管腳分配等。圖標編輯器:允許用戶創(chuàng)建自己的模塊圖標其他工具:- 原理圖宏編輯器:允許用戶對原理圖設置不同的宏以完成不同的功能。- 原理圖模板編輯器:允許用戶對原理圖的模板進行編輯- 圖標形狀編輯器:允許用戶在創(chuàng)建模塊以及原理圖中使用自定義的形狀。PSoC Creator 在用戶通過設計入口完成設計之后,對設計進行一系列的處理并完成最終的結果輸出。該工具的對工程的構建過程如圖 5 所示。從圖 5 中可以看出,工程構建過程包括以下步驟:·通過設計輸入接口完成設計·綜合器完成對電路圖的綜合,并進行布局,布線,映射等工作·代碼生成器生成對應電路的 API 控制接口·構建器準備設計源文件,讀取構建數(shù)據(jù)庫,獲得構建配置,庫文件等信息·編譯器完成編譯,鏈接器對生成的文件進行鏈接·輸出配置 Hex 文件。三、 Cypress PSoC3 應用于多通訊接口的 DMA 設計DMA 是 PSoC3 中用于處理快速數(shù)據(jù)搬運的模塊。DMA 的控制器可以在不需要 CPU 干預的情況下處理數(shù)據(jù)的傳輸。通過 DMA 處理數(shù)據(jù)傳輸可以有效地降低 CPU 的負擔,同時也能夠提高數(shù)據(jù)傳輸?shù)臅r間。PSoC3 內(nèi)置的 DMA 可以完成四種基本的數(shù)據(jù)傳輸:·內(nèi)存到內(nèi)存·內(nèi)存到外設·外設到內(nèi)存·外設到外設 PSoC3 中,采用 PHUB 來連接各個內(nèi)部設備。DMA 和 CPU 都需要使用 PHUB 來完成數(shù)據(jù)傳輸。 PHUB上的兩個主設備分別是DMA和CPU,而從設備是內(nèi)存,外設以及控制和配置寄存器。PSoC3支持多個 DMA 的通道,DMA 主控制器對通道的請求按照優(yōu)先級進行仲裁。單個 DMA 的通道可以傳輸高達 64KB 的數(shù)據(jù)。PSoC3 的 DMA 控制器支持如下特性:·支持 24 個 DMA 通道·8 優(yōu)先級判決·128 個事務描述符·8/16/32 位的數(shù)據(jù)傳輸·完全可配置的源和目標地址·兼容不同數(shù)端·在完成數(shù)據(jù)傳輸之后能夠生成中斷·DMA 向?qū)軌蚣铀倩?DMA 的開發(fā)·DMA 事務可以有可編程數(shù)字邏輯或者 CPU 觸發(fā)·支持多個 DMA 通道和描述符的級聯(lián)以完成復雜的功能。3.1 在 PSoC Creator 中使用 DMA PSoC Creator 做為 PSoC3 和 PSoC5 開發(fā)的設計工具,其內(nèi)部集成了 DMA 模塊來配置 DMA 和生成相關的控制代碼,同時提供的 DMA 向?qū)崿F(xiàn)了圖形化操作界面。DMA 模塊位于組件窗口的 System 目錄下,如圖所示。通過拖曳到原理圖編輯器可以放置 DMA 模塊,每次拖曳的 DMA 會使用一個通道。DMA 模塊的輸入輸出地址等需要在代碼中進行配置,而通過原理圖配置的都是控制管腳和控制信息。在原理圖上 DMA 模塊的表現(xiàn)如下圖 7 所示。它的輸入輸出的管腳共有三個。 nrq – 輸出管腳。該管教用于表征 DMA 的傳輸完成,用來通知中斷控制器產(chǎn)生中斷或者用來觸發(fā)其他邏輯。當完成傳輸之后 DMA 會生成一個 2 個總線周期的脈沖。 drq – 輸入管腳(可選)。該管腳是可選管腳,只有在觸發(fā)條件選擇為硬件的時候才可見。該管腳可以連接到產(chǎn)生 DMA 事務請求的模塊,觸發(fā)條件可以配置成電平觸發(fā)或邊沿觸發(fā)。 trq – 輸入管腳(可選)。該管腳是可選管腳,只有在結束條件選為硬件時才可見。該管腳觸發(fā)之后,DMA 會停止數(shù)據(jù)傳輸。 在配置完成硬件連接以后,使用配置向?qū)硗瓿蓪?DMA 的如下參數(shù)的配置:·Byte Per Burst – 每次執(zhí)行 Burst 傳輸傳送的字節(jié)數(shù)·Transaction Descriptor 的數(shù)量·Endian (Big / Little)的配置·傳輸?shù)淖止?jié)數(shù)·目標地址·源地址·地址遞增模式·TD 連接模式在 PSoC Creator 中打開 DMA 向?qū)?,選擇要配置的 DMA,進入第一個頁面如圖 8 所示。該界面主要配置目標和源地址的范圍。支持地址段在 SRAM,FLASH,EEPROM 中。其次是配置Burst 的字節(jié)數(shù)以及該 DMA 中的事務描述符的數(shù)量和連接關系。在完成該步驟之后,會進入下個配置界面,主要配置其他的詳細參數(shù)。如圖 9 所示。圖 9 DMA 詳細配置在圖 9 中輸入事務描述符號的參數(shù)。其中最為常用而且重要的參數(shù)包括:源地址,目標地址,地址遞增模式,以及事務描述符的連接模式。在完成該步驟之后,點擊下一步,就會生成相應的配置代碼,如圖 10 所示。圖 10 DMA 生成代碼復制上述代碼到程序的初始化模塊中,并對需要的地方進行細微的修改,就可以完成 DMA的初始化。在程序運行時,DMA 會根據(jù)請求自動把數(shù)據(jù)從源地址搬運到目標地址。3.2 DMA 應用于多通訊端口實例 DMA 的數(shù)據(jù)傳輸可以極大提高基于 PSoC3 系統(tǒng)的吞吐率。以一個系統(tǒng)為例,該系統(tǒng)通過 SPI接收別的系統(tǒng)的輸入,并通過 UART 傳送到主機系統(tǒng)中。圖 11 給出了基于傳統(tǒng) MCU 和基于PSoC3 DMA 的兩種程序流程圖進行比較(不考慮兩種傳送速率不匹配的情況)。圖 11 (a) 傳統(tǒng) MCU 設計 (b) PSoC3 DMA 的設計傳統(tǒng)的 MCU 需要初始化 SPI 和 UART 通訊模塊,并配置兩者的中斷。當 SPI 的 Buffer 滿了之后,就產(chǎn)生中斷,中斷程序首先中止新的 SPI 傳輸,然后檢測 UART 的 Buffer,如果不為空就等待舊的數(shù)據(jù)傳送完。為空之后就把 SPI 的數(shù)據(jù)復制到 TX Buffer 并打開 SPI 接收后續(xù)數(shù)據(jù)?;?PSoC3 DMA 的設計中,可以基于原理圖實現(xiàn)上述的邏輯。如圖 12 所示。當 SPI 的 Full 信號和 UART 的 Empty 信號同時有效的時候,觸發(fā) DMA 傳輸,把 SPI Buffer中的數(shù)據(jù)傳送到 UART 的 Buffer 中。不需要 CPU 的干預就能夠完成多通訊口之間的數(shù)據(jù)共享。該通訊實例只是為了表明 DMA 在多通訊端口數(shù)據(jù)傳輸中的作用。在實際的實現(xiàn)中,DMA 可以操作的通訊端口包括:·USB 的端點·UART 的 Buffer·SPI 的 Buffer·I2S 的 Buffer·其他各種自定義的通訊協(xié)議通過 DMA 可以高效的實現(xiàn)通訊接口之間的如下操作:·各通訊端口之間的數(shù)據(jù)搬移·通訊端口 Buffer 到 PSoC3 數(shù)字和模擬模塊之間的傳輸·通訊端口 Buffer 自動存放到內(nèi)存之中·內(nèi)存到通訊口的數(shù)據(jù)搬移·數(shù)字、模擬模塊到通訊口的數(shù)據(jù)搬移四、 總結Cypress PSoC3 處理器集成了多種可編程的數(shù)字模擬資源以及布線資源,以及一些專用的通訊和控制設備,可以極大地方便各種嵌入式系統(tǒng)的應用。PSoC Creator 作為 PSoC3 的開發(fā)工具,能夠提供基于原理圖,功能組件的設計模式。使得用戶能夠用簡單有效的方式來完成復雜的可編程系統(tǒng)設計。