FPGA基本原理之一


  FPGA就好像一個平台,用簡單的器件和復雜的邏輯構建起來的。這個平台大概由六部分組成,分別為基本可編程邏輯模塊(CLB)、可編程輸入/輸出模塊(IOB)、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內嵌專用硬核等。對於不同型號的芯片,其內部結構也會有些變化,但原理都也差不多,所以咱不必在意說的是何種芯片,下面就以鄙陋只見說芯片之精妙。

 

1、可編程邏輯模塊
        邏輯塊(Logic Block),Altera稱之為邏輯陣列塊(LAB),Xilinx稱之為可配置邏輯課(CLB),我更喜歡CLB這個稱呼,因為它說得夠清楚,雖然我用的是Altera公司的芯片吧(*^__^*) 。我們所說的Verilog編程,可以說就是對CLB的配置,它可以實現絕大多數的邏輯功能。

 

       這是從書上拍下了的,這是CLB基礎的邏輯單元(LC)Logic Cell,一個CLB包含4個LC。每個LC中包括4輸入LUT、進位及控制邏輯和D觸發器各一個。而每2個LC放在一個微片上,上圖就是倆個微片。微片就是很小很小的一個模塊,或可理解為像人體細胞一樣吧。
       其中LUT(Look-Up Table)即查找表,它的本質是一個16X1的SRAM,SRAM是英文Static RAM的縮寫,即靜態隨機存儲器。我們可以認為SRAM是這個東西

 

      現在我想每個格子都放一樣東西,並方便尋找給每個格子編號,則格子的編號就可以看做格子的地址,如果每個格子只能放一個蘋果或是橘子,那么上圖就可以理解為一個20X1的RAM,當然,這只是一種比喻。
       我們通過Verilog語言可以寫出邏輯電路,例如F=A&B&C&D,FPGA開發軟件會自動計算邏輯電路的所有可能,並把結果放入SRAM,這一過程就是所謂的編程。就那F=A&B&C&D來說,ABCD的組合共有十六組,如下表

 

       當我們下載的時候,軟件會自動把上述表格的值送給SRAM,我們ABCD取不同值時,TLU就根據地址進行找到數輸出。也就是說,FPGA並不知道我們進行了F=A&B&C&D這一計算,它只是根據我們的輸入進行尋址。把TLU與數據選擇器配合使用,就可以實現組合邏輯功能,當與觸發器結合就可以實現時序邏輯電路的基本功能。

 
 
 
數據選擇器:
 


由M來控制AB哪個與D搭上線,就是M來選擇AB輸出哪一個,例如當M=0時A的值輸出,當M=1時B的值輸出,
與門:
 
ab同為一輸出1.否則為0.
 

異或:
AB不同時輸出1
觸發器:
 
        實現時序邏輯就是因為這個,D數據輸入,FFY時鍾信號輸入,它來一拍,數據傳輸一個。EC時鍾使能,Sd觸發器控制,Rd復位控制。
         下面就通過舉例來說一下各種功能
(1)實現4變量的任意邏輯函數。
         例如要實現F=A^B&C||D。那么就如上表格方式計算出所有的可能,將ABCD依次送給F1~F4,O端得到4變量邏輯函數的結果。該結果可以經過XMUX直接從X輸出,也可以經DCMUX和D觸發器由XQ輸出。
(2)實現5變量的任意邏輯函數
         5變量?!那一個LUT肯定是不夠了。F=A^B&C||D&E腫么辦???這時BX成了救世主,我們把ABCD這四個數據時同時送到送入F1~F4以及G1~G4的同時,將第五個數E送給BX。Why?Σ( ° △ °|||)︴因為五個數有32種可能,一個LUT只能存儲16種,這樣倆個就存儲32種啦。而且,如果我們在G-LUT中放的是ABCD任意值,而E為1,在F-LUT中放的也是ABCD任意值,但E=0。這時候第五個變量的輸入就起到選擇這倆個LUT哪個輸出!!!
(3)實現6變量任意邏輯函數
         有了5變量的基礎,實現六變量就好理解了,六變量邏輯函數需要倆個微片。因為由2^6=64嘛。我們假設要實現W=A^B&C||D&E&F。則可以讓微片一號的G-LUT存放地址ABCD任意值E=0,F=1,F-LUT存放ABCD任意值E=1,F=1。E從BX輸入。微片二號G-LUT存放地址ABCD任意值E=0,F=0,F-LUT存放ABCD任意值E=1,F=0。E從BX輸入,F從BY輸入。微片一號從F5輸出值接到微片二號的F5IN即可完成。結果可經過YMUX從Y輸出,可再經DYBMUX由觸發器輸出。
(4)2位二進制加法器
          一個微片可以實現2位二進制的加法運算就是11+11=110,10+01=11這些,加法器是非常重要的器件,日后詳談。在FPGA內部中,實現加法時,加數A0A1和被加數B0B1分別送入G2F2和G1F1,即G2=A1,G1=B1,F2=A0,F1=B0。實現F2⊕F1和G2⊕G1,由於加法涉及到了進位問題,故CLB專門設計了一個叫做進位鏈的東西以便實現進位操作。同時,通過編程使XMUX和YMUX選通異或門的輸出。電路上下倆個是全加器。圖中,與門、XCMUX、YCMUX、C-1MUX和CY構成進位邏輯電路。也稱進位鏈,可以與其他微片串聯實現更多的加法運算。當此微片為最低位時,通過編程使C-1MUX選通BX,且使BX=0。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM