學完基礎的verilog語言後如何進一步學習fpga

2022-06-19     大方老師單片機

原標題:學完基礎的verilog語言後如何進一步學習fpga

學完基礎verilog語言後如何進一步學fpga

fpga,先學寫狀態機,仿真和基礎i2c之類的協議,這是第一步,基礎打好後fpga必須會高速接口ddr,pcie之類,算法方面至fft之類ip核試著用用,這算是進階,然後還有異步時鐘,布局布線,時序優化等等,技術路線基本就這樣,等這些都掌握了,工作應該妥妥的

verilog是目前數字電路的通用(主流)描述語言,必學的。

但是數IC/FPGA設計,絕不止是verilog。就像軟體開發,絕不止C++

還有很多基礎知識,專業知識技能是需要學習掌握的。自己可以對照下。

A:電子工程師Electronics Engineer)基礎知識

1:電路分析,數字電路基礎;

2微機原理,彙編語言;

3C/C++語言,數據結構;

4Verilog語言(比Michael, D.Cilette的《Verilog HDL高級數字設計》或夏宇聞老師的Verilog數字系統設計教程》);

5:電晶體原理;(做數IC/FPGA設計,只需大致了解)

B:數IC設計專業知識

1:進數IC/FPGA設計的專業知識學習sky推薦這本書:CMOS VLSI Design A Circuits and Systems Perspective》。自認為是數IC設計入。基本電路結構,加減法器結構,組合邏輯,時序邏輯,跨時鐘設計都有涉及。

2:在此還需要理On-Chip-Bus的基本知識與一個數字系統的基本結構,建議學習理解AMBA總線,含APB/AHB/AXI。由ARM在數IP領域的領導低位AMBA總線事實上已經成為數IC的通用總線結構,必學。

3:現在可以開始做數IP的設計了,涉及到使用相EDA tool

a):功能驗證:對於初學者(在校生),modelsim/questasim上做仿真測試,熟悉波形窗口debug RTL code。再使用windowsnLint/Debussy就能完成數IP功能設計驗證了。

b):綜合與實現:這部分首先(重點)要掌STA原理,比如cell delaycell library裡面是怎麼標定的tool是怎麼計delaysetup/hold timing check的計算公式是什麼clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_pathOCV , ....是什麼意思,STA有何作用。懂STA原理,就可以TCL語言SDCDC綜合/XDCvivado綜合實現timing constraint了。目XDC/SDC的語法已經基本統一了。

C:進階知識、技能

1:算法方向:信號與系統,數位訊號處理DSP);

2:接口方向UART/IIC/SPI/DDR等常用接口協議;如有餘力,可以看USB/PCIE/SATA/MIPI

3:日常工作OS平台linux作業系統使用vim(emac)使用bash(csh)makefile

4:腳本語言Perl(Python)/TCL

5:版本管理工具SVN/Git

D:項目鍛鍊

1:小數IP的設計、驗證UART/SPI/Timer/AHB-SRAM);

2:小數IPFPGA上的實際運行;

3HW/SW的協同運作(試zynq FPGAPS-PL的協同);

4:中大數IP的設計、驗證AXI-DMA,圖ISP處理CNN加速器等);

5:中大FPGA項目開發(導師項目);

6:參與一個數IC項目的設計、驗證FPGA emulation、流片(這個目前在校參與的機會很小);

建議補充數IC設計基本知識,比如rtl代碼與電路結構的關係(了解基本組合邏輯,比如加減法,乘法器的結構),跨時鐘域電路原理域設計STA原理timing約束BUSAHB/APB/AXI)的知識。

如果fpga,還得熟悉下廠商提供IP的實用,比如:內CPU,網絡接口等。

然後就是實際寫代碼fpga板子試試。

文章來源: https://twgreatdaily.com/zh/3fcda81559c3bc6cf505de38f54d4c76.html