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