《可編程片上系統(tǒng)PSOC設(shè)計指南》課件第五章 PSoC35數(shù)字子系統(tǒng)_第1頁
《可編程片上系統(tǒng)PSOC設(shè)計指南》課件第五章 PSoC35數(shù)字子系統(tǒng)_第2頁
《可編程片上系統(tǒng)PSOC設(shè)計指南》課件第五章 PSoC35數(shù)字子系統(tǒng)_第3頁
《可編程片上系統(tǒng)PSOC設(shè)計指南》課件第五章 PSoC35數(shù)字子系統(tǒng)_第4頁
《可編程片上系統(tǒng)PSOC設(shè)計指南》課件第五章 PSoC35數(shù)字子系統(tǒng)_第5頁
已閱讀5頁,還剩266頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第5章PSoC3/5數(shù)字子系統(tǒng)

Chapter5DigitalSub-SystemofPSoC3/5PSoC3/5數(shù)字子系統(tǒng)

--前言

詳細(xì)介紹了PSoC數(shù)字子系統(tǒng)的模塊及其功能,其內(nèi)容主要包括:PSoC數(shù)字可編程子系統(tǒng)概述;通用數(shù)字塊UDB;UDB陣列描述;DSI布線接口;USB總線模塊;定時器、計數(shù)器和PWM模塊;I2C總線模塊;CAN總線模塊;數(shù)字濾波器模塊等內(nèi)容。通過本章內(nèi)容的學(xué)習(xí),掌握數(shù)字可編程邏輯陣列及其外設(shè)的原理、功能和使用方法。為后續(xù)使用PSoC數(shù)字可編程邏輯陣列和相應(yīng)的外設(shè)打下良好的基礎(chǔ)。PSoC3/5數(shù)字子系統(tǒng)

--PSoC數(shù)字可編程子系統(tǒng)概述PSoC3/5的數(shù)字子系統(tǒng)為PSoC設(shè)備提供了一半的獨一無二的可配置能力。這些子系統(tǒng)通過數(shù)字系統(tǒng)互聯(lián)DSI,將來自任何外設(shè)的數(shù)字信號連接到任意引腳。它也通過小的、快速的和低功耗的通用數(shù)字塊UDB為設(shè)備提供了功能的靈活性。PSoC3/5數(shù)字子系統(tǒng)

--PSoC數(shù)字可編程子系統(tǒng)概述

PSoCCreator提供了一個預(yù)建立的,并且測試過的標(biāo)準(zhǔn)設(shè)備庫,這些庫通過工具(UART,SPI,SPI,LIN,PRS,CRC,定時器,計數(shù)器,PWM,AND,OR等)映射到UDB陣列。對于非標(biāo)準(zhǔn)的外設(shè),可以很容易的通過硬件描述語言HDL(比如Verilog)實現(xiàn)。每個UDB包含了可編程的陣列邏輯PAL和可編程的邏輯設(shè)備PLD功能,并且和小的狀態(tài)機一起支持大量不同的外設(shè)。PSoC3/5數(shù)字子系統(tǒng)

--PSoC數(shù)字可編程子系統(tǒng)概述

除了UDB陣列的靈活性外,PSoC芯片為指定功能提供了可配置的數(shù)字塊,這些塊包含16位的定時器/計數(shù)器/PWM模塊,I2C從設(shè)備/主設(shè)備/多主設(shè)備,全速的USB和CAN2.0b。下圖給出了數(shù)字子系統(tǒng)結(jié)構(gòu)圖.PSoC3/5數(shù)字子系統(tǒng)

--PSoC數(shù)字可編程子系統(tǒng)概述PSoC3/5數(shù)字子系統(tǒng)

--通用數(shù)字塊UDB

新一代的UDB在配置粒度和實現(xiàn)效率上進(jìn)行了權(quán)衡。這種方法使得能定制數(shù)字操作來滿足應(yīng)用要求。圖UDB塊圖結(jié)構(gòu)PSoC3/5數(shù)字子系統(tǒng)

--通用數(shù)字塊UDB

從圖中可以看出,UDB是由可編程邏輯PLD、結(jié)構(gòu)邏輯(數(shù)據(jù)通道)和靈活的布線資源來提供在這些元件、I/O連接和其它外設(shè)之間的互聯(lián)。比如最簡單的功能是定時器、計數(shù)器、CRC生成器、PWM、死區(qū)生成器,通信功能包括UART、SPI、I2C。在可利用資源范圍內(nèi),PLD塊及其連接性,提供了全特性的通用可編程邏輯。UDB的主要元件包括:通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))

1.PLD塊每個UDB中有兩個小的PLD。這些塊從布線陣列中提取輸入,然后生成寄存的或者組合的積之和(SoP)邏輯,這些邏輯和寄存器用于實現(xiàn)狀態(tài)機,控制數(shù)據(jù)通道的操作,條件輸入和驅(qū)動輸出。通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))

2.?dāng)?shù)據(jù)通路塊數(shù)據(jù)通路包含動態(tài)的可配置的ALU,兩個先進(jìn)先出的隊列FIFO,比較器和條件生成。

3.狀態(tài)和控制塊這些寄存器提供了一種方法,用于CPU固件和UDB操作交互和同步??刂萍拇嫫黩?qū)動內(nèi)部的布線,狀態(tài)寄存器讀內(nèi)部的布線。通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))4.時鐘和復(fù)位塊這個塊為UDB內(nèi)的每個獨立的塊提供時鐘選擇和使能,復(fù)位選擇。

5.鏈接信號

PLD和數(shù)據(jù)通道有鏈接信號,使得相鄰的模塊能被鏈接,來創(chuàng)建更高精度要求的功能。通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))6.布線通道

UDB的I/O通過可編程的開關(guān)陣列(用于連接一個UDB內(nèi)的塊和陣列中的其它UDB)被連接到布線通道。

7.系統(tǒng)總線接口每個UDB中的所有寄存器和RAM,被映射到系統(tǒng)地址空間,能被作為8和16位的數(shù)據(jù)訪問。通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))PLD模塊基本的功能是實現(xiàn)邏輯表達(dá)式,狀態(tài)機,序列器,查找表和解碼器。在最簡單的使用模型中,將PLD塊作為一個獨立運行的資源,在這個資源里綜合生成通用RTL,并且進(jìn)行映射。最普通和有效的使用模型是從PLD和數(shù)據(jù)通道的連接創(chuàng)建數(shù)字功能,在這個模型中,PLD只實現(xiàn)隨機邏輯和功能的狀態(tài)部分,而數(shù)據(jù)通道(ALU)實現(xiàn)更結(jié)構(gòu)化的元件。下圖給出了PLD12C4的結(jié)構(gòu)圖。

通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))

PLD12C4結(jié)構(gòu)圖通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))

從圖中可以看出,PLD有12個輸入,送入到8個乘積項。每個乘積項(AND功能)可以有1到12個輸入,在一個給定的乘積項里,可以選擇每個輸入真值(T)或互補(C)。乘積項然后求和(OR功能)產(chǎn)生PLD輸出。一個和可以來自1-8個乘積項。

通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))

12C4中的’C’表示OR門的寬度(在這種情況下寬度為8)是一個常數(shù)貫穿所有的輸出(而不是可變的)。這個類似PLA的結(jié)構(gòu)提供了最大的靈活性,保證了所有的輸入和輸出是可置換的,很容易通過軟件工具進(jìn)行分配。在每個UDB中有兩個12C4。通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))對于下面的邏輯表達(dá)式:

X=(A&B)|(~C&D)Y=(A&B)|(C&D)通用數(shù)字塊UDB

--PLD模塊(PLD模塊結(jié)構(gòu))PLD12C4結(jié)構(gòu)圖ABCDXYYY通用數(shù)字塊UDB

--PLD模塊(PLD宏單元)PLD的宏單元結(jié)構(gòu)如下圖所示。宏單元的輸出驅(qū)動布線陣列,輸出能被寄存或者組合。寄存模式是帶有真或取反輸入的D觸發(fā)器,在輸入高和低之間進(jìn)行切換。輸出寄存器能被設(shè)置或者復(fù)位用于初始化,或者在布線信號的控制下進(jìn)行異步操作。通用數(shù)字塊UDB

--PLD模塊(PLD宏單元)圖PLD宏單元結(jié)構(gòu)通用數(shù)字塊UDB

--PLD模塊(PLD宏單元)

