CPLD的原理
CPLD(Complex Programmable Logic Device)是一種複雜可編程邏輯元件,用戶可以根據自己的需求構造出各種邏輯功能的數字集成電路[1][2]。CPLD由可編程邏輯的功能圍繞一個可編程互連矩陣構成,由固定長度的金屬線實現邏輯單元之間的互連,並增加了I/O控制模塊的數量和功能[1][2]。CPLD的基本結構可看成由可編程邏輯陣列(LAB),可編程I/O控制模塊和可編程內部連線(PIA)等三部分組成[1][2]。
CPLD的結構
CPLD的結構主要由以下三部分組成[1][2]:
- 可編程邏輯陣列(LAB):這是CPLD的核心部件,負責實現布林函數和邏輯功能。每個邏輯陣列都包含一個或多個邏輯元件,這些元件可以編程來實現特定的邏輯功能[1][2]。
- 可編程I/O控制模塊:這部分用於與外部電路進行接口,通過輸入緩衝器、輸出驅動器和輸入輸出邏輯來實現信號的輸入和輸出[1][2]。
- 可編程內部連線(PIA):這部分用於連接可編程邏輯單元和輸入輸出塊。這些連線可以編程來實現特定的連接模式,從而實現特定的邏輯功能[1][2]。
布林函數示意:
CPLD的編程
CPLD的編程主要有兩種方法:硬件描述語言(HDL)和圖形化編程工具[1]。
- 硬件描述語言如VHDL(Very High Speed Integrated Circuit Hardware Description Language)或Verilog,可以用於描述CPLD的邏輯功能和電路結構。下面是一個使用VHDL語言描述的簡單CPLD電路的示例[1]:
library IEEE;
use IEEE.std_logic_1164.all;
entity MyCPLD is
port (
inputA : in std_logic;
inputB : in std_logic;
outputC : out std_logic;
outputD : out std_logic
);
end entity;
architecture Behavioral of MyCPLD is
signal temp1 : std_logic;
signal temp2 : std_logic;
begin
-- 邏輯操作
temp1 <= inputA and inputB;
temp2 <= inputA or inputB;
-- 輸出訊號
outputC <= temp1 xor temp2;
outputD <= not temp2;
end architecture;
- 圖形化編程工具:例如,Intel的Quartus Prime軟件和Xilinx的ISE軟件提供了圖形化界面,可以通過拖拽、連接和設置器件屬性來快速設計和生成CPLD的配置位流[1]。
CPLD的應用
CPLD通過編程實現特定的數字電路功能,可以實現各種數字電路的功能,滿足不同應用領域的需求[1][2]。例如,它可以用於實現各種算法和組合邏輯,也可以用於完成時序邏輯2。此外,由於CPLD的連續式布線結構確定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構確定了其延遲的不可預測性[2],因此在某些應用中,CPLD可能比FPGA更具優勢[2]。
總結來說,CPLD是一種強大的可編程邏輯器件,它通過編程實現特定的數字電路功能,並且具有高度的靈活性和快速的開發周期,因此被廣泛應用於各種數字電路系統[1][2]。
CPLD在系統主機版的應用
- 系統管理:CPLD可以用於實現各種系統管理功能,例如監控系統的運行狀態,控制系統的啟動和關閉,以及處理各種硬體事件。
- 電源管理:CPLD可以用於實現電源管理功能,例如控制電源的開關,監控電源的狀態,以及處理電源相關的事件。此外,CPLD還可以用於實現更複雜的電源管理功能,例如電源順序控制和電源保護。
- 邏輯閘編輯:CPLD是一種可程式的邏輯裝置,這意味著使用者可以根據需要編輯其內部的邏輯閘,以實現特定的功能。
- 不斷電更新韌體:當需要更新韌體時,CPLD可以利用在後台更新系統韌體的方式,而不影響相關的控制應用電路,這就是所謂的Hitless Update的功能
CPLD在系統主機版的應用-電源管理
- 監控“Power Good”信號:CPLD會持續監控每個DC-DC轉換器的“Power Good”數位信號[3]。這個信號表示電源是否在正常運作範圍內。
- 管理“上電/斷電”:CPLD發出“使能”信號,驅動DC-DC轉換器實現“上電/斷電”時序[3]。這是為了避免在負載電路上電時導致損壞或邏輯錯誤。
- 發送控制信號:CPLD可以生成電源相關的控制信號(如復位、電源正常等),以確保負載元件能夠在上電時正常工作,並在斷電時停止運作[3]。
- 電源管理架構:有多種基於CPLD的電源管理架構,每種架構都有其優點和缺點[4][5]。例如,一種架構可能使用CPLD來實現所有的電源時序、保護和控制功能,而另一種架構可能使用CPLD來實現部分功能,並使用其他元件(如微控制器或電源管理IC)來實現其他功能[4][5]。
- 靈活性和可擴展性:由於CPLD是可程式的,因此它們提供了高度的靈活性和可擴展性。這意味著工程師可以根據需要修改CPLD的邏輯,以實現特定的電源管理功能[3]。
- 不斷電更新韌體:在雲端伺服器中如需要更新韌體,在一般的使用狀態下必須將伺服器斷電後重啟才能更新,但假使能在不斷電的情況下將韌體更新且不影響伺服器的運作,即可達到不關機及更新的便利功能[6]。
Reference
- CPLD基本原理 - 知乎 (zhihu.com)
- 什么是CPLD - 知乎 (zhihu.com)
- 使用控制PLD实现电源管理 (latticesemi.com)
- 基於CPLD的電路板電源管理架構比較 - 電子工程專輯 (eettaiwan.com)
- CPLD的PCB設計電源管理架構 (ipcb.com)
- 雲端伺服不關機 - Intel® CPLD實現不斷電更新韌體技術 | Macnica Galaxy