国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高速SPI 接口在OSD 中的應(yīng)用

2012-08-09 08:07:40施根勇黃世震
電子器件 2012年2期
關(guān)鍵詞:寄存器時序時鐘

施根勇,黃世震

(福州大學(xué)福建省微電子集成電路重點實驗室,福州 350002)

字符疊加的全稱是視頻字符疊加,英文簡稱OSD(On Screen Display),是一種在視頻信號中疊加字符信息,使得電視圖像中疊加有字符或漢字圖形的技術(shù)。視頻字符疊加技術(shù)的應(yīng)用領(lǐng)域非常廣泛,尤其是在閉路電視安防監(jiān)控中[1],視頻字符疊加的作用更為明顯。

設(shè)計將SPI 串行總線接口應(yīng)用到OSD 顯示中,公司標(biāo)識,自定義圖片,時間與日期等符號信息存放在閃存(FLASH)里面,通過SPI 串行接口預(yù)加載OSD 信息,然后在LCD 上顯示出來,如圖1所示。

圖1 高速SPI 接口在系統(tǒng)中的位置

由于LCD 控制器的顯示格式Y(jié)UV、RGB 通常是24 bit或更多,所以SPI 控制器需要很高的帶寬來滿足LCD 的實時顯示。

1 設(shè)計任務(wù)

本文設(shè)計一個高速串行接口,連接閃存(FLASH)和屏幕顯示(OSD)控制模塊,在水平和垂直同步信號作用下,OSD 控制器通過高速串行接口從閃存(FLASH)中讀取響應(yīng)的圖形和字符點陣數(shù)據(jù),然后與輸入視頻疊加合成到輸出到LCD 顯示屏幕。

OSD 控制器如果采用320×240 的全屏顯示,需要的數(shù)據(jù)傳輸速率約320×240×30(幀)×8(bit)≈20 Mbit/s,綜合總線余量等因素的考慮,設(shè)計的SPI 串行接口速率至少應(yīng)該達到30 Mbit/s。

2 串行接口比較

UART(Universal Asynchronous Receiver/Transmitter)是一種通用串行數(shù)據(jù)總線,用于異步通信,該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計中,UART 用來與PC 進行通信,包括監(jiān)控調(diào)試器和其他器件,比如EEPROM。

I2C(Inter-Integrated Circuit)總線[2]是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,具有接口少,器件封裝形式小等優(yōu)點。

SPI(Serial Peripheral Interface)總線是Motorola公司提出的一種同步串行外設(shè)接口,主要應(yīng)用在EEPROM[3],F(xiàn)LASH,實時時鐘,AD 轉(zhuǎn)換器[4],還有數(shù)字信號處理器和數(shù)字信號解碼器之間。它是一種同步的高速、全雙工的數(shù)據(jù)通信總線,并且在芯片的管腳上只采用四根線,節(jié)約了芯片的管數(shù),同時為PCB 的布局上節(jié)省空間,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。

I2C 連線比SPI 少,但是技術(shù)實現(xiàn)上更加麻煩,而且I2C 使用上拉電阻,抗干擾能力較弱,I2C 的速度也比SPI 慢。

3 高速SPI模塊的接口信號和時序

本設(shè)計內(nèi)部接口采用AMBA 總線協(xié)議[5],增加模塊的可移植性和可復(fù)用性。SPI模塊掛在APB 總線上,通過APB 總線對SPI模塊進行狀態(tài)控制、數(shù)據(jù)讀寫、中斷處理等操作。此外,支持DMA 操作,另外還有1 根中斷請求信號線,通過配置內(nèi)部寄存器來控制中斷請求的輸出。SPI 結(jié)構(gòu)是由四條線組成[6]:串行時鐘線(SCLK)、主機輸出從機輸入線(MOSI)、主機輸入從機輸出線(MISO)和從機選擇線(SS)。SPI 是串行通訊協(xié)議模式,SCLK 提供時鐘脈沖,MOSI、MISO 則基于此脈沖完成數(shù)據(jù)傳輸。上升沿到來的時候,MOSI 上的電平將被發(fā)送到從設(shè)備的寄存器中。下降沿到來的時候,MISO 上的電平將被接收到主設(shè)備的寄存器中。設(shè)計的高速SPI模塊的接口信號如圖2所示。

