《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 解決方案 > PSoC3 應(yīng)用于多通訊接口時(shí)的 DMA 設(shè)計(jì)

PSoC3 應(yīng)用于多通訊接口時(shí)的 DMA 設(shè)計(jì)

2011-03-22
作者:肖學(xué)軍,,張朝華

    隨著上層應(yīng)用軟件的日趨多樣化,現(xiàn)在的便攜式電子產(chǎn)品對(duì)嵌入式芯片的功能需求越來(lái)越高,,單一或僅可以局部定制的傳統(tǒng)芯片已經(jīng)不能滿足需要,。因此數(shù)字系統(tǒng)和模擬系統(tǒng)都可以根據(jù)需要靈活定制成為芯片設(shè)計(jì)、開(kāi)發(fā)的發(fā)展方向,。Cypress 為滿足業(yè)界需要繼 PSoC1 之后開(kāi)發(fā)了 PSoC3 和 PSoC5 全新可編程模擬和數(shù)字嵌入式芯片,。其中 PSoC3 使用基于單循環(huán)流水線的高性能 8051 內(nèi)核(67MHz/33MIPS),,PSoC5 則是基于 32 位 ARM Cortex-M3 的內(nèi)核(80MHz/100MIPS);兩者都內(nèi)置閃存,、SRAM,,支持片外存儲(chǔ)器訪問(wèn),在 8,、16 和 32bit 應(yīng)用中同時(shí)實(shí)現(xiàn)了高集成度和高靈活性,。本文重點(diǎn)講述了 PSoC3 在多通訊接口設(shè)計(jì)中的應(yīng)用,以及如何使用多 DMA 技術(shù)提高通訊的速度和效率,。

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

3.2 DMA 應(yīng)用于多通訊端口實(shí)例 
    DMA 的數(shù)據(jù)傳輸可以極大提高基于 PSoC3 系統(tǒng)的吞吐率,。以一個(gè)系統(tǒng)為例,,該系統(tǒng)通過(guò) SPI接收別的系統(tǒng)的輸入,并通過(guò) UART 傳送到主機(jī)系統(tǒng)中,。圖 11 給出了基于傳統(tǒng) MCU 和基于PSoC3 DMA 的兩種程序流程圖進(jìn)行比較(不考慮兩種傳送速率不匹配的情況),。
圖 11 (a)  傳統(tǒng) MCU 設(shè)計(jì)            (b) PSoC3 DMA 的設(shè)計(jì)
 
傳統(tǒng)的 MCU 需要初始化 SPI 和 UART 通訊模塊,并配置兩者的中斷,。當(dāng) SPI 的 Buffer 滿了之后,,就產(chǎn)生中斷,中斷程序首先中止新的 SPI 傳輸,,然后檢測(cè) UART 的 Buffer,,如果不為空就等待舊的數(shù)據(jù)傳送完。為空之后就把 SPI 的數(shù)據(jù)復(fù)制到 TX Buffer 并打開(kāi) SPI 接收后續(xù)數(shù)據(jù),。
 
基于 PSoC3 DMA 的設(shè)計(jì)中,,可以基于原理圖實(shí)現(xiàn)上述的邏輯。如圖 12 所示,。
當(dāng) SPI 的 Full 信號(hào)和 UART 的 Empty 信號(hào)同時(shí)有效的時(shí)候,,觸發(fā) DMA 傳輸,把 SPI Buffer中的數(shù)據(jù)傳送到 UART 的 Buffer 中。不需要 CPU 的干預(yù)就能夠完成多通訊口之間的數(shù)據(jù)共享,。
 
該通訊實(shí)例只是為了表明 DMA 在多通訊端口數(shù)據(jù)傳輸中的作用,。在實(shí)際的實(shí)現(xiàn)中,DMA 可以操作的通訊端口包括:
·USB 的端點(diǎn)
·UART 的 Buffer
·SPI 的 Buffer
·I2S 的 Buffer
·其他各種自定義的通訊協(xié)議
通過(guò) DMA 可以高效的實(shí)現(xiàn)通訊接口之間的如下操作:
·各通訊端口之間的數(shù)據(jù)搬移
·通訊端口 Buffer 到 PSoC3 數(shù)字和模擬模塊之間的傳輸
·通訊端口 Buffer 自動(dòng)存放到內(nèi)存之中
·內(nèi)存到通訊口的數(shù)據(jù)搬移
·數(shù)字,、模擬模塊到通訊口的數(shù)據(jù)搬移
 
四,、  總結(jié) 
Cypress PSoC3 處理器集成了多種可編程的數(shù)字模擬資源以及布線資源,以及一些專用的通訊和控制設(shè)備,,可以極大地方便各種嵌入式系統(tǒng)的應(yīng)用,。PSoC Creator 作為 PSoC3 的開(kāi)發(fā)工具,能夠提供基于原理圖,,功能組件的設(shè)計(jì)模式,。使得用戶能夠用簡(jiǎn)單有效的方式來(lái)完成復(fù)雜的可編程系統(tǒng)設(shè)計(jì)。
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。