首頁>Club>
4
回覆列表
  • 1 # 石文優Winyoo

    作為一個FPGA初級工程師,分享一下我的經驗,FPGA作為一個將設計者的設計方法實現的工具。學習FPGA的最終目的,就是能夠熟練應用並且在規定時間段內,設計出完美的時序邏輯電路。我以為應該從以下六方面著手:

    一、數位電路等基礎知識

    FPGA是一個可程式設計邏輯器件。在學習FPGA之前,必須熟練掌握乃至精通數位電路的知識如組合邏輯電路(譯碼器、編碼器、邏輯閘)、時序邏輯電路(RAM、ROM、觸發器、計數器、FIFO、雙口RAM等)、數制與編碼(常用的幾種編碼格式尤其是獨熱碼)、狀態機、介面與、時序圖(SPI、I2C、USB等)、波形圖。有些知識可能在開發時你容易忽略如,亞穩態、開關噪聲(SSN)。這些基礎知識都要學習。

    二、FPGA的內部結構

    瞭解FPGA內部結構,有助於方案器件選型與解決方案設計。也是對FPGA器件使用的最基本要求。

    三、FPGA的開發與除錯

    FPGA開發包含開發工具和開發語言的選擇。開發FPGA的廠商很多,如 Intel Altera,Xilinx等。所以需要針對一門開發工具和模擬工具進行學習。開發工具包含設計工具和模擬工具(如modelsim、QuestaSim)。

    然後再根據不同的開發工具選擇不同的開發流程。具體工具入門可參考網上相關教程。開發語言可選Verilog HDL 與VHDL 其中一種進行學習,隨後根據需要可以再學習另一門語言。語言學習時,需要注意編寫規範。

    FPGA的除錯是比較複雜的一個過程,包含板級除錯和演算法除錯。演算法除錯必須藉助JTAG除錯介面與相關工具(邏輯分析儀、示波器、MATLAB)進行。因此必須掌握JTAG、邏輯分析儀、示波器、MATLAB等相關工具使用。

    四、FPGA的系統級設計

    如果未來準備從事板級類開發,就要學習FPGA外圍硬體原理圖。涉及到電源設計(LDO、DC-DC)、介面電路(SPI、CAMISP、匯流排)、外設硬體(ADC、DAC、驅動器)、時鐘模組等部分。有時為了需要可能會在FPGA內部整合SOC或者一個OS核,需要學習作業系統、核心硬核等知識

    五、FPGA設計難點

    設計FPGA程式碼的難點在於時序,同時要在面積和功耗進行折中。重點學習時序對齊、跨時鐘域訊號同步問題、時序約束、功耗控制等。

    六、FPGA應用領域

    前面五點做到的話, FPGA就算入門了。但是針對不同的應用領域你還需要掌握其他知識,如影象處理、數字訊號處理、通訊方面等。掌握高階語言如C語言也是必須的,在前期演算法設計時可以先用c進行實現,然後在轉化到到硬體描述語言。

    【附錄】

    1.對於學習Altera FPGA 推薦以下教材供參考。Altera FPGA/CPLD設計 基礎篇(高階篇)以及FPGA深度解析

    2.Verilog HDL入門教材

  • 中秋節和大豐收的關聯?
  • 為什麼新郎的著裝都是穿西裝呢?