系統晶元

系統晶元

系統晶元(英語:System on a Chip,縮寫:SoC)是一個將計算機或其他電子系統集成到單一晶元的集成電路。系統晶元可以處理數字信號、模擬信號、混合信號甚至更高頻率的信號。系統晶元常常應用在嵌入式系統中。系統晶元的集成規模很大,一般達到幾百萬門到幾千萬門。

簡介


微控制器通常只有不到100 kB的隨機存取存儲器,但事實上它是一種簡易的、功能弱化的單晶元系統,而“系統晶元”這個術語常被用來指功能更加強大的處理器,這些處理器可以運行Windows和Linux的某些版本。系統晶元更強的功能要求它具備外部存儲晶元,例如有的系統晶元配備了快閃記憶體。系統晶元往往可以連接額外的外部設備。系統晶元對半導體器件的集成規模提出了更高的要求。為了更好地執行更複雜的任務,一些系統晶元採用了多個處理器核心。

基本架構


典型的系統晶元具有以下部分:
• 至少一個微控制器或微處理器、數字信號處理器,但是也可以有多個中央控制核心
• 存儲器則可以是只讀存儲器、隨機存取存儲器、EEPROM和快閃記憶體中的一種或多種
• 用於提供時間脈衝信號的振蕩器和鎖相環電路
• 由計數器和計時器、電源電路組成的外部設備
• 不同標準的連線介面,如通用串列匯流排、火線、乙太網、通用非同步收發和序列周邊介面等
• 用於在數字信號和模擬信號之間轉換的模擬數字轉換器和數字模擬轉換器
• 電壓調理電路以及穩壓器
數據的流動主要藉助了系統中的I/O匯流排,例如安謀國際科技公司的高級微控制器匯流排架構。採用DMA控制器,則可以使得外部數據直接被傳送到存儲器,無需經過中央處理器,這可以大大改善數據吞吐的效率。

設計流程


一個完整系統晶元由硬體和軟體兩部分組成,其中軟體用於控制硬體部分的控制器、微處理器或數字信號處理器核心以及外部設備和介面。系統晶元的設計流程主要是其硬體和軟體的設計。
由於系統晶元的集成度已經達到數百萬門,工程師必須儘可能採取可重用的設計思路。大部分的系統晶元都使用了預定義的半導體知識產權核(IP核,包括軟核、硬核和固核),以可重用設計的方式來完成快速設計。與以往的集成電路設計相比,可重用設計要求設計人員的工作更加標準化,例如規範的代碼書寫風格等等。設計人員需要關注硬體驅動程序的實現,從而實現具體的功能。協議棧是一個重要的概念,它與諸如通用串列匯流排的介面的工業標準有關。設計人員通常使用計算機輔助工程工具來把已經設計(或者購買)的核連接在一起,這時集成開發環境可以被用來集成包含不同子功能的模塊。
設計的晶元在被送到工廠進行硬體工藝製造之前,設計人員會採取不同方式對晶元的邏輯功能進行驗證。功能驗證的重要性絲毫不亞於集成電路設計,對於現代的超大規模集成電路,這一步驟在整個設計周期中將花費相當的時間和金錢。為了應對晶元極高的複雜程度,類似SystemVerilog、SystemC、e驗證語言和OpenVera的硬體驗證語言逐漸變得流行。在驗證階段,系統軟體的程序錯誤可以被反饋到設計人員那裡,以便進行針對性的修正。
工程師通常會使用精心設計的模擬器或者在通用的現場可編程邏輯門陣列(FPGA)上運行程序,來測試之前進行的系統級、行為級(或用另一個術語寄存器傳輸級,即RTL)的設計代碼,這一步的目的是在設計項目在進行最後的硬體生產(投片)之前,其軟、硬體的功能、性能得到最後的確認,並改正所有功能、時序、功耗上的錯誤。
其中,使用現場可編程邏輯門陣列構建產品原型的工作方式可以讓工程師評估、測試各種刺激(stimulus)施加在系統時,系統的運行狀態。相關的電子設計自動化工具包括Certus,它可以被用來分析、檢測系統設計的寄存器傳輸級代碼,監視其中的變數和信號在整個運行過程中的變化。
在功能驗證過程結束之後,工程師還會採取計算機輔助工程的方式完成布局、布線流程,這一步他們需要關注何種布局布線方式可以儘可能地減少連線之間的信號干擾和延遲,功率也是另外一個考慮的重點。