零基礎(chǔ)入門FPGA糜俗,如何學習悠抹?

姓名:李亞洲

學號:20181213925?

學院:廣研院(通信工程學院)

引自:

https://zhuanlan.zhihu.com/p/360418971

【嵌牛導(dǎo)讀】零基礎(chǔ)學習FPGA應(yīng)該從哪入手渔工,應(yīng)該看什么教程引矩,應(yīng)該用什么學習板和開發(fā)板,看什么書等氛谜。如果想速成值漫,那就上網(wǎng)看視頻吧织盼,這樣主要是面對應(yīng)用的沥邻,一個小時內(nèi)讓你的板子運行起來。早期起來的快埃跷,活學活用弥雹,就是后期沒有系統(tǒng)理論支持延届,會有些吃力,特別是大項目窗宦,那完全是個悲劇赴涵。

【嵌牛提問】學習FPGA的重點

【嵌牛鼻子】FPGA

【嵌牛正文】


FPGA學習重點

1.?看代碼订讼,建模型

只有在腦海中建立了一個個邏輯模型欺殿,理解FPGA內(nèi)部邏輯結(jié)構(gòu)實現(xiàn)的基礎(chǔ)脖苏,才能明白為什么寫Verilog和寫C整體思路是不一樣的,才能理解順序執(zhí)行語言和并行執(zhí)行語言的設(shè)計方法上的差異恃鞋。在看到一段簡單程序的時候應(yīng)該想到是什么樣的功能電路亦歉。

2.?用數(shù)學思維來簡化設(shè)計邏輯

學習FPGA不僅邏輯思維很重要肴楷,好的數(shù)學思維也能讓你的設(shè)計化繁為簡赛蔫,所以啊,那些看見高數(shù)就頭疼的童鞋需要重視一下這門課哦鞠值。舉個簡單的例子瑰剃,比如有兩個32bit的數(shù)據(jù)X[31:0]與Y[31:0]相乘晌姚。當然,無論Altera還是Xilinx都有現(xiàn)成的乘法器IP核可以調(diào)用抵恋,這也是最簡單的方法弧关,但是兩個32bit的乘法器將耗費大量的資源。那么有沒有節(jié)省資源别瞭,又不太復(fù)雜的方式來實現(xiàn)呢蝙寨?我們可以稍做修改:

將X[31:0]拆成兩部分X1[15:0]和X2[15:0]嗤瞎,令X1[15:0]=X[31:16]贝奇,X2[15:0]=X[15:0]掉瞳,則X1左移16位后與X2相加可以得到X;同樣將Y[31:0]拆成兩部分Y1[15:0]和Y2[15:0]脑豹,令 Y1[15:0]=Y[31:16]衡查,Y2[15:0]=Y[15:0]拌牲,則Y1左移16位后與Y2相加可以得到Y(jié)塌忽,則X與Y的相乘可以轉(zhuǎn)化為X1和X2 分別與Y1和Y2相乘,這樣一個32bit*32bit的乘法運算轉(zhuǎn)換成了四個16bit*16bit的乘法運算和三個32bit的加法運算枣购。轉(zhuǎn)換后的占用資源將會減少很多棉圈,有興趣的童鞋眷蜓,不妨綜合一下看看吁系,看看兩者差多少。

3.?時鐘與觸發(fā)器的關(guān)系

“時鐘是時序電路的控制者”這句話太經(jīng)典了上岗,可以說是FPGA設(shè)計的圣言液茎。FPGA的設(shè)計主要是以時序電路為主捆等,因為組合邏輯電路再怎么復(fù)雜也變不出太多花樣续室,理解起來也不沒太多困難挺狰。但是時序電路就不同了丰泊,它的所有動作都是在時鐘一拍一拍的節(jié)奏下轉(zhuǎn)變觸發(fā),可以說時鐘就是整個電路的控制者话侄,控制不好年堆,電路功能就會混亂盏浇。

打個比方绢掰,時鐘就相當于人體的心臟,它每一次的跳動就是觸發(fā)一個 CLK攻晒,向身體的各個器官供血炎辨,維持著機體的正常運作碴萧,每一個器官體統(tǒng)正常工作少不了組織細胞的構(gòu)成,那么觸發(fā)器就可以比作基本單元組織細胞虎谢。

