《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > FPGA和Nios II軟核的SD卡文件系統實現方法

FPGA和Nios II軟核的SD卡文件系統實現方法

2015-10-15
關鍵詞: FPGA SD卡文件

  摘要:利用Cyclone II系列FPGA構建了一種用于SD卡讀寫的SPI控制器,并在其上實現了一個基于Nios II軟核處理器的嵌入式文件系統。此文件系統是通過在Nios II EDS開發平臺上移植znFAT32文件系統實現的。
  關鍵詞:Cyclone II;FPGA;Nios II;SD卡;znFAT32文件系統
  引言
  在嵌入式系統或移動設備上使用SD卡,接口的構建和文件系統實現是必須解決的問題。本文探討在CycloneII平臺為基礎的嵌入式系統上,實現SD卡接口和文件系統的實現方法。
  基于FPGA IP軟核處理器的嵌入式系統,因其集成度高、可靈活配置和性價比方面的優勢,已經逐漸逼近甚至趕超采用專用集成電路(ASIC)的設計方案。
  利用Nios II可定制周邊設備的特點,在FPGA中,通過DHL編程構造出SD卡需要的SPI接口和其他控制信號的方式。在此基礎上,在Nios II處理器上實現了一個靈活的文件系統。
  基于FPGA和Nios II軟核構建SOPC嵌入式文件系統,本文所做的工作包括:Nios II處理器IP軟核的最小SOPC系統的構建,SD卡的底層扇區讀寫驅動程序的編寫方式,znFAT32文件系統的移植,以及對SD卡文件操作的實現等。
  1 基于Nios II軟核的SOPC系統構建
  1.1 SOPC系統的結構
  如圖1所示,基于NiosII的SOPC系統包括如下部分:
 

61.png

  ①系統核心模塊:Nios II處理器。
  ②處理器外圍支持電路:時鐘單元以及存儲器單元SDRAM控制器(包括存儲代碼的ROM與存儲變量的RAM)部分。
  ③程序下載調試模塊:JTAG接口控制器和異步通信接口(UART用于打印調試信息)。
  ④片上系統的內部外設模塊:諸如定時器、UART、SPI、GPIO等,這部分總的功能電路可根據需要配置,在本例的實驗驗證中,主要用到SD卡的接口是SPI。
  ⑤EPCS控制器:由于FPGA是基于RAM的結構框架,掉電后代碼會丟失。所以FPGA需要配置一個ROM在上電后將代碼加載到RAM中運行。在SOPC系統中,EPCS控制器有兩個作用,一是用來幫助EDS工具將軟件程序下載到EPCS芯片中去,二是在FPGA配置完成后引導EPCS芯片中的程序加載到SDRAM中去運行。
  1.2 Cyclone II構建SOPC系統的過程
  Altera公司為在其生產的FPGA上構建SOPC,不僅提供了各種使用的IP核模塊,還提供了極為友好的集成開發環境Quartus II。在Quartus II中,有一個工具SOPCBuilder,可以幫助用戶通過添加和配置(給出參數)IP核的方式,自動構建Verilog HDL語言硬件代碼。
  在Quartus II中,構建SOPC系統的流程如圖2所示。
  

62.png

  將需要的IP核模塊添加完成后,下一步是用Verilog HDL語言編寫頂層文件,對定制的SOPC進行例化處理(模塊之間的連接關系定義,I/O引腳的配置),編譯頂層文件和模塊IP核,才能生成在FPGA上運行的片上系統。
  在添加IP核后,SOPCBuilder可生成資源列表,本文構建的系統列表如圖3所示。
 

63.png

  在實例中使用了Nios II模塊、時鐘模塊、定時器、SDRAM模塊、EPCS模塊、UART模塊和SPI共計7個模塊。
  SOPC系統構建完成后,模塊之間信號傳遞的時序并未確定。接下來的時序設計是SOPC能否正常運行的關鍵。在片上系統生成后,首先要對系統進行時序分析,以便使系統的時序符合設計邏輯的要求,并保證系統的正常工作,必要時要對系統的時序進行適當的約束。這一工作
  可利用Quartus II軟件中內嵌的TimeQuest完成,也可以使用第三方提供的時序分析軟件,如PrimeTime軟件等來實現。
  本文采用Altera公司提供的TimeQuest來進行時序約束。經過時序約束后,對工程再編譯,可產生時序報告。通過分析時序約束報告,可對約束適當修改,這個過程可反復進行,直到滿足時序要求為止。
  2 SD卡接口協議分析與驅動程序設計
  2.1 SD卡通信接口協議分析
  SD卡一般定義了SD和SPI兩種可選的總線操作方式,本文采用SPI方式與SD卡接口,可以直接利用Quartus II中提供的SPI控制器IP核。S PI協議是面向位傳輸的同步串行通信協議。在SPI模式下,SD卡可以支持單塊與多塊的讀寫操作。
  SOPC上的SPI控制器與SD卡之間的讀寫操作過程應符合SD卡的通信協議。

