【導(dǎo)讀】FPGA的IO可編程給邏輯以及PCB設(shè)計帶來了一定的靈活性和獨立性。FPGA在編程器的硬件操作當(dāng)中,扮演著“千手觀音”的角色,為邏輯設(shè)計和PCB設(shè)計鋪路架橋,靈活實現(xiàn)各種功能。
FPGA是一種“半定制”的芯片,其中一個特性就是IO口可編程,這個特性對編程器能與各類封裝芯片互連有很大幫助作用。
MCU的管腳功能都是固定的,與外部接口通常使用IO口或者總線連接。普通IO口其實本質(zhì)就是寄存器,這些寄存器都有一個相應(yīng)的地址,操作IO口就是操作寄存器;片內(nèi)外設(shè)相對來說,是一個具有特定功能模塊,其內(nèi)部包含多個寄存器控制不同的功能執(zhí)行,但是這些寄存器也有固定的地址。通過存儲器映射的方式,把片內(nèi)外設(shè)和CPU連接起來,組成一個系統(tǒng)。
值得注意的是,這些片內(nèi)外設(shè)對外接口都是連接固定的管腳,如果要對這些外設(shè)控制完成特定的功能設(shè)計,實質(zhì)上已經(jīng)隱含了對這些管腳控制了。比如說,MUC的IIC接口的SCK和SDA分配在99和100腳,那么所有IIC接口的存儲芯片都必須與這兩個腳連接,如圖1所示。
圖1 請排好隊列
各類需要編程的芯片如果要與MCU連接,就必須與之對應(yīng)的接口連接,對于復(fù)雜腳多的芯片,這對PCB的布局布線有很大的局限性和挑戰(zhàn)性。
FPGA就以靈活性見長,可編程IO就是其中的一個重要功能??删幊蘄O給PCB的設(shè)計帶來靈活性,可以簡化PCB的布局布線,并且在設(shè)計的過程中,還可以根據(jù)走線的走向更改管腳的連接。另外,在FPGA內(nèi)部邏輯設(shè)計過程中,可以先把功能模塊設(shè)計與管腳分配兩步獨立開來,先完成內(nèi)部邏輯功能之后,再根據(jù)實際情況分配管腳。因此,可編程IO給FPGA邏輯設(shè)計和PCB設(shè)計帶來一定的靈活性和獨立性,其在這個環(huán)節(jié)中充當(dāng)一個“千手觀音”的角色,為邏輯設(shè)計和PCB設(shè)計鋪路架橋,如圖2所示。
圖2 可編程IO示意圖
實際FPGA內(nèi)部并不像圖2那么簡單,這里只是為了形象說明可編程IO可以使內(nèi)部邏輯和PCB可以相對獨立設(shè)計。對于同類接口,不必因為PCB改變而更改時序邏輯,只需要更改引腳分配,大大簡化了PCB的布線難度。
FPGA被稱為“千手觀音”僅僅是數(shù)量多、動作靈活嗎?他還有更強大的功能,就是內(nèi)部邏輯可編程。
在最初的電路設(shè)計當(dāng)中,F(xiàn)PGA并沒有實際的電路,只有完成了設(shè)計之后才有某種特定的功能電路。這種結(jié)構(gòu)含有以下特性:
1、在理想情況下,可以實現(xiàn)多種接口;
2、可以實現(xiàn)精確的時序,兼容更多芯片;
3、資源可重復(fù)利用,在某時間段,只需要一個接口邏輯,節(jié)省FPGA資源和配置器件的存儲空間。
相對地,如果用MCU來實現(xiàn),則有以下缺點:
1、 如果MCU沒有相應(yīng)的接口,將難以實現(xiàn)與含有該接口的存儲芯片通信(可能會用IO模擬);
2、 即使接口相同,由于功能基本固定,面對一些特殊的芯片,將力不從心;
3、 由于輸出口線的固定,導(dǎo)致與外部接口的PCB布線無法實現(xiàn)。
被編程的芯片接口種類較多,比如IIC和SPI,如果要MCU同時具備這些接口,口線必定復(fù)雜而且速度有限。FPGA無需考慮這個問題,由于其內(nèi)部邏輯可由設(shè)計者來設(shè)計,那么編程器可根據(jù)接口需要來定制對應(yīng)的邏輯,省時省力,效率非常高。