時序邏輯電路的時鐘是控制時序邏輯電路狀態(tài)轉(zhuǎn)換的“發(fā)動機”婴噩,沒有它時序邏輯電路就不能正常工作羽德。因為時序邏輯電路主要是利用觸發(fā)器存儲電路的狀態(tài)宅静,而觸發(fā)器狀態(tài)變換需要時鐘的上升或下降沿姨夹,由此可見時鐘在時序電路中的核心作用磷账。

最后簡單說一下體會吧,歸結(jié)起來就是多實踐吼鱼、多思考蛉抓、多問巷送。實踐出真知矛辕,看100遍別人的方案不如自己去實踐一下聊品。實踐的動力一方面來自興趣翻屈,一方面來自壓力。有需求會容易形成壓力惊窖,也就是說最好能在實際的項目開發(fā)中鍛煉界酒,而不是為了學習而學習毁欣。

為什么你會覺得FPGA難學凭疮?

1.?不熟悉FPGA的內(nèi)部結(jié)構(gòu)

FPGA為什么是可以編程的?恐怕很多初學者不知道哥攘,他們也不想知道。因為他們覺得這是無關(guān)緊要的桶唐。他們潛意識的認為可編程嘛尤泽,肯定就是像寫軟件一樣啦规脸。軟件編程的思想根深蒂固莫鸭,看到Verilog或者VHDL就像看到C語言或者其它軟件編程語言一樣被因。一條條的讀梨与,一條條的分析。

拒絕去了解為什么FPGA是可以編程的缘挽,不去了解FPGA的內(nèi)部結(jié)構(gòu)壕曼,要想學會FPGA 恐怕是天方夜譚窝稿。那么FPGA為什么是可以“編程”的呢伴榔?首先來了解一下什么叫“程”踪少。啟示 “程”只不過是一堆具有一定含義的01編碼而已。

編程兼犯,其實就是編寫這些01編碼。只不過我們現(xiàn)在有了很多開發(fā)工具運算或者是其它操作集漾。所以軟件是一條一條的切黔,通常都不是直接編寫這些01編碼,而是以高級語言的形式來編寫具篇,最后由開發(fā)工具轉(zhuǎn)換為這種01編碼而已纬霞。對于軟件編程而言,處理器會有一個專門的譯碼電路逐條把這些01編碼翻譯為各種控制信號驱显,然后控制其內(nèi)部的電路完成一個個的讀诗芜,因為軟件的操作是一步一步完成的埃疫。

而FPGA的可編程伏恐,本質(zhì)也是依靠這些01編碼實現(xiàn)其功能的改變,但不同的是FPGA之所以可以完成不同的功能栓霜,不是依靠像軟件那樣將01編碼翻譯出來再去控制一個運算電路翠桦,F(xiàn)PGA里面沒有這些東西。

FPGA內(nèi)部主要三塊:可編程的邏輯單元叙淌、可編程的連線和可編程的IO模塊秤掌。

可編程的邏輯單元

其基本結(jié)構(gòu)某種存儲器(SRAM、 FLASH等)制成的4輸入或6輸入1輸出地“真值表”加上一個D觸發(fā)器構(gòu)成鹰霍。任何一個4輸入1輸出組合邏輯電路闻鉴,都有一張對應(yīng)的“真值表”,同樣的如果用這么一個存儲器制成的4輸入1輸出地“真值表”茂洒,只需要修改其“真值表”內(nèi)部值就可以等效出任意4輸入1輸出的組合邏輯孟岛,這些“真值表”內(nèi)部值就是那些01編碼。

如果要實現(xiàn)時序邏輯電路怎么辦?任何的時序邏輯都可以轉(zhuǎn)換為組合邏輯+D觸發(fā)器來完成渠羞。但這畢竟只實現(xiàn)了4輸入1輸出的邏輯電路而已斤贰,通常邏輯電路的規(guī)模那是相當?shù)拇蟆?/p>

可編程連線