在驅(qū)動布線陣列外,來自PLD的宏單元輸出映射到地址空間,作為一個8位只讀UDB工作寄存器,該寄存器能被CPU直接訪問。

圖PLD宏單元的只讀寄存器通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)圖數(shù)據(jù)通路的頂層結(jié)構(gòu)通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)

從上圖可以看到,數(shù)據(jù)通道包含一個8位單周期ALU,比較和條件產(chǎn)生邏輯。數(shù)據(jù)通路模塊優(yōu)化用于實現(xiàn)嵌入式的功能,比如定時器,計數(shù)器,積分器,PWM,PRS,CRC,移位器和死區(qū)生成器等。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)1.工作寄存器數(shù)據(jù)通道包含6個基本的工作寄存器,通過CPU或DMA訪問。下表給出工作寄存器的功能和描述。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)名字功能描述A0和A1累加器是ALU的源(source)和數(shù)據(jù)匯入端,也是比較器的源。D0和D1數(shù)據(jù)寄存器是ALU和比較器的源F0和F1FIFO是與系統(tǒng)總線基本的接口。它們是數(shù)據(jù)寄存器和累加器的數(shù)據(jù)源,它們能從累加器或ALU中捕獲數(shù)據(jù)。每個FIFO是4個字節(jié)的深度。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)2.動態(tài)數(shù)據(jù)通道配置RAM

動態(tài)配置能基于每個周期,在序列器的控制下,改變數(shù)據(jù)通道的功能和內(nèi)部的配置。這種動態(tài)的配置通過使用8字x16位的配置RAM(用于存放8個16位寬度的配置)實現(xiàn)。輸入到RAM的地址控制順序,能來自任何塊連接到UDB的布線陣列,比如:PLD邏輯、I/O引腳或者這個(其它)數(shù)據(jù)通道的輸出。

ALU執(zhí)行8種通用的功能,其中包括:遞增、遞減、加、減、邏輯與、邏輯或和邏輯異或和通過。獨立于ALU操作,也可使用下面功能:左移、右移、交換、按位或屏蔽。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)3.條件每個數(shù)據(jù)通道有兩個比較器(位屏蔽選項)。比較操作數(shù)包含兩個累加器和兩個數(shù)據(jù)寄存器(取決于配置)。其它條件包括0檢測、所有為1檢測和溢出。這些條件是數(shù)據(jù)通道基本的輸出,選擇哪個條件驅(qū)動輸出到UDB布線陣列。條件計算能與相鄰的UDB鏈接在一起來操作一個較寬的數(shù)據(jù)寬度(而不需要使用布線資源)。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)4.可變MSB

算術(shù)和移位功能的最高有效位能通過程序指定。這支持可變的CRC和PRS功能,與ALU輸出屏蔽相結(jié)合,能實現(xiàn)任意寬度的定時器,計數(shù)器和移位模塊。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)5.內(nèi)建CRC/PRS

數(shù)據(jù)通道內(nèi)建支持單周期任意寬度和任意多項式的循環(huán)冗余校驗碼CRC的計算和偽隨機序列PRS的生成。多于8位的CRC/PRS功能可以通過和PLD的結(jié)合來實現(xiàn),或者內(nèi)建鏈將其功能擴展到相鄰的UDB。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)6.輸入/輸出FIFO

每個數(shù)據(jù)通道包含兩個四字節(jié)深度的FIFO,能被獨立的配置為輸入緩沖區(qū)(系統(tǒng)總線寫到FIFO,數(shù)據(jù)通道讀FIFO),或者輸出緩沖區(qū)(數(shù)據(jù)通道寫到FIFO,系統(tǒng)總線從FIFO讀)。FIFO產(chǎn)生可選擇的狀態(tài)作為數(shù)據(jù)通道的輸出,能被驅(qū)動到布線,與序列器、中斷或DMA相互作用。下圖給出了一個FIFO的配置。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)圖一個FIFO配置通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)7.鏈接數(shù)據(jù)通道能被配置來鏈接條件和信號,比如與相鄰的數(shù)據(jù)通道的進(jìn)位和移動數(shù)據(jù)以創(chuàng)建更高精度的算術(shù)、移位、CRC/PRS功能。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)8.時分復(fù)用在過采樣或不需要高速時鐘的應(yīng)用中,數(shù)據(jù)通道中的單個ALU能有有效地和兩組寄存器和條件生成器共享。從ALU的進(jìn)位和移出數(shù)據(jù)存在寄存器中,在隨后的周期能作為輸入。這樣就在8位的數(shù)據(jù)通道上提供了16位的功能。通用數(shù)字塊UDB

--PLD模塊(數(shù)據(jù)通道模塊)9.?dāng)?shù)據(jù)通道I/O

提供了6個輸入和輸出將數(shù)據(jù)通道連接到布線矩陣。來自布線的輸入為布線通道操作所提供的配置,在每個周期內(nèi)將被執(zhí)行,同時這些來自布線的輸入也提供了串行數(shù)據(jù)的輸入。輸入能來自其它的UDB塊,其它外設(shè),芯片引腳等。到布線的輸出能來自所產(chǎn)生的條件和串行數(shù)據(jù)輸出。輸出能連接到其它的UDB塊,其它外設(shè),中斷和DMA控制器,I/O引腳等。通用數(shù)字塊UDB

--PLD模塊(狀態(tài)和控制模塊)

狀態(tài)和控制模塊的目的是用來協(xié)調(diào)CPU固件和內(nèi)部的UDB操作。

系統(tǒng)總線布線通道8位狀態(tài)寄存器(只讀)8位控制寄存器(寫/讀)

狀態(tài)和控制寄存器通用數(shù)字塊UDB

--PLD模塊(狀態(tài)和控制模塊)

通過系統(tǒng)總線寫入,控制寄存器的比特位,并且用于驅(qū)動布線陣列,這樣就提供了控制UDB處理過程的狀態(tài)。狀態(tài)寄存器是只讀的,允許UDB的狀態(tài)能被系統(tǒng)總線直接從內(nèi)部的布線中讀出。這樣就允許固件能監(jiān)視UDB處理過程的狀態(tài)。這些寄存器的每一位都是可編程連接到布線陣列中。布線如何連接取決于應(yīng)用的要求。下面給出一個使用例子。通用數(shù)字塊UDB

--PLD模塊(狀態(tài)和控制模塊)

一個控制輸入的例子是,控制寄存器的1位被分配作為功能使能位。有多種方法可以使能一個功能。其中的一種方法是控制位的輸出布線到一個或多個UDB的時鐘控制模塊,作為所選擇的UDB模塊的時鐘使能。通用數(shù)字塊UDB

--PLD模塊(狀態(tài)和控制模塊)

一個狀態(tài)例子是,一個PLD或數(shù)據(jù)通路模塊所產(chǎn)生的條件,比如“比較為真”條件被捕獲并被狀態(tài)寄存器鎖存,然后由CPU固件讀出。通用數(shù)字塊UDB

--PLD模塊(狀態(tài)和控制模塊)

一個UDB的每個子元件包含兩個PLD,數(shù)據(jù)通道,狀態(tài)和控制,同時還有時鐘選擇和控制模塊。這樣就為分配時鐘資源到UDB元件模塊和允許未使用的UDB資源被其它功能使用(最大化系統(tǒng)資源使用效率),提供了更好的粒度。PSoC3/5數(shù)字子系統(tǒng)

--UDB陣列描述

下圖給出了16個UDB的例子。除了陣列核外,在陣列的頂部和底部還有DSI布線接口,其它接口還有用于總線和時鐘分配的系統(tǒng)接口。

UDB陣列包含多個水平和垂直的布線通道,每個通道由96個線構(gòu)成。在水平/垂直交點和DSI接口的地方,線連接到UDB。PSoC3/5數(shù)字子系統(tǒng)

--UDB陣列描述

數(shù)字系統(tǒng)接口結(jié)構(gòu)PSoC3/5數(shù)字子系統(tǒng)

--UDB陣列描述

下圖給出了一個例子描述了功能如何映射到16個UDB中。UDB中包含兩個PLD,一個數(shù)據(jù)通道和一個狀態(tài)/控制寄存器。這些資源被獨立的分配,由于它們有獨立的可選時鐘,因此未使用的塊被分配給其它功能。PSoC3/5數(shù)字子系統(tǒng)

--UDB陣列描述

功能映射到UDB的例子PSoC3/5數(shù)字子系統(tǒng)

