很多開(kāi)發(fā)者第一次接觸 FPGA,都會(huì)有同樣的疑問(wèn):FPGA 是硬件,不是軟件,怎么寫(xiě)程序?答案就是用硬件描述語(yǔ)言(HDL),最常用的就是Verilog和VHDL。今天,我們就帶你入門(mén),搞清楚 FPGA 編程的基礎(chǔ)概念和實(shí)踐方法。
一、FPGA 與 MCU/MPU 的區(qū)別 MCU/MPU:順序執(zhí)行程序,CPU 負(fù)責(zé)所有邏輯 FPGA:可編程邏輯陣列,邏輯電路可按需求重新配置,實(shí)現(xiàn)并行處理 換句話(huà)說(shuō),F(xiàn)PGA 上的“程序”其實(shí)就是邏輯電路的設(shè)計(jì)。
理解這一點(diǎn),你就明白為什么 HDL 與傳統(tǒng) C 語(yǔ)言有本質(zhì)不同。
二、Verilog 基礎(chǔ) Verilog 是一種硬件描述語(yǔ)言,語(yǔ)法上有點(diǎn)像 C,但它描述的是硬件電路。
1. 模塊(module) 模塊是 Verilog 的基本單元,相當(dāng)于一個(gè)功能塊。 module led_blink ( input clk , output reg led ); reg [ 23 : 0 ] counter ; always @( posedge clk ) begin counter <= ?counter? + 1 ; if ( counter? == 24 _000_000 ) begin ? ? ? ? ? ? led? <= ~ led ; ? ? ? ? ? ? counter? <= 0 ; end end endmodule module:定義模塊 input/output:模塊接口 always:時(shí)序邏輯塊,觸發(fā)條件通常為時(shí)鐘上升沿?
2. 數(shù)據(jù)類(lèi)型 wire:連線(xiàn),用于組合邏輯 reg:寄存器,用于時(shí)序邏輯 parameter:常量參數(shù)
三、VHDL 基礎(chǔ) VHDL 更像 Ada 或 Pascal,語(yǔ)法更嚴(yán)格,但功能同樣強(qiáng)大。
library IEEE ; use IEEE . STD_LOGIC_1164 . ALL ; entity led_blink is Port ( clk : in STD_LOGIC ; led : out STD_LOGIC ); end led_blink ; architecture Behavioral of led_blink is signal counter : integer := 0 ; begin process ( clk ) begin if rising_edge ( clk ) then counter <= ?counter? + 1 ; if ?counter? = 24 _000_000? then ? ? ? ? ? ? ? ? led? <= not ?led ; ? ? ? ? ? ? ? ? counter? <= 0 ; end if ; end if ; end ?process ; end Behavioral ; entity:模塊接口 architecture:模塊內(nèi)部實(shí)現(xiàn) process:時(shí)序邏輯塊?
四、組合邏輯與時(shí)序邏輯
組合邏輯:輸出只依賴(lài)當(dāng)前輸入 用assign(Verilog)或with/select(VHDL)實(shí)現(xiàn)
示例:加法器、邏輯門(mén) 時(shí)序邏輯:輸出依賴(lài)時(shí)鐘和寄存器狀態(tài) 用always@(posedge clk)(Verilog)或process(clk)(VHDL)實(shí)現(xiàn) 示例:計(jì)數(shù)器、狀態(tài)機(jī)
五、FPGA 開(kāi)發(fā)流程簡(jiǎn)述 設(shè)計(jì) HDL 代碼 編寫(xiě) Verilog 或 VHDL 模塊 仿真驗(yàn)證 用 ModelSim、Vivado Simulator 等工具驗(yàn)證功能 綜合(Synthesis) 將 HDL 轉(zhuǎn)化為門(mén)級(jí)電路 布局布線(xiàn)(Place & Route) 將邏輯映射到 FPGA 物理資源 下載配置 用 JTAG 或 USB 將比特流寫(xiě)入 FPGA 硬件驗(yàn)證 測(cè)試實(shí)際硬件功能是否符合預(yù)期
六、小技巧與入門(mén)建議 從小模塊開(kāi)始 LED 燈閃爍、按鍵檢測(cè)都是經(jīng)典練手項(xiàng)目 學(xué)會(huì)仿真 先在仿真環(huán)境跑通邏輯,再上板避免燒 FPGA 注意時(shí)鐘域與延遲 時(shí)序問(wèn)題是新手常踩坑點(diǎn) 利用現(xiàn)成 IP 核 Vivado、Quartus 提供豐富 IP,可加快開(kāi)發(fā)
七、結(jié)語(yǔ)
FPGA 編程不只是寫(xiě)代碼,而是設(shè)計(jì)硬件。
掌握 Verilog 或 VHDL,你就能把自己的想法直接變成電路,讓設(shè)備按你的邏輯“動(dòng)起來(lái)”。 入門(mén)可以先從簡(jiǎn)單 LED 閃爍、按鍵檢測(cè)開(kāi)始,逐步深入到 UART、SPI、PWM 等外設(shè)控制,最終掌握復(fù)雜的信號(hào)處理和嵌入式系統(tǒng)設(shè)計(jì)。
-
FPGA
+關(guān)注
關(guān)注
1663文章
22491瀏覽量
638839 -
Verilog
+關(guān)注
關(guān)注
30文章
1374瀏覽量
114700 -
vhdl
+關(guān)注
關(guān)注
30文章
822瀏覽量
131843
發(fā)布評(píng)論請(qǐng)先 登錄
【招聘】verilog vhdl FPGA
Verilog vhdl fpga
FPGA編程是用VHDL還是verilog HDL好用?謝謝了!
關(guān)于VHDL和verilog的幾點(diǎn)疑問(wèn)
FPGA實(shí)戰(zhàn)演練邏輯篇4:Verilog與VHDL
有關(guān)FPGA開(kāi)發(fā)語(yǔ)言VHDL和Verilog的疑惑
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載4:Verilog與VHDL
Verilog HDL與VHDL及FPGA的比較分析
Xilinx Sdram 參考設(shè)計(jì):含Verilog和VHDL版
FPGA視頻教程之學(xué)習(xí)FPGA選擇verilog還是vhdl詳細(xì)資料說(shuō)明
vhdl轉(zhuǎn)換為verilog_VHDL和Verilog誰(shuí)更勝一籌
FPGA編程語(yǔ)言的入門(mén)教程
Verilog與VHDL的比較 Verilog HDL編程技巧
為什么我選擇VHDL入門(mén)
FPGA 入門(mén)必看:Verilog 與 VHDL 編程基礎(chǔ)解析!
評(píng)論