那怎么辦呢?這個時候就需要用到可編程連線了次询。在這些連線上有很多用存儲器控制的鏈接點荧恍,通過改寫對應(yīng)存儲器的值就可以確定哪些線是連上的而哪些線是斷開的。這就可以把很多可編程邏輯單元組合起來形成大型的邏輯電路屯吊。

可編程的IO

任何芯片都必然有輸入引腳和輸出引腳送巡。有可編程的IO可以任意的定義某個非專用引腳(FPGA中有專門的非用戶可使用的測試、下載用引腳)為輸入還是輸出盒卸,還可以對IO的電平標準進行設(shè)置骗爆。

總歸一句話,F(xiàn)PGA之所以可編程是因為可以通過特殊的01代碼制作成一張張 “真值表”蔽介,并將這些“真值表”組合起來以實現(xiàn)大規(guī)模的邏輯功能摘投。

不了解FPGA內(nèi)部結(jié)構(gòu),就不能明白最終代碼如何變到FPGA里面去的虹蓄,也就無法深入的了解如何能夠充分運用FPGA∠簦現(xiàn)在的FPGA,不單單是有前面講的那三塊薇组,還有很多專用的硬件功能單元圆凰,如何利用好這些單元實現(xiàn)復(fù)雜的邏輯電路設(shè)計,是從菜鳥邁向高手的路上必須要克服的障礙体箕。而這一切,還是必須先從了解FPGA內(nèi)部邏輯及其工作原理做起挑童。

2.?錯誤理解HDL語言累铅,怎么看都看不出硬件結(jié)構(gòu)

HDL語言的英語全稱是:Hardware Deion Language,注意這個單詞Deion站叼,而不是Design娃兽。老外為什么要用Deion這個詞而不是Design呢?因為HDL確實不是用用來設(shè)計硬件的尽楔,而僅僅是用來描述硬件的投储。

描述這個詞精確地反映了HDL語言的本質(zhì),HDL語言不過是已知硬件電路的文本表現(xiàn)形式而已阔馋,只是將以后的電路用文本的形式描述出來而已玛荞。而在編寫語言之前,硬件電路應(yīng)該已經(jīng)被設(shè)計出來了呕寝。語言只不過是將這種設(shè)計轉(zhuǎn)化為文字表達形式而已勋眯。

硬件設(shè)計也是有不同的抽象層次,每一個層次都需要設(shè)計。最高的抽象層次為算法級客蹋、然后依次是體系結(jié)構(gòu)級塞蹭、寄存器傳輸級、門級讶坯、物理版圖級番电。

使用HDL的好處在于我們已經(jīng)設(shè)計好了一個寄存器傳輸級的電路,那么用HDL描述以后轉(zhuǎn)化為文本的形式辆琅,剩下的向更低層次的轉(zhuǎn)換就可以讓EDA工具去做了漱办,這就大大的降低了工作量。這就是可綜合的概念涎跨,也就是說在對這一抽象層次上硬件單元進行描述可以被EDA工具理解并轉(zhuǎn)化為底層的門級電路或其他結(jié)構(gòu)的電路洼冻。

在FPGA設(shè)計中,就是在將這以抽象層級的意見描述成HDL語言隅很,就可以通過FPGA開發(fā)軟件轉(zhuǎn)化為上一點中所述的FPGA內(nèi)部邏輯功能實現(xiàn)形式撞牢。HDL也可以描述更高的抽象層級如算法級或者是體系結(jié)構(gòu)級,但目前受限于EDA軟件的發(fā)展叔营,EDA軟件還無法理解這么高的抽象層次屋彪,所以HDL描述這樣抽象層級是無法被轉(zhuǎn)化為較低的抽象層級的,這也就是所謂的不可綜合绒尊。

所以在閱讀或編寫HDL語言畜挥,尤其是可綜合的HDL,不應(yīng)該看到的是語言本身婴谱,而是要看到語言背后所對應(yīng)的硬件電路結(jié)構(gòu)蟹但。

3.?FPGA本身不算什么,一切皆在FPGA之外