--UDB陣列描述

一個例子是陣列的左上角為一個8位的定時器。這個功能只要求UDB的一個數(shù)據(jù)通道,因此PLD資源可以分配給其它功能。一個功能比如正交解碼器需要比一個UDB所能提供PLD更多的PLD邏輯,這時候就可以使用前面沒有使用的PLD資源。在UDB陣列內(nèi)的可編程資源是同類的,所以功能能被映射到陣列中任意的邊界。PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)

DSI布線接口是在UDB陣列核頂端和底端的連續(xù)水平和垂直布線通道。

DSI在外設(shè)間提供了通用的可編程布線資源,這些外設(shè)包括UDB、I/O、模擬外設(shè)、中斷、DMA和固定功能外設(shè)。PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)圖數(shù)字系統(tǒng)互聯(lián)的例子PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)

圖出了數(shù)字系統(tǒng)互聯(lián)的例子,通過DSI將其它外設(shè)連接到UDB陣列上。任何一個需要可編程布線資源的數(shù)字核或者固定功能的外設(shè)都被連接到這個接口上。PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)

所包含的信號有:系統(tǒng)內(nèi)來自所有數(shù)字外設(shè)的中斷請求;系統(tǒng)內(nèi)來自所有數(shù)字外設(shè)的DMA請求;需要靈活的布線到I/O的數(shù)字外設(shè)的數(shù)據(jù)信號;需要連接到UDB的數(shù)字外設(shè)數(shù)據(jù)信號;連接到中斷和DMA控制器;連接到I/O引腳;連接到模擬系統(tǒng)的數(shù)字信號;PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)PSoC3/5的可編程結(jié)構(gòu)提供了靈活的中斷和DMA布線。除了眾多固定功能的外設(shè)能產(chǎn)生中斷請求信號外,UDB陣列布線資源中的任何一個數(shù)字信號能產(chǎn)生多個獨立的中斷請求信號,這樣就簡化了系統(tǒng)的設(shè)計。下圖給出了IDMUX(中斷/DMA復(fù)用器)的結(jié)構(gòu)。PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(功能)圖IDMUX的結(jié)構(gòu)PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(I/O端口布線)

總共20個的DSI連接到典型的8位I/O端口,其中的16個用于數(shù)據(jù)和4個用于驅(qū)動能力控制。下圖給出了I/O輸出引腳連接圖。來自UDB陣列數(shù)字系統(tǒng)接口的8個I/O數(shù)據(jù)輸出連接I/O引腳輸出連接PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(I/O端口布線)

當(dāng)一個I/O引腳連接到布線,這有兩個基本可用的基本連接,即一個輸入和一個輸出。與驅(qū)動能力控制一起使用,能實現(xiàn)一個雙向的I/O引腳。數(shù)據(jù)輸出可以單獨的同步(流水),數(shù)據(jù)輸入可以雙同步。下圖給出了I/O引腳的同步布線圖。

I/O引腳同步布線圖PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(I/O端口布線)

通常情況下,所有來自引腳的輸入按照要求被同步,這些信號與CPU相互作用。很少使用異步輸入,但是貫穿組合PLD邏輯的輸入與輸出使用的是異步方式。如下圖所示,這有4個多DSI到到給定的I/O端口的連接用來實現(xiàn)動態(tài)的輸出使能控制引腳。這提供了一個選擇范圍,即一個信號控制8位,到最大4個獨立控制的引腳。這些輸出使能信號用于創(chuàng)建三態(tài)雙向的引腳和總線。PSoC3/5數(shù)字子系統(tǒng)

--DSI布線接口(I/O端口布線)I/O輸出使能連接來自UDB陣列數(shù)字系統(tǒng)接口的4個I/O控制信號連接PSoC3/5數(shù)字子系統(tǒng)

--USB總線模塊

PSoCUSB作為一個USB設(shè)備和一個主機進(jìn)行通信。USB模塊作為PSoC內(nèi)的一個固定功能的設(shè)備。只支持全速通信(12Mbps),并且和USB2.0協(xié)議兼容。USB設(shè)備設(shè)計成即插即用,也支持熱插拔。PSoC3/5數(shù)字子系統(tǒng)

--USB總線模塊USB總線模塊的特點有:與USB2.0規(guī)范兼容;支持全速外設(shè),最高速率到12Mbps;支持8個數(shù)據(jù)端點和1個控制端點;支持四種類型的傳輸-塊(批量)數(shù)據(jù)傳輸,中斷傳輸,同步傳輸和控制傳輸;支持熱插拔;支持兩種類型的邏輯傳輸模式:存儲轉(zhuǎn)發(fā)模式和直通模式;差分信號(D+和D-)輸出;存儲轉(zhuǎn)發(fā)模式下支持最大的包為512個字節(jié),直通模式的同步傳輸支持最大的包為1023個字節(jié);支持P2/2和CMOS信號;操作電壓范圍為3.3V和5V;USB總線模塊

--USB模塊結(jié)構(gòu)

下圖給出了USB模塊的結(jié)構(gòu)圖,該模塊由串行接口引擎(SerialInterfaceEngine,SIE)和仲裁器構(gòu)成。圖USB模塊的結(jié)構(gòu)圖USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)

SIE用于處理譯碼,以及在發(fā)送和接收時,創(chuàng)建數(shù)據(jù)和控制包。在接收時,SIE將USB的位流解碼成USB的包;在發(fā)送時,創(chuàng)建USB的位流。下面給出了SIE的主要特性:兼容USB2.0規(guī)范;支持1個設(shè)備地址;支持8個數(shù)據(jù)端點和1個控制端點;每個端點支持中斷;在48MHz時鐘下全速運行;在控制端點集成一個8字節(jié)緩沖區(qū);USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)

這個模塊的寄存器主要用于配置數(shù)據(jù)端點操作和控制端點的數(shù)據(jù)緩沖,寄存器也控制每個端點可用的中斷。

SIE在每次傳輸結(jié)束后產(chǎn)生中斷。使用USB_SIE_INT_EN寄存器可以使能/禁止端點的中斷。通過USB_SIE_INT_SR寄存器可以得到端點的中斷狀態(tài)。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)SIE寄存器CNT0和CNT1保持著每個端點的計數(shù)值,這個計數(shù)值表示USB傳輸?shù)臄?shù)據(jù)字節(jié)的個數(shù)。在輸出(OUT)端點情況下,固件程序確定端點所能接收到的最大的字節(jié)。SIE用所接收到的字節(jié)數(shù)更新寄存器。在輸入(IN)端點情況下,它保持將要發(fā)送數(shù)據(jù)的字節(jié)數(shù)。USB_SIE_EPx_CR0寄存器保持每個端點的模式值。模式值決定了USB模塊對主機的響應(yīng)。表5給出了USB_SIE_EPx_CR0寄存器MODE位域的值。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)模式編碼SETUPINOUT描述Disable0000忽略忽略忽略忽略所有USB端點的流量NAKIN/OUT0001接受不響應(yīng)不響應(yīng)不接收IN和OUT令牌StatusOUTonly0010接受阻止檢查設(shè)置該模式時,接受一個SETUP令牌。在IN令牌的情況下,阻止;在OUT令牌的情況下,用零長度的包響應(yīng)。用于控制端點。STALLIN/OUT0011接受阻止阻止設(shè)置該模式時,接受一個SETUP令牌。在IN和OUT令牌的情況下,阻止。用于控制端點。Reserved0100忽略忽略忽略ISOOUT0101接受忽略一直同步OUTStatusINonly0110忽略TX0字節(jié)阻止設(shè)置該模式時,接受一個SETUP令牌,在OUT令牌的情況下,阻止;在IN令牌的情況下,用零長度的包響應(yīng)。用于控制端點。ISOIN0111忽略TX計數(shù)忽略同步INNAKOUT1000忽略忽略不響應(yīng)送NAK握手給OUT令牌ACKOUT(STALL=0)1001忽略忽略響應(yīng)向一個OUT令牌發(fā)出ACK握手時,SIE修改這個模式到1000。ACKOUT(STALL=1)1001忽略忽略阻止阻止OUT傳輸Reserved1010忽略忽略忽略ACKOUT-STATUSIN1011接受TX0字節(jié)響應(yīng)響應(yīng)(ACK)OUT令牌,或者為IN令牌發(fā)送零個長度的數(shù)據(jù)包。NAKIN1101忽略不響應(yīng)忽略為IN令牌送NAK握手信號ACKIN(STALL=0)1101忽略TX計數(shù)忽略當(dāng)接收到一個IN數(shù)據(jù)的ACK握手時,SIE修改這個模式到1100。ACKIN(STALL=1)1101忽略阻止忽略阻止IN傳輸Reserved1110忽略忽略忽略ACKIN-StatusOUT1111接受TX計數(shù)檢查對IN數(shù)據(jù)或者狀態(tài)OUT進(jìn)行反應(yīng)。USB總線模塊

