在過(guò)去25年里,微控制器的內(nèi)部外設(shè)發(fā)生了巨大的變化。最初許多微控制器只包含RAM、ROM,也許還有基本的定時(shí)器。隨著微控制器的發(fā)展,更多的外設(shè)被基礎(chǔ)到這種單價(jià)不超過(guò)一美元的器件中。定時(shí)器/計(jì)數(shù)器、PWM和包括UART、SPI和I2C在內(nèi)的標(biāo)準(zhǔn)串行接口常用于這些廉價(jià)的微控制器。另一個(gè)重大變化是32位CPU正在取代同一價(jià)格范圍的8位器件。
但是即便有如此豐富的特性,對(duì)于廉價(jià)微控制器而言,隨時(shí)都存在微控制器廠(chǎng)商不能迅速支持的項(xiàng)目專(zhuān)用硬件接口或新的第三方接口。往往這要求設(shè)計(jì)人員使用外部硬件或是通過(guò)位拆裂在固件中實(shí)現(xiàn)接口。位拆裂使用固件觸發(fā)IO端口,一般可用于實(shí)現(xiàn)串行接口。如果要監(jiān)測(cè)端口以解碼串行數(shù)據(jù)的時(shí)候,也可以使用這種方法。無(wú)論是使用外部硬件還是位拆裂來(lái)實(shí)現(xiàn)接口,都會(huì)產(chǎn)生額外的設(shè)計(jì)成本。雖然增加外部硬件帶來(lái)的成本是明顯的,但使用軟件實(shí)現(xiàn)串行接口可能也會(huì)要求使用速度更快因而也更加昂貴的CPU。
大多數(shù)通用微控制器今天都支持SPI、UART和I2C接口,但仍然有很多時(shí)候,某些內(nèi)部用戶(hù)可編程邏輯會(huì)非常有用。Atmel、賽普拉斯、Microchip和NXP等多家公司已經(jīng)把部分用戶(hù)可定義邏輯添加到自己的部件上,用于修復(fù)部分此類(lèi)問(wèn)題。這些器件主要是帶附加邏輯的微控制器。CPU仍然是主要的處理器件,附加邏輯的作用是提高CPU的工作效率。這類(lèi)器件常見(jiàn)于成本敏感性產(chǎn)品中,但也在低級(jí)任務(wù)中用作小型協(xié)處理器,以減輕主處理器的負(fù)擔(dān),從而提升效率。
另一方面FPGA也正在朝著類(lèi)似的目標(biāo)前進(jìn),雖然是從另一個(gè)方向。賽靈思和Altera多年來(lái)一直在添加軟硬核處理器以創(chuàng)建片上系統(tǒng)。FPGA方法一般成本較高,但如果項(xiàng)目需要大量定制邏輯,這就是一種高成本效益的方法。這些器件對(duì)于構(gòu)建ASIC、小批量產(chǎn)品的原型而言極具價(jià)值。這類(lèi)應(yīng)用的上市時(shí)間至關(guān)重要,而較大型產(chǎn)品需要持續(xù)的硬件靈活性。
微控制器搭配邏輯與FPGA搭配CPU,這兩種器件類(lèi)型都能為現(xiàn)場(chǎng)提供硬件靈活性。一旦基于閃存的器件成為常規(guī),現(xiàn)場(chǎng)升級(jí)就會(huì)成為標(biāo)準(zhǔn)。最早設(shè)計(jì)人員只能夠升級(jí)固件,但現(xiàn)在硬件(邏輯)和固件都能夠在現(xiàn)場(chǎng)輕松實(shí)現(xiàn)升級(jí)。從計(jì)算機(jī)鼠標(biāo)到高速網(wǎng)絡(luò)路由器等設(shè)備均能夠重新編寫(xiě)設(shè)備的固件和硬件,從而進(jìn)行現(xiàn)場(chǎng)升級(jí)。
上文提及的四家公司(Atmel、賽普拉斯、Microchip和NXP)均可提供“膠連”邏輯,幫助減輕主處理器的負(fù)荷,或是無(wú)需使用外部邏輯。就提供的邏輯模塊類(lèi)型和這些邏輯模塊彼此互聯(lián)的方式以及與定時(shí)器、UART和IO引腳等板載模塊互聯(lián)的方式而言,每家公司都采取了不同的方法。
因此有必要了解這些廠(chǎng)家各自是如何實(shí)現(xiàn)內(nèi)部可編程邏輯的,以便為選擇最適合自己項(xiàng)目的解決方案做出最佳決策。只要一個(gè)簡(jiǎn)單的內(nèi)部AND或者OR門(mén)控就足以避免使用外部組件,或是改善CPU性能。所有四種方法都支持用定制邏輯門(mén)控輸入和輸出信號(hào)。這類(lèi)方法可借助時(shí)鐘門(mén)控輸入,以便使用計(jì)數(shù)器測(cè)量外部時(shí)鐘頻率。這四類(lèi)邏輯模塊均支持的一個(gè)簡(jiǎn)單例子是一種調(diào)制UART輸出,使之用于IR通信的方法。在此例中,不僅有圖1所示的內(nèi)部AND門(mén)控,還能夠?qū)?lái)自時(shí)鐘或計(jì)數(shù)器的信號(hào)及UARTTX輸出路由到AND門(mén)控。
AtmelXCL模塊內(nèi)置兩個(gè)LUT(查找表)模塊,配套兩個(gè)8位定時(shí)器/計(jì)數(shù)器模塊。這兩個(gè)LUT不必連接到定時(shí)器/計(jì)數(shù)器模塊,而是與UART、EVENT模塊或IO引腳互聯(lián)。這兩個(gè)LUT可用作兩個(gè)獨(dú)立的2輸入單元或一個(gè)單獨(dú)的3輸入單元。該邏輯模塊可配置為組合邏輯,如AND、NAND、OR、NOR、XOR、XNOR、NOT或MUX功能。它們也可配置為順序邏輯功能,例如D觸發(fā)器、D鎖存器或RS鎖存器。由于能夠與其它邏輯模塊和IO引腳互聯(lián),這些簡(jiǎn)單的LUT模塊能夠方便地讓設(shè)計(jì)人員避免使用某些外部邏輯,或者節(jié)省CPU周期。例如AtmelXCL模塊應(yīng)用手冊(cè)(AT01084)解釋了如何配置XCL模塊,以避免在產(chǎn)生額外CPU開(kāi)銷(xiāo)或使用外部邏輯的情況下,為UART輸出提供曼徹斯特編碼。AVRXMEGAE器件內(nèi)置一個(gè)XCL模塊。