圖2 高速SPI模塊的接口信號圖

協(xié)議規(guī)定了4種傳輸時序,4種時序由時鐘極性CPOL和時鐘相位CPHA 的不同值來區(qū)分。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=“0”,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI 主模塊和與之通信的外設(shè)時鐘相位和極性應(yīng)該一致。

圖3 SPI 傳輸時序

4 高速SPI模塊功能設(shè)計

4.1 模塊劃分

根據(jù)定義及SPI 的工作原理,將整個SPI IP 劃分為6個子模塊:傳輸控制模塊、時鐘分頻模塊、時鐘同步模塊、FIFO模塊、APB 接口模塊、SPI模式選擇模塊。整個SPI 控制模塊的結(jié)構(gòu)劃分如圖4所示。

圖4 高速SPI模塊架構(gòu)

4.2 各模塊設(shè)計

4.2.1 APB 接口模塊

APB 接口模塊的主要功能是地址譯碼,讀取和寫入內(nèi)部寄存器以及FIFO 控制,當(dāng)需要讀取或?qū)懭爰拇嫫鞯臅r候,將Paddr 的地址信息與寄存器的地址常量做比較,若Paddr 等于某個寄存器的地址常量,則是要對響應(yīng)寄存器進行操作。當(dāng)片選信號Psel 有效且寫入信號Pwrite,寫使能信號Penable 均有效時,將Pwdata 賦值給相應(yīng)的內(nèi)部寄存器。FIFO控制通過讀指針和寫指針來了解FIFO 內(nèi)部的狀態(tài)。為了支持ARM 的突發(fā)傳輸,對FIFO 的地址做了擴展。為了滿足高速設(shè)計,SPI FLASH 中要求命令和數(shù)據(jù)的傳輸必須在一個SPI burst(一個CS 拉低的傳輸過程)里面,設(shè)計中加長了SPI burst 的最大長度(最大27個word),這樣可以一次從FLASH 中盡可能的多讀數(shù)據(jù)。

4.2.2 時鐘分頻模塊

時鐘分頻模塊將時鐘spi_clk 分頻,產(chǎn)生內(nèi)部時鐘信號sys_clk,設(shè)計采用了兩級分頻,第一級用來n分頻,第二級用來2n分頻。

4.2.3 時鐘同步模塊

模塊中有兩個異步時鐘域,Pclk和SPI_clk,為了盡可能減少異步信號傳輸中由于亞穩(wěn)態(tài)引發(fā)的問題,設(shè)計采用兩級同步寄存器將信號同步到新的時鐘域中,如圖5所示。

圖5 同步寄存器鏈

4.2.4 FIFO模塊

FIFO模塊主要用作數(shù)據(jù)緩沖,以確保數(shù)據(jù)讀寫速度的匹配和時序的一致。由于本設(shè)計中數(shù)據(jù)吞吐量較大,為了滿足高速設(shè)計,所以定義了一個64×32的TXFIFO和一個64×32 的RXFIFO。另外采用DMA 方式傳輸,當(dāng)TXFIFO 的數(shù)據(jù)小于閾值或RXFIFO 的數(shù)據(jù)大于閾值的時候,觸發(fā)DMA 請求。由DMA模塊控制數(shù)據(jù)在內(nèi)存和SPI 間的交換,而不需要處理器核的參與,有效提高了總線的利用率。

4.2.5 傳輸控制模塊的設(shè)計

傳輸控制模塊是SPI 實現(xiàn)的核心,控制整個SPI 總線的傳輸時序,通過計數(shù)產(chǎn)生數(shù)據(jù)傳輸使能信號以及系統(tǒng)需要的狀態(tài)標(biāo)志位,通過一個狀態(tài)機來控制數(shù)據(jù)流的傳輸(圖6)。

圖6 傳輸控制模塊狀態(tài)機