--USB模塊結(jié)構(gòu)(串行接口引擎SIE)

SIE也報告發(fā)送錯誤,USB_SIE_EPx_CR0寄存器的比特為“err_in_txn“表示錯誤的發(fā)生。當(dāng)設(shè)置該位時,當(dāng)它接收到來自主機的其它IN令牌時,硬件自動重發(fā)相同的數(shù)據(jù)。這種重發(fā)只出現(xiàn)在存儲轉(zhuǎn)發(fā)模式下。在直通模式下,通過固件讀取該位來確定重發(fā)數(shù)據(jù)。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)模塊仲裁器用于處理端點對SRAM存儲器訪問。CPU和SIE都可以訪問SRAM存儲器.仲裁器負(fù)責(zé)處理CPU和SIE訪問SRAM的仲裁。仲裁器包含下面的模塊:SIE接口模塊;CPU接口模塊;存儲器接口;DMA引擎;仲裁邏輯;同步模塊;USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)仲裁器寄存器用于處理端點的配置,讀端點地址和寫端點地址。它也用于配置每個端點所要求的邏輯傳輸類型。每個端點支持中斷。仲裁器只有一個中斷線用于中斷控制器。仲裁器寄存器處理使能/禁止端點的中斷和保持中斷狀態(tài)。仲裁器也負(fù)責(zé)存儲器的管理(比如在數(shù)據(jù)端點共享512字節(jié)的SRAM)。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)1.SIE接口模塊該模塊負(fù)責(zé)處理和SIE模塊的所有交易。SIE從SRAM讀數(shù)據(jù),然后發(fā)送到主機。類似的,將來自主機的數(shù)據(jù)寫到SRAM中。在SIE接口登記這些請求,模塊來處理它。2.CPU接口模塊這個模塊處理和CPU的所有交易。CPU提出為每個端點讀/寫SRAM的請求。這些請求在CPU接口模塊被登記,然后由模塊來處理。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)

3.存儲器接口存儲器接口用于控制USB塊和SRAM存儲單元之間的接口。最大支持512個字節(jié)(256x16位)的存儲器容量。這是USB專用的存儲器,在USB和存儲器單元之間的所有的控制和數(shù)據(jù)線,包括:數(shù)據(jù)輸入線、數(shù)據(jù)輸出線和使能線,地址線和方向控制線,是由存儲器接口來管理的。SIE和CPU都可以請求訪問存儲器。SIE接口模塊和CPU接口模塊用來處理這些請求。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)4.DMA接口當(dāng)配置DMA后,DMA接口負(fù)責(zé)在DMA和USB之間的數(shù)據(jù)來回傳輸。這個模塊支持用于每個數(shù)據(jù)端點的DMA請求。DMA的行為取決于在配置寄存器中所配置的邏輯傳輸模式。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)5.仲裁器邏輯這是仲裁器的主要模塊。用于仲裁所有發(fā)生在仲裁器的交易。它仲裁CPU,DMA和SIE對存儲器和寄存器的訪問。這個模塊也處理存儲器管理。存儲器管理可以“手工”或者“自動”。手工模式下,固件處理讀寫地址的操作。在自動模式下,該模塊處理所有的存儲器管理。這個模塊處理緩沖區(qū)大小的分配(取決于USB_BUF_SIZE的設(shè)置)。它也處理公共存儲區(qū)域。USB總線模塊

--USB模塊結(jié)構(gòu)(仲裁器)這個模塊也處理每個端點的中斷請求,每個端點的中斷來自:DMA授權(quán)(DMAGrant)、輸入緩沖區(qū)滿、緩沖區(qū)上溢、緩沖區(qū)下溢。6.同步化模塊USB模塊使用兩個時鐘:系統(tǒng)時鐘和USB時鐘。仲裁器使用系統(tǒng)時鐘,SIE和OsClock模塊使用USB時鐘。由于這是兩個不同的時鐘,因此要求同步,這個模塊負(fù)責(zé)處理同步。USB總線模塊

--USB模塊工作條件

USB模塊的工作條件包括:工作頻率;工作電壓;收發(fā)器;下面進(jìn)行詳細(xì)的說明。USB總線模塊

--USB模塊工作條件1.工作頻率最小的時鐘頻率為24MHz,用于全速操作的USB時鐘48MHz(0.25%的誤差)。到USB的時鐘稱為clk_usb,這個時鐘來自IMOCLK,IMOCLK*2,PLL或者DSI時鐘。

USB的OsClock模塊用來確定USB包的頻率。USB總線模塊

--USB模塊工作條件2.工作電壓標(biāo)準(zhǔn)電壓范圍4.35V-5.25V;低電壓范圍3.15V-3.45V。USB使用3.3V工作電壓。該模塊使用數(shù)字電壓Vccd。支持內(nèi)部的管理器用于電壓的管理。在標(biāo)準(zhǔn)電壓圍內(nèi),電壓通過內(nèi)部的管理器調(diào)整到3.3V。

USB_USB_CR1寄存器的reg_enable將用于控制電源管理器的使用。USB總線模塊

--USB模塊工作條件3.收發(fā)器

USB模塊包括收發(fā)器。主機和USB之間使用的是差分信號。接收器接收差分信號,然后轉(zhuǎn)換為單端信號。給到

USB模塊的單端信號電壓范圍為1.55V-1.95V。發(fā)送器將單端信號轉(zhuǎn)換成差分信號,并且傳送給主機。差分信號給到“上游設(shè)備”,電壓范圍0V-3.3V。收發(fā)器也支持PS/2信號,能在0V-5V范圍內(nèi)接收/發(fā)送PS/2信號。收發(fā)器有上拉電阻支持PS/2信號。除了PS/2信號外,收發(fā)器還支持CMOS信號。使用USB_USBIO_CR1和USB_USBIO_CR2寄存器來選擇PS/2和CMOS模式。USB總線模塊

--USB模塊工作條件

能通過手工方式強迫發(fā)送器發(fā)送信號。寄存器USB_USBIO_CR0用于手工發(fā)送信號。;下面給出一個例子:

1)當(dāng)使能手工發(fā)送時,寄存器配置成發(fā)送單端0信號(即,D+和D-都為低);

2)可配置發(fā)送USB信號,USB信號有兩類:

D+低,D-高=J;D+高,D-低=K;

3)寄存器有一位用于讀取信號的電平,該位能確認(rèn)D+<D-還是D+>D-USB總線模塊

--邏輯傳輸模式PSoC的USB模塊支持兩種類型的邏輯傳輸模式,即存儲轉(zhuǎn)發(fā)和直通模式。邏輯傳輸使用每個端點的寄存器設(shè)置進(jìn)行配置。任何一種邏輯傳輸模式都支持三種數(shù)據(jù)傳輸(中斷、塊、同步)。邏輯傳輸模式是存儲器管理與DMA配置的結(jié)合。邏輯傳輸模式和USB模塊內(nèi)的數(shù)據(jù)傳輸有關(guān)(比如:為端點讀/寫SRAM存儲單元)。它并不代表設(shè)備和主機之間的傳輸方法。USB支持兩種基本的邏輯傳輸模式:存儲轉(zhuǎn)發(fā)和直通模式。表5.3給出了更詳細(xì)的USB的傳輸模式。USB總線模塊

--邏輯傳輸模式USB傳輸模式特點存儲轉(zhuǎn)發(fā)模式直通模式SRAM的使用要求更多的存儲器要求較少的存儲器SRAM的管理手工自動SRAM的共享在端點間共享512字節(jié)SRAM,通過固件共享模塊自動的為每個端點分配較少的共享存儲器。剩余的存儲器用于“公共區(qū)域”。這個公共區(qū)域可以用于傳輸。IN命令在收到IN命令前,完整的包出現(xiàn)在SRAM中只有收到SRAMIN命令時,存儲器才填充數(shù)據(jù)。當(dāng)要有足夠的可用數(shù)據(jù)時,數(shù)據(jù)送給主機(基于DMA傳輸),而不需要等待填充完整的數(shù)據(jù)USB總線模塊

