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