1 概述
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)級"可編程能力。
PSoC3中SRAM的容量最大為12KB(3個4KB塊),8051CPU和DMA控制器均可訪問SRAM.如果訪問不同的4KB塊,8051和DMA控制器可同時訪問SRAM.圖1為PSoC3訪問片上SRAM框圖。
圖1,PSoC3訪問片上SRAM
PSoC3同時也提供了外部存儲器接口(External Memory Interface, EMIF)用來連接外部的存儲器設備。它與UDB、I/O端口和其他硬件產(chǎn)生外部存儲器地址和控制信號。EMIF支持同步和異步存儲器,但在同一時刻只支持一種存儲器類型。其結構如圖2所示。
圖2,EMIF結構框圖
從圖2可以看出,CPU和DMAC都可訪問SRAM.若數(shù)據(jù)來源于其他外設比如ADC或者UDB,則數(shù)據(jù)傳輸?shù)絊RAM的速度將受到CPU或DMAC的限制。因此,在這些數(shù)據(jù)來源于外設并有傳輸速度要求的應用中,若采用EMIF可能無法滿足其要求。這時可用PSoC3的UDB實現(xiàn)SRAM的讀寫控制,以實現(xiàn)與外設數(shù)據(jù)直連。
UDB(Universal Digital Blocks)是PSoC3可編程數(shù)字系統(tǒng)的核心功能,由可編程邏輯PLD、結構邏輯(Data path)和靈活的布線資源提供在這些元件、I/O連接和其他外設之間的互聯(lián),可以創(chuàng)建各種通用外設和定制化功能。PSoC3的數(shù)字邏輯部分由多個UDB通過矩陣和可編程互聯(lián)組成,UDB結構如圖3所示。
圖3, UDB結構示意圖
2 SRAM接口模塊設計
采用PSoC3的UDB 實現(xiàn)對SRAM的讀寫,就是在PSoC3的UDB中,用Verilog語言設計PSoC3的端口時序以滿足SRAM讀寫的要求,下面以CyprESS的SRAM CY7C1069AV33為例介紹PSoC3 SRAM接口的設計過程。
1) PSoC3 與CY7C1069AV33的硬件連接。
PSoC3與CY7C1069AV33的硬件連接框圖如圖4所示:
圖4,硬件連接框圖
PSoC3的具體引腳分配如表一所示:
表一,PSoC3 SRAM控制引腳分配
2) CY7C1069AV33讀寫時序。
CY7C1069AV33是Cypress生產(chǎn)的2M Bytes 8Bit位寬的高速異步SRAM,支持高速的隨機讀寫操作。它有21根地址線A0~A20,8根數(shù)據(jù)線D0~D7以及一些控制信號線CE1、CE2、WE和OE.
圖5為CY7C1069AV33讀時序,其中置CE1=VIL,CE2=VIH,WE=VIH.
圖5, CY7C1069AV33讀時序圖
圖6為寫時序,其中置OE為低電平。
圖6, CY7C1069AV33寫時序圖
3) 基于PSoC3 UDB 的SRAM模塊設計。
在SRAM讀寫過程中,一共使用了3個主要模塊,這些模塊是在PSoC Creator中生成的。addrGen模塊是產(chǎn)生SRAM讀寫所需要的時序,包括地址線、數(shù)據(jù)線和控制信號線時序。FIFO_Unit模塊是采用PSoC3 Datapath里的數(shù)據(jù)FIFO保存從SRAM里讀過來的數(shù)據(jù),作為臨時緩沖。LatchRise模塊類似DFF觸發(fā)器,用于鎖存信號的上升沿。
這里重點介紹一下addrGen模塊在PSoC3 UDB中的Verilog設計。
模塊接口定義:
起始地址參數(shù)傳遞,在PSoC3中CPU可以通過控制寄存器來傳遞參數(shù)到UDB中。下面的示例代碼為傳遞一個21bits的起始地址到UDB中。
4) PSoC Creator中SRAM 讀寫原理圖。
圖7,讀SRAM原理圖
En_R_Reg是控制寄存器,用來啟動SRAM讀操作。地址、數(shù)據(jù)及控制信號由圖8產(chǎn)生。當讀完8bytes數(shù)據(jù)存放在Datapath的FIFO中后,F(xiàn)IFO_Unit模塊會產(chǎn)生FIFO 滿(full)信號,LatchRise將鎖存該上升沿信號并置Read_En信號為低。這時CPU可將數(shù)據(jù)從UDB的FIFO中讀出。然后再復位LatchRise模塊繼續(xù)讀SRAM操作。
圖8,SRAM地址數(shù)據(jù)產(chǎn)生原理圖
Pin_W_Din為8位外部數(shù)據(jù)輸入,當執(zhí)行讀操作時Read_En和Read_Clk有效,并置Mode_Select=1;當執(zhí)行寫操作時Pin_W_En和Pin_W_Clk有效,并置Mode_Select=0.
3 SRAM模塊測試
經(jīng)測試,該模塊工作正常,當數(shù)據(jù)從外部模塊輸入時其最高寫SRAM速度可達20MHz,用邏輯分析儀測量SRAM模塊的部分引腳信號如圖9所示:
圖9,SRAM模塊部分引腳信號圖
從上圖可以看出,輸入信號經(jīng)過PSoC3 UDB后是有些延時的,大約21ns左右。這是在去除輸入引腳的同步功能后得到的延時,輸入引腳的同步配置如圖10所示:
圖10,輸入引腳同步配置
若在輸入引腳配置上選擇"Input SynchrONized",則上面延時可能達到45ns,因此在設計時需要考慮到這些信號的延時。
來源:電子工程專輯