Cyclone III 內部資源概述#
[toc]
本人使用的 Altera DE0 使用的主控芯片為 EP3C16F484C6,由上圖可知包含 15408 個邏輯單元,56 個 M9K,56 個 18×18 乘法器,4 個 PLL 等資源。
Logic Elements and Logic Array Blocks(邏輯元件和邏輯陣列區塊)#
LE#
LE 是 FPGA 中最小的邏輯單元,可以提供高效邏輯使用的高級功能。LE 的結構如下圖所示:
- LUT:用於完成使用者需要的邏輯功能,Cyclone III 的查找表是 4 輸入 1 輸出,可以完成任何 4 輸入 1 輸出的組合邏輯
- Programmable Register:可以配置成 D 觸發器、T 觸發器、JK 觸發器等,每個寄存器包含 4 個輸入信號,資料信號、時鐘信號、時鐘使能、重置信號。
LE 有兩種工作模式:
- Normal mode:適合於一般的邏輯運算
- Arithmetic mode:適用於實現加法器、計數器、累加器、比較器等
LAB#
每個 LAB 都由以下元素組成:
- 16 個 LE
- LAB 控制信號
- LE 轉移鏈
- 寄存器鏈
- 本地互聯
本地互聯用於在同一 LAB 內的 LE 之間傳遞信號;寄存器鏈用於將一個 LE 的輸出傳遞到相鄰的 LE 中。
LAB 結構如圖所示:
LAB 互聯#
LAB 本地互聯由同一 LAB 中的列和行互聯和 LE 輸出驅動。相鄰的 LAB、鎖相環、M9K RAM 塊和從左到右的嵌入式乘法器也可以通過直接鏈路連接驅動 LAB 的本地互聯。直接連接連接功能最大限度地減少了行和列互聯的使用,提供更高的性能和靈活性。每個 LE 可以通過快速本地和直接鏈路互聯驅動多達 48 個 LE。
直接連接如下圖所示:
Memory Blocks(內存塊)#
嵌入式內存結構由 M9K 內存塊組成,可以配置內存塊以提供各種內存功能,例如 RAM,移位寄存器,ROM 和 FIFO 等。
M9K 的內存單位是 9k ==bit==,並不是 9k ==byte==,並且 9k 中有 1k 的空間用於校驗等功能,實際可用空間為 8kbit
Memory mode#
Clocking mode#
當使用 Read or Write 模式,如果對同一地址進行讀寫操作,則輸出的讀數據是未知的。如果要使輸出的數據是一個確定的信號,則需要使用 single-clock 模式或者 IO-clock 模式並且在 MegaWizard Plug-In Manager 中選擇合適的讀寫操作。
讀寫時違反內存塊輸入寄存器的建立和保持時間可能會導致內存內容的損壞
異步清零只在讀地址寄存器、輸出寄存器和輸出鎖存器上可用
Memory mode 和 Clocking mode 的關係如下圖所示:
Embedded Multipliers and Digital Signal Processing Support(嵌入式乘法器和數字信號處理支持)#
乘法器結構#
- 輸入的數據既可以先發送到輸入寄存器也可以直接輸入到乘法器,兩個輸入信號相互獨立,例如:A 信號可以通過寄存器將輸入發送到乘法器,同時 B 信號可以直接發送到乘法器。
- 根據乘法器的位寬和操作模式,單個乘法器可以並行的執行一次或兩次乘法運算。
- 兩個輸入信號如果都是無符號數,則輸出數據也是無符號數;其中任何一個是有符號數的話,輸出結果就是有符號數。