FPGA是給誰用的谭羔?很多學校是為給學微電子專業(yè)或者集成電路設(shè)計專業(yè)的學生用的华糖,其實這不過是很多學校受資金限制,買不起專業(yè)的集成電路設(shè)計工具而用FPGA工具替代而已瘟裸。其實FPGA是給設(shè)計電子系統(tǒng)的工程師使用的客叉。這些工程師通常是使用已有的芯片搭配在一起完成一個電子設(shè)備,如基站话告、機頂盒兼搏、視頻監(jiān)控設(shè)備等。當現(xiàn)有芯片無法滿足系統(tǒng)的需求時沙郭,就需要用FPGA來快速的定義一個能用的芯片佛呻。

前面說了,F(xiàn)PGA里面無法就是一些“真值表”病线、觸發(fā)器件相、各種連線以及一些硬件資源再扭,電子系統(tǒng)工程師使用FPGA進行設(shè)計時無非就是考慮如何將這些以后資源組合起來實現(xiàn)一定的邏輯功能而已,而不必像IC設(shè)計工程師那樣一直要關(guān)注到最后芯片是不是能夠被制造出來夜矗。

本質(zhì)上和利用現(xiàn)有芯片組合成不同的電子系統(tǒng)沒有區(qū)別泛范,只是需要關(guān)注更底層的資源而已。要想把FPGA用起來還是簡單的紊撕,因為無非就是那些資源罢荡,在理解了前面兩點再搞個實驗板,跑跑實驗对扶,做點簡單的東西是可以的区赵。而真正要把FPGA用好,那光懂點FPGA知識就遠遠不夠了浪南。因為最終要讓FPGA里面的資源如何組合笼才,實現(xiàn)何種功能才能滿足系統(tǒng)的需要,那就需要懂得更多更廣泛的知識络凿。

4.?數(shù)字邏輯知識是根本

無論是FPGA的哪個方向骡送,都離不開數(shù)字邏輯知識的支撐。FPGA說白了是一種實現(xiàn)數(shù)字邏輯的方式而已絮记。如果連最基本的數(shù)字邏輯的知識都有問題摔踱,學習FPGA的愿望只是空中樓閣而已。數(shù)字邏輯是任何電子電氣類專業(yè)的專業(yè)基礎(chǔ)知識怨愤,也是必須要學好的一門課派敷。

如果不能將數(shù)字邏輯知識爛熟于心,養(yǎng)成良好的設(shè)計習慣撰洗,學FPGA到最后仍然是霧里看花水中望月篮愉,始終是一場空的。以上四條只是我目前總結(jié)菜鳥們在學習FPGA時所最容易跑偏的地方差导,F(xiàn)PGA的學習其實就像學習圍棋一樣潜支,學會如何在棋盤上落子很容易,成為一位高手卻是難上加難柿汛。要真成為李昌鎬那樣的神一般的選手,除了靠刻苦專研埠对,恐怕還確實得要一點天賦络断。

薦讀

1.?入門首先要掌握HDL(HDL=verilog+VHDL)

第一句話是:還沒學數(shù)電的先學數(shù)電。然后你可以選擇verilog或者VHDL项玛,有C語言基礎(chǔ)的貌笨,建議選擇VHDL。因為verilog太像C了襟沮,很容易混淆锥惋,最后你會發(fā)現(xiàn)昌腰,你花了大量時間去區(qū)分這兩種語言,而不是在學習如何使用它膀跌。當然遭商,你思維能轉(zhuǎn)得過來,也可以選verilog捅伤,畢竟在國內(nèi)verilog用得比較多劫流。

接下來,首先找本實例抄代碼丛忆。抄代碼的意義在于熟悉語法規(guī)則和編譯器(這里的編譯器是硅編譯器又叫綜合器祠汇,常用的編譯器有:Quartus、ISE熄诡、Vivado可很、Design Compiler 、Synopsys的VCS凰浮、iverilog我抠、Lattice的Diamond、Microsemi/Actel的Libero导坟、Synplify pro)屿良,然后再模仿著寫,最后不看書也能寫出來惫周。編譯完代碼尘惧,就打開RTL圖,看一下綜合出來是什么樣的電路递递。

