吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用VHDL實現Flash讀寫控制器設計

FPGA之家 ? 來源:FPGA之家 ? 2023-08-03 09:34 ? 次閱讀

首先拋出重點:使用Xilinx的平臺,最大的難點在于,要自己設計一個Flash讀寫控制器

具體如何設計一個合適的Flash讀寫控制器,鑒于Flash有諸多型號諸多接口,設計需求也不盡相同,所以這里不詳細論述了。文本討論一些與Xilinx FPGA相關的、大概率會遇到的問題。

這個Xapp的附件中,有一個用VHDL實現的Flash讀寫控制器設計可以參考。設計提供了源代碼。

關于這一篇,xapp1081,有幾點需要注意:

1.這一篇文檔的重點不是Flash讀寫控制器,提供的Flash讀寫控制器代碼在文檔中沒有詳細說明。

2.提供的Flash讀寫控制器只針對文檔中提到的特定用法。如果有更換FPGA、Flash等任何改變,均不保證能正常工作。

3.Xilinx默認對Xapp不提供任何官方支持。

自行設計Flash讀寫控制器的優勢是:

1.理論上可以通過修改設計來支持任何Flash,不用擔心兼容問題。

2.在時鐘、數據位寬、Flash操作命令等方面更靈活,可以充分挖掘FPGA和Flash的潛力。

假設已經有了Flash讀寫控制器的RTL設計,下一步應該是集成到FPGA設計中,其中主要的工作是連接FPGA I/O。

Pin安排

對于Xilinx的平臺的配置Pin,一般分為兩類,專用和復用。專用Pin是指只能用于配置模式,用戶無法(或者不方便)直接控制Pin的行為。復用Pin是指加載完成之后,這個Pin會變為User I/O,即和普通的User I/O一樣,可以由加載后的FPGA設計來控制Pin的行為。

控制Flash的配置Pin,基本都是復用類型Pin。在配置完成之后,都可以作為用戶可控的User I/O。所以可以設計一個Flash讀寫控制器,連接到這些Pin上。這樣FPGA在加載之前和加載的過程中,這些Pin工作在配置模式,從Flash中讀取配置數據;在加載完成之后,這些Pin變為User I/O模式,由讀寫控制器設計控制進行讀寫操作。

需要注意的是配置時鐘的處理。部分FPGA的CCLK是復用模式,加載完成之后可以作為User I/O。內部通過ODDR輸出時鐘即可提供Flash需要的時鐘。但是另外一部分FPGA的CCLK是專用Pin,用戶無法直接控制。這個時候可以查查是否有STARTUP這個模塊,往這個模塊的 USRCCLKO Port上送某個時鐘,就等于CCLK Pin上輸出這個時鐘。

5113c3c2-3199-11ee-9e74-dac502259ad0.jpg

假設現在Flash讀寫控制器已經集成到FPGA中了,數據的握手傳輸也完成了。那么下一步,就是,把什么數據往Flash中寫入了。

這個問題Xilinx的處理就方便多了。最簡單的方案,是寫入bin文件。不過即使是bin文件,也可能會犯錯。下面分析一下Xilinx的配置文件。

Xilinx常用的配置文件格式有三個(大部分情況下知道這三個就足夠了):bit/bin/mcs

直接寫入Flash的數據,對應的是bin文件。bin文件和bit文件都是二進制格式,bin文件直接對應Flash中的二進制數據。

下面用A7 100T為例子,生成一個bit文件作為基準。分析一下三種文件。

默認的情況下沒有任何約束,生成的bit文件作為基準,取名為original.bit。

在Vivado工程生成bit的同時,可以同時生成一個bin文件,取名original.bin。

另外,當獲取bit文件之后,可以使用write_cfgmem命令來生成bin文件和MCS文件。這種方法生成的bin文件,在默認情況下,取名g.bin,可以發現g.bin和original.bin兩個文件不太一樣。不過如果在使用write_cfgmem命令時添加參數 -interface SPIx1,生成文件spix1.bin,會發現spix1.bin和original.bin兩個文件幾乎一樣。

這個原因就是,write_cfgmem這個命令生成的文件是給Flash使用的。所以生成的文件內容會隨著Flash配置的改變而改變。

