你們可能會有這樣的疑問,咱們編寫的Verilog代碼最終會在FPGA上以怎樣的映射關係來實現功能呢?咱們以一個最簡單的組合邏輯與門爲例來向你們說明。RTL代碼以下所示:工具
1 //-------------------------------------------------- 2 module and_logic( 3 input wire in1 , 4 input wire in2 , 5 6 output wire out 7 ); 8 9 //out:輸出in1與in2相與的結果 10 assign out = in1 & in2; 11 12 endmodule 13 //--------------------------------------------------
代碼編寫完後依然須要點擊「Start Analysis & Synthesis」圖標進行分析和綜合。而後雙擊「Netlist Viewers」下的「RTL Viewer」查看RTL視圖。咱們能夠看到兩個輸入信號通過一個與門後輸出,和咱們代碼設計的結果是徹底一致的。
佈局
點擊「Start Compilation」圖標全編譯進行佈局佈線,而後打開Chip Planner視圖。
Chip Planner打開後的界面如圖2所示,咱們能夠看到在版圖模型中有一個塊藍色區域的顏色變深,說有該區域的資源被佔用,在FPGA內部硬件結構簡介中咱們知道這是一個邏輯陣列塊LAB,咱們將該區域放大。
學習
如圖3所示,放大後能夠看到藍色變深的區域中有16個小塊,這16個小塊就是LE,其中只有一個LE的顏色變是藍色的,說明該處的資源被使用了,雙擊藍色的LE便可觀察其內部的結構。
spa
打開LE後內部的結構如圖4所示,其中藍色顯示的是真實使用到的結構,灰色的是未使用到的結構,咱們能夠看到有兩個輸入和一個輸出,與RTL代碼的描述是對應的,紅色框就是查找表LUT。
設計
你們可能仍是不理解LUT是如何實現咱們的與邏輯。咱們先來看一下與邏輯的真值表,以下所示:
code
根據真值表能夠看出輸入,兩個輸入對應的輸出一共有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。
blog
歡迎加入FPGA技術學習交流羣,本羣致力於爲廣大FPGAer提供良好的學習交流環境,不按期提供各類本行業相關資料!QQ交流羣號:450843130
圖片