為什麼晶元同一組的引腳不在同一側,而是四側都有?
來補充一下描述:先回答的兩個答案都沒理解,我估計題主想說的是,一些控制晶元的的同一組IO的引腳為何不連在一起排列。比如STM32F103RCT6的8到11引腳是PC0~PC3,接下來隔了12、13引腳的VSS和VDD後,第14引腳卻不是PC4而是PA0,PC4是在另一邊的24引腳那。不僅僅是ST的晶元是這樣,其實大部分廠家的微控制器和微處理器都有這種毛病。(因為這個,在PCB布局走線的時候,真的很想打人啊)
所以我也來求問!!
啊。。 大家去看看 @Kaiser Li 的答案啊。。。 那個是針對問題的正解!
----------------------------
摸摸題主, 不要打人...我們來看看為什麼
大體上有兩類原因:
1. 該信號不是優先信號, 需要給優先信號騰位置;
2. 片內就近連接. 3. IO Pad 位置不夠.題主給的例子我認為是符合1 和 3 的.
假設我設計了一個處理器, 裡面的結構長這樣:
鑒於介面A可以和高速緩存通信, 製造商一定要保證部分 IO-A的速度, 假定為100MHz;
介面B可以控制高精度模擬電路, 我們假定需要50MHz介面C則是一些通用介面, 用來幹啥都可以. 那麼可能設計時候考慮的速度只有10MHz.之後製造商需要給這坨東西加上I/O Pad, 否則信號出不來.
題主認為Pad應該長這樣:
其實Pad跟晶元對比長這樣: Pad的大小常常能接近或超過小模塊的大小.. 而且中間還要留間隔.於是設計完之後發現: 左邊只能有16個介面, 但是C介面和高速A介面全都對著左邊.
怎麼辦呢? 反正C介面不重要, 就把它隨便換個位置唄~於是就成了這樣.
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf
當初看到這個問題,就覺得可能是IO的多功能促使這樣的排序:截圖如下:PC4 、PC5是ADC12-in14~15
它倆自然挨著PA4~7工程師設計晶元引腳的時候,ADC功能是第一優先排序,IO分組自然就看似不合理。如果用到ADC,肯定要挨著才能保證信號。 I/O嘛,PCB上隨便劃拉劃拉就能用了。在做處理器晶元的physical design時,IO的功能肯定是最後考慮的,優先考慮的通常都是該IO可復用的其他功能,諸如ADC的輸入,定時器的輸入,串列通訊介面等等,並把同屬一個模塊的復用功能放在附近的位置。
說白了,還是因為PCB的Layout比IC的PR要容易的多得多得多,因此設計者通常都會優先考慮IC布線更方便而非用戶的PCB布線更方便。
晶元內部layout,很講究。比如某些電路要求布局對稱,另一些要求信號延遲很小等等。這些要求區分出電路模塊布局布線的優先順序,除了考慮電路還要考慮內部金屬層連線,在盡量滿足要求的前提下,最好還能留有裕度。 這就導致pad不一定會挨在一起。你要相信這是優化後的結果:)
好吧,說清楚這個問題肯定是要從真正的使用和內部電路的設計的角度考慮的,就好像電源引腳為什麼四個面都有,原理其事要從內部的版圖設計來講,懂一些電學原理的人都能聽明白。首先相信大家都知道壓降這個概念,電流通過一個電阻,兩端的電壓一定會有壓降。那麼晶元中的導線也同樣可以看成無數個電阻串聯,那問題來了,引腳你給的是5v的電源,那到用電器的電壓是多少呢?無論是多少這裡肯定是有壓降的,一般額定電壓的工作範圍是+/-10%。所以如果,哪怕只要有一個用電器的電源電壓不在這個範圍內,那整個晶元就罷工了,而且這種有壓降的模擬是相當相當相當慢的。這個時候工程師為了解決問題的就要使得power line儘可能的短粗,因為晶元內部連線的限制,以及drc的限制,powerline的寬度是有限的。那麼長度也要盡量的短,這樣導線電阻才能做到最小,所以電源引腳就出現了這樣的設計。假設左右兩邊只有一邊有電源引腳那最糟糕情況powerline的電阻會比兩邊都有引腳的大一倍(因為長了一倍)。如果四個方面都有電源引腳,那就比四面只有一面有引腳powerline的電阻,最糟糕情況,的電阻小了3/4。所以簡單來說這麼做就是盡量避免因為電源電壓壓降帶來的,電路性能的下降甚至是功能的缺失。
這裡算是拋磚引玉的說一下,一些需要考量的問題。具體io引腳的四面分布,還要看具體的datasheet。這個有機會再深入討論。樓上很多人說的都很好,做普通的IO口用時可能會麻煩,但用作復用功能時就會方便了
辛虧沒用nxp的,更亂。
推薦閱讀:
※做32位/64位跨版本編程,有什麼需要注意的么?
※學好C/C++,Linux。可以從事什麼工作?
※斷網焦慮症?
※玩 Arduino 需要做哪些準備?
※Arduino、arm、樹莓派、單片機四者有什麼不同?