64.png

  任何操作都是由SPI控制器的SD寫命令開始,SD卡在接收到一個合法命令后,將給予應答來響應,接下來便是數據塊的讀或寫操作。
  2.2 SD卡驅動層程序的編寫
  Nios II EDS是Altera公司為其Nios II處理器開發的一款C/C++語言編程軟件,其軟件架構是基于HAL(Hardware Abstraction Layer)之上的,Nios II EDS為Nios開發者提供了編程接口、底層設備驅動、HAL API,以及C標準庫等資源。更重要的是,HAL系統庫為Nios II軟件設計人員提供了應用程序與底層硬件交互的設備驅動接口,從而大大簡化了應用程序的開發。此外,HAL系統庫還為應用程序與底層硬件驅動之間劃分了一條清晰的界線,從而大大提高了應用程序的可復用性,使得應用程序不受底層硬件變化的影響。
  片上系統的SPI控制器硬件邏輯,是由SOPC Builder工具將一個SPI主控器軟核封裝到系統中的,此SPI控制器與Nios II軟核以Avalon總線相連接。SD卡的設備驅動層分為4層,包括硬件抽象層、命令層、CRC校驗層與操作函接口層,
  硬件抽象層主要實現Nios II處理器對SPI控制器相應的功能寄存器的操作。
  命令層定義了對SD卡各種操作的交互方法,包括命令碼與應答碼的定義。
  CRC校驗層主要完成校驗工作,對于命令與數據采取不同的校驗方式。命令用CRC7校驗,數據用CRC16校驗。
  操作函數接口層的作用是向znFAT32文件系統提供SD卡的所有操作,這其中包括了SD卡的初始化、扇區讀寫等函數接口(這是文件系統對SD卡進行文件操作所必需的),以供znFAT32文件系統調用。這里利用Nios IIEDS集成開發環境編寫的驅動實現SD對卡的塊讀寫(以扇區為基本單位進行讀寫操作),為SD卡掛載文件系統提供API函數。
   3 znFAT32文件系統的嵌入和SD卡的掛載
  3.1 znFAT32文件系統概述
  znFAT32是于振南為小型嵌入式設備完全獨立編寫,且開放源代碼的FAT32文件系統解決方案。znFAT32能夠支持眾多的存儲設備(SD卡、CF卡、Flash、U盤等),支持多個存儲器共同工作,可以支持同時訪問多個存儲器對文件的操作。對硬件資源要求低,能夠輕松地移植到51單片機、AVR、ARM、DSP、Nios II等處理器上,占用資源極少(僅占用800字節左右的RAM),非常適合嵌入式開發中文件系統的嵌入。其代碼完全由C語言編寫,能夠輕松閱讀,移植方便。
  文件系統代碼層——主要提供對存儲設備進行操作的各種函數。
  存儲設備接口層——主要是為了掛載不同的存儲設備。
  3.2 文件系統SD卡的掛載
  znFAT32文件系統掛載需要SD卡驅動層提供的扇區讀寫函數。將編寫的扇區讀寫函數SD_Read_Sector、SD_Write_Sector取代文件系統中的FAT32_ReadSector與FAT32_WriterSector兩個函數即可。根據需要的處理器編寫SD卡驅動程序十分重要,只有保證驅動程序的正確性,才能進行文件系統的正確掛接,才能在掛接完成后對SD卡進行文件操作。
  znFAT32文件系統的掛接需要對znFAT32文件系統提供的用于標定存儲設備的全局變量Dev_No設備號進行處理.
  對不同設備進行文件操作,需要通過設備號來選擇不同的設備驅動函數。對SD卡操作需將Dev_NO定義為SDCARD。
  4 文件系統在Nios II中的應用實例
  完成SOPC系統的創建后,在生成的Nios II系統上通過Nios II EDS編程,便可將SD卡與文件系統掛接。
  4.1 znFAT32文件系統的使用
  znFAT32文件系統為用戶提供的對文件的基本操作函數讓我們能夠輕松地對文件進行操作。下面列舉了幾個基本函數:
  通過上面的函數,可以完成對SD卡的文件讀寫、刪除、數據添加、目錄創建、文件拷貝、文件重命名等操作。
  4.2 SOPC系統對SD卡文件讀寫操作的驗證
  為了驗證上述系統能否正常實現SD卡讀寫,筆者選用了4 GB容量的金士頓SDHC卡,進行了文件讀寫實驗。圖7為Nios II EDS給出的Deb ug信息窗口。信息顯示了在構建的系統上SD卡的初始化(實現文件系統的掛接),接著讀取SD卡的存儲容量、扇區大小、每簇扇區數,并在根目錄下面打開名為TEST.TXT的文件,并對該文件的信息進行讀取。在一級子目錄下面,同樣建立一個TEST.TXT的文件,并對文件信息進行讀取。
  由運行結果可知,初始化成功并識別此SD卡為SDHC卡,容量為964 256(總簇數)×8(每簇扇區數)×512(每扇區字節數)≈3 968 860 160。根目錄下的TEXT.TXT文件被打開,打開文件成功后在DIR1子目錄下面創建TEST.TXT。由主函數創建的文件日期在TimeCreat[6]={12,1,4,17,40,28)中存放,文件成功后讀取創建的新文件的詳細信息。
  為了進一步驗證本系統對SD卡的寫入操作,筆者將此SD卡通過讀卡器與PC機連接,在PC機的文件系統下,顯示了相同的結果。
  結語
  本文通過在CycloneⅡ系列FPGA上構建SOPC系統,并在該系統上基于NiosⅡ處理器構建了SD卡文件系統。該系統以SPI接口方式與SD卡連接,文件系統是面向嵌入式系統的緊湊型開放源碼的系統。經過對SD卡的操作驗證,證明本文提供的方案具有設計靈活、集成度高、通用性強、移植性好等諸多優點。在線陣CCD數據采集實驗系統以及數控貼片控制系統上得到了很好的應用。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产二区| 久久色在线播放| 久久成人精品一区二区三区| 中文国产成人精品| 99精品久久| 亚洲黑丝在线| 亚洲国产婷婷香蕉久久久久久| 在线观看av不卡| 国产综合在线看| 国产亚洲精品bt天堂精选| 国产欧美精品va在线观看| 国产精品毛片大码女人| 国产精品久久久一区二区| 国产精品ⅴa在线观看h| 欧美体内谢she精2性欧美| 欧美日韩一区在线观看| 欧美日韩三区四区| 欧美色区777第一页| 欧美三级午夜理伦三级中文幕 | 国内精品视频在线观看| 国产在线日韩| 伊人久久亚洲影院| 亚洲激情视频在线| 一区二区三区高清不卡| 亚洲一区二区在线看| 小嫩嫩精品导航| 久久精品视频在线看| 亚洲国产小视频在线观看| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产欧美韩日| 国内成人精品一区| 亚洲国产精品成人精品| 亚洲乱码精品一二三四区日韩在线 | 一区二区三区精品在线| 亚洲欧美一区二区三区在线| 欧美专区一区二区三区| 久久综合一区| 欧美日韩亚洲综合| 国产九九精品| 亚洲国产成人久久综合一区| 夜夜嗨av一区二区三区网页| 午夜久久tv| 亚洲美女黄网| 欧美一区二区精品久久911| 久久影院午夜论| 欧美日韩国产精品一区| 国产精品一级二级三级| 激情综合在线| 一本色道久久加勒比88综合| 性欧美超级视频| 亚洲美女黄色片| 久久国产精品72免费观看| 欧美激情一区二区三区在线| 国产精品自拍视频| 亚洲国产网站| 性欧美xxxx视频在线观看| 亚洲美女诱惑| 欧美在线观看天堂一区二区三区| 欧美成人亚洲| 国产九色精品成人porny| 亚洲第一伊人| 亚洲欧美精品| 99在线热播精品免费| 久久成人精品无人区| 欧美激情自拍| 狠狠色丁香婷婷综合久久片| 一区二区三区三区在线| 亚洲国产影院| 午夜精品短视频| 欧美国产日韩一区二区在线观看 | 欧美日韩一区二区三区免费看 | 欧美专区在线| 欧美日韩四区| 韩日欧美一区二区| 一本色道88久久加勒比精品 | 亚洲国产精品一区二区久| 亚洲伊人网站| 欧美电影打屁股sp| 国产中文一区二区三区| 一区二区三区鲁丝不卡| 亚洲黄色一区| 久久国产毛片| 欧美午夜精品一区二区三区| 亚洲国产精品一区二区www在线 | 久久精品成人欧美大片古装| 亚洲欧美日韩国产中文| 欧美福利视频在线观看| 国模精品一区二区三区| 亚洲欧美国产va在线影院| 99精品久久| 欧美成人有码| 激情综合网址| 久久国产精品久久精品国产| 午夜精品久久久久久久白皮肤| 欧美久久久久久| 亚洲第一精品电影| 久久激情综合网| 亚洲欧美一区二区激情| 欧美日韩在线大尺度| 亚洲人成高清| 亚洲人成高清| 久久综合色婷婷| 狠狠色综合色区| 欧美在线短视频| 久久疯狂做爰流白浆xx| 国产精品一区二区久久久久| 一区二区三区四区五区在线| 一区二区三区日韩精品视频| 欧美日本国产精品| 亚洲高清在线观看| 亚洲国产精品一区二区三区| 久久综合成人精品亚洲另类欧美 | 影音先锋亚洲精品| 亚洲国产精品久久久久| 久久在线视频| 激情综合激情| 91久久极品少妇xxxxⅹ软件| 久久综合久久综合久久| 精品不卡一区二区三区| 亚洲国产天堂久久综合网| 美女精品在线观看| 在线观看日韩av电影| 亚洲经典三级| 欧美激情第二页| 亚洲欧洲日韩综合二区| 99成人免费视频| 欧美日韩一区在线观看| 亚洲午夜未删减在线观看| 亚洲欧美视频在线观看视频| 国产精品亚发布| 亚洲欧美国产日韩中文字幕| 欧美在线三级| 黄色成人av在线| 亚洲人精品午夜| 欧美理论在线播放| 艳女tv在线观看国产一区| 亚洲欧美日韩精品在线| 国产精品最新自拍| 欧美中文字幕在线观看| 美女黄毛**国产精品啪啪| 亚洲国产婷婷| 亚洲综合欧美| 国产日韩精品一区| 亚洲国产三级网| 欧美日韩蜜桃| 午夜激情久久久| 久久中文字幕导航| 亚洲精品欧洲精品| 先锋影音网一区二区| 国产亚洲a∨片在线观看| 亚洲黄色免费电影| 欧美三级乱码| 欧美一区二区黄| 欧美高清一区| 亚洲一区精品视频| 久久夜色精品国产欧美乱| 亚洲黄网站在线观看| 亚洲自拍偷拍一区| 韩国在线视频一区| 一本久久a久久免费精品不卡| 国产精品久久久久久福利一牛影视| 午夜精品成人在线| 男女激情久久| 一区二区欧美日韩视频| 久久精品国产2020观看福利| 亚洲第一综合天堂另类专| 亚洲香蕉在线观看| 国产主播一区二区三区四区| 日韩一区二区久久| 国产人成一区二区三区影院| 亚洲欧洲日本专区| 国产精品国产三级国产| 亚洲国产精品电影在线观看| 国产精品magnet| 亚洲国产视频直播| 国产精品久久久久久久久免费桃花| 亚洲电影欧美电影有声小说| 欧美视频免费在线| 亚洲第一久久影院| 国产精品美女午夜av| 亚洲乱码国产乱码精品精| 国产精自产拍久久久久久蜜| 日韩视频在线播放| 国产一区二区剧情av在线| 正在播放亚洲一区| 国产字幕视频一区二区| 亚洲午夜一区| 亚洲黄色免费| 久久天堂成人| 中文一区二区| 欧美激情视频免费观看| 欧美一区二区三区免费看| 欧美日韩在线视频观看| 亚洲国产成人91精品| 国产精品美女久久福利网站| 亚洲裸体视频| 在线观看日韩一区| 久久久天天操| 亚洲欧美日韩一区在线| 欧美视频第二页|