Verilog代碼和FPGA硬件的映射關係(二)

       大家可能會有這樣的疑問,我們編寫的Verilog代碼最終會在FPGA上以怎樣的映射關係來實現功能呢?我們以一個最簡單的組合邏輯與門爲例來向大家說明。RTL代碼如下所示:

//--------------------------------------------------
01 module	and_logic(				
02 	input 	wire	in1	,	
03 	input	wire	in2	,	
04 
05 	output	wire 	out		
06 );											
07 
08 //out:輸出in1與in2相與的結果
09 assign out = in1 & in2;								  
10 
11 endmodule						
//--------------------------------------------------

       代碼編寫完後依然需要點擊“Start Analysis & Synthesis”圖標進行分析和綜合。然後雙擊“Netlist Viewers”下的“RTL Viewer”查看RTL視圖。我們可以看到兩個輸入信號經過一個與門後輸出,和我們代碼設計的結果是完全一致的。
在這裏插入圖片描述

圖1

       點擊“Start Compilation”圖標全編譯進行佈局佈線,然後打開Chip Planner視圖。
Chip Planner打開後的界面如圖2所示,我們可以看到在版圖模型中有一個塊藍色區域的顏色變深,說有該區域的資源被佔用,在FPGA內部硬件結構簡介中我們知道這是一個邏輯陣列塊LAB,我們將該區域放大。
在這裏插入圖片描述

圖2

       如圖3所示,放大後可以看到藍色變深的區域中有16個小塊,這16個小塊就是LE,其中只有一個LE的顏色變是藍色的,說明該處的資源被使用了,雙擊藍色的LE即可觀察其內部的結構。
在這裏插入圖片描述

圖3

       打開LE後內部的結構如圖4所示,其中藍色顯示的是真實使用到的結構,灰色的是未使用到的結構,我們可以看到有兩個輸入和一個輸出,與RTL代碼的描述是對應的,紅色框就是查找表LUT。
在這裏插入圖片描述

圖4

       大家可能還是不理解LUT是如何實現我們的與邏輯。我們先來看一下與邏輯的真值表,如下所示:
在這裏插入圖片描述

圖5

       根據真值表可以看出輸入,兩個輸入對應的輸出一共有4種情況,LUT需要做的工作就是能夠根據輸入的變化對應輸出正確的值。我們可以LUT預先存儲所有輸出的4種情況,然後判斷輸入,對應輸出就可以了。LUT的內部結構在Chip Planner中並沒有表達出來,但是我們可以推斷出來,如圖5所示,爲與門所對應的LUT內部結構圖,其中LUT中存儲的是4種輸出情況,輸入信號in1和in2通過多路器選擇哪一個存儲在LUT中的值輸出。圖中展示的是當in1和in2輸入的值都爲1時,我們可以看出存儲在LUT的“1”從標註的紅色路徑中輸出到out,LUT中存儲的值會在綜合工具綜合時進行映射。這裏我們也不難看出LUT其實所充當的角色就是存儲器RAM的功能,更直白一點說LUT就是個小RAM,所以我們也可以用LUT來構成小規模的RAM用於存儲數據,LUT所構成的RAM就是我們常說的Distribute RAM,簡稱爲DRAM。
在這裏插入圖片描述 

圖6
 
       歡迎加入FPGA技術學習交流羣,本羣致力於爲廣大FPGAer提供良好的學習交流環境,不定期提供各種本行業相關資料!QQ交流羣號:450843130
 在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章