初始狀態(tài)為空閑狀態(tài),當(dāng)CONREOLREG 寄存器中XCH 置1 的時候,開始數(shù)據(jù)傳輸,若傳輸過程中檢測到TXFIFO為空,則停下來等待數(shù)據(jù)填入,當(dāng)所有的數(shù)據(jù)傳輸完畢后,返回空閑狀態(tài)。

5 高速SPI模塊的仿真驗證

用Verilog HDL 語言編寫模塊代碼,為了保證RTL 代碼的正確性,對IP 的功能進行全面的仿真驗證,仿真包括功能驗證和門級仿真,功能仿真不涉及任何時序上的延時,只是單純地驗證代碼所實現(xiàn)的功能是否符合要求。門級仿真是布局布線后仿真,包含了精確的時延參數(shù)。

系統(tǒng)使用的w25x32[7]是Winbond 公司生產(chǎn)的總?cè)萘繛?2 Mbit 的SPI FLASH,一個扇區(qū)(Sector)為4 kbyte,一個塊(Block)為64 kbyte,支持扇區(qū)擦除(Sector Erase),塊擦除(Block Erase)和整片擦除(Chip Erase),支 持 頁 寫 入(Page Program,256 byte),最高時鐘可達75 MHz。

為了測試設(shè)計的正確性,我們用HDL 語言編寫了該SPI FLASH 的模型掛在驗證平臺上,編寫了Testbench模塊,包括產(chǎn)生時鐘信號,控制寄存器的配置,收發(fā)的數(shù)據(jù)和產(chǎn)生中斷等。

本設(shè)計測試的思路是將采用一次完整的FLASH 讀寫來驗證SPI 控制器的功能的完整性,F(xiàn)LASH 要求在頁寫入之前必須對將要寫入的扇區(qū)進行擦除,在執(zhí)行頁寫入和擦除命令之前必須執(zhí)行Write Enable,在執(zhí)行命令之前,先判斷FLAH 是否忙,F(xiàn)LASH 的讀寫順序如圖7所示。

圖7 FLASH 讀寫順序

主要的測試任務(wù)有:

(1)數(shù)據(jù)傳輸測試 測試啟動后寄存器的初值是否正確,對FLASH 進行擦除,頁寫入和讀測試。以及在不同的時鐘分頻數(shù)值下數(shù)據(jù)傳輸是否正確,還有不同模式下的數(shù)據(jù)發(fā)送和接收是否正確。

(2)DMA 測試,將高速SPI模塊掛入系統(tǒng)進行DMA 測試;中斷響應(yīng)測試,測試各種情況下的中斷輸出。

①數(shù)據(jù)傳輸測試

圖8~圖11 是功能仿真的局部圖。

在頁寫入,擦除和Write Status 之前必須執(zhí)行命令Write Enable,SPI 控制器將發(fā)送命令Write Enable(06h)到FLASH。

圖8 高速SPI模塊發(fā)送Write Enable 命令波形圖

圖9 高速SPI模塊發(fā)送Sector Erase 命令波形圖

擦除有Block Erase(D8h),Sector Erase(20h)和Chip Erase(C7h),圖9 是Sector Erase 的波形圖,前8 bit 傳輸?shù)氖敲?0 h,后24 bit 傳輸?shù)氖堑刂贰?/p>

圖10 高速SPI模塊頁寫入波形圖

Page program 前8 bit 發(fā)送的是命令02h,然后24 bit 發(fā)送的是地址,接下來的256個byte 發(fā)送的是將要寫入FLASH 的內(nèi)容。

圖11 高速SPI模塊讀數(shù)據(jù)波形圖

Read data 只要發(fā)送了命令(03h)和地址后,地址會自動的跳到下一個地址,這就意味著只要發(fā)送一次命令和地址,就可以一直往下讀??刂破髟O(shè)置的最大SPI burst 的長度為128個word。

②DMA 測試和中斷響應(yīng)測試

完成了高速SPI IP 的驗證后,接著將高速SPI IP 與ARM11 及DMA模塊進行整合,如圖12,驗證DMA和中斷響應(yīng)。

