印象中FPGA市場基本是Altera和Xilinx一統(tǒng)天下,他們的明爭暗斗決定著FPGA的未來,甚至他們各自的家族產品都是對著干的。Lattice、Actel、Atmel各有其小眾市場,再有別的廠商,基本上是不太叫得上來了。
國產FPGA?是不是聽錯了,沒有。記得第一次聽說FPGA前面加了個定冠詞“國產”應該可以追溯到還和價格堪比年薪的軍品糾結的歲月。不過那個“國產”二字總感覺和“盜版”諧音,真的不是損誰,只是實事求是的說。也許這種模式也叫“中國特色”吧,好歹比那天忘了在哪位大俠博客看到的“二次包裝”的“中國制造”強上千百倍。Xilinx早期的XC4打頭的FPGA,也只有ISE4以前的版本支持,“低端”軍品也就這幾款了。所以國內的XX所也很牛,居然能夠逆向設計將他們的“國產”FPGA做得和它完全兼容,不止是PIN2PIN,甚至連開發(fā)工具他們都不用徒手打造了,告訴我們完全替代現(xiàn)有的Xilinx器件。
有時候不得不感嘆,中國人很牛。外國人可以做到的,基本上沒有中國人做不到的。時光荏苒,已不再需要靠那些“可靠”換“性能”的片子干活了。而FPGA的成本卻越來越成為產品開發(fā)中揮之不去的夢魘,于是乎,老板想盡辦法要壓榨FPGA的成本,這次找來了又一個“國產”準備在低端低成本的應用中大干一場。不過幾番觀察下來,特權同學開始對此“君”頗有好感,它也許算不上真正意義上的“國產”,但是多少讓人感受到了它走的是一條“正規(guī)”有“前途”的路子。
其實也只是昨天才開始正式的和這家名為Agate Logic的FPGA廠商有了一些“親密”接觸。它的開發(fā)工具,它的開發(fā)流程,它的主打芯片結構、特點、性能都有所了解,但要真*實彈的用這個家伙干活,還得有更深入的嘗試和驗證。對這些嘗試做些記錄,也許,是一次蠻有意思的嘗試。
今天先簡單的沒主題的隨便扯談吧。首先,這家公司是提供了兩個系列的產品,其中一個系列工藝先進些,據(jù)說性能好一些,只不過年初剛量產,還不是主推產品,姑且不詳談,畢竟特權同學的DEMO板上的主角兒也不是它。另一個低端點的系列叫Astro,別小看它了,先羅列一下參數(shù)大家瞧瞧。
★ 硬核——可以跑到100MHz的8051硬核,標準外設IIC一個、SPI一個、USART兩個、定時器數(shù)個。
★ 1Mbit一次性可編程存儲(OTP)——加密的利器啊。
★ 1個PLL——3個可選輸出,相位可調。
★ 可選的內部4Mbit FLASH。
★ 2個9Kbit可配置存儲器——雖然對于片內存儲要求很高的特權同學有點“巧婦難為無米之炊”了,不過低端應用犧牲一些“性能”還是可以接受的。
有這些東西還不算,最主要的還是它保持著傳統(tǒng)“中國特色”的“便宜”,基本上3個美金可以拿到有1024個LUT的器件了。若是要和當前的Altera相關解決方案比比,那真得是蠻有競爭力的。MAX II系列CPLD除了邏輯真得沒有別的用處了,而邏輯資源遜色不少的EPM570(EPM1270不說了)目前市場上估計是有缺貨的因素,居然賣到30好幾個RMB了。而如果選擇Cyclone系列最便宜的EP1C3好像也只要30多RMB,但是要跑個最經濟的NIOS也有點困難。而且有個很有意思的現(xiàn)象,正規(guī)代理商會很無奈的告訴你這樣的老器件要30的數(shù)倍價格才能搞到,而外面的小商小販賣的就是30的準“白菜價”(當然不排除買到“散新貨”的可能)。而Astro卻連配置器件和外掛MCU的成本都省了,雖然它也是基于SRAM的結構。(不行,越比發(fā)現(xiàn)這東西越好。先申明一下,這里不是推銷,只是比較,特權同學是用芯片的,不是賣芯片的。嘿嘿)
今天花了一上午把它們的開發(fā)工具Primace的Help過了一遍。再說個題外話,昨天到它們的上海辦事處,感覺上這般人對版本的管理不是很好,動不動來一個版本,讓我們當時一個版本裝另一個版本卸的來回折騰好幾次才看到Primace的本來面目。還有那個USB下載線,MCU要一個JTAG,F(xiàn)PGA也要一個JTAG,如果能二合一的干活多好啊,就像咱的NIOS2。
FPGA開發(fā),確切的說硬件系統(tǒng)的開發(fā)都是有賴于Primace的,軟件是KEIL,它們提供了一套接口,用上去還算方便。這個Primace整個一ISE或者Quartus II的簡化版,畢竟也是剛起步,勉強可以接受,怎么說咱當年在ISE10大行其道的年代也有過被迫無奈“玩轉”ISE4的經歷。
截個圖,如圖1,它們的開發(fā)流程也算是軟硬兼施,F(xiàn)PGA的流程很簡化,看上去很“清爽”。最終把FPGA配置文件bitgen和KeilC的Hex一起在軟件里生成個新文件下載就行。
圖1
開發(fā)工具真的很“簡陋”。時序約束和分析特權同學還沒摸懂怎么回事,就那么兩三個GUI選項,只能說是比Classic timing analyzer還Classic,這一點是特權同學最擔憂的;提供的板級調試手段也很有限,好像就一個稱為Signal monitor的家伙,沒有嘗試,就不妄下定論,好在本來它的邏輯資源也不多,調試起來有沒有在線手段也無關緊要。
51硬核性能測試
IO口速度測試,使用以下程序測試高電平脈寬。
while(1)
{
P0 = 0xf;
P0 = 0x0;
}
同等條件下與其他MCU比較:
?
工作頻率 |
高脈沖寬度 |
|
ASTRO 8051硬核 |
25MHz |
約1us |
ASTRO 8051硬核 |
50MHz |
約500ns |
ASTRO 8051硬核 |
100MHz |
約250ns |
STC89C516 |
11.0592MHz |
約2.16us |
NIOS II/e 32位軟核 |
25MHz |
約2.5us |
NIOS II/s 32位軟核 |
25MHz |
約160ns |
NIOS II/f 32位軟核 |
25MHz |
約160ns |
在兩次操作之間插入延時函數(shù),分別延時delay(1)、delay(2)、delay(3)、delay(4)。測試延時函數(shù)如下:
void delay(uchar cnt)
{
uchar i =0;
while(i 《 cnt)
{
i++;
}
}
由于delay()函數(shù)調用一次會有一些額外開銷(如賦初值等),所以我們通過不同延時值的實際延時差來看指令運行的速度。換句話說,對前面的程序,可以通過每次delay()函數(shù)的差值來計算每多執(zhí)行一次i++和一次i
特權同學曾使用相同條件測試了51單片機,通常11.0592MHz下工作的51單片機每多執(zhí)行一次i++和一次i
延時函數(shù)ASTRO 8051硬核NIOS II/s 32位軟核
50MHz100MHz25MHz50MHz
Delay(1)5.0us2.5us6.5us4us
Delay(2)6.6us3.3us9us6us
Delay(3)8.3us4.2us11.5us7.5us
Delay(4)9.9us5.0us14us9.5us
i++與i約1.63us約0.83us約2.5us約1.25us
簡單的一些性能測試,發(fā)現(xiàn)這個51硬核還是有花頭的,至于穩(wěn)定性和可靠性上還需繼續(xù)驗證和嘗試。當然,本文的測試是使用了片內的存儲器作為代碼和數(shù)據(jù)存儲,實際速度性能和存儲器的性能關系非常大,是需要進一步考核的項目。
?
存儲器
有幾點關于代碼和數(shù)據(jù)存儲區(qū)配置的一些疑問,麻煩解答一下:
問:代碼存儲器可以選擇OTP或者extension memory,一般在最終軟件定型后使用OTP沒有問題,而在調試過程中會選擇extension memory。extension memory里有三類:EMB、SRAM和Custom,通常代碼存儲器應該是非易失存儲器,而你們這里列出來的EMB和SRAM都是下電易失的,這一點我不是很明白?難道說extension memory只是在KeilC處于debug模式時代碼運行的存儲區(qū),而非代碼下電存儲的介質?EMB只有1K(最大可以到2K),如果設置了這個代碼存儲器,是不是KEILC DEBUG時代碼不可以超過1K?
FAE:EMB和SRAM都是易失的,用EMB是最大可支持2KB的code空間,EMB初始化的信息與FPGA配置信息一起存儲在內嵌SPI Flash中,上電自動加載,用SRAM時,需要使用我們提供的SRAMLoader工程,利用Astro重配置特性進行加載。
問:與上面類似的疑問,關于數(shù)據(jù)存儲區(qū),兩個選項,on-ship SRAM默認勾選,這個沒有疑問。而FP應該是內部擴展的4M Flash,應該是非易失存儲器,數(shù)據(jù)存儲器通常沒有必要是非易失的吧?我認為按照常規(guī),代碼存儲是非易失存儲器,數(shù)據(jù)存儲是易失存儲器,而你們的配置選項讓我有點糊涂。
FAE:Astro內部為8051提供16KB專用SRAM,用作data空間。
問:另外,SPI燒錄應該是將FPGA配置數(shù)據(jù)燒錄到4M FLASH中吧?而用Configuration Packer功能應該是要將FPGA配置數(shù)據(jù)和軟件hex文件封裝成一個文件燒錄到4M flash中吧?我這么嘗試過好像下電后系統(tǒng)沒有跑起來,那么是不是在系統(tǒng)的存儲器配置中有所講究呢?
FAE:Configuration Packer可以讓Astro內存儲多個配置文件,利用它可以在使用SRAM做code空間時打包SRAMLoader工程進行上電自動加載。附件中是關于Astro的幾個應用文檔,您先看一下,寫的比較詳細,相信對您理解Astro用法會很有幫助,謝謝!
昨天對Agate Logic負責硬件的FAE狂轟濫炸,對于其開發(fā)工具和器件的結構都有更深入的了解和認識,上面的幾個問答只是關于51硬核的數(shù)據(jù)和代碼存儲器方面的,好一番追問之后,總算逼出了幾個像模像樣的文檔出來,消化后再做了一些實踐,然后有一點收獲和對后續(xù)項目在存儲器配置上的一些可行性的想法。另外,關于時序方面的一些疑問也得到了解答,不是很放心,也問出了一些真真確確的“問題”來,并且目前在用軟件版本的一些bug也被我問出來了,目前還需要等著廠商給我提供補丁,所以關于時序方面的博文只能暫緩進行。
特權同學問題提得比較到位,但不是很有水準。FAE回答得也不是很容易讓人明白,最后還是文檔給出了比較權威的解答。
在討論Astro系列芯片51硬核的軟件運行模式之前,要先看看Astro系列芯片到底已經提供了哪些片內的存儲資源,不看不要緊,一看嚇一跳——可謂品種齊全,滿足各類需求。
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硬核的軟件主要運行模式:
小模式:
不外掛存儲器,使用芯片現(xiàn)有資源,F(xiàn)PGA配置數(shù)據(jù)和8051代碼(小于2KB)存儲于SPI Flash中。系統(tǒng)上電后,F(xiàn)PGA配置數(shù)據(jù)先從SPI Flash中導出并配置FPGA,也包括EMB的初始化數(shù)據(jù)(即軟件代碼從SPI FLASH搬運到EMB中);完成后8051代碼直接從EMB中開始運行。
內嵌8051在無等待周期的狀態(tài)下,最快時鐘頻率可到70MHz,性能到47MIPS的性能。主要用于8051代碼較少時,調試生產兩便,成本也比較低。
手記二中的測試就是基于該模式,性能還算可以。
調試模式:
外掛SRAM存儲器,F(xiàn)P Bootloader配置數(shù)據(jù)、FPGA用戶程序配置數(shù)據(jù)和8051用戶代碼分段存儲于SPI Flash中。系統(tǒng)上電先從SPI Flash中導出FP BootLoder配置數(shù)據(jù)(內含Loader部分)。配置FP包括EMB的初始化數(shù)據(jù),完成后SRAM Loader程序將搬運8051用戶代碼到外掛SRAM中;之后再從SPI Flash中導入FP用戶程序并重新配置FP,8051代碼在外掛SRAM中開始運行。
內嵌8051在無等待周期的狀態(tài)下,最快時鐘頻率可到35MHz,性能到23MIPS的性能。此模式主要用于8051代碼超過2KB調試時用。當然也可用于生產。請注意外掛SRAM將增加成本。
這種模式由于不太可能使用,所以特權同學不過多研究,但這也是嵌入式系統(tǒng)中比較常見的一種BootLoder方式。
評論
查看更多