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