PIN/PAD Design in SoC - 3 (待續)

3.IO Controller
這部分不復雜,只是繁瑣,實現的時候別漏了什麼就好。

3.1 IO Multiplexing
IO複用主要含有正常功能複用和測試模式複用兩大類。功能複用可以分爲靜態複用和動態複用。
靜態複用顧名思義,是在一個相對大尺度的時間段內一個IO上的功能是不變的,一般通過軟件配置寄存器、封裝、strappin實現。
動態複用的時間尺度相對小一點,一般需要做點硬件邏輯自動實現多種功能在一個IO上的切換。比如同一組IO既做存儲器接口也做顯示接口,當播放視頻的時候,需要從存儲器中輸入數據,然後把這些數據再輸出到顯示設備上,這種應用場景下這組IO一會兒做輸入給存儲器,一會兒做輸出給顯示設備,爲了防止打架,需要處理好切換過程。
測試模式複用一般靜態複用就夠了。

3.2 GPIO Implementation
消費類芯片競爭激烈,如何用更小的成本實現更多的功能是個很大的挑戰。具體到IO上,當然希望所有的數字IO都能在其正常功能之外,還能被軟件自由的控制以擴充功能。我們稱之爲通用IO。GPIO的功能包括,IO方向的控制、輸出值的控制、外部狀態的輸入、片外中斷接收(沿觸發、電平觸發、抗毛刺等)、開漏模擬等等。

3.3 Strap Pin Implementation
strap pin是個非常有趣的功能。可以有兩種實現方式,一種是用上電覆位驅動一個latch來捕獲strappin上的設定值;另一種是用一個free running的clock來寄存strap pin上的值。strappin的應用主要用於指示某種功能是否被激活,而不佔用額外的pin。

3.4 IO Status Initialization
IO在上電時的狀態非常重要。最大的原則就是不對外部世界產生干擾,通常我們會控制上電時IO處於輸入狀態。當然特殊情況例外。另外一個考慮就是上電時不要產生較大的電流。還要考慮IO內部的上下拉電阻是否需要默認使能。還有就是IO上電和core上電的順序,以及斷電的順序。

3.5 Design for Flow
需要爲時鐘定義點創建buffer。提供case analysis的說明文檔。爲scan hookup點創建buffer。
可能每個design house的做法不同,有些不在IO這個模塊裏做。

3.6 Design for Test
前面提到了一些。還有就是內部IP的測試,通常需要把這些IP的所有pin都在某種測試模式下引出到芯片IO上。還需要考慮這些IP在測試模式下的供電方案,通常需要做個mux,以區分功能和測試。最大的原則考慮是節省測試成本,減少測試時間,可以考慮把多種測試模式合併爲一個。

很繁瑣吧?希望沒漏掉什麼。

待續,敬請期待!

發佈了48 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章