• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    高速SPI 接口在OSD 中的應用

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

    施根勇,黃世震

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

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

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

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

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

    1 設計任務

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

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

    2 串行接口比較

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

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

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

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

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

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

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

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

    圖3 SPI 傳輸時序

    4 高速SPI模塊功能設計

    4.1 模塊劃分

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

    圖4 高速SPI模塊架構

    4.2 各模塊設計

    4.2.1 APB 接口模塊

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

    4.2.2 時鐘分頻模塊

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

    4.2.3 時鐘同步模塊

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

    圖5 同步寄存器鏈

    4.2.4 FIFO模塊

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

    4.2.5 傳輸控制模塊的設計

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

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

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

    5 高速SPI模塊的仿真驗證

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

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

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

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

    圖7 FLASH 讀寫順序

    主要的測試任務有:

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

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

    ①數(shù)據傳輸測試

    圖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 的內容。

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

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

    ②DMA 測試和中斷響應測試

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

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

    圖12 驗證測試系統(tǒng)結構

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

    表1 SPI模塊設計比較

    6 結論

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

    [1]張薇.大型云鏡攝像機控制系統(tǒng)設計及實現(xiàn)[D].南京:南京理工大學,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 應用筆記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 功能模塊設計[J].微處理器,2009,(4):15-20.

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

    猜你喜歡
    寄存器時序時鐘
    時序坐標
    基于Sentinel-2時序NDVI的麥冬識別研究
    別樣的“時鐘”
    古代的時鐘
    Lite寄存器模型的設計與實現(xiàn)
    計算機應用(2020年5期)2020-06-07 07:06:44
    分簇結構向量寄存器分配策略研究*
    有趣的時鐘
    一種毫米波放大器時序直流電源的設計
    電子制作(2016年15期)2017-01-15 13:39:08
    時鐘會開“花”
    DPBUS時序及其設定方法
    河南科技(2014年15期)2014-02-27 14:12:36
    陇川县| 濮阳市| 秦安县| 麻栗坡县| 临西县| 神池县| 万载县| 册亨县| 台南市| 津南区| 富川| 临安市| 青海省| 云和县| 进贤县| 咸丰县| 大名县| 海伦市| 泌阳县| 大埔县| 綦江县| 抚松县| SHOW| 眉山市| 威远县| 马关县| 青州市| 北海市| 苍梧县| 福鼎市| 丽水市| 屯门区| 桐庐县| 密山市| 桐乡市| 灵山县| 甘德县| 盖州市| 尼木县| 五河县| 丁青县|