最終生產(chǎn)模式:
不外掛存儲器,8051代碼存儲于OTP存儲器中,F(xiàn)P配置數(shù)據(jù)存于OTP或SPI FLASH中。因為OTP存儲器是一次性的,所以不能用于調試階段。一般產(chǎn)品最終定型后再使用OTP存儲器可以獲得最優(yōu)的性能和最低的成本。
而當采用OTP 作為8051 代碼內存,最高時鐘頻率可達100MHz。較理想的方法是用鎖相環(huán)PLL來產(chǎn)生8051 時鐘。CKCON SFR的低4位用來控制數(shù)據(jù)Memory 的等待周期。如果8051時鐘頻率高于45MHz,最好將value設置為大于等于2,以防止時鐘太快,數(shù)據(jù)還沒準備好。
也就是說,OTP方式可以達到51硬核代碼運行的最佳性能,甚至于性能的速度瓶頸已經(jīng)不是代碼存取,而是數(shù)據(jù)存取。
以上三種模式是比較推薦的,但是特權同學從實際工程需要來考慮,簡單的說,需要一種調試模式和一種生產(chǎn)模式。生產(chǎn)模式無可厚非的選擇OTP燒錄,而調試模式有點棘手,如果選擇小模式,代碼運行量太小,頂多不過2K,基本干不了什么事。而選擇外擴SRAM,有限的IO資源不會允許的。所以,有點苦惱,但是還好,還有一種最次的選擇——性能低下的第四種模式。
?
當8051的性能低于1.4MIPS時,可用spi flash作為8051的代碼存儲器。此模式的運行環(huán)境如下:
1. 選用片內 SPI FLASH;
2. FPGA的配置數(shù)據(jù)和8051代碼存放在同一個SPI FLASH 里;
3. 8051 與SPI FLASH 接口大約需要90 個LE cells;
4. 8051 的內核時鐘最快為30MHz 左右, 8051 最快運行性能大約為1.4MIPS;
5. 順序取指需要 8 個時鐘周期,跳轉取指需要40 個周期;
在嘗試SPI FLASH模式的時候,遇到了比較有意思的事。特權同學根據(jù)實例做SPI FLASH的運行測試,結果搞不定,也找不到相關的IP核。于是求問FAE,F(xiàn)AE直接告知這個IP核還沒有集成到工具中,然后把源代碼都發(fā)過來了。呵呵,雖然工具不完善,不過服務倒是很周到。
由于基于SPI FLASH的模式是在51硬核與SPI FLASH之間使用FPGA邏輯搭建了一個FLASH讀取的模塊。所以經(jīng)過測試,確實這個FLASH讀取控制的邏輯模塊頻率不能太高,過高FLASH就要**了,理論值是30M,而特權同學用了25M。然后使用上一篇手記同樣的方法改變硬核的頻率進行測試。
?
延時函數(shù) |
EMB模式 |
SPI FLASH模式 |
||
50MHz |
100MHz |
50MHz |
100MHz |
|
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 |
結果證明,51硬核的頻率受制于指令的讀取速度,那么在SPI FLASH模式下速度性能確實大打折扣。
時序工具
關于時序工具的一些FAE解答:
問:你們的工具是否只提供所有輸入輸出管腳完全一致的時序約束?如tsu,th,tco,tpd的約束?如果不同管腳可以有不 同約束值,如何設置?
FAE:我們的工具提供的是時序分析功能,尚未提供時序約束功能,也就是說可以根據(jù)您輸入的值作為參考,計算出當前實現(xiàn)的各種時序信息與參考值的差距,但并不會根據(jù)輸入的值去做優(yōu)化,所以也就不存在對不同管腳分別設置約束的功能了。
問:tco是指reg2pin的延時約束,tpd是指pin2pin的約束。而輸入管腳約束tsu和th值,具體含義我不是很 明白?比如說我希望輸入管腳的pin2reg延時為0-10ns,那么tsu和th如何設置?
FAE:tsu就可以理解為pin2reg的延時,它是信號從pin到FPGA內部第一個reg相對于這個reg的clock的setup time,而th就是相對這個clock的hold time,th一般不會有問題,需要關注的是tsu。
問:我嘗試用GUI做了一些時序約束,然后每次做時序分析都報錯:Error: T2000: (ice_run_sta) Run sta failed. 這是什么問題?
FAE:您的這個錯誤一般是sta設置上有什么問題,得具體分析工程。
今天終于拿到了最新3.2版本的軟件,安裝后,進行編譯,長達近10分鐘的placement讓我眉頭緊皺。后來從FAE處得知我拿到的是還未release出來的中間版本,有問題在所難免。不說這個,回到主題上來,其實總感覺有些遺憾。FAE在之前的回答其實已經(jīng)預示著這個國產(chǎn)FPGA與特權同學緣分已到盡頭。
WHY?他們提供的時序分析工具根本算不上真正的時序分析工具,或者這么說,這個所謂的時序分析工具只能提供分析,而無法進行時序的約束和優(yōu)化。即便他們的工程設置中也提供了如圖1的恐怕可以稱得上是最簡單的“時序約束”,但這個所謂的“時序約束”其實并沒有任何“約束”的作用。安裝“官方”的說法,它不能夠對綜合乃至布局布線起到任何影響,而不過是給報告中的路徑劃了一條水平線,報告中確實能夠體現(xiàn)出水平線上或下的狀態(tài)。
圖1
如圖2所示,很無奈的只是移植了一個SDRAM控制器外加一些其它邏輯,占去了總共1000個LE中80%的資源,然后只是約束了一個50MHz的工作時鐘,結果出來了20條false路徑。即便嘗試去試試用提供的僅有幾個對mapping或palcement&routing設置的優(yōu)化,結果換來了更多的false。FAE也坦言,目前只能做些簡單的邏輯,跑個SDRAM等稍復雜的邏輯也就只能跑個二三十兆的樣子。
圖2
幾天的試用,雖然以國產(chǎn)FPGA的性能問題而告夭折。雖然還顯稚嫩的開發(fā)工具、差強人意的器件性能多少讓人有些失望,但至少從某種程度上讓特權同學改變了對國產(chǎn)的一些偏見。其實,如果Agate Logic能夠持續(xù)這種開發(fā)熱情,不斷的改進,假以時日,相信他們會成為“中國的Altera”、“中國的Xilinx”。
外擴SFR使用
本以為這個國產(chǎn)FPGA的就此夭折,沒想到權衡之后,在性能打些折扣的情況下還是重新?lián)炱饋砹?。從剛接觸這個器件的時候特權同學就很關心它的硬核可擴展性,Avalone接口用上手了,當然很希望這個51硬核也能夠提供類似的強大擴展接口。不過話說回來,畢竟是個8位的核,再強大也不到哪去,但在花了點心思琢磨了這個小玩意的擴展方式后,多少覺得還是有點花頭的。
SFR,即特殊功能寄存器。SFR是8051單片機內部用于訪問控制各種片上集成外設的主要寄存器,如常見的IO口(P0/P1/P2/P3)讀寫、IO中斷配置、定時器配置、串口外設等。因此,對一般用戶而言,玩轉8051就是玩轉SFR的過程。一般的單芯片8051單片機的SFR接口不對外開放,除了部分寄存器內部使用外,余下地址空間保留。而Astro器件的這顆8051硬核將空置的SFR地址空間開放給用戶,提供了專門的對外接口時序。
特權同學將關于Astro器件SFR相關的特性整理如下:
● 可尋址空間0x80~0xff。
● 部分地址空間已被8051內部使用。
● 16個地址空間(能被8整除的地址如0x80、0x88、0x90、…0xf8等)可位尋址。
● 最多支持49個8051核外可用SFRs,除核內已占用的地址,余下地址空間均為用戶可用的核外SFRs。
● 外部SFR接口含有等待狀態(tài)寄存器(主要由sfack信號控制實現(xiàn)),允許8051內核與較慢的外設連接。
● 外部SFR讀寫時序如圖3所示。
圖3
為了簡單的評估8051硬核的SFR擴展功能的性能,特權同學做了一些測試。
評論