始終存在用于連接可編程設(shè)備(如FPGA和微控制器)的連接,以便軟件開(kāi)發(fā)可以與硬件一起或之前開(kāi)始。本文解釋了已經(jīng)出現(xiàn)的“擴(kuò)展接口”的非常松散的偽標(biāo)準(zhǔn),其中一些比其他標(biāo)準(zhǔn)更一致,并將討論FPGA的Pmod標(biāo)準(zhǔn)和微控制器的Arduino偽標(biāo)準(zhǔn)。本文解釋了如何使用MAX14661多路復(fù)用器設(shè)計(jì)從一種標(biāo)準(zhǔn)到另一種標(biāo)準(zhǔn)的簡(jiǎn)單接口。
介紹
多年來(lái),標(biāo)準(zhǔn)激增,沒(méi)有多少行業(yè)比電子行業(yè)創(chuàng)造更多。你有沒(méi)有想過(guò)為什么我們對(duì)看似奇數(shù)或儀表的東西有一個(gè)標(biāo)準(zhǔn)?關(guān)于確定航天飛機(jī)固體火箭助推器直徑的標(biāo)準(zhǔn)是否真的起源于馬的背面,爭(zhēng)論激烈。2好奇和有趣,是的,但是,接受總會(huì)有很多標(biāo)準(zhǔn)這一事實(shí)更有成效,因此我們必須找到使它們很好地協(xié)同工作的方法。對(duì)于工程師和制造商來(lái)說(shuō),有一個(gè)特定的領(lǐng)域,標(biāo)準(zhǔn)的不兼容性特別麻煩:原型平臺(tái)。幸運(yùn)的是,有一些方法可以減輕這些不兼容性。讓我們仔細(xì)看看。
開(kāi)發(fā)板擴(kuò)展標(biāo)準(zhǔn)
多年來(lái),組件制造商一直提供開(kāi)發(fā)系統(tǒng),以幫助客戶(hù)圍繞其零件設(shè)計(jì)應(yīng)用程序。對(duì)于FPGA和微控制器等可編程設(shè)備,始終存在與其他組件接口的連接,因此軟件開(kāi)發(fā)可以與硬件一起或之前開(kāi)始。隨著時(shí)間的推移,這些“擴(kuò)展接口”的偽標(biāo)準(zhǔn)已經(jīng)出現(xiàn),其中一些比其他標(biāo)準(zhǔn)更一致。賽靈思等 FPGA 供應(yīng)商推動(dòng)了其中一些標(biāo)準(zhǔn),例如 FMC 規(guī)范,使客戶(hù)能夠盡可能輕松地遷移到最新平臺(tái)。Xilinx 還使用第三方標(biāo)準(zhǔn)(如 Digilent 開(kāi)發(fā)的 Pmod? 標(biāo)準(zhǔn))將外設(shè)模塊連接到主機(jī)控制器板,并且該接口有多種外設(shè)可供選擇。微控制器制造商的標(biāo)準(zhǔn)化速度較慢,許多制造商使用自己的專(zhuān)有接口。然而,像制造商運(yùn)動(dòng)和Arduino?平臺(tái)的普及這樣的市場(chǎng)力量也正在將它們推向偽標(biāo)準(zhǔn)。
Pmod 非常適合 FPGA
Pmod 接口是將外設(shè)與 FPGA 開(kāi)發(fā)板混合搭配的好方法。它在一個(gè)方便的可手工焊接連接器中提供對(duì)八個(gè)引腳以及電源和接地的訪問(wèn)。FPGA 的靈活性使其八個(gè)信號(hào)引腳幾乎可用于任何用途。雖然這增強(qiáng)了其在FPGA中的實(shí)用性,但也使得該接口難以與外設(shè)分配給特定引腳的微控制器一起使用。為了解決這個(gè)問(wèn)題,Digilent 定義了幾種不同的 Pmod 引腳排列類(lèi)型,并為特定引腳分配了各種功能(圖 1)。
圖1.Pmod引腳排列類(lèi)型具有分配給特定引腳的各種功能。
類(lèi)型定義使得將Pmod接口標(biāo)準(zhǔn)與微控制器板一起使用變得更加容易,但仍然存在挑戰(zhàn)。已棄用的Type 3 UART接口是一個(gè)很好的例子,說(shuō)明在實(shí)現(xiàn)真正通用接口時(shí)遇到的困難,而許多微控制器的引腳復(fù)用功能有限。盡管如此,即使有其局限性,Pmod接口也是原型設(shè)計(jì)或教育工作非常有用的擴(kuò)展端口。
Arduino 偽標(biāo)準(zhǔn)
Arduino偽標(biāo)準(zhǔn)是一種完全不同的野獸;出于不同的原因?yàn)椴煌氖鼙婇_(kāi)發(fā)的不同平臺(tái)。最初的Arduino板只是暴露了簡(jiǎn)單微控制器的引腳,并添加了足夠的支持設(shè)備,使其易于編程,但對(duì)于業(yè)余愛(ài)好者來(lái)說(shuō)仍然是負(fù)擔(dān)得起的。由于其簡(jiǎn)單性,最初的引腳排列由微控制器的功能定義。
隨著平臺(tái)發(fā)展到支持功能更強(qiáng)大的處理器,這個(gè)偽標(biāo)準(zhǔn)被無(wú)數(shù)的引腳復(fù)用組合所分割,可以說(shuō),例外多于規(guī)則。一些問(wèn)題,例如支持不同的I / O電壓和I 的不一致2C 信號(hào),在 UNO 董事會(huì)的第 3 修訂版中得到了處理。然而,任何將Arduino板(或任何Arduino衍生產(chǎn)品)與擴(kuò)展板配對(duì)的人都必須仔細(xì)檢查兼容性。然而,不乏Arduino衍生產(chǎn)品可供選擇(圖2)。即使僅限于Arduino網(wǎng)站上的官方主板,引腳兼容性也遠(yuǎn)非微不足道。通常,每個(gè)Arduino引腳都具有特殊功能,也可以用作通用I/O(GPIO)。
圖2.Arduino 封裝板配置在許多衍生產(chǎn)品中,以支持不同的設(shè)計(jì)和應(yīng)用。
與Pmod接口不同,一個(gè)引腳可以提供多種特殊功能,大多數(shù)Arduino引腳通常執(zhí)行一項(xiàng)特殊功能。正如其根源所期望的那樣,Arduino偽規(guī)范更適合微控制器,與Pmod接口不同。因此,這就是為什么在Arduino外形尺寸中找到微控制器板比使用Pmod連接器更容易的主要原因。
pmod 和 Arduino 接口之間的映射
我們有Pmod接口和Arduino偽標(biāo)準(zhǔn),兩者都可以從許多來(lái)源獲得。是否有希望從一個(gè)平臺(tái)獲得外圍設(shè)備與另一個(gè)平臺(tái)的控制器進(jìn)行通信?當(dāng)然,一切皆有可能,但有時(shí)治愈比疾病更糟糕。
如果將Arduino UNO rev 3引腳排列與Pmod規(guī)范進(jìn)行比較,我們看到Arduino板上有22個(gè)信號(hào)引腳,Pmod連接器上只有8個(gè)信號(hào)引腳。從技術(shù)上講,可以序列化所有 22 個(gè)引腳并將它們通過(guò) Pmod 提供的 8 個(gè)引腳,然后在另一側(cè)對(duì)其進(jìn)行反序列化,但這項(xiàng)工作將留給讀者練習(xí)。將 22 個(gè) Arduino 信號(hào)自適應(yīng)映射到 Pmod 規(guī)范中定義的不同類(lèi)型(參見(jiàn)圖 1)的任務(wù)更易于管理,但仍然不是微不足道的。圖1顯示了五種不同Pmod類(lèi)型的引腳排列。許多信號(hào)對(duì)電平敏感,并通過(guò)GPIO引腳通過(guò)軟件進(jìn)行控制。但是,一些信號(hào)采用時(shí)間敏感協(xié)議,通過(guò)利用微控制器內(nèi)部的外設(shè),這些協(xié)議更容易使用。因此,挑戰(zhàn)在于將微控制器的所有專(zhuān)用引腳映射到Pmod規(guī)范中指定的引腳。
建議的解決方案:使用串行控制的交叉點(diǎn)開(kāi)關(guān)
解決此映射問(wèn)題的一種方法是在電路板上放置一系列配置跳線。雖然簡(jiǎn)單明了,但這既不是一個(gè)優(yōu)雅也不是用戶(hù)友好的解決方案。在Arduino大小的板上適應(yīng)說(shuō)明所需的字體大小將難以辨認(rèn)。許多引腳可以是雙向的,因此簡(jiǎn)單的邏輯門(mén)不是信號(hào)路由的選項(xiàng)。模擬開(kāi)關(guān)可以工作,但沒(méi)有足夠的額外引腳來(lái)單獨(dú)控制它們。引腳短缺可以通過(guò) I 解決2C 端口擴(kuò)展器。當(dāng)然,這種策略不會(huì)比跳線更優(yōu)雅,但它是軟件可配置的。
如果沒(méi)有串行控制的16:2多路復(fù)用器MAX14661,這種努力似乎毫無(wú)希望。乍一看,人們可能會(huì)認(rèn)為需要其中四個(gè)設(shè)備來(lái)支持所有不同的Pmod類(lèi)型。這種方法似乎并不比端口擴(kuò)展器解決方案好多少。這是真的,但是...MAX14661具有特殊功能。它允許任意開(kāi)關(guān)組合同時(shí)處于活動(dòng)狀態(tài),因此可用作 8:8 交叉點(diǎn)開(kāi)關(guān)。
目前為止,一切都好。但不可否認(rèn),8:8 交叉點(diǎn)配置存在限制。它只能同時(shí)傳遞兩個(gè)獨(dú)立的信號(hào),每個(gè)COM_引腳一個(gè),但兩個(gè)同時(shí)信號(hào)有什么用呢?如前所述,大多數(shù)信號(hào)可以由GPIO驅(qū)動(dòng),只有少數(shù)信號(hào)需要內(nèi)部外設(shè)控制器。如果為每個(gè)引腳分配一個(gè) GPIO,則只需通過(guò)多路復(fù)用器路由對(duì)時(shí)間敏感的串行線路。一個(gè)UART和我2C 是每條 2 線總線,因此唯一不適合通過(guò)多路復(fù)用器的串行接口是 SPI。只有一個(gè)接口為 SPI 定義;因此,SPI信號(hào)直接路由到連接器,并用作這些引腳的GPIO連接。當(dāng)時(shí)間敏感功能需要其中一個(gè)引腳時(shí),只需將GPIO設(shè)置為高阻抗輸入即可。
信號(hào)電壓電平如何?最初的Arduino設(shè)計(jì)及其許多后續(xù)產(chǎn)品使用5V信號(hào)電平,但5V信號(hào)不像以前那樣普遍。為了解決這個(gè)問(wèn)題,后來(lái)的Arduino板中添加了一個(gè)IOREF引腳,以指示基于低壓微控制器的衍生產(chǎn)品的信號(hào)電平。Pmod連接器沒(méi)有IOREF引腳,但其絕大多數(shù)模塊支持3.3V信號(hào)。幸運(yùn)的是,像MAX3378E這樣的雙向電平轉(zhuǎn)換器解決了這個(gè)問(wèn)題。只需將 Arduino 信號(hào)連接到由 IOREF 供電的電平轉(zhuǎn)換器的一側(cè),然后將另一側(cè)連接到由 Arduino 板專(zhuān)用 3.3V 電源供電的 Pmod 連接器。MAX14661多路復(fù)用器可承受-5V至+5V的任何信號(hào),并在1.8V至5V之間傳遞任何電源,因此可以位于電平轉(zhuǎn)換器的任一側(cè)。由于多路復(fù)用器的Arduino連接多于Pmod連接,因此將MAX14661放在電平轉(zhuǎn)換器的Arduino側(cè)是有意義的。這樣,Pmod 連接器上只需要兩個(gè) 4 通道設(shè)備(圖 3)。
圖3.建議的解決方案的邏輯圖。
評(píng)估此解決方案
該解決方案的關(guān)鍵是每個(gè)通道支持多個(gè)同時(shí)連接。COM_引腳未連接,而是在多路復(fù)用器內(nèi)部用于路由。MAX14661的16個(gè)多路復(fù)用器連接中有8個(gè)專(zhuān)用于Pmod連接器,Pmod連接器還連接到4個(gè)支持SPI的信號(hào)和4個(gè)其他GPIO(圖3)。其他 8 個(gè)多路復(fù)用器連接連接到 2 線串行總線和其他時(shí)間關(guān)鍵信號(hào),如 PWM 或定時(shí)器引腳。要實(shí)現(xiàn) I2例如,C 型只需配置多路復(fù)用器,使能通道 A 上的 SDA 引腳和 Pmod 引腳 4,通道 B 上使能 SCL 引腳和 Pmod 引腳 3。事實(shí)上,甚至可以使Pmod連接器第二排上的引腳3和4訪問(wèn)第二個(gè)6引腳I2C 普莫德。如果 I2C 設(shè)備具有不同的地址,兩個(gè)端口可以保持活動(dòng)狀態(tài)或動(dòng)態(tài)激活,以支持具有相同地址的兩個(gè)設(shè)備。使用跳線根本不可能在具有相同地址的兩個(gè)設(shè)備之間動(dòng)態(tài)切換。但是,使用MAX14661,可以通過(guò)編程方式配置所有指定的Pmod類(lèi)型,甚至一些非標(biāo)準(zhǔn)類(lèi)型,只需一個(gè)只有4mm x 4mm的有源器件。
為什么有人會(huì)設(shè)計(jì)一個(gè)非標(biāo)準(zhǔn)的Pmod?其中一個(gè)原因是與微控制器相同的引腳復(fù)用問(wèn)題。例如,MAX14661同時(shí)支持I2C 和 SPI 控制,具體取決于配置引腳的狀態(tài)。MAX14661的外設(shè)模塊配置為與SPI Pmod類(lèi)型匹配,但時(shí)鐘和數(shù)據(jù)引腳與I不匹配。2由 Digilent Pmod 規(guī)范指定的 C 引腳。適配器卡上的MAX14661可以將SDA和SCL信號(hào)映射到任何Pmod引腳,以支持非標(biāo)準(zhǔn)MAX14661外設(shè)模塊I2C 引腳映射。MAX14661還具有兩個(gè)地址引腳,支持四個(gè)不同的I。2C 設(shè)備地址,這意味著系統(tǒng)可以設(shè)計(jì)為支持同一總線上的多個(gè)設(shè)備。
使用MAX14661多路復(fù)用I時(shí)2C 總線,命令在帶內(nèi)發(fā)送。切換與 I 同步生效2C總線。誠(chéng)然,多路復(fù)用 I 可能具有挑戰(zhàn)性2C總線帶外。如果不小心,您可以在從站將SDA線保持低電平時(shí)斷開(kāi)連接。下次選擇總線的該分支時(shí),它可能會(huì)鎖定。MAX14661始終在I結(jié)束時(shí)轉(zhuǎn)換總線2當(dāng)交換機(jī)另一端的設(shè)備應(yīng)處于空閑狀態(tài)時(shí),C 寫(xiě)入命令。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7489瀏覽量
151047 -
FPGA
+關(guān)注
關(guān)注
1626文章
21666瀏覽量
601837 -
控制器
+關(guān)注
關(guān)注
112文章
16203瀏覽量
177402
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論