HDL是硬件描述語言喷橙,突出硬件這一特點,所以要用數(shù)電的思維去思考HDL登舞,而不是用C語言或者其它高級語言贰逾,如果不能理解這句話的,可以看《什么是硬件以及什么是軟件》菠秒。在這一階段疙剑,推薦的教材是《Verilog傳奇》、《Verilog HDL高級數(shù)字設(shè)計》或者是《用于邏輯綜合的VHDL》践叠。不看書也能寫出個三段式狀態(tài)機就可以進入下一階段了言缤。

此外,你手上必須準備Verilog或者VHDL的官方文檔禁灼,《verilog_IEEE官方標準手冊-2005_IEEE_P1364》管挟、《IEEE Standard VHDL Language_2008》刹枉,以便遇到一些語法問題的時候能查一下犀勒。

2.?獨立完成中小規(guī)模的數(shù)字電路設(shè)計

現(xiàn)在侯谁,你可以設(shè)計一些數(shù)字電路了虚缎,像交通燈、電子琴穿铆、DDS等等您单,推薦的教材是夏老《Verilog 數(shù)字系統(tǒng)設(shè)計教程》(第三版)。在這一階段悴务,你要做到的是:給你一個指標要求或者時序圖睹限,你能用HDL設(shè)計電路去實現(xiàn)它。這里你需要一塊開發(fā)板讯檐,可以選Altera的cyclone IV系列羡疗,或者Xilinx的Spantan 6。

還沒掌握HDL之前千萬不要買開發(fā)板别洪,因為你買回來也沒用叨恨。這里你沒必要每次編譯通過就下載代碼,咱們用modelsim仿真(此外還有QuestaSim挖垛、NC verilog痒钝、Diamond的Active-HDL、VCS痢毒、Debussy/Verdi等仿真工具)送矩,如果仿真都不能通過那就不用下載了,肯定不行的哪替。在這里先掌握簡單的testbench就可以了栋荸。推薦的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。

3.?掌握設(shè)計方法和設(shè)計原則

你可能發(fā)現(xiàn)你綜合出來的電路盡管沒錯凭舶,但有很多警告晌块。這個時候,你得學會同步設(shè)計原則帅霜、優(yōu)化電路匆背,是速度優(yōu)先還是面積優(yōu)先,時鐘樹應(yīng)該怎樣設(shè)計身冀,怎樣同步兩個異頻時鐘等等钝尸。

推薦的教材是《FPGA權(quán)威指南》、《IP核芯志-數(shù)字邏輯設(shè)計思想》搂根、《Altera FPGA/CPLD設(shè)計》第二版的基礎(chǔ)篇和高級篇兩本珍促。學會加快編譯速度(增量式編譯、LogicLock)兄墅,靜態(tài)時序分析(timequest),嵌入式邏輯分析儀(signaltap)就算是通關(guān)了澳叉。如果有不懂的地方可以暫時跳過隙咸,因為這部分還需要足量的實踐沐悦,才能有較深刻的理解。

4.?學會提高開發(fā)效率

因為Quartus和ISE的編輯器功能太弱五督,影響了開發(fā)效率藏否。所以建議使用Sublime text編輯器中代碼片段的功能,以減少重復(fù)性勞動充包。Modelsim也是常用的仿真工具副签,學會TCL/TK以編寫適合自己的DO文件,使得仿真變得自動化基矮,推薦的教材是《TCL/TK入門經(jīng)典》淆储。

你可能會手動備份代碼,但是專業(yè)人士都是用版本控制器的家浇,所以本砰,為了提高工作效率,必須掌握GIT钢悲。文件比較器Beyond Compare也是個比較常用的工具点额。此外,你也可以使用System Verilog來替代testbench莺琳,這樣效率會更高一些还棱。如果你是做IC驗證的,就必須掌握System Verilog和驗證方法學(UVM)惭等。推薦的教材是《Writing Testbenches using SystemVerilog》珍手、《The UVM Primer》、《System Verilog1800-2012語法手冊》咕缎。

掌握了TCL/TK之后珠十,可以學習虛擬Jtag(ISE也有類似的工具)制作屬于自己的調(diào)試工具,此外凭豪,有時間的話焙蹭,最好再學個python。腳本嫂伞,意味著一勞永逸孔厉。