--邏輯傳輸模式特點存儲轉(zhuǎn)發(fā)模式直通模式OUT命令

在OUT命令下,整個包寫到SRAM中,當(dāng)整個數(shù)據(jù)可用時,從SRAM存儲器復(fù)制到USB設(shè)備中。

等待足夠的字節(jié)(取決于DMA配置)寫到SRAM存儲器。一旦有足夠的字節(jié)時,立即從SRAM存儲器復(fù)制到USB設(shè)備中數(shù)據(jù)傳輸當(dāng)所有字節(jié)寫到存儲器里,則傳輸數(shù)據(jù)

當(dāng)足夠字節(jié)可用時,傳輸數(shù)據(jù)。不需要等待填充整個數(shù)據(jù)包DMA類型無DMA模式和手工DMA模式

只有自動DMA模式支持傳輸類型適合于中斷和塊傳輸

適合于同步傳輸USB傳輸模式USB總線模塊

--邏輯傳輸模式(存儲轉(zhuǎn)發(fā)模式)

1.非DMA訪問如圖(a)所示,給出了非DMA訪問的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了非DMA訪問的OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(存儲轉(zhuǎn)發(fā)模式)2.手工DMA訪問這個模式要求配置DMA控制器。這個模式和非DMA訪問類似,只不過是DMA執(zhí)行包的寫/讀操作。通過設(shè)置ARB_EPx_CFG寄存器的DMA_CFG位來產(chǎn)生一個端點的DMA請求。當(dāng)DMA服務(wù)被確認(rèn)和執(zhí)行(DMA_GNT),可以通過編程產(chǎn)生一個仲裁器中斷??梢允褂脝位蚨郉MA周期完成傳輸。當(dāng)每個DMA周期完成后,產(chǎn)生仲裁器中斷。類似的,當(dāng)所有的數(shù)據(jù)字節(jié)都寫到存儲器時,產(chǎn)生仲裁器中斷,同時設(shè)置IN_BUF_FULL位。USB總線模塊

--邏輯傳輸模式(存儲轉(zhuǎn)發(fā)模式)如圖(a)所示,給出了手工DMA訪問的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了手工DMA訪問的OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(直通模式)CPU編程初始化用于IN/OUT包所要求初始化緩沖區(qū)的大小,并且通知端點仲裁器模塊詳細(xì)的配置信息。塊然后控制存儲器的分配和處理所有存儲器的指針。在存儲器分配過程中,每個活動的IN端點(EP_ACTIVE和EP_TYPE寄存器設(shè)置)分配BUF_SIZE寄存器所指定的一小塊存儲空間。剩余的存儲器留下作為“公共區(qū)域”,用于其它所有的端點。USB總線模塊

--邏輯傳輸模式(直通模式)

在這種模式下,需要的存儲器是較少的,適合于全速同步傳輸,最多1023個字節(jié)。當(dāng)主機發(fā)送IN命令時,設(shè)備使用在專用存儲器區(qū)域的數(shù)據(jù)進(jìn)行響應(yīng)。同時為該EP更多的數(shù)據(jù)產(chǎn)生一個DMA請求。這個數(shù)據(jù)填充公共區(qū)域。不需要等待填充整個數(shù)據(jù)包。只等到USB_DMA_THRES_MSB和USB_DMA_THRES寄存器指定的在SRAM內(nèi)可用的數(shù)據(jù)數(shù)量,然后從公共區(qū)傳輸數(shù)據(jù)。USB總線模塊

--邏輯傳輸模式(直通模式)類似的,當(dāng)接收到一個OUT命令時,用于輸出端點的數(shù)據(jù)寫道了公共區(qū)。一旦公共區(qū)的數(shù)據(jù)數(shù)量大于USB_DMA_THRES_MSB和USB_DMA_THRES寄存器指定的在SRAM內(nèi)可用的數(shù)據(jù)數(shù)量時,仲裁器初始化到PHUB的DMA請求,并且數(shù)據(jù)寫道設(shè)備中。設(shè)備不需要等待填滿公共區(qū)。USB總線模塊

--邏輯傳輸模式(直通模式)這個模式要求配置USB_DMA_THRES_MSB和USB_DMA_THRES寄存器。類似的,必須配置PHUB寄存器用于BURSCNT的值。BURSCNT的值總是和DMA_THRES寄存器中設(shè)置的值相等。當(dāng)傳輸數(shù)據(jù)包的最后一個字節(jié)時,向PHUB發(fā)送Termin信號。除了DMA寄存器外,該模式還需要配置用于IN和OUT的BUF_SIZE寄存器,EP_ACTIVE和EP_TYPE寄存器。USB總線模塊

--邏輯傳輸模式(直通模式)如圖(a)所示,給出了直通模式下的IN(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了直通模式下OUT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(控制端點的邏輯傳輸)控制端點有一個特殊的傳輸模式。該傳輸模式不需要共享512個字節(jié)的存儲器,而是有一個專用的8字節(jié)的寄存器緩沖區(qū)。如圖(a)所示,給出了控制端點邏輯傳輸?shù)腎N(CPU寫和SIE讀)交易的流程圖。如圖(b)所示,給出了控制端點邏輯傳輸?shù)腛UT(CPU讀和SIE寫)交易的流程圖。USB總線模塊

--邏輯傳輸模式(PS/2和CMOSI/O模式)

USB收發(fā)器能發(fā)送其它信號電平。在發(fā)送器端點使用上拉電阻,能使用而外的信號電平。配置寄存器USB_USBIO_CR1和USB_USBIO_CR2得到不同的信號電平。在USBIO_CR2寄存器的”test_res”將發(fā)送器處于上拉模式。USBIO_CR1寄存器的I/O模式將使USB處理USB模式或者驅(qū)動模式。當(dāng)處于驅(qū)動模式下,禁止USB信號,DMI和DPI位用于驅(qū)動D-,D+。這兒有兩個不同的驅(qū)動模式。在CMOS驅(qū)動模式下,D+和DMI關(guān)聯(lián),D-和DPI關(guān)聯(lián)。在開漏模式下,上拉電阻起作用。在這種狀態(tài)下,當(dāng)DPI和DMI位設(shè)置為高時,D+和D-處于高阻狀態(tài)。USB總線模塊

--邏輯傳輸模式(PS/2和CMOSI/O模式)獨立于驅(qū)動模式,可以在Vdd和D+,D-之間接上拉電阻(使用p2puen位)。支持一個內(nèi)部的1.5k?的上拉電阻,通過USBIO_CR1寄存器來使用這個上拉電阻。USBIO_CR1寄存器也用來輪詢D+和D-的狀態(tài)。定時器模塊

--定時器模塊功能概述

定時器模塊提供了捕獲定時器用于確定硬件事件的時間間隔。定時器提供了一種簡單的方法來精確的確定實時事件的時序,幾乎不需要CPU的干預(yù)。定時器元件與其它模擬和數(shù)字元件一起使用來建立更復(fù)雜的外設(shè)。定時器模塊的實現(xiàn)有兩種方式:固定功能和UDB。當(dāng)布局選項使用固定模式配置定時器模塊時,定時器被放置在芯片的固定功能塊內(nèi)。當(dāng)使用固定功能的配置時,定時器為一個簡單的定時裝置,如下圖所示定時器模塊

--定時器模塊功能概述其功能包括:只有8/16位模式;在只有計數(shù)停止和/或捕獲時產(chǎn)生中斷;只在上升沿捕獲;必須運行在連續(xù)模式,不可使用觸發(fā)模式;禁止7位捕獲計數(shù)器;定時器固定功能實現(xiàn)定時器模塊

--定時器模塊功能概述

而當(dāng)使用UDB的配置時,計數(shù)器具有可配置的復(fù)雜功能,如右圖所示,其功能主要包括:8/16/24/32位分辨率;可配置的捕獲模式;4個深度的捕獲FIFO;可選的捕獲邊沿計數(shù)器;可配置的觸發(fā)和中斷;可配置的軟件/硬件使能;連續(xù)或一次運行模式;圖定時器UDB實現(xiàn)定時器模塊

