• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于APB 總線的SD 卡控制器IP 設(shè)計(jì)

      2013-07-20 09:40:22劉鐘宇張振華
      微處理機(jī) 2013年6期
      關(guān)鍵詞:寄存器時(shí)序時(shí)鐘

      劉鐘宇,張振華

      (中國(guó)電子科技集團(tuán)公司第四十七研究所,沈陽(yáng) 110032)

      1 引言

      由于電子產(chǎn)品的高速發(fā)展和消費(fèi)者需求,音頻、視頻多媒體技術(shù)隨之發(fā)展,數(shù)據(jù)存儲(chǔ)成為必須解決的一個(gè)主要問(wèn)題。SD 卡以其資料儲(chǔ)存量高、傳輸資料速度快、攜帶方便與安全性極佳而被廣泛應(yīng)用。隨著微電子技術(shù)的發(fā)展,多媒體技術(shù)逐漸成熟和降低成本的考慮,開(kāi)始使用專(zhuān)門(mén)的ASIC 方案,SOC(System On Chip)芯片逐漸成為主流。一般SOC 系統(tǒng)上多采用AMBA 總線,基于此我們開(kāi)發(fā)了一款A(yù)MBA-APB 總線的IP,該IP 還可以集成在FPGA系統(tǒng)中,應(yīng)用于軍事、航空航天、測(cè)試和測(cè)量、消費(fèi)類(lèi)電子、醫(yī)療等領(lǐng)域。

      通過(guò)對(duì)SD 卡協(xié)議的分析和APB 總線的研究,設(shè)計(jì)中使用SPI 方式對(duì)SD 卡進(jìn)行讀寫(xiě)操作,完成各種時(shí)序電路的設(shè)計(jì),最后掛載到ARM 系統(tǒng)的AHB—APB 總線橋上,進(jìn)行仿真,并下載到FPGA 器件中進(jìn)行驗(yàn)證,編寫(xiě)相應(yīng)的驗(yàn)證程序完成了SD 卡上塊數(shù)據(jù)的讀寫(xiě)。

      2 SD 卡特性及接口簡(jiǎn)介

      2.1 SD 卡特性

      ·容量:32MB/64MB/128MB/256MB/512MB/1Gbyte

      ·兼容規(guī)范版本1.01

      ·兩個(gè)可選的通信協(xié)議:SD 模式和SPI 模式

      ·可變時(shí)鐘頻率0-25MHz

      ·通信電壓范圍:2.0-3.6V,工作電壓范圍:2.0-3.6V

      ·低電壓消耗:自動(dòng)斷電及自動(dòng)睡醒,智能電源管理

      ·無(wú)需額外編程電壓

      ·卡片帶電插拔保護(hù)

      ·正向兼容MMC 卡

      ·高速串行接口帶隨機(jī)存取

      --支持雙通道閃存交叉存取

      --快寫(xiě)技術(shù):一個(gè)低成本的方案,能夠超高速

      訪問(wèn)閃存和高可靠數(shù)據(jù)存儲(chǔ)

      --最大讀寫(xiě)速率:10Mbyte/s

      ·數(shù)據(jù)壽命:10 萬(wàn)次編程/擦除

      2.2 設(shè)計(jì)中采用的SD 卡接口類(lèi)型定義

      該控制器的時(shí)序設(shè)計(jì),采用SPI 方式與SD 卡進(jìn)行數(shù)據(jù)傳輸,SPI時(shí)鐘極性為1,相位為1,其中SD卡在該方式下的引腳定義如表1 所示。

      表1 SPI 方式下的SD 卡引腳定義

      3 APB 總線介紹

      APB 主要用于低帶寬周邊外設(shè)之間的連接,例如UART、SPI、TIMER 等,它的總線架構(gòu)不像AHB 支持多個(gè)主模塊,在APB 里面唯一的主模塊就是APB橋。其特性包括:兩個(gè)時(shí)鐘周期傳輸;無(wú)需等待周期和回應(yīng)信號(hào);控制邏輯簡(jiǎn)單,只有四個(gè)控制信號(hào)。

      APB 上的傳輸可以用圖1 所示的狀態(tài)圖來(lái)說(shuō)明。

      圖1 狀態(tài)轉(zhuǎn)換圖

      (1)系統(tǒng)初始化為IDLE 狀態(tài),此時(shí)沒(méi)有傳輸操作,也沒(méi)有選中任何從模塊。

      (2)當(dāng)有傳輸要進(jìn)行時(shí),PSELx=1,PENABLE=0,系統(tǒng)進(jìn)入SETUP 狀態(tài),并只會(huì)在SETUP 狀態(tài)停留一個(gè)周期。當(dāng)PCLK的下一個(gè)上升沿時(shí)到來(lái)時(shí),系統(tǒng)進(jìn)入ENABLE 狀態(tài)。

      (3)系統(tǒng)進(jìn)入ENABLE 狀態(tài)時(shí),維持之前在SETUP 狀態(tài)的PADDR、PSEL、PWRITE 不變,并將PENABLE 置為1。傳輸也只會(huì)在ENABLE 狀態(tài)維持一個(gè)周期,在經(jīng)過(guò)SETUP 與ENABLE 狀態(tài)之后就已完成。之后如果沒(méi)有傳輸要進(jìn)行,就進(jìn)入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進(jìn)入SETUP 狀態(tài)。

      4 SD 卡—IP 實(shí)現(xiàn)

      該IP 能實(shí)現(xiàn)SD 卡復(fù)位、初始化、塊讀寫(xiě)操作和CID、CSD 等狀態(tài)信息讀取等。該IP是通過(guò)SPI 方式訪問(wèn)SD 卡的。SD 卡IP的接口信號(hào)如表2 所示。

      表2 IP 信號(hào)定義

      圖2 SD-IP 結(jié)構(gòu)框圖

      4.1 寄存器的讀寫(xiě)

      當(dāng)APB 總線對(duì)寄存器進(jìn)行寫(xiě)操作時(shí),從圖3APB的寫(xiě)時(shí)序來(lái)分析,需要PWRITE=1,PSEL=1,PENABLE=1,則寫(xiě)信號(hào)可以表示為APB_WRITE=PWRITE & PSEL & PENABLE;要寫(xiě)入的寄存器地址由PADDR 來(lái)做譯碼進(jìn)行選擇,寫(xiě)入的數(shù)據(jù)為PWDATA。

      當(dāng)APB 總線對(duì)寄存器進(jìn)行讀操作時(shí),從APB的讀時(shí)序圖來(lái)分析,需要PWRITE=0,PSEL=1,PENABLE=1,則寫(xiě)信號(hào)可以表示為APB_WRITE=~PWRITE & PSEL & PENABLE;要讀出的寄存器地址由PADDR 來(lái)做譯碼進(jìn)行選擇,讀出的數(shù)據(jù)為PRDATA,通過(guò)APB 總線橋傳輸?shù)紺PU AHB 總線的HRDATA。

      圖3 APB 寫(xiě)時(shí)序圖

      圖4 APB 讀時(shí)序圖

      基于以上時(shí)序分析,讀寫(xiě)信號(hào)的邏輯設(shè)計(jì)如圖5 所示。

      圖5 APB 讀寫(xiě)控制信號(hào)

      4.2 分頻模塊設(shè)計(jì)

      分頻時(shí)鐘為SD_CLK,該時(shí)鐘主要是與外部的SD 卡進(jìn)行SPI 通信,完成數(shù)據(jù)的讀和寫(xiě)兩個(gè)過(guò)程。模塊輸入時(shí)鐘為PCLK,復(fù)位信號(hào)為PRESETn,8 位分頻寄存器的值SDIPRE,輸出信號(hào)則為SD_CLK,頻率值為:PCLK/2/(SDIPRE+1)。

      設(shè)計(jì)思想是在PCLK時(shí)鐘驅(qū)動(dòng)下進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器等于SDIPRE時(shí),狀態(tài)個(gè)數(shù)或時(shí)鐘個(gè)數(shù)為SDIPRE+1,此時(shí)輸出信號(hào)SD_CLK 進(jìn)行翻轉(zhuǎn);翻轉(zhuǎn)兩次則形成一個(gè)周期,從而得到所要求的分頻值PCLK/2/(SDIPRE+1)。

      另外需要考慮以下這種情況,當(dāng)前SDIPRE 設(shè)定值為200,內(nèi)部計(jì)數(shù)器會(huì)出現(xiàn)0-200的任意一個(gè)值,假設(shè)當(dāng)前值為13,此時(shí)通過(guò)APB 總線設(shè)置SDIPRE=10,則需要187個(gè)時(shí)鐘周期才能再次使計(jì)數(shù)器和SDIPRE相等,也即SD_CLK 才能發(fā)生動(dòng)作,然后才開(kāi)始按照設(shè)定值進(jìn)行工作。為實(shí)現(xiàn)設(shè)置SDIPRE 以后立刻按照所設(shè)定的周期產(chǎn)生SD_CLK,使用一個(gè)比較器,當(dāng)計(jì)數(shù)器值大于或等于SDIPRE時(shí),SD_CLK 即發(fā)生翻轉(zhuǎn),實(shí)現(xiàn)工作頻率的立即變換。該模塊的結(jié)構(gòu)設(shè)計(jì)見(jiàn)圖6。

      4.3 FIFO 設(shè)計(jì)

      CPU 在與SD 卡通信過(guò)程中,數(shù)據(jù)傳輸都是以塊操作來(lái)完成,數(shù)據(jù)量比較大,并且SD 卡接收時(shí)序比較慢,對(duì)于工作在AHB 總線上的CPU 來(lái)說(shuō),進(jìn)行單個(gè)數(shù)據(jù)交換會(huì)大大影響系統(tǒng)的工作效率,因此在設(shè)計(jì)上加入了發(fā)送FIFO 和接收FIFO,這樣解決了異步傳輸,快速和慢速設(shè)備之間的數(shù)據(jù)交接。

      圖6 分頻模塊結(jié)構(gòu)

      這兩塊FIFO 除了接口上信號(hào)不同外,內(nèi)部都一樣,只是被例化成兩個(gè)不同的模塊。FIFO 大小設(shè)計(jì)成64/4byte,有滿、半滿,空和半空標(biāo)志,因此可以通過(guò)中斷使能的開(kāi)啟,產(chǎn)生中斷信號(hào)int_sd 快速與CPU 進(jìn)行協(xié)調(diào)。FIFO 設(shè)計(jì)的關(guān)鍵點(diǎn)也是這幾個(gè)信號(hào)的產(chǎn)生,以發(fā)送FIFO為例,寫(xiě)入端:時(shí)鐘為PCLK,寫(xiě)入使能winc是通過(guò)PSEL 與所分配的APB地址譯碼相與來(lái)產(chǎn)生。

      FIFO的設(shè)計(jì)框圖見(jiàn)圖7。主要由寫(xiě)地址產(chǎn)生模塊wr_ptr、讀地址產(chǎn)生模塊rd_ptr、FIFO 滿空標(biāo)志產(chǎn)生模塊status 和一個(gè)雙端口存儲(chǔ)器組成。讀寫(xiě)地址采用格雷碼設(shè)計(jì),并使用最高兩位來(lái)產(chǎn)生空還是滿的方向走勢(shì)。

      4.4 SD 卡接口時(shí)序設(shè)計(jì)

      SD-Card-Controller的讀寫(xiě)時(shí)序由圖8 幾個(gè)狀態(tài)組成,在不同狀態(tài)下完成不同的時(shí)序,詳細(xì)時(shí)序見(jiàn)MMC 卡控制時(shí)序圖。該模塊具有初始化、復(fù)位、CSD 和CID 信息的讀取,BLOCK的讀和寫(xiě)功能,主要完成在適當(dāng)時(shí)間,通過(guò)SPI時(shí)序?qū)懭朊?、?shù)據(jù)或讀出各種信息和數(shù)據(jù),該過(guò)程中產(chǎn)生FIFO 讀時(shí)序、寫(xiě)時(shí)序和相關(guān)寄存器的訪問(wèn)。

      圖7 FIFO 模塊結(jié)構(gòu)

      圖8 狀態(tài)機(jī)跳轉(zhuǎn)圖

      該狀態(tài)機(jī)根據(jù)不同的寄存器命令和如下代碼中的信號(hào),進(jìn)行各個(gè)狀態(tài)之間的跳轉(zhuǎn)。該狀態(tài)機(jī)設(shè)計(jì)采用三段式,其組合邏輯部分也即狀態(tài)跳轉(zhuǎn)部分Verilog 代碼如下:

      5 IP的FPGA 驗(yàn)證

      該IP的驗(yàn)證主要通過(guò) ARM9 內(nèi)核外接AHB2APB-Briage 來(lái)產(chǎn)生APB時(shí)序,并外接程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,具體驗(yàn)證結(jié)構(gòu)如圖9 所示。

      圖9 SD-IP的FPGA 驗(yàn)證結(jié)構(gòu)

      FPGA 采用Altera的EP3SL1150C2。首先在ADS 下編寫(xiě)測(cè)試程序,對(duì)寄存器進(jìn)行訪問(wèn),保證能夠讀寫(xiě),然后正確配置寄存器并通過(guò)FIFO 進(jìn)行數(shù)據(jù)讀寫(xiě),根據(jù)FIFO 產(chǎn)生的中斷標(biāo)志和狀態(tài)寄存器的兩種查詢方式,對(duì)SD-Card 進(jìn)行塊讀寫(xiě)操作。數(shù)據(jù)的讀寫(xiě)正確性采用交叉驗(yàn)證的方式,通過(guò)單片機(jī)在SD 卡上寫(xiě)入一頁(yè)數(shù)據(jù),通過(guò)下面的系統(tǒng)讀取該區(qū)域的數(shù)據(jù);然后以該系統(tǒng)架構(gòu)執(zhí)行程序在SD 卡上寫(xiě)入一頁(yè)數(shù)據(jù),再通過(guò)單片機(jī)讀出數(shù)據(jù),經(jīng)過(guò)多次讀寫(xiě)數(shù)據(jù)反復(fù)驗(yàn)證,該模塊都能正常工作。驗(yàn)證過(guò)程中使用嵌入在QuartusII 中的SignalTapII Logic Analayzer 對(duì)關(guān)鍵信號(hào)采集波形,其中圖10為CID信息的讀取波形。信號(hào)SPI_DIN是輸入到SD 卡的串行數(shù)據(jù),從波形來(lái)看SPI_CS 變低以后,其輸出命令為4AH,接著4個(gè)00H,最后產(chǎn)生一個(gè)CRC 校驗(yàn)數(shù)據(jù),SPI_DOUT為SD 卡返回的信息。

      圖10 讀取CID的時(shí)序波形

      6 結(jié)束語(yǔ)

      該IP的設(shè)計(jì)思想主要是參考三星S3C2410 中的SDIO 應(yīng)用資料,測(cè)試分析之后進(jìn)行結(jié)構(gòu)設(shè)計(jì),經(jīng)過(guò)仿真驗(yàn)證與設(shè)計(jì)規(guī)范相符合。目前接口為APB形式,并通過(guò)FPGA 驗(yàn)證,可以進(jìn)行頁(yè)寫(xiě)入、讀出和相關(guān)信息(CID、CSD)的讀取。今后可以根據(jù)實(shí)際需要更改成各種類(lèi)型的接口,嵌入到FPGA 或ASIC芯片等需要進(jìn)行大量數(shù)據(jù)存儲(chǔ)的系統(tǒng)中。

      [1]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,1997.

      [2]袁俊泉.Verilog HDL 數(shù)字系統(tǒng)設(shè)計(jì)及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2002.

      [3]Steve Furber.ARM SoC 體系結(jié)構(gòu)[M].田澤,于敦山,盛世敏,譯.北京:北京航空航天大學(xué)出版社,2002.

      猜你喜歡
      寄存器時(shí)序時(shí)鐘
      時(shí)序坐標(biāo)
      基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
      別樣的“時(shí)鐘”
      古代的時(shí)鐘
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      有趣的時(shí)鐘
      一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
      電子制作(2016年15期)2017-01-15 13:39:08
      時(shí)鐘會(huì)開(kāi)“花”
      DPBUS時(shí)序及其設(shè)定方法
      河南科技(2014年15期)2014-02-27 14:12:36
      唐河县| 钦州市| 荃湾区| 绍兴县| 汾阳市| 新昌县| 葫芦岛市| 中西区| 昌黎县| 清水县| 秦皇岛市| 紫云| 塘沽区| 乐安县| 社旗县| 綦江县| 韶关市| 凤城市| 绿春县| 同德县| 宣威市| 团风县| 惠安县| 苍山县| 孙吴县| 鹿泉市| 湖口县| 东港市| 丰城市| 社旗县| 深水埗区| 山西省| 闻喜县| 丰镇市| 赤峰市| 濮阳市| 富民县| 西充县| 沁源县| 玛曲县| 勐海县|