關(guān)鍵詞: FPGA , 國產(chǎn) , 國產(chǎn)FPGA , 試用
作者:特權(quán)同學(xué) 延時函數(shù) EMB模式 SPI FLASH模式 50MHz 100MHz 50MHz
有幾點(diǎn)關(guān)于代碼和數(shù)據(jù)存儲區(qū)配置的一些疑問,麻煩解答一下:
問:代碼存儲器可以選擇OTP或者 extension memory,一般在最終軟件定型后使用OTP沒有問題,而在調(diào)試過程中會選擇extension memory。extension memory里有三類:EMB、SRAM和Custom,通常代碼存儲器應(yīng)該是非易失存儲器,而你們這里列出來的EMB和SRAM都是下電易失的,這一點(diǎn)我不是很明白?難道說extension memory只是在KeilC處于debug模式時代碼運(yùn)行的存儲區(qū),而非代碼下電存儲的介質(zhì)?EMB只有1K(最大可以到2K),如果設(shè)置了這個代碼存儲器,是不是KEILC DEBUG時代碼不可以超過1K?
FAE:EMB和SRAM都是易失的,用EMB是最大可支持2KB的code空間,EMB初始化的信息與FPGA配置信息一起存儲在內(nèi)嵌SPI Flash中,上電自動加載,用SRAM時,需要使用我們提供的SRAMLoader工程,利用Astro重配置特性進(jìn)行加載。
問:與上面類似的疑問,關(guān)于數(shù)據(jù)存儲區(qū),兩個選項,on-ship SRAM默認(rèn)勾選,這個沒有疑問。而FP應(yīng)該是內(nèi)部擴(kuò)展的4M Flash,應(yīng)該是非易失存儲器,數(shù)據(jù)存儲器通常沒有必要是非易失的吧?我認(rèn)為按照常規(guī),代碼存儲是非易失存儲器,數(shù)據(jù)存儲是易失存儲器,而你們的配置選項讓我有點(diǎn)糊涂。
FAE:Astro內(nèi)部為8051提供16KB專用SRAM,用作data空間。
問:另外,SPI燒錄應(yīng)該是將FPGA配置數(shù)據(jù)燒錄到4M FLASH中吧?而用Configuration Packer功能應(yīng)該是要將FPGA配置數(shù)據(jù)和軟件hex文件封裝成一個文件燒錄到4M flash中吧?我這么嘗試過好像下電后系統(tǒng)沒有跑起來,那么是不是在系統(tǒng)的存儲器配置中有所講究呢?
FAE:Configuration Packer可以讓Astro內(nèi)存儲多個配置文件,利用它可以在使用SRAM做code空間時打包SRAMLoader工程進(jìn)行上電自動加載。附件中是關(guān)于Astro的幾個應(yīng)用文檔,您先看一下,寫的比較詳細(xì),相信對您理解Astro用法會很有幫助,謝謝!
昨天對Agate Logic負(fù)責(zé)硬件的FAE狂轟濫炸,對于其開發(fā)工具和器件的結(jié)構(gòu)都有更深入的了解和認(rèn)識,上面的幾個問答只是關(guān)于51硬核的數(shù)據(jù)和代碼存儲器方面的,好一番追問之后,總算逼出了幾個像模像樣的文檔出來,消化后再做了一些實(shí)踐,然后有一點(diǎn)收獲和對后續(xù)項目在存儲器配置上的一些可行性的想法。另外,關(guān)于時序方面的一些疑問也得到了解答,不是很放心,也問出了一些真真確確的“問題”來,并且目前在用軟件版本的一些bug也被我問出來了,目前還需要等著廠商給我提供補(bǔ)丁,所以關(guān)于時序方面的博文只能暫緩進(jìn)行。
特權(quán)同學(xué)問題提得比較到位,但不是很有水準(zhǔn)。FAE回答得也不是很容易讓人明白,最后還是文檔給出了比較權(quán)威的解答。
在討論Astro系列芯片51硬核的軟件運(yùn)行模式之前,要先看看Astro系列芯片到底已經(jīng)提供了哪些片內(nèi)的存儲資源,不看不要緊,一看嚇一跳——可謂品種齊全,滿足各類需求。
1. 總共1Mbit的OTP型存儲區(qū),其中64KB用于FPGA的配置數(shù)據(jù)存儲,另64KB用于51硬核的最終代碼存儲器。
2. 4Mbit(512KB)的FPGA和8051公用的SPI Flash。
3. 2塊9Kbit的可配置雙端口EMB。
4. 16KB的51硬核專用數(shù)據(jù)存儲器。
Astro系列芯片51硬核的軟件主要運(yùn)行模式:
小模式:
不外掛存儲器,使用芯片現(xiàn)有資源,F(xiàn)PGA配置數(shù)據(jù)和8051代碼(小于2KB)存儲于SPI Flash中。系統(tǒng)上電后,F(xiàn)PGA配置數(shù)據(jù)先從SPI Flash中導(dǎo)出并配置FPGA,也包括EMB的初始化數(shù)據(jù)(即軟件代碼從SPI FLASH搬運(yùn)到EMB中);完成后8051代碼直接從EMB中開始運(yùn)行。
內(nèi)嵌8051在無等待周期的狀態(tài)下,最快時鐘頻率可到70MHz,性能到47MIPS的性能。主要用于8051代碼較少時,調(diào)試生產(chǎn)兩便,成本也比較低。
手記二中的測試就是基于該模式,性能還算可以。
調(diào)試模式:
外掛SRAM存儲器,F(xiàn)P Bootloader配置數(shù)據(jù)、FPGA用戶程序配置數(shù)據(jù)和8051用戶代碼分段存儲于SPI Flash中。系統(tǒng)上電先從SPI Flash中導(dǎo)出FP BootLoder配置數(shù)據(jù)(內(nèi)含Loader部分)。配置FP包括EMB的初始化數(shù)據(jù),完成后SRAM Loader程序?qū)徇\(yùn)8051用戶代碼到外掛SRAM中;之后再從SPI Flash中導(dǎo)入FP用戶程序并重新配置FP,8051代碼在外掛SRAM中開始運(yùn)行。
內(nèi)嵌8051在無等待周期的狀態(tài)下,最快時鐘頻率可到35MHz,性能到23MIPS的性能。此模式主要用于8051代碼超過2KB調(diào)試時用。當(dāng)然也可用于生產(chǎn)。請注意外掛SRAM將增加成本。
這種模式由于不太可能使用,所以特權(quán)同學(xué)不過多研究,但這也是嵌入式系統(tǒng)中比較常見的一種BootLoder方式。
最終生產(chǎn)模式:
不外掛存儲器,8051代碼存儲于OTP存儲器中,F(xiàn)P配置數(shù)據(jù)存于OTP或SPI FLASH中。因為OTP存儲器是一次性的,所以不能用于調(diào)試階段。一般產(chǎn)品最終定型后再使用OTP存儲器可以獲得最優(yōu)的性能和最低的成本。
而當(dāng)采用OTP 作為8051 代碼內(nèi)存,最高時鐘頻率可達(dá)100MHz。較理想的方法是用鎖相環(huán)PLL來產(chǎn)生8051 時鐘。CKCON SFR的低4位用來控制數(shù)據(jù)Memory 的等待周期。如果8051時鐘頻率高于45MHz,最好將value設(shè)置為大于等于2,以防止時鐘太快,數(shù)據(jù)還沒準(zhǔn)備好。
也就是說,OTP方式可以達(dá)到51硬核代碼運(yùn)行的最佳性能,甚至于性能的速度瓶頸已經(jīng)不是代碼存取,而是數(shù)據(jù)存取。
以上三種模式是比較推薦的,但是特權(quán)同學(xué)從實(shí)際工程需要來考慮,簡單的說,需要一種調(diào)試模式和一種生產(chǎn)模式。生產(chǎn)模式無可厚非的選擇OTP燒錄,而調(diào)試模式有點(diǎn)棘手,如果選擇小模式,代碼運(yùn)行量太小,頂多不過2K,基本干不了什么事。而選擇外擴(kuò)SRAM,有限的IO資源不會允許的。所以,有點(diǎn)苦惱,但是還好,還有一種最次的選擇——性能低下的第四種模式。
當(dāng)8051的性能低于1.4MIPS時,可用spi flash作為8051的代碼存儲器。此模式的運(yùn)行環(huán)境如下:
1. 選用片內(nèi) SPI FLASH;
2. FPGA的配置數(shù)據(jù)和8051代碼存放在同一個SPI FLASH 里;
3. 8051 與SPI FLASH 接口大約需要90 個LE cells;
4. 8051 的內(nèi)核時鐘最快為30MHz 左右, 8051 最快運(yùn)行性能大約為1.4MIPS;
5. 順序取指需要 8 個時鐘周期,跳轉(zhuǎn)取指需要40 個周期;
在嘗試SPI FLASH模式的時候,遇到了比較有意思的事。特權(quán)同學(xué)根據(jù)實(shí)例做SPI FLASH的運(yùn)行測試,結(jié)果搞不定,也找不到相關(guān)的IP核。于是求問FAE,F(xiàn)AE直接告知這個IP核還沒有集成到工具中,然后把源代碼都發(fā)過來了。呵呵,雖然工具不完善,不過服務(wù)倒是很周到。
由于基于SPI FLASH的模式是在51硬核與SPI FLASH之間使用FPGA邏輯搭建了一個FLASH讀取的模塊。所以經(jīng)過測試,確實(shí)這個FLASH讀取控制的邏輯模塊頻率不能太高,過高FLASH就要**了,理論值是30M,而特權(quán)同學(xué)用了25M。然后使用上一篇手記同樣的方法改變硬核的頻率進(jìn)行測試。
評論
查看更多