一、FPGA的最基本單元
1)查找表(LUT) (組合邏輯單元)
LUT指顯示查找表(Look-Up-Table),本質上就是一個RAM。它把數據事先寫入RAM后,每當輸入一個信號就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出。
2)D 觸發器 (時序單元)
3)基于 SRAM 工藝,內部結構為查找表
二、FPGA的物理結構
目前主流 FPGA 主要 基于 SRAM 工藝查找表技術。 FPGA 芯片主要由以下模
塊構成。
可編程輸入輸出單元(IOB)簡稱 IO 單元,為芯片與外接電路的接口部分,
完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求。
1)IOB
A、FPGA 的 IOB 被劃分成若干個組(bank) ,每個 bank 的接口標準由其接
口電壓 VCCO 決定,一個 bank 只能有一種 VCCO,但不同 bank 的 VCCO 可以
不同。
B、HR IO 電壓范圍 1.0~3.3V,HP IO 電壓范圍 1.0~1.8V。
C、所有的輸入和輸出都支持 DDR 雙數據率。
D、任何一個輸出和輸入都可單獨配置到最大為 1250 個 ps 的延時,其分辨
率為 5-15 個 ps,實現這個延時的原語是 IDELAY 和 ODELAY 單元。在配置時
設置延遲步長的數目, 也可在使用時遞增或者遞減。 另外將 IDELAY 和 ODELAY
級聯在一起,可以使得單一方向達到兩倍的延時。
E、ISEDES/OSEDES
2)可配置邏輯塊(CLB )
CLB 是 FPGA 基本邏輯單元,CLB 由多個(一般 4 個或 2 個)相同的 Slice
和附加邏輯構成。 每個 CLB 模塊不僅實現組合邏輯、 時序邏輯 、 還可以 配制成
分布式 RAM (sliceM )和分布式 ROM。Slice 是基本邏輯單位,實現加、乘等
算術邏輯以及進位邏輯等。
1 個 CLB 包括 2 個 Slice(SliceL 和 SliceM) ,每個 slice 都含有4 個 6 輸入查找表 (LUT) 、 3 個多路復用器、 8bit 進位鏈、 8 個 DFF。 其中 SliceM較 SliceL 增加了基于查找表的分布式 RAM 和移位寄存器。 每個 CLB 中都包含 SLiceL,但并不是每個 CLB 中都包含 SliceM,整個一塊V5 芯片中的 SliceM 和 SliceL 的比例為 1:3,且 SliceM 的放置有一定的規則。
3)數字時鐘管理模塊(DCM )
FPGA 提供數字時鐘管理和相位環路鎖定,相位環路鎖定能提供精確的時鐘
綜合,且能降低抖動,并實現過濾功能。
每個 IO 組包含一個時鐘管理單元 (Clock Management Tile, CMT) , 每個 CMT
包含:
A、 混合模式時鐘管理器 (Mixed-mode Clock Manager, MMCM) , 分頻:
在送往相位比較器之前,對 VCO 的輸出頻率進行分頻。
B、 兩個相位鎖相環(phase Lock Loop) ,主要直連時鐘 IO,并生成倍頻
或分頻時鐘。
C、 PLL 比 MMCM 的特性要少得多, MMCM 主要用于寬范圍頻率的合
成、內部或者外部時鐘的抖動過濾器。
4)嵌入式塊 RAM (BRAM )
塊 RAM 可被配置成單端口 RAM、雙端口 RAM、內容地址存儲器(CAM)
以及 FIFO 等常用存儲結構。CAM 存儲器在其內部的每個存儲單元中都有一個
比較邏輯,寫入 CAM 中的數據會和內部的每個數據進行比較,并返回與端口數
據相同的所有數據的地址,因為在路由的地址交換器中有廣泛的應用。
5)豐富的布線資源
布線資源連通 FPGA 內部的所有的單元,而連線的長度和工藝決定著信號在
連線上的驅動能力和傳輸速度。第一類是全局布線資源,用于芯片內部全局時鐘
和全局復位/置位的布線;第二類是長線資源,用以完成芯片 bank 間的高速信號
和第二全局時鐘信號的布線;第三類是短線資源,完成基本邏輯單元之間的邏輯
互聯和連線;第四類是分布式的布線資源,用于專有時鐘、復位等控制邏輯線。
6)底層內嵌功能單元
主要指 DLL(Delay Locked Loop) 、PLL、dsp 和 cpu 等處理軟核。DLL 和
PLL 功能類似,可完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調整和移
相等功能。
內嵌專用硬核如為了提高 FPGA 的乘法速度的的專用乘法器、串并收發器
(SERDES) 。
三、FPGA 最小系統
一般來說 FPGA 的最小系統主要包括:FPGA 芯片、jtag 下載電路、外部時
鐘、復位電路(program B?) 、flash 和電源。其中由于 FPGA 采用的是 SRAM
工藝,因此斷電后程序會消失,因此 flash 存儲配置信息。
四 、塊 RAM 和分布式 RAM
分布式 RAM 用 LUT 實現,用于實現少量數據的存儲和緩存,存取速度高于
塊狀 RAM。 塊狀 RAM 是內嵌于 FPGA 的, 容量較大, 18k 為一塊, 有若干塊,
可實現雙口 RAM,常用于大量數據存取,也用于不同數據寬度的轉換,也可以
配置成 fifo 使用。
用分布式 RAM 時其實要用到其所在的 SliceM, 所以要占用其中的邏輯資源;
而 Block RAM 是單純的存儲資源,但是要一塊一塊的用,不像分布式 RAM 想
要多少 bit 都可以。 用戶申請存儲資源, FPGA 先提供 Block RAM, 當 Block RAM
數量不夠時再用分布式 RAM 補充。
B-RAM (Blcok RAM) 是使用FPGA中的整塊雙ram資源, D-RAM (Distributed
RAM)則是拼湊起 FPGA 中的查找表形成。一般當您要用的 RAM 是小的,時序要求不高的場合要用 D-RAM,節省資源。
并不適用 B-RAM 就一定性能好, FPGA 中的資源位置是固定的, 例如 BRAM
就是一列一列分布的,這就可能造成用戶邏輯和 B-RAM 之間的 route 延時比較
長。舉個簡單例子,在大規模 FPGA 中,如果用光所有的 B-RAM 性能一般會下
降,甚至出現 route 不通的情況,就是這個原因。靈活的運用 B-RAM 和 D-RAM
可以有效利用 FPGA 資源,提升性能,如果需要用較多的 B-RAM ,合理規劃布
局也可以提高性能們可以使用 Planahead 進行布局規劃。
D-RAM 可以使純組合邏輯,即給出地址馬上出數據,也可以加上 register 變
成有時鐘的 RAM,而 B-RAM 一定是有時鐘的。
五、FPGA 、DSP 、ARM 、單片機等區別
1)FPGA 有強大的數據處理能力,能并行處理多路高速數據流,但成本高;
2)DSP 主頻高、速度快、功耗大、控制能力差,主要用于圖像處理、加密
解密等復雜計算高端系統中,用途專一;
3)ARM 優勢不在于主頻,而在于片上外設較豐富,適合各種嵌入式系統,
用來跑界面和應用程序,體現在控制;
4)單片機價格低廉,便于開發、擅長中斷處理。
六、FPGA 與 CPLD
整個可編程邏輯器件的發展 是:
1)PAL(Programmable Array Logic 可編程陣列邏輯) :采用熔斷絲技術,只可一
次編程;
2)GAL(Generic Array Logic 通用邏輯陣列) :電可擦除功能,可重復性編程,
又稱 PLD;
3)CPLD(Complex Programmable Logic Device 復雜可編程邏輯器件) :將大量
PLD 集成在一起,產品工藝一般是基于 E2ROM 和 FLASH 工藝,內部結構
為基于乘積項(Product term) ;
4)FPGA(Field-Programmable Gate Array 現場可編程門陣列) :以硬件描述語言
(verilog)所完成的電路設計,經過簡單的電路綜合和布局,快速的燒錄到
FPGA 進行測試,是現代 IC 設計驗證的技術主流。產品基于 SRAM 工藝,
內部結構基于查找表(Look up Table) 。
七、FPGA 與 CPLD 的區別
FPGA 優勢:
1)與 CPU、DSP 相比,FPGA 的數據處理能力更強,可以同時并行處理多個大流量的數據。
2)與 ASIC(即具有專用功能的芯片,如 LDO、存儲器等)相比,可用戶定制,但成本高。
FPGA 缺點:
1)成本高。
2)沒有 cpu 順序處理算法的實現方便。
溫馨提示:明德揚2023推出了全新課程——邏輯設計基本功修煉課,降低學習FPGA門檻的同時,增加了學習的趣味性,并組織了考試贏積分活動
http://www.cqqtmy.cn/ffkc/415.html
(點擊→了解課程詳情?)
明德揚除了培訓學習還有項目承接業務,擅長的項目主要包括的方向有以下幾個方面:
1. MIPI視頻拼接
2. SLVS-EC轉MIPI接口(IMX472 IMX492)
3. PCIE采集系統
4. 圖像項目
5. 高速多通道ADDA系統
6. 基于FPGA板卡研發
7. 多通道高靈敏電荷放大器
8. 射頻前端
需要了解相關信息可以聯系:易老師13112063618(微信同號)