--定時器模塊的應(yīng)用1.默認(rèn)的定時器如下圖所示,實時的TC輸出表示計數(shù)值是否到達(dá)了預(yù)設(shè)的停止計數(shù)值(0)。周期是可編程的,范圍為1~2**分辨率-1。默認(rèn)的捕獲功能配置成捕獲Capture輸入的上升沿。在固定功能時,只允許連續(xù)模式。

默認(rèn)定時器的波形定時器模塊

--定時器模塊的應(yīng)用2.高/低時間測量模式

定時經(jīng)常用來測量信號高和低得時間。定時器配置成使實現(xiàn)更加簡單。通過配置TriggerMode為“RisingEdge”和CaptureMode為“EitherEdge”,定時器將在周期值的第一個上升沿啟動,之后在輸入信號的每個跳變沿捕獲。

高/低時間測量模式定時器模塊

--定時器模塊的應(yīng)用

如上圖所示,只要從捕獲FIFO中讀取數(shù)據(jù),捕獲的高和低時間就可以按照下式進(jìn)行計算:高時間#1=(Period-Capture#1)*時鐘頻率;(1)低時間#2=(Capture#1-Capture#2)*時鐘頻率;(2)高時間#2=(Capture#2-Capture#3)*時鐘頻率;(3)計數(shù)器模塊

--計數(shù)器模塊功能概述

計數(shù)器模塊的實現(xiàn)有兩種方式:固定功能和UDB。當(dāng)布局選項使用固定模式配置定時器模塊時,計數(shù)器被放置在芯片的固定功能塊內(nèi)。當(dāng)使用固定功能的配置時,計數(shù)器為一個簡單的計數(shù)器,如下圖所示。計數(shù)器模塊

--計數(shù)器模塊功能概述

如右圖所示,其功能包括:8/16位計數(shù)模式;只有向下計數(shù);在復(fù)位時,重新加載和停止計數(shù);只有停止計數(shù)時,產(chǎn)生中斷。

固定功能計數(shù)器計數(shù)器模塊

--計數(shù)器模塊功能概述

而當(dāng)使用UDB的配置時,計數(shù)器具有可配置的復(fù)雜功能,其功能主要包括:8/16/24/32位的計數(shù)模式;可配置的向上、向下或者向上和向下計數(shù)模式;可選擇的比較輸出;具有使能和復(fù)位輸入來和其它元件同步;一個可選擇的捕獲輸入,在上升沿時將當(dāng)前的計數(shù)值復(fù)制到存儲區(qū)域。只要捕獲FIFO有空間,CPU可以在任何時候讀取捕獲值,而沒有時序限制。捕獲FIFO允許保存最多4個捕獲值。UDB模式下計數(shù)器實現(xiàn)計數(shù)器模塊

--計數(shù)器模塊的應(yīng)用1.默認(rèn)的計數(shù)器實現(xiàn)如下圖所示,計數(shù)器的默認(rèn)配置提供了最基本的計數(shù)功能用于在輸入時鐘上升沿簡單的增加計數(shù)值。當(dāng)復(fù)位的時候,計數(shù)器歸零。TC終止計數(shù)指示計數(shù)值是否達(dá)到了預(yù)設(shè)的計數(shù)初值。計數(shù)值的范圍:1~2**分辨率-1。

默認(rèn)計數(shù)器實現(xiàn)波形計數(shù)器模塊

--計數(shù)器模塊的應(yīng)用

比較輸出是一個實時比較器,將計數(shù)值和在比較配置所定義的值進(jìn)行比較。默認(rèn)的最大計數(shù)值為2**分辨率-1,比較的值設(shè)置為最大計數(shù)值的1/2。計數(shù)器模塊

--計數(shù)器模塊的應(yīng)用2.時鐘分頻器的實現(xiàn)如果輸入到計數(shù)器的時鐘使用了默認(rèn)的周期和比較參數(shù)設(shè)置,則比較器的輸出為50%的占空比,頻率為輸入時鐘頻率的1/256。默認(rèn)是計數(shù)值在0-127時,輸出為高,否則為低。下圖給出了時鐘分頻器的輸出波形。該分頻器的比較值設(shè)置為2,則結(jié)果是將輸入時鐘6分頻,有50%的占空比。

時鐘分頻器的實現(xiàn)波形計數(shù)器模塊

--計數(shù)器模塊的應(yīng)用3.頻率計數(shù)器的實現(xiàn)添加硬件使能功能到基本的計數(shù)器將使用戶很容易的實現(xiàn)頻率的計數(shù)功能。如果使能信號被一個未知周期的信號驅(qū)動,比如一個1KHz的信號,從00開始向上計數(shù),這樣很容易的確定輸入信號的頻率。

頻率計數(shù)器的實現(xiàn)PWM模塊

--PWM模塊概述

脈沖寬度調(diào)制模塊(PulseWidthModulator,PWM)提供了比較輸出用于產(chǎn)生單獨或連續(xù)的時序和控制信號。PWM提供了一種簡單的方法來產(chǎn)生精確的復(fù)雜實時事件。

PWM模塊可以產(chǎn)生最多兩個左/右對齊的PWM輸出,1個中心對齊或雙沿PWM輸出。

PWM輸出被雙緩沖用于避免由于運行時占空比改變所產(chǎn)生的毛刺。左對齊PWM是通常使用的PWM形式。中心對齊PWM經(jīng)常使用在AC電機控制來保證相位的對齊。雙沿PWM被優(yōu)化用于功率轉(zhuǎn)換,在功率轉(zhuǎn)換中必須調(diào)整相位。PWM模塊

--PWM模塊概述

可選的死區(qū)控制及可調(diào)的死區(qū)時間提供了互補的輸出,在每個過渡過程輸出為低?;パa輸出和死區(qū)時間經(jīng)常用在驅(qū)動半橋配置的功率器件,以避免短路對器件造成的損害。當(dāng)使能一個kill輸入時,能禁止死區(qū)輸出。PWM模塊提供了3個kill模式來支持多重應(yīng)用環(huán)境。PWM模塊

--PWM模塊概述

提供兩個硬件抖動(dither)模式用于提高PWM的靈活性。第一種抖動模式在資源或時鐘頻率不包含一個標(biāo)準(zhǔn)的實現(xiàn)時(在一個PWM計數(shù)器內(nèi)),增加2位的有效分辨率;第二種是使用數(shù)字輸入在兩個PWM輸出之間選擇其中的一個,用于在功率轉(zhuǎn)換時快速的過渡過程的響應(yīng)。

PWM模塊的實現(xiàn)有兩種方式:固定功能和UDB。當(dāng)布局選項使用固定模式配置PWM模塊時,PWM被放置在芯片的固定功能塊內(nèi)。PWM模塊

--PWM模塊概述

當(dāng)使用固定功能的配置時,其功能包括:無計數(shù)值訪問,即ReadCapture()和ReadCounter()不可用;只有一種輸出模式,無中心對齊、雙沿、抖動或兩個輸出模式;只有異步Kill模式;無觸發(fā)功能;只有連續(xù)運行模式;只有軟件使能模式;簡化的死區(qū)功能,限制在0-3死區(qū)計數(shù);當(dāng)使能死區(qū)時,簡化I/O,即TC和CMP1變成了PH1和PH2。固定功能PWM模塊圖PWM模塊

--PWM模塊概述

而當(dāng)使用UDB的配置時,計數(shù)器具有可配置的復(fù)雜功能,其功能主要包括:8/16位分辨率;多個脈沖寬度調(diào)制模式;可配置的觸發(fā)器;可配置的捕獲模式;可配置的軟件/硬件使能;可配置的死區(qū);多種Kill模式;定制的配置工具;PWM模塊

--PWM模塊概述圖UDB功能PWM模塊圖PWM模塊

--PWM輸出模式1.一個輸出一個輸出PWM只有一個輸出,該輸出由一個單獨的比較值控制。如下圖所示,波形為左對齊,比較模式設(shè)置為“大于”或者“大于或等于”;或者為右對齊,比較模式設(shè)置為“小于”或者“小于或等于”。

一個輸出的波形PWM模塊

--PWM輸出模式2.兩個輸出兩個輸出的PWM是一個默認(rèn)的配置。兩個PWM輸出使用兩個比較值獨立定義和控制。如下圖所示,每個輸出可以象一個輸出那樣左對齊或者右對齊

兩個輸出的波形PWM模塊