5.?增強理論基礎(chǔ)

這個時候,你已經(jīng)會使用FPGA了帖努,但是還有很多事情做不了(比如撰豺,F(xiàn)IR濾波器、PID算法拼余、OFDM等)污桦,因為理論沒學好。我大概地分幾個方向供大家參考匙监,后面跟的是要掌握的理論課凡橱。

信號處理 —— 信號與系統(tǒng)小作、數(shù)字信號處理、數(shù)字圖像處理稼钩、現(xiàn)代數(shù)字信號處理顾稀、盲信號處理、自適應(yīng)濾波器原理坝撑、雷達信號處理

接口應(yīng)用 —— 如:UART静秆、SPI、IIC巡李、USB抚笔、CAN、PCIE击儡、Rapid IO塔沃、DDR、TCP/IP阳谍、SPI4.2(10G以太網(wǎng)接口)蛀柴、SATA、光纖矫夯、DisplayPort

無線通信 —— 信號與系統(tǒng)鸽疾、數(shù)字信號處理、通信原理训貌、移動通信基礎(chǔ)制肮、隨機過程、信息論與編碼

CPU設(shè)計 —— 計算機組成原理递沪、單片機豺鼻、計算機體系結(jié)構(gòu)、編譯原理

儀器儀表 —— 模擬電子技術(shù)款慨、高頻電子線路儒飒、電子測量技術(shù)、智能儀器原理及應(yīng)用

控制系統(tǒng) —— 自動控制原理檩奠、現(xiàn)代控制理論桩了、過程控制工程、模糊控制器理論與應(yīng)用

壓縮埠戳、編碼井誉、加密 —— 數(shù)論、抽象代數(shù)整胃、現(xiàn)代編碼技術(shù)颗圣、信息論與編碼、數(shù)據(jù)壓縮導(dǎo)論、應(yīng)用密碼學在岂、音頻信息處理技術(shù)荚藻、數(shù)字視頻編碼技術(shù)原理

現(xiàn)在你發(fā)現(xiàn),原來FPGA會涉及到那么多知識洁段,你可以選一個感興趣的方向,但是工作中很有可能用到其中幾個方向的知識共郭,所以理論還是學得越多越好祠丝。如果你要更上一層,數(shù)學和英語是不可避免的除嘹。

6.?學會使用MATLAB仿真

設(shè)計FPGA算法的時候写半,多多少少都會用到MATLAB,比如CRC的系數(shù)矩陣尉咕、數(shù)字濾波器系數(shù)叠蝇、各種表格和文本處理等。此外年缎,MATLAB還能用于調(diào)試HDL(用MATLAB的計算結(jié)果跟用HDL算出來的一步步對照悔捶,可以知道哪里出問題)。推薦的教材是《MATLAB寶典》和杜勇的《數(shù)字濾波器的MATLAB與FPGA實現(xiàn)》单芜。

7.?圖像處理

Photoshop

花一蜕该、兩周的時間學習PS,對圖像處理有個大概的了解洲鸠,知道各種圖片格式堂淡、直方圖、色相扒腕、通道绢淀、濾鏡、拼接等基本概念瘾腰,并能使用它皆的。這部分是0基礎(chǔ),目的讓大家對圖像處理有個感性的認識居灯,而不是一上來就各種各樣的公式推導(dǎo)祭务。推薦《Photoshop CS6完全自學教程》。

基于MATLAB或OpenCV的圖像處理

有C/C++基礎(chǔ)的可以學習OpenCV怪嫌,否則的話义锥,建議學MATLAB。這個階段下岩灭,只要學會簡單的調(diào)用函數(shù)即可拌倍,暫時不用深究實現(xiàn)的細節(jié)。推薦《數(shù)字圖像處理matlab版》、《學習OpenCV》柱恤。

圖像處理的基礎(chǔ)理論

這部分的理論是需要高數(shù)数初、復(fù)變、線性代數(shù)梗顺、信號與系統(tǒng)泡孩、數(shù)字信號處理等基礎(chǔ),基礎(chǔ)不好的話寺谤,建議先補補基礎(chǔ)再來仑鸥。看不懂的理論也可以暫時先放下变屁,或許學到后面就自然而然地開竅了眼俊。推薦《數(shù)字圖像處理》。