順利通過了功能測試,利用綜合工具Design Compiler 對RTL 代碼進行綜合,經(jīng)過對腳本約束的設(shè)定,通過DC 將控制器的時序和面積進行優(yōu)化。

圖12 驗證測試系統(tǒng)結(jié)構(gòu)

最后采用Xilinx 公司的Virtex-5 系列[8]的XC5VLX330FF1760-1 芯片進行FPGA 驗證,測試的SPI模塊的傳輸時鐘為66 MHz,測試結(jié)果表明數(shù)據(jù)傳輸?shù)膸掃_到了我們做OSD 的要求,最大數(shù)據(jù)傳輸速率可達35 Mbit/s,速度比遵循SPI 協(xié)議的同類設(shè)計得到了相當(dāng)大的改觀。

表1 SPI模塊設(shè)計比較

6 結(jié)論

實現(xiàn)了高速SPI IP 核的設(shè)計和FPGA 仿真驗證。本設(shè)計著重于高速傳輸設(shè)計,數(shù)據(jù)傳輸采用了簡潔的并串互轉(zhuǎn)結(jié)構(gòu),擴展了FIFO 的容量,一次可最大傳輸27個word,最大傳輸速率可達35 Mbit/s,在遵守SPI 協(xié)議的同類設(shè)計中是較快的了,滿足了OSD 控制模塊的高速要求,因此可以實現(xiàn)對疊加內(nèi)容的動態(tài)更新,在OSD 上做非常華麗的效果。而且是基于APB 接口的設(shè)計,更加方便靈活,便于集成。

[1]張薇.大型云鏡攝像機控制系統(tǒng)設(shè)計及實現(xiàn)[D].南京:南京理工大學(xué),2007.

[2]The I2C-BUS Specification Version2.1[S].2000.7.

[3]M95M01-R,1 Mbit Serial SPI Bus EEPROM with High Speed Clock[R].2008.7.

[4]ANALOG DEVICE 應(yīng)用筆記AN-877,通過SPI 與高速ADC 接口[R].2007.4.

[5]AMBA Specification Revision 2.0[S].ARM Limited,1999.

[6]SPI Block Guide V04.01[S].Freescale Semiconductor,Inc,2000.6.

[7]W225X16,W25X32,W25X64,SPI Flash 16M-BIT,32M-bit,and 64M-BIT Serial Flash Memory with 4KB Sectors and Dual Output SPI[S].Winbond,2007.12.

[8]Virtex-5 User Guide,XILINX[S].2007年9 月.

[9]張桂友,戴慶元.串行外圍接口SPI 功能模塊設(shè)計[J].微處理器,2009,(4):15-20.

[10]王二萍.高速可復(fù)用SPI 總線的設(shè)計與Verilog HDL 實現(xiàn)[D].河南大學(xué),2007.

猜你喜歡
寄存器時序時鐘
基于時序Sentinel-2數(shù)據(jù)的馬鈴薯遙感識別研究
基于Sentinel-2時序NDVI的麥冬識別研究
別樣的“時鐘”
古代的時鐘
Lite寄存器模型的設(shè)計與實現(xiàn)
分簇結(jié)構(gòu)向量寄存器分配策略研究*
有趣的時鐘
一種毫米波放大器時序直流電源的設(shè)計
電子制作(2016年15期)2017-01-15 13:39:08
時鐘會開“花”
DPBUS時序及其設(shè)定方法
河南科技(2014年15期)2014-02-27 14:12:36
米脂县| 兴文县| 邯郸县| 逊克县| 尚义县| 瓮安县| 梅州市| 宝坻区| 望城县| 桓仁| 伊川县| 江安县| 石阡县| 临泽县| 甘孜| 香河县| 福安市| 九江市| 宜章县| 内江市| 屏东县| 安图县| 珲春市| 依安县| 大化| 宝丰县| 疏附县| 刚察县| 石渠县| 龙井市| 阿克苏市| 尤溪县| 方山县| 屯昌县| 镇沅| 吉林市| 岳阳市| 韶关市| 垫江县| 沅陵县| 五大连池市|