--PWM輸出模式3.雙沿雙沿PWM使用兩個比較輸出和兩個比較模式產(chǎn)生單個的PWM輸出。如下圖所示,最終的輸出為兩個獨立定義比較值和比較模式輸出信號的“與”。比較值、比較模式和周期值在運行時是可以設(shè)置和改變的。

雙沿輸出的波形PWM模塊

--PWM輸出模式4.中心對齊

中心對齊的PWM和其它模式的實現(xiàn)是不同的。期望的輸出要求周期計數(shù)器從0開始,計數(shù)到周期值,然后計數(shù)器遞減到0。在這種模式下,周期值是最終輸出周期的一半。在該功能中,使用單獨比較值和比較模式。下圖給出了中心對齊PWM的波形

中心對齊PWM波形PWM模塊

--PWM死區(qū)控制

死區(qū)是PWM模塊可選的配置。如下圖所示,當(dāng)死區(qū)控制使能時,兩個新的輸出ph1和ph2將出現(xiàn)在PWM模塊符號中。死區(qū)輸出作用于單獨的PWM輸出。除了兩個PWM輸出模式外其它模式,死區(qū)輸出和單獨的PWM輸出相關(guān)。在兩個輸出模式下,死區(qū)輸出只在pwm1輸出上實現(xiàn)。在所有的死區(qū)模式中,原始輸出、ph1、ph2是可用的。PWM死區(qū)控制PWM模塊

--PWM死區(qū)控制

死區(qū)能被配置成1-4個時鐘周期或者1-256。1-4個周期的配置,通過在PLD內(nèi)實現(xiàn)計數(shù)器(而不是使用數(shù)據(jù)通路)來減少資源的使用量。當(dāng)選擇1-256范圍的死區(qū)時,選擇UDB陣列內(nèi)的數(shù)據(jù)通路和必要的邏輯。I2C總線模塊

--I2C總線模塊概述I2C外設(shè)提供了同步兩線接口用來與PSoC設(shè)備進(jìn)行連接,I2C總線與Philip的I2C規(guī)范V2.1版本兼容。額外的I2C接口能通過使用UDB進(jìn)行例化。

圖I2C總線模塊圖I2C總線模塊

--I2C總線模塊概述

單主多從I2C總線結(jié)構(gòu)

當(dāng)在單板上有多個設(shè)備或者小的系統(tǒng)構(gòu)成一個網(wǎng)絡(luò)時,系統(tǒng)能被設(shè)計使用一個單主設(shè)備和多個從設(shè)備,多個主設(shè)備,或者多個主和從設(shè)備的連接。I2C總線模塊

--I2C總線模塊概述

為了減少CPU對I2C總線操作的干預(yù),I2C外設(shè)提供了特定支持。這個特定支持用于狀態(tài)檢測和幀比特位的生成。

I2C操作模式有從模式,單主模式或多主模式。從模式下,總是監(jiān)聽開始條件,用于開始發(fā)送或接收數(shù)據(jù)。在主模式下,產(chǎn)生開始和停止條件,并初始化交易。多主模式提供時鐘同步和仲裁允許總線上有多個主設(shè)備存在。如果使用主模式,不能使用從模式,模塊不產(chǎn)生中斷。

I2C接口通過DSI布線允許直接連接到任意的GPIO或者SIO引腳。I2C總線模塊

--I2C總線模塊概述I2C提供了檢測7位硬件地址的功能,而不需要CPU的干預(yù)。當(dāng)I2C7位地址匹配時,能從休眠模式中喚醒PSoC。如果要求喚醒模式,那么I2C連接被限制在兩個特殊的SIO引腳上。I2C總線模塊

--I2C總線模塊概述PSoC的I2C接口主要特性包含:主和從,發(fā)送器和接收器操作;用于低CPU開銷的字節(jié)處理;中斷或者輪詢CPU接口;支持總線速度最高為1Mbps(3.4Mbps在UDB內(nèi));7或10位尋址(10位尋址要求固件支持);支持系統(tǒng)管理總線(SystemManagementBus,SMBus)操作(通過固件支持-UDB內(nèi)支持SMBus,這種總線基于I2C總線);7位硬件地址比較;地址匹配從低功耗模式喚醒。I2C總線模塊

--I2C總線實現(xiàn)原理

I2C總線由Philips半導(dǎo)體公司(現(xiàn)在為NXP)所提供的一種簡單的方法,允許多個設(shè)備在一個總線上直接的互相通信。I2C總線特點包括:只使用兩根線:(1)串行數(shù)據(jù)(SDA);(2)串行時鐘(SCL);串行的8位數(shù)據(jù)傳輸,標(biāo)準(zhǔn)模式下最大速度為100kbps;快速模式下最大速度400kbps;快速加模式下最大速度1Mbps;高速模式下最大速度3.4Mbps。I2C總線模塊

--I2C總線實現(xiàn)原理

使用集電極開路或者開漏級,通過上拉電阻將設(shè)備連接到總線上(線“與”功能)。每個連接到總線的設(shè)備有獨一無二的地址。存在簡單的主/從關(guān)系;支持多主模式,當(dāng)兩個設(shè)備同時初始化數(shù)據(jù)傳輸時,使用沖突檢測和仲裁。I2C總線模塊

--I2C總線實現(xiàn)原理

如下圖所示,給出了一個典型的I2C總線的傳輸過程。該過程主要包含以下幾步:

I2C總線傳輸I2C總線模塊

--I2C總線實現(xiàn)原理1.主設(shè)備控制SCL線,產(chǎn)生一個開始(Start)條件,后面跟著數(shù)據(jù)字節(jié)。數(shù)據(jù)字節(jié)包含7個從設(shè)備地址和一個讀/寫(RW)位。該位設(shè)置相對于主設(shè)備的數(shù)據(jù)傳輸方向。高為讀,低為寫。2.從設(shè)備識別它的地址,并且在第9位的時間間隔內(nèi),通過將數(shù)據(jù)線拉低產(chǎn)生應(yīng)答(ACK)字節(jié)。如果從設(shè)備沒有用ACK響應(yīng)第1個字節(jié),主設(shè)備產(chǎn)生停止(Stop)條件來終止數(shù)據(jù)的傳輸。一個重復(fù)的啟動條件將用于重新的嘗試傳輸;I2C總線模塊

--I2C總線實現(xiàn)原理3.主設(shè)備發(fā)送或接收(取決RW)中間的字節(jié)。

4.當(dāng)數(shù)據(jù)傳輸結(jié)束時,主設(shè)備產(chǎn)生停止條件。當(dāng)接收設(shè)備需要時間將接收的數(shù)據(jù)存儲或者準(zhǔn)備要發(fā)送的數(shù)據(jù)時,從設(shè)備可以將SCL線拉低,這樣就使得主設(shè)備進(jìn)入等待狀態(tài)。注意有些主設(shè)備不支持這種等待方式。I2C總線模塊

--I2C總線寄存器及操作

I2C寄存器及功能寄存器功能I2C_CFG配置-基本的操作模式,過采樣率和中斷選擇I2C_XCFG配置-配置擴展特性I2C_CLK_DIV1I2C_CLK_DIV2時鐘分頻-設(shè)置波特率I2C_CSR控制/狀態(tài)-用來控制數(shù)據(jù)字節(jié)流,和在傳輸過程中跟蹤總線狀態(tài)I2C_MCSR主模式控制/狀態(tài)-實現(xiàn)I2C組幀控制和提供總線狀態(tài)I2C_ADR從設(shè)備地址-用于硬件識別從設(shè)備地址,保持7位從設(shè)備地址I2C_D數(shù)據(jù)-提供對數(shù)據(jù)移位寄存器的讀/寫訪問I2C總線模塊

--I2C總線寄存器及操作I2C總線接口的操作步驟包括:1)設(shè)置I2C_XCFG的第7位,打開I2C接口;2)按照下表,布線SDA和SCL到期望的引腳對;3)按照下表,設(shè)置寄存器I2C_CFG的第2位和I2C_CLK_DIV1和I2C_CLK_DIV2寄存器;4)使能期望的操作模式。

注:所使用的端口引腳必須配置成“開漏,驅(qū)動低”模式(模式4)。SIO引腳更適合這種應(yīng)用,這是因為SIO引腳有高電流吸收能力和過電壓容限。

引腳對端口引腳寄存器設(shè)置I2C0P12[4,5]I2C_XCFG[6]=1,I2C_XCFG[7]=0I2C1P12[0,1]I2C_XCFG[6]=1,I2C_XCFG[7]=1任何其他GPIO/SIO對可選擇I2C_XCFG[6]=0,根據(jù)選擇的引腳對設(shè)置其它DSI和GPIO寄存器I2C總線模塊