基于FPGA的圖像處理

把前面學到的理論運用到FPGA上面粟关,如果這時你有前面第七個階段的水平疮胖,你將輕松地獨立完成圖像算法設(shè)計(圖像處理是離不開接口的,上面第五個階段有講)闷板。推薦《基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計》澎灸、《基于FPGA的數(shù)字圖像處理原理及應(yīng)用》。

進一步鉆研數(shù)學遮晚。要在算法上更上一層击孩,必然需要更多的數(shù)學,所以這里建議學習實分析鹏漆、泛涵分析巩梢、小波分析等。

其它問題

1. 為什么不推薦學習MicroBlaze等軟核艺玲?

性價比不高括蝠,一般的軟核性能大概跟Cortex M3或M4差不多,用FPGA那么貴的東西去做一個性能一般的CPU饭聚,在工程上是非常不劃算的忌警。不如另外加一塊M3。

加上軟核秒梳,可能會影響到其它的邏輯的功能法绵。這是在資源并不十分充足的情況下,再加上軟核酪碘,導(dǎo)致布局布線變得相當困難朋譬。軟核不開源,出現(xiàn)Bug的時候兴垦,不容易調(diào)試徙赢。工程上很少使用字柠,極有可能派不上用場。

2. 為什么不推薦0基礎(chǔ)學習ZYNQ或SOC狡赐?

入門應(yīng)該學習盡量簡單的東西窑业,要么專心學習ARM,要么專心學習FPGA枕屉。這樣更容易有成就感常柄,增強信心。

ZYNQ和SOC的應(yīng)用領(lǐng)域并不廣搀擂,還有很多人沒聽過這種東西拐纱,導(dǎo)致求職的不利。開發(fā)工具編譯時間長哥倔,浪費較多時間。絕大多數(shù)工作揍庄,都只是負責一方面咆蒿,也就是說另一方面,很有可能派不上用場蚂子。

3. 為什么已經(jīng)存在那么多IP核沃测,仍需寫HDL?

問這種問題的食茎,一般是學生蒂破,他們沒有做過產(chǎn)品,沒有遇到過工程上的問題别渔。IP核并非萬能附迷,不能滿足所有需求。盡量少用閉源IP核哎媚,一旦出問題喇伯,這種黑匣子很可能讓產(chǎn)品難產(chǎn)。

深入理解底一層次拨与,可以更好地使用高一層次稻据。該法則可以適用于所有編程語言。

END

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末买喧,一起剝皮案震驚了整個濱河市捻悯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淤毛,老刑警劉巖今缚,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異低淡,居然都是意外死亡荚斯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來事期,“玉大人滥壕,你說我怎么就攤上這事∈奁” “怎么了绎橘?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長唠倦。 經(jīng)常有香客問我称鳞,道長,這世上最難降的妖魔是什么稠鼻? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任冈止,我火速辦了婚禮,結(jié)果婚禮上候齿,老公的妹妹穿的比我還像新娘熙暴。我一直安慰自己,他們只是感情好慌盯,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布周霉。 她就那樣靜靜地躺著,像睡著了一般亚皂。 火紅的嫁衣襯著肌膚如雪俱箱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天灭必,我揣著相機與錄音狞谱,去河邊找鬼。 笑死禁漓,一個胖子當著我的面吹牛芋簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播璃饱,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼与斤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荚恶?” 一聲冷哼從身側(cè)響起撩穿,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谒撼,沒想到半個月后食寡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡廓潜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年抵皱,在試婚紗的時候發(fā)現(xiàn)自己被綠了善榛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡呻畸,死狀恐怖移盆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伤为,我是刑警寧澤咒循,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绞愚,受9級特大地震影響叙甸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜位衩,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一裆蒸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糖驴,春花似錦僚祷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晌杰。三九已至跷睦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肋演,已是汗流浹背抑诸。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爹殊,地道東北人蜕乡。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像梗夸,于是被迫代替她去往敵國和親层玲。 傳聞我的和親對象是個殘疾皇子反症,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容