學(xué)完基礎(chǔ)的verilog語言后如何進(jìn)一步學(xué)習(xí)fpga?
學(xué)fpga,先學(xué)寫狀態(tài)機(jī),仿真和基礎(chǔ)的i2c之類的協(xié)議,這是第一步,基礎(chǔ)打好后,fpga必須會高速接口如ddr,pcie之類,算法方面至少fft之類的ip核試著用用,這算是進(jìn)階,然后還有異步時(shí)鐘,布局布線,時(shí)序優(yōu)化等等,技術(shù)路線基本就這樣,等這些都掌握了,工作應(yīng)該妥妥的
verilog是目前數(shù)字電路的通用(主流)描述語言,必學(xué)的。但是數(shù)字IC/FPGA設(shè)計(jì),絕不止是verilog。就像軟件開發(fā),絕不止是C++。還有很多基礎(chǔ)知識,專業(yè)知識技能是需要學(xué)習(xí)掌握的。自己可以對照下。
A:電子工程師(Electronics Engineer)基礎(chǔ)知識1:電路分析,數(shù)字電路基礎(chǔ);2:微機(jī)原理,匯編語言;3:C/C 語言,數(shù)據(jù)結(jié)構(gòu);4:Verilog語言(比如Michael, D.Cilette的《Verilog HDL高級數(shù)字設(shè)計(jì)》或夏宇聞老師的《Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程》);5:晶體管原理;(做數(shù)字IC/FPGA設(shè)計(jì),只需大致了解)B:數(shù)字IC設(shè)計(jì)專業(yè)知識1:進(jìn)數(shù)字IC前端/FPGA設(shè)計(jì)的專業(yè)知識學(xué)習(xí),sky推薦這本書:《CMOS VLSI Design A Circuits and Systems Perspective》。自認(rèn)為是數(shù)字IC設(shè)計(jì)入門“圣經(jīng)”。基本電路結(jié)構(gòu),加減法器結(jié)構(gòu),組合邏輯,時(shí)序邏輯,跨時(shí)鐘設(shè)計(jì)都有涉及。2:在此還需要理解On-Chip-Bus的基本知識與一個數(shù)字系統(tǒng)的基本結(jié)構(gòu),建議學(xué)習(xí)理解:AMBA總線,含:APB/AHB/AXI。由于ARM在數(shù)字IP領(lǐng)域的領(lǐng)導(dǎo)低位,AMBA總線事實(shí)上已經(jīng)成為數(shù)字IC的通用總線結(jié)構(gòu),必學(xué)。3:現(xiàn)在可以開始做數(shù)字IP的設(shè)計(jì)了,涉及到使用相關(guān)EDA tool。a):功能驗(yàn)證:對于初學(xué)者(在校生),能modelsim/questasim上做仿真測試,熟悉波形窗口;debug RTL code。再使用下windows版的nLint/Debussy就能完成數(shù)字IP功能設(shè)計(jì)驗(yàn)證了。b):綜合與實(shí)現(xiàn):這部分首先(重點(diǎn))要掌握STA原理,比如:cell delay在cell library里面是怎么標(biāo)定的,tool是怎么計(jì)算delay的,setup/hold timing check的計(jì)算公式是什么;clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_path,OCV , ….是什么意思,對STA有何作用。懂了STA原理,就可以用TCL語言寫SDC(DC綜合)/XDC(vivado綜合實(shí)現(xiàn))timing constraint了。目前XDC/SDC的語法已經(jīng)基本統(tǒng)一了。C:進(jìn)階知識、技能1:算法方向:信號與系統(tǒng),數(shù)字信號處理(DSP);2:接口方向:UART/IIC/SPI/DDR等常用接口協(xié)議;如有余力,可以看看USB/PCIE/SATA/MIPI;3:日常工作的OS平臺:linux操作系統(tǒng)使用;vim(emac)使用;bash(csh);makefile;4:腳本語言:Perl(Python)/TCL;5:版本管理工具:SVN/Git;D:項(xiàng)目鍛煉1:小數(shù)字IP的設(shè)計(jì)、驗(yàn)證(UART/SPI/Timer/AHB-SRAM);2:小數(shù)字IP在FPGA上的實(shí)際運(yùn)行;3:HW/SW的協(xié)同運(yùn)作(試試zynq FPGA上PS-PL的協(xié)同);4:中大數(shù)字IP的設(shè)計(jì)、驗(yàn)證(AXI-DMA,圖像ISP處理,CNN加速器等);5:中大型FPGA項(xiàng)目開發(fā)(導(dǎo)師項(xiàng)目);6:參與一個數(shù)字IC項(xiàng)目的設(shè)計(jì)、驗(yàn)證、FPGA emulation、流片(這個目前在校參與的機(jī)會很?。?/p>
建議補(bǔ)充數(shù)字IC設(shè)計(jì)基本知識,比如:rtl代碼與電路結(jié)構(gòu)的關(guān)系(了解基本組合邏輯,比如加減法,乘法器的結(jié)構(gòu)),跨時(shí)鐘域電路原理域設(shè)計(jì),STA原理與timing約束,BUS(AHB/APB/AXI)的知識。如果搞fpga,還得熟悉下廠商提供的IP的實(shí)用,比如:內(nèi)置CPU,網(wǎng)絡(luò)接口等。然后就是實(shí)際寫代碼上fpga板子試試。