一,、入門首先要掌握HDL(verilog+VHDL)
第一句話是:還沒學(xué)數(shù)電的先學(xué)數(shù)電,。然后你可以選擇verilog或者VHDL,,有C語言基礎(chǔ)的,,建議選擇VHDL,。因?yàn)関erilog太像C了,,很容易混淆,,最后你會發(fā)現(xiàn),,你花了大量時間去區(qū)分這兩種語言,,而不是在學(xué)習(xí)如何使用它,。當(dāng)然,你思維能轉(zhuǎn)得過來,,也可以選verilog,,畢竟在國內(nèi)verilog用得比較多。
接下來,,首先找本實(shí)例抄代碼,。抄代碼的意義在于熟悉語法規(guī)則和編譯器(又叫綜合器),常用的集成開發(fā)環(huán)境有:Intel的Quartus,、Xilinx的ISE和Vivado,、Design Compiler 、Synopsys的VCS,、Linux下的iverilog,、Lattice的Diamond、Microchip的Libero,、Synplify pro,,然后再模仿著寫,最后不看書也能寫出來,。編譯完代碼,,就打開RTL圖,看一下綜合出來是什么樣的電路,。
HDL是硬件描述語言,,突出硬件這一特點(diǎn),所以要用數(shù)電的思維去思考HDL,,而不是用C語言或者其它高級語言,,如果不能理解這句話的,可以看《什么是硬件以及什么是軟件》,。在這一階段,,推薦的教材是《Verilog HDL高級數(shù)字設(shè)計》或者是《用于邏輯綜合的VHDL》。不看書也能寫出個三段式狀態(tài)機(jī)就可以進(jìn)入下一階段了,。
此外,,你手上必須準(zhǔn)備Verilog或者VHDL的官方文檔,,《verilog_IEEE官方標(biāo)準(zhǔn)手冊-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,,以便遇到一些語法問題的時候能查一下,。
二、獨(dú)立完成中小規(guī)模的數(shù)字電路設(shè)計
現(xiàn)在,,你可以設(shè)計一些數(shù)字電路了,,像交通燈、電子琴,、DDS等等,,推薦的教材是《Verilog HDL應(yīng)用程序設(shè)計實(shí)例精講》。在這一階段,,你要做到的是:給你一個指標(biāo)要求或者時序圖,,你能用HDL設(shè)計電路去實(shí)現(xiàn)它。這里你需要一塊開發(fā)板,,可以選Altera的cyclone IV系列,或者Xilinx的Spantan 6,。還沒掌握HDL之前千萬不要買開發(fā)板,,因?yàn)槟阗I回來也沒用。這里你沒必要每次編譯通過就下載代碼,,咱們用modelsim仿真(此外還有QuestaSim,、NC verilog、Diamond的Active-HDL,、VCS,、Debussy/Verdi等仿真工具),如果仿真都不能通過那就不用下載了,,肯定不行的,。在這里先掌握簡單的testbench就可以了。推薦的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》,。
三,、掌握設(shè)計方法和設(shè)計原則
你可能發(fā)現(xiàn)你綜合出來的電路盡管沒錯,但有很多警告,。這個時候,,你得學(xué)會同步設(shè)計原則、優(yōu)化電路,,是速度優(yōu)先還是面積優(yōu)先,,時鐘樹應(yīng)該怎樣設(shè)計,怎樣同步兩個異頻時鐘等等,。推薦的教材是《FPGA權(quán)威指南》,、《Altera FPGA/CPLD設(shè)計》第二版的基礎(chǔ)篇和高級篇兩本,。學(xué)會加快編譯速度(增量式編譯、LogicLock),,靜態(tài)時序分析(timequest),,嵌入式邏輯分析儀(signaltap)就算是通關(guān)了。如果有不懂的地方可以暫時跳過,,因?yàn)檫@部分還需要足量的實(shí)踐,,才能有較深刻的理解。
四,、學(xué)會提高開發(fā)效率
因?yàn)镼uartus和ISE的編輯器功能太弱,,影響了開發(fā)效率。所以建議使用Sublime text編輯器中代碼片段的功能,,以減少重復(fù)性勞動,。Modelsim也是常用的仿真工具,學(xué)會TCL/TK以編寫適合自己的DO文件,,使得仿真變得自動化,,推薦的教材是《TCL/TK入門經(jīng)典》。你可能會手動備份代碼,,但是專業(yè)人士都是用版本控制器Git的,,可以提高工作效率。文件比較器Beyond Compare也是個比較常用的工具,,Git也有比較功能,。此外,你也可以使用System Verilog來替代testbench,,這樣效率會更高一些,。如果你是做IC驗(yàn)證的,就必須掌握System Verilog和驗(yàn)證方法學(xué)(UVM),。推薦的教材是《Writing Testbenches using SystemVerilog》,、《The UVM Primer》、《System Verilog1800-2012語法手冊》,。
掌握了TCL/TK之后,,可以學(xué)習(xí)虛擬Jtag(ISE也有類似的工具)制作屬于自己的調(diào)試工具,此外,,有時間的話,,最好再學(xué)個python。腳本,,意味著一勞永逸,。
五、增強(qiáng)理論基礎(chǔ)
這個時候,,你已經(jīng)會使用FPGA了,,但是還有很多事情做不了(比如,,F(xiàn)IR濾波器、PID算法,、OFDM等),,因?yàn)槔碚摏]學(xué)好。我大概地分幾個方向供大家參考,,后面跟的是要掌握的理論課,。
1、信號處理——信號與系統(tǒng),、數(shù)字信號處理,、多采樣率信號處理、數(shù)字圖像處理,、現(xiàn)代數(shù)字信號處理,、盲信號處理、自適應(yīng)濾波器原理,、雷達(dá)信號處理
2,、接口應(yīng)用——如:UART、SPI,、IIC,、USB、CAN,、PCIE、Rapid IO,、DDR,、TCP/IP、SPI4.2(10G以太網(wǎng)接口),、SATA,、光纖、DisplayPort,、HDMI
3,、無線通信——信號與系統(tǒng)、數(shù)字信號處理,、通信原理,、移動通信基礎(chǔ)、隨機(jī)過程,、信息論與編碼
4,、CPU設(shè)計——計算機(jī)組成原理、單片機(jī),、計算機(jī)體系結(jié)構(gòu),、編譯原理,、RISC-V
5、儀器儀表——模擬電子技術(shù),、高頻電子線路,、電子測量技術(shù)、智能儀器原理及應(yīng)用
6,、控制系統(tǒng)——自動控制原理,、現(xiàn)代控制理論、過程控制工程,、模糊控制器理論與應(yīng)用
7,、壓縮、編碼,、加密——數(shù)論,、抽象代數(shù)、現(xiàn)代編碼技術(shù),、信息論與編碼,、數(shù)據(jù)壓縮導(dǎo)論、應(yīng)用密碼學(xué),、音頻信息處理技術(shù),、數(shù)字視頻編碼技術(shù)原理、H.265
現(xiàn)在你發(fā)現(xiàn),,原來FPGA會涉及到那么多知識,,你可以選一個感興趣的方向,但是工作中很有可能用到其中幾個方向的知識,,所以理論還是學(xué)得越多越好,。如果你要更上一層,數(shù)學(xué)和英語是不可避免的,。
六,、學(xué)會使用MATLAB仿真
設(shè)計FPGA算法的時候,多多少少都會用到MATLAB,,比如CRC的系數(shù)矩陣,、FFT、數(shù)字濾波器系數(shù),、各種表格和文本處理等,。此外,MATLAB還能用于調(diào)試HDL(用MATLAB的計算結(jié)果跟用HDL算出來的一步步對照,,可以知道哪里出問題),。推薦的教材是《MATLAB寶典》和杜勇的《數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)》。
七、足量的實(shí)踐
這個時候你至少讀過幾遍芯片手冊(官網(wǎng)有),,然后可以針對自己的方向,,做一定量的實(shí)踐了(期間要保持良好的代碼風(fēng)格,增加元件例化語句的可讀性,,繪制流程圖/時序圖,,撰寫文檔的習(xí)慣)。比如:通信類的可以做調(diào)制解調(diào)算法,,儀表類的可以做總線分析儀等等,。不過這些算法,在書上只是給了個公式,、框圖而已,,跟實(shí)際的差距很大,你甚至?xí)X得書上的東西都很膚淺,。那么,,你可以在知網(wǎng)、百度文庫,、EETOP論壇,、opencores、ChinaAET,、SCI-HUB,、Q群共享、博客上面找些相關(guān)資料(校外的朋友可以在淘寶買個知網(wǎng)賬號),。其實(shí),,當(dāng)你到了這個階段,你已經(jīng)達(dá)到了職業(yè)級水平,,有空就多了解一些前沿技術(shù),,這將有助于你的職業(yè)規(guī)劃。
在工作當(dāng)中,,或許你需要關(guān)注很多協(xié)議和行業(yè)標(biāo)準(zhǔn),協(xié)議可以在EETOP上面找到,,而標(biāo)準(zhǔn)(如:國家標(biāo)準(zhǔn)GB和GB/T,,國際標(biāo)準(zhǔn)ISO)就推薦《標(biāo)準(zhǔn)網(wǎng)》和《標(biāo)準(zhǔn)分享網(wǎng)》。
八,、數(shù)電的盡頭是模電
現(xiàn)在FPGA內(nèi)部的事情是難不到你的,,但是信號出了FPGA,你就沒法控制了,。這個時候必須學(xué)好模電,。比如:電路分析、模擬電子技術(shù)、高頻電子線路,、PCB設(shè)計,、EMC、SI,、PI等等,,能設(shè)計出一塊帶兩片DDR3的FPGA開發(fā)板,就算通關(guān)了,。具體的學(xué)習(xí)路線可以參考本博客的《如何學(xué)習(xí)硬件設(shè)計——理論篇》和《如何學(xué)習(xí)硬件設(shè)計——實(shí)踐篇》,。
九、學(xué)無止境
能到這個境界,,說明你已經(jīng)很厲害了,,但是還有很多東西要學(xué)的,因?yàn)镕PGA常常要跟CPU交互,,也就是說你得經(jīng)常跟軟件工程師交流,,所以也得懂點(diǎn)軟件方面的知識。比如ARM(Xilinx的ZYNQ和Altera的SOC會用到ARM的硬核,,請參考本博客的《如何學(xué)習(xí)嵌入式軟件》),、DSP、Linux,、安卓,、上位機(jī)(QT、C#,、JAVA)都可以學(xué)一下,,反正學(xué)無止境的。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<
電子技術(shù)應(yīng)用專欄作家 FPGA之旅
原文地址:https://mp.weixin.qq.com/s/E-iygX4Thl768MFQuLVRAw