--I2C總線寄存器及操作

波特率的設(shè)置波特率=總線時鐘頻率/(時鐘分頻因子*過采樣率)I2C總線模塊

--I2C總線操作模式

I2C元件支持I2C從,主,多主和多主/從配置模式,下面將介紹這些操作模式。當(dāng)元件配置為多主/從配置時,在從和多主直接的切換是自動完成的。通常,設(shè)備在從模式,直到一個主API函數(shù)調(diào)用產(chǎn)生開始序列。硬件然后又處于從模式,直到產(chǎn)生停止序列為止,即此時轉(zhuǎn)為主模式,隨后又進(jìn)入從模式狀態(tài)。I2C總線模塊

--I2C總線操作模式

由于I2C硬件被中斷所驅(qū)動,因此要求使能全局中斷。即使這個元件要求中斷,設(shè)計者不需要添加任何代碼到中斷服務(wù)程序中(ISR)。模塊獨立于代碼而服務(wù)所有的中斷。為這個接口(在應(yīng)用程序和I2C主設(shè)備之間)分配的存儲器緩沖區(qū)是非常簡單的雙口存儲器。I2C總線模塊

--I2C總線操作模式I2C接口可以產(chǎn)生中斷的三個條件包括:1.字節(jié)傳輸完畢;2.檢測到I2C總線開始和停止條件;3.檢測到I2C總線錯誤;I2C總線模塊

--I2C總線操作模式(從模式)

從操作接口有存儲器內(nèi)的兩個緩沖區(qū)構(gòu)成。下圖給出了從緩沖區(qū)的結(jié)構(gòu)。

從緩沖區(qū)的結(jié)構(gòu)I2C總線模塊

--I2C總線操作模式(從模式)

一個是用于數(shù)據(jù)從主設(shè)備寫道從設(shè)備,另一個是保留著被主設(shè)備讀取的數(shù)據(jù)。注意這里的讀寫是從I2C主設(shè)備的角度定義的。I2C從設(shè)備的讀和寫緩沖區(qū)通過下面的命令設(shè)置:voidI2C_SlaveInitReadBuf(uint8*rdBuf,uint8bufSize);voidI2C_SlaveInitWriteBuf(uint8*wrBuf,uint8bufSize);I2C總線模塊

--I2C總線操作模式(從模式)

這些命令不分配存儲器,只是復(fù)制數(shù)組指針和大小到內(nèi)部的元件變量。由于元件不能自動地生成緩沖區(qū),所以用于緩沖區(qū)的數(shù)組必須被程序初始化??梢允褂孟嗤木彌_區(qū)用于讀寫緩沖區(qū),但是必須正確的管理數(shù)據(jù)。I2C總線模塊

--I2C總線操作模式(從模式)

上面函數(shù)的bufSize小于或者等于實際的數(shù)組大小,但不能大于指向rdBuf或者wrBuf的可用的存儲空間。任何時候,傳輸?shù)淖止?jié)可以通過調(diào)用I2C_SlaveGetReadBufSize或者I2C_SlaveGetWriteBufSize函數(shù)得到。讀寫超過緩沖區(qū)大小將引起溢出錯誤。錯誤將在從狀態(tài)字節(jié)中進(jìn)行設(shè)置,可以調(diào)用I2C_SlaveStatus得到。I2C總線模塊

--I2C總線操作模式(從模式)復(fù)位指針到數(shù)組的開始,可以調(diào)用下面的命令:voidI2C_SlaveClearReadBuf(void)voidI2C_SlaveClearWriteBuf(void)I2C多次的讀或者寫緩沖區(qū),將增加數(shù)組的索引值,直到使用清除命令。下圖給出了執(zhí)行兩個寫交易后的情況。I2C總線模塊

--I2C總線操作模式(從模式)

兩次寫交易后的情況I2C總線模塊

--I2C總線操作模式(從模式)

當(dāng)?shù)诙谓灰椎?個字節(jié)寫完后,從設(shè)備給出NAK信號,表示到達(dá)緩沖區(qū)的結(jié)尾。如果主機繼續(xù)寫,則后續(xù)交易被放棄,產(chǎn)生NAK信號。讀或?qū)懢彌_區(qū)有四個狀態(tài)位來描述信號傳輸?shù)耐瓿?,傳輸正在進(jìn)行,緩沖區(qū)溢出,傳輸錯誤。當(dāng)傳輸開始時,設(shè)置忙標(biāo)志。當(dāng)結(jié)束時,設(shè)置傳輸完成標(biāo)志,同時清除忙標(biāo)志。

I2C總線模塊

--I2C總線操作模式(從模式)下面給出這種操作模式下的一段代碼:uint8wrBuf[10];uint8userArray[10];uint8byteCnt;I2C_SlaveInitWriteBuf((uint8*)wrBuf,10);/*WaitforI2Cmastertocompleteawrite*/for(;1;)/*loopforever*/{/*WaitforI2Cmastertocompleteawrite*/if(I2C_SlaveStatus()&I2C_SSTAT_RD_CMPT){byteCnt=I2C_SlaveGetWriteBufSize();I2C_SlaveClearReadStatus();For(i=0;I<byteCnt;i++){userArray[i]=wrBuf[i];/*Transferdata*/}I2C_SlaveClearWriteBuf();}}I2C總線模塊

--I2C總線操作模式(主/多主操作模式)

主和多主操作是類似的,但有兩點例外。

1)當(dāng)操作在多主模式下,總線總是檢查是否處于忙狀態(tài),因為其它主設(shè)備可能正在和其它從設(shè)備通信。在這種情況下,程序必須等待直到當(dāng)前的操作完成,下一個開始交易啟動以前。

2)當(dāng)操作在多主模式下,可以在同一時刻兩個主設(shè)備同時啟動。如果這種情況發(fā)生的話,兩個主設(shè)備中的一個將要放開仲裁權(quán)。每個字節(jié)傳輸后,必須檢查該條件。元件將自動檢查這個條件,如果丟失仲裁權(quán),則響應(yīng)這個錯誤。I2C總線模塊

--I2C總線操作模式(主/多主操作模式)

當(dāng)工作在I2C主設(shè)備模式下,有兩個操作選項:manual和automatic。在Automatic模式,創(chuàng)建一個緩沖區(qū)來保持整個傳輸,在寫操作下,緩沖區(qū)將重新用將要發(fā)送的數(shù)據(jù)進(jìn)行填充。如果數(shù)據(jù)從從設(shè)備中讀出,分配需要最小包大小的緩沖。在自動模式下,寫一個數(shù)組字節(jié)到從設(shè)備,使用下面的函數(shù):uint8I2C_MasterWriteBuf(uint8SlaveAddr,uint8*wrData,uint8cnt,uint8mode)

其中:SlaveAddr是從設(shè)備7位的地址變量,范圍0-127。I2C總線模塊

--I2C總線操作模式(主/多主操作模式)

在自動模式下,從從設(shè)備讀一個數(shù)組的字節(jié),使用下面的函數(shù):uint8I2C_MasterReadBuf(uint8SlaveAddr,uint8*wrData,uint8cnt,uint8mode)

這兩個函數(shù)均返回狀態(tài)值。

I2C總線模塊

--I2C總線操作模式(主/多主操作模式)下面給出了寫從設(shè)備的一段代碼:I2C_MasterClearWriteStatus();/*Clearanypreviousstatus*/I2C_MasterWriteBuf(4,(uint8*)wrData,10,I2C_MODE_COMPLETE_XFER);For(;1;){if(I2C_MasterClearWriteStatus()&I2C_MSTAT_CMPLT)/*Transfercomplete*/break;}I2C總線模塊

--I2C總線操作模式(主/多主操作模式)

元件也可以工作在手工模式下,在這種模式下使用各自的命令完成寫操作的每一部分。下面給出了在手工模式下寫從設(shè)備的代碼:

I2C_MasterClearWriteStatus();status=I2C_MasterSendStart(4,I2C_WRITE_XFER_MODE);if(status==I2C_MSTAT_CMPLT)/*Checkiftransfercompletedwithouterrors*/{/*Sendarrayof5bytes*/for(i=0;i<5;i++){status=I2C_MasterWriteByte(userArray[i]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論