默認情況下,生成的bit文件original.bit是原始文件,伴隨生成的bin文件original.bin是直接轉為bin文件,不包含針對Flash的配置。

而write_cfgmem生成的bin文件,默認情況下認為Flash接口格式為SMAPX8(可以參考同時生成的.prm文件),所以生成的bin文件g.bin做了相關處理(一般是位序和大小端的轉換)。而SPI模式下,不需要額外的轉換,所以生成的bin文件spix1.bin和original.bin幾乎一樣。

類似,如果選擇BPIx8模式生成BPIx8.bin,可以發現和SMAPX8模式下的g.bin文件幾乎一樣。

所以可以明確,生成bit文件時生成的bin文件并不含有配置的相關信息。如果需要使用bin文件,那么用write_cfgmem,并同時提供相關配置接口信息,是更好的方案。上文提到的使用bin文件時可能會犯錯,就在于此。

至于MCS文件,由于是文本格式,所以直接讀取文件的數據是無法直接寫入Flash的,需要進行一定程度的轉換。如果僅僅是遠程更新中燒錄Flash的操作,那么可能用不到這個MCS文件。

注:三種文件雖然是在Vivado平臺下進行討論。由于配置文件的內容,應該與工具無關而和器件相關,所以ISE環境下的原理是一樣的,只是生成各個文件的操作步驟有不同而已。ISE工程生成bit文件后,使用Impact工具進行文件的轉換。

另外,寫入Flash時需要注意:

1.Flash需要先擦除再寫入。

2.寫入可能遇到大小端的問題,比較簡單的方法就是先試一下,如果不行,數據大小端改換一下再進行嘗試。

3.對于7系列及以后的芯片,基本上都是從0地址開始寫入Flash即可。Spartan-6可能其實位置不是0地址,需要查看文檔確認一下。

到此,Xilinx平臺下遠程更新的Flash讀寫控制方案已經基本介紹完了。更多配置的細節,可以參考相關FGPA的配置文檔,例如7系列是UG470。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605996
  • 控制器
    +關注

    關注

    112

    文章

    16445

    瀏覽量

    179446
  • FlaSh
    +關注

    關注

    10

    文章

    1642

    瀏覽量

    148665
  • Xilinx
    +關注

    關注

    71

    文章

    2171

    瀏覽量

    122129
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59948

原文標題:Xilinx平臺遠程更新中FPGA讀寫Flash設計的討論

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于FPGA的SPI Flash控制器的設計方案

    Flash讀寫硬件實現方案,該方案利用硬件對SPI Flash進行控制,能夠非常方便地完成Flash
    發表于 09-24 09:12 ?6210次閱讀
    基于FPGA的SPI <b class='flag-5'>Flash</b><b class='flag-5'>控制器</b>的設計方案

    基于FPGA的SPI Flash控制器的設計方案

    Flash讀寫硬件實現方案,該方案利用硬件對SPI Flash進行控制,能夠非常方便地完成Flash
    發表于 06-03 10:13

    直流步進電機控制器實例(VHDL源代碼)

    直流步進電機控制器實例(VHDL源代碼):步進電機控制器.vhd,直流電機控制器.vhd
    發表于 05-27 08:51 ?63次下載

    基于CPLD的Flash讀取控制的設計與實現

            在使用Flash 存儲數據時,有時需要對其設計讀寫控制邏輯。本文介紹了用VHDL 語言在CPLD內
    發表于 09-04 09:29 ?35次下載

    基于VHDL的微型打印機控制器設計

    介紹基于VHDL的微型打印機控制器的設計。論述了微型打印機的基本原理,以及實現控制器VHDL語言設計。打印機的數據來自系統中的存儲模塊,根
    發表于 12-23 16:44 ?60次下載

    基于PicoBlaze的Nand Flash控制器實現

    提出了一種基于 PicoBlaze 的Nand Flash控制器實現方法。PicoBlaze是Xilinx公司開發的8位嵌入式微控制器IP核。首先介紹了PicoBlaze的概念和
    發表于 06-13 15:48 ?41次下載
    基于PicoBlaze的Nand <b class='flag-5'>Flash</b><b class='flag-5'>控制器</b>的<b class='flag-5'>實現</b>

    基于VHDL的DRAM控制器設計

    本文提出一種新穎的解決方案:利用80C186XL的時序特征,采用CPLD技術,并使用VHDL語言設計實現DRAM控制器
    發表于 02-02 11:29 ?1505次閱讀
    基于<b class='flag-5'>VHDL</b>的DRAM<b class='flag-5'>控制器</b>設計

    DDR SDRAM控制器參考設計VHDL代碼

    Xilinx FPGA工程例子源碼:DDR SDRAM控制器參考設計VHDL代碼
    發表于 06-07 11:44 ?19次下載

    FM收音機的解碼及控制器VHDL語言實現

    Xilinx FPGA工程例子源碼:FM收音機的解碼及控制器VHDL語言實現
    發表于 06-07 14:13 ?11次下載

    基于VHDL的SDRAM控制器實現

    基于VHDL的SDRAM控制器實現
    發表于 01-22 13:43 ?12次下載

    Flash讀寫控制方案 Altera似乎“沒有”開放配置Flash的Pin的控制

    自行設計Flash讀寫控制器的優點在于可控性很高,缺點在于需要花費時間設計并進行穩定性測試。相應的,使用提供的Flash讀寫
    的頭像 發表于 07-27 09:29 ?6300次閱讀

    基于VHDL語言和可編程邏輯器件實現Petri網邏輯控制器的設計

    VHDL語言由于其其強大的行為描述能力及與硬件行為無關的特性,被廣泛的用于數字系統設計,實現了硬件電路設計的軟件化,成為實現Petri網邏輯控制器的有力的工具。用
    發表于 09-22 20:46 ?897次閱讀
    基于<b class='flag-5'>VHDL</b>語言和可編程邏輯器件<b class='flag-5'>實現</b>Petri網邏輯<b class='flag-5'>控制器</b>的設計

    實現簡單的SPI讀寫FLASH

    實現簡單的SPI讀寫FLASH一、前言繼上篇文章SPI的相關知識,本章主要介紹使用SPI協議實現簡單的讀寫
    發表于 11-26 19:21 ?23次下載
    <b class='flag-5'>實現</b>簡單的SPI<b class='flag-5'>讀寫</b><b class='flag-5'>FLASH</b>

    基于FPGA的SPI Flash控制器的設計方案

    一個基于FPGA的SPI Flash讀寫硬件實現方案,該方案利用硬件對SPI Flash進行控制,能夠非常方便地完成
    的頭像 發表于 07-15 16:55 ?2141次閱讀
    基于FPGA的SPI <b class='flag-5'>Flash</b><b class='flag-5'>控制器</b>的設計方案

    基于VHDL的洗衣機控制器的設計

    電子發燒友網站提供《基于VHDL的洗衣機控制器的設計.pdf》資料免費下載
    發表于 11-07 10:28 ?2次下載
    基于<b class='flag-5'>VHDL</b>的洗衣機<b class='flag-5'>控制器</b>的設計
    百家乐官网游戏筹码| 娱乐城免费送体验金| 百家百家乐视频游戏世界| 百家乐网上真钱娱乐| 百家乐开户过的路纸| 威尼斯人娱乐代理| 香港六合彩官方网| 百家乐官网平台信誉| 六合彩免费图库| 临高县| 网上百家乐官网怎么破解| 百家乐官网棋牌官网| 百家乐平台注册送现金| 金钱豹百家乐的玩法技巧和规则 | 百家乐遥控洗牌器| 百家乐视频软件| 大赢家百家乐的玩法技巧和规则| 百家乐官网软件骗人吗| 战胜百家乐官网的技巧| 威尼斯人娱乐场| A8百家乐官网游戏| 澳门百家乐搏牌规则| 明升 | 大家旺百家乐官网的玩法技巧和规则 | 阳宅64卦与24山| 大发娱乐城888| 百家乐官网赌博走势图| 百家乐制胜方法| 赌百家乐怎样能赢| 太阳城直属现金网| 百家乐官网如何视频| 百家乐官网技巧开户| 十三张百家乐的玩法技巧和规则| 盛大娱乐城现金网| tt百家乐官网的玩法技巧和规则| 百家乐5式直缆投注法| 大发888下载 df888gfxzylc8| 邵阳市| 江山百家乐官网的玩法技巧和规则 | 鑫鼎百家乐娱乐城| 利来|