在QII中的Assignments----Device----Device and pin option-----(选项卡)Dual purpose pin
将nCE0 的设置改为: use as regular IO
1.『Error:Can't place pins assigned to pin location Pin_AD25 (IOC_X95_Y2_N1)』錯誤訊息的意義。
2. 什麼是Dual-Purpose Pin?
3.什麼是nCEO?
4.如何使用Quartus II GUI將nCEO設定成regular I/O pin?
5.如何使用Tcl將nCEO設定成regular I/O pin?
『Error:Can't place pins assigned to pin location Pin_AD25 (IOC_X95_Y2_N1)』錯誤訊息的意義
在DE2-70,若用到SW[7],根據[1] DE2-70 User Manual v1.08,在pin assignment時會指定到PIN_AD25。
在編譯時,一定會遇到以下錯誤訊息:
在(原創) 如何解決DE2-70的『Error: Can't place pins assigned to pin location Pin_AD25 (IOC_X95_Y2_N1)』的錯誤訊息? (SOC) (Quartus II) (DE2-70)曾經討論過解決方式,基本上只要跟著做就可以解決問題,不過當初並沒有解釋為什麼要這樣做。
根據Quartus II的Help的解釋如下:
--------------------------------------------------------------------------------
CAUSE: You assigned two or more pins to the specified location, but the Fitter cannot place all the pins in that location.
ACTION: If the conflict arises from location assignments in the current project, delete or change the location assignment of one or more of the pins. If the pin location assignments come from one or more imported design partitions, delete or change the location assignment (possibly using the Virtual Pin assignments) in the lower-level designs, re-generate the Quartus II Exported Partition File(s) (.qxp), and re-import.
大意就是你同時對Pin_AD25做了兩次的pin assignment,導致Fitter無法作P&R。
通常會遇到這個錯誤訊息,都是自己的pin assignment有寫錯,導致對同一根pin assign了兩次,不過在這裡,很顯然不是我們自己弄錯了。
根據[2] DE2-70 Schematic v1.1的電路圖
AD25除了SW7使用外,其實nCEO也使用這個pin,這也就是為什麼SW7會與nCEO都指定到Pin_AD25的原因了。
什麼是Dual-Purpose Pins?
根據[3] Quartus II Help, dual-purpose pins
我們知道FPGA基本上是由SRAM所構成,使用前必須將*.sof檔program進FPGA後才可使用,所以FPGA保留了一些pin做programming用,一旦FPGA經過program之後,這些pin就可以拿來當一般的I/O pin使用,這些pin就是dual-purpose pin,之前所遇到的nCEO就是個dual-purpose pin。
什麼是nCEO?
根據[4] Cyclone III Device Family Pin Connection Guidelines對nCEO的description為
其connection guidelines為
nCE的定義為
其connection guidelines為
大意是說,每顆FPGA都有nCE與nCEO兩根pin,在多顆FPGA的系統中,第一顆FPGA的nCE接GND,而第一顆FPGA的nCEO將接到下一顆FPGA的nCE,如此這樣繼續接下去,而在最後一顆FPGA時,可以將nCEO floating或者當成普通I/O pin使用。而在單顆FPGA時,nCE直接接GND,nCEO可直接floating或者當普通I/O pin使用。
在DE2-70,因為只是單顆FPGA,nCEO並沒有用到,所以當成SW[7]的input pin使用。
如何使用Quartus II GUI將nCEO設定成regular I/O pin?
如何使用Tcl將nCEO設定成regular I/O pin?
Conclusion
在[7] MyFPGA, DE0的VGA_B[0] Pin assignment有錯有人抱怨為什麼Quartus II要default將nCEO弄成programming pin,而非regular I/O pin,害我們自己必須手動改一次,其實要怪的是設計DE2-70的人為什麼非要用nCEO這個pin不可,在pin足夠的的狀況下,應該是不會把nCEO拿來當regular I/O pin來用,除非是在pin不夠用的狀況下,且又只有單顆FPGA時,才會將nCEO也拿來用。在Terasic其他的版子也有類似的設計,熟析了其背後的道理後,也可套用到其他版子上。