FPGA學習(一) 模組

2021-08-27 16:18:43 字數 1425 閱讀 7949

模組由兩部分組成,一部分描述介面,另一部分描述邏輯功能(可以模擬軟體程式中的函式由資料加演算法組成),邏輯功能定義輸入怎麼影響輸出。

1、模組埠定義

module 模組名(口1,口2,口3,口4,……);

口1,口2,口3,口4,……表示模組的輸入和輸出名。

引用模組時其埠可以用兩種方法連線

(1)嚴格按照模組定義的埠順序連線

模組名(連線埠1訊號名,連線埠2訊號名,連線埠3訊號名,……)

(2)用「.」符號,表明模組是定義時規定的埠名

模組名(.埠1名(連線訊號1名),埠2名(連線訊號2名),……)

例如:mydesignmk m1(.sin(serialin),.pout(parallelout),……)

2、模組內容

模組內容包括i/o說明、內部訊號宣告和功能定義

(1)i/o說明的格式

輸入口: input[訊號位寬-1:0] 埠名1;

輸出口: output[訊號位寬-1:0]埠名1;

輸入輸出口: inout[訊號位寬-1:0]埠名1;

i/o說明也可以寫在埠宣告語句裡。例如:

module module_name(input port1,input port2,……output port1,output port2,……);

(2)內部訊號說明

在模組內用到的和與埠有關的wire和reg型別變數的宣告。

如:reg[width-1:0]r變數1,r變數2……;

wire[width-1:0]w變數1,w變數2……;

(3)功能定義

有三種方法

(1)用「assign」宣告語句 如:assign a = b & c;

(2)用例項元件 如:and # 2 ul(q,a,b);

這表示在設計中用到乙個跟與門一樣的名為u1的與門,其輸入端為a,b,輸出為q。輸出延遲為兩個單位時間。要求每個例項元件的名字必須是唯一的,以避免與其他呼叫與門的例項混淆。

(3)用「always」塊, 如:

always @(posedge clk or posedge clr);

begin

if(clr) q <= 0;

else if(en) q <= d;

end「assign」是描述組合邏輯最常用的方法之一。而「always」既可用於描述組合邏。也可描述時序邏輯。

用verilog模組實現一定的功能,首先應該清楚哪些是同時發生,哪些是順序發生。

像用上面的三個關鍵字寫的模組在乙個verilog檔案中,這些模組同時執行,也就是併發。

但是「always」模組內,邏輯是順序執行,所以「always」也稱為「過程塊」。

3、要點總結

(1)verilog模組中所有過程塊、連續賦值語句、實力引用都是並行的

(2)他們表示的是一種通過變數名互相連線的關係

FPGA學習筆記(一) 初識FPGA

該隨筆中部分內容 自小梅哥 fpga field programmable gate array,現場可程式設計門陣列 正如其名,fpga內部有大量的可程式設計邏輯功能塊,使用verilog hdl 硬體描述語言 實現設計。玩過微控制器的小夥伴剛接觸fpga可能會有點困惑,其實fpga與微控制器最大...

fpga入門學習之一 fpga簡介

fpga簡介 說到底,fpga就是乙個能夠按照自己的意願去實現一些功能模組的這麼一種晶元。那問題就來啦,dsp也好 微控制器也好都能夠實現你說的這些功能,那我為什麼要選擇fpga呢?筆者認為選擇fpga的原因就在於,我如果想實現乙個20個串列埠收發資料的模組怎麼辦,我如果想實現乙個幾百兆時鐘的設計怎...

FPGA學習記錄一

fpga學習記錄 20170608 周四 早上洗好了衣服。中午下了大雨,難得遇一次。下午來,除錯放大板子,折騰半天,問題還是沒有解決,有點心累。飛了幾根線,但還是不行,實在沒信心去做了。所以還是來學習fpga吧,這個不那麼讓人傷心。串列埠uart的測試。需要建立多個測試文字程式,後面又去弄板子測試了...