0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Fpga的Pmod與Arduino接口映射

電子工程師 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2018-06-05 16:57 ? 次閱讀

引言

多年以來(lái),一直存在標(biāo)準(zhǔn)泛濫的現(xiàn)象,而我們電子業(yè)尤其嚴(yán)重。您是否曾經(jīng)想過(guò),為什么我們對(duì)有些奇怪的數(shù)字或測(cè)量計(jì)的東西建立標(biāo)準(zhǔn)?關(guān)于航天飛機(jī)的固體燃料火箭推進(jìn)器的直徑是否真的源自于馬屁股的寬度的討論非常激烈。2相當(dāng)?shù)南∑婧陀腥?。但是,接受事?shí)會(huì)更有成效:總是會(huì)有很多標(biāo)準(zhǔn),我們必須找到使其很好配合的途徑。工程師和制造商均涉及到一個(gè)共同領(lǐng)域,其中標(biāo)準(zhǔn)的不兼容特別麻煩:原型平臺(tái)。幸運(yùn)的是,有些方法可以緩解這些不兼容性。下文中我們將進(jìn)一步分析討論。

開(kāi)發(fā)板擴(kuò)展標(biāo)準(zhǔn)

多年來(lái),元件制造商一直提供開(kāi)發(fā)系統(tǒng),幫助其客戶(hù)采用其元件設(shè)計(jì)應(yīng)用。對(duì)于可編程器件,例如FPGA微控制器,始終存在與其它元件的接口,以便能夠與硬件同步或者早于硬件進(jìn)行軟件開(kāi)發(fā)。隨著時(shí)間推移,涌現(xiàn)出了關(guān)于這些“擴(kuò)展接口”的非常松散的偽標(biāo)準(zhǔn),其中有些標(biāo)準(zhǔn)的一致性相對(duì)較好。Xilinx等FPGA廠(chǎng)商推動(dòng)這些標(biāo)準(zhǔn),例如FMC,使客戶(hù)盡可能簡(jiǎn)單地遷移到最新平臺(tái)。Xilinx也采用第三方標(biāo)準(zhǔn),例如Digilent制定的Pmod標(biāo)準(zhǔn),用于該接口的外圍設(shè)備選擇較廣。微控制器制造商的標(biāo)準(zhǔn)化略慢,許多采用自身的專(zhuān)用接口。然而,制造商動(dòng)向和Arduino平臺(tái)普及等市場(chǎng)力量正驅(qū)使其也向偽標(biāo)準(zhǔn)靠攏。

Pmod非常適合FPGA

Pmod接口是將外設(shè)與FPGA開(kāi)發(fā)板進(jìn)行組合和匹配的很好方式,可利用方便、可手工焊接的連接器連接八個(gè)引腳以及電源和地。FPGA的靈活性允許將其八個(gè)信號(hào)引腳用于幾乎所有功能。盡管這提高了其對(duì)于FPGA的實(shí)用性,但也造成該接口難以配合那些外設(shè)功能分配給特定引腳的微控制器。為解決這一問(wèn)題,Digilent定義了多種不同的Pmod引腳排列類(lèi)型,不同的功能分配給特定的引腳(圖1)。

基于Fpga的Pmod與Arduino接口映射


圖1. Pmod引腳排列類(lèi)型將不同的功能分配給特定引腳。

類(lèi)型定義使得微控制器板較容易使用Pmod接口標(biāo)準(zhǔn),但仍然存在挑戰(zhàn)。利用許多微控制器有限的引腳復(fù)用能力,難以實(shí)現(xiàn)真正的通用接口,已被廢棄的Type 3 UART接口就是很好的例子。然而,即使存在局限性,對(duì)于原型或教育目的,Pmod接口是一種非常有用的擴(kuò)展端口。

Arduino偽標(biāo)準(zhǔn)

Arduino偽標(biāo)準(zhǔn)是一個(gè)完全不同的老頑固,是出于各種原因?yàn)椴煌后w開(kāi)發(fā)的不同平臺(tái)。最初的Arduino開(kāi)發(fā)板僅提供簡(jiǎn)單微控制器引腳,然后增加足夠的支持器件,從而使編程變得簡(jiǎn)單,并且愛(ài)好者仍然可承受。由于其簡(jiǎn)單性,原始引腳排列按照微控制器的性能定義。

隨著平臺(tái)發(fā)展到支持功能更多的處理器,該偽標(biāo)準(zhǔn)逐漸碎片化,具有各種引腳復(fù)用組合,可以說(shuō)是例外多于規(guī)則。有些問(wèn)題,例如支持不同的I/O電壓以及I2C信號(hào)的不一致性,在第3版的UNO板中得到了解決。然而,在將擴(kuò)展板與Arduino開(kāi)發(fā)板(或任何Arduino衍生產(chǎn)品)配對(duì)使用時(shí),必須仔細(xì)檢查兼容性。并且可供選擇的Arduino衍生產(chǎn)品很多(圖2),即使僅限于A(yíng)rduino網(wǎng)站提供的官方開(kāi)發(fā)板,引腳兼容性也并不簡(jiǎn)單。但是,一般而言,每個(gè)具有特殊功能的Arduino引腳也可用作通用I/O (即GPIO)。

基于Fpga的Pmod與Arduino接口映射


圖2 .Arduino開(kāi)發(fā)板配置為多種衍生產(chǎn)品,以支持不同的設(shè)計(jì)和應(yīng)用。

與Pmod接口中一個(gè)引腳可用作多種特殊功能不同,大多數(shù)Arduino引腳通常執(zhí)行單一的特殊功能。從根源上講,Arduino偽規(guī)范比Pmod接口更適合于微控制器。所以,這就是Arduino規(guī)格的微控制器板比Pmod連接器的微控制器板更容易找到的原因。

Pmod與Arduino接口之間的映射

我們可以采用Pmod接口和Arduino偽標(biāo)準(zhǔn),兩者各有眾多來(lái)源可供使用。是否能夠使某個(gè)平臺(tái)的外設(shè)與另一平臺(tái)的控制器進(jìn)行通信呢?當(dāng)然,一切皆有可能,但有時(shí)候治療比疾病本身更糟糕。

如果將Arduino UNO第3版引腳排列與Pmod規(guī)范進(jìn)行比較,您馬上會(huì)發(fā)現(xiàn)Arduino板上有22個(gè)信號(hào)引腳,而Pmod連接器上只有8個(gè)引腳。從技術(shù)上講,有可能將全部22個(gè)引腳串行化,使其通過(guò)Pmod提供的8個(gè)引腳,然后在另一側(cè)對(duì)其進(jìn)行解串,但我們將這一工作留給讀者。將22個(gè)Arduino信號(hào)自適應(yīng)映射到Pmod規(guī)范定義的不同類(lèi)型(見(jiàn)圖1),是可以做到的,但仍不輕松。以上圖1所示為5種不同類(lèi)型的Pmod接口。許多信號(hào)采用電平觸發(fā),可由軟件通過(guò)GPIO引腳控制。然而,有些信號(hào)采用時(shí)間觸發(fā)協(xié)議,利用微控制器內(nèi)部的外設(shè)更容易控制。所以,困難在于將微控制器的所有專(zhuān)用引腳映射到Pmod規(guī)范定義的引腳。

建議方案:使用串行控制交叉點(diǎn)開(kāi)關(guān)

解決映射問(wèn)題的一種途徑是在電路板上安裝配置跳線(xiàn)陣列。這種方法盡管很簡(jiǎn)單明了,但既不美觀(guān)也不人性化。適合Arduino板尺寸的說(shuō)明文字字體會(huì)非常模糊難辨。許多引腳可能是雙向的,所以簡(jiǎn)單的邏輯門(mén)不是信號(hào)連接的好選擇。模擬開(kāi)關(guān)能起作用,但沒(méi)有足夠的附加引腳來(lái)對(duì)其進(jìn)行獨(dú)立控制。利用I2C端口擴(kuò)展器,可解決引腳短缺的問(wèn)題。誠(chéng)然,這種方法不比跳線(xiàn)更巧妙,但可通過(guò)軟件配置。

如果沒(méi)有串行控制16:2多路復(fù)用器,MAX14661,這種方法似乎毫無(wú)希望。咋一看,支持所有不同類(lèi)型的Pmod好像需要四片器件,那么這種方法很難說(shuō)比端口擴(kuò)展器方案好多少。實(shí)際情況真的會(huì)是這樣,除非...MAX14661具有特殊功能。該器件允許同時(shí)激活任意開(kāi)關(guān)組合,所以可用作8:8交叉點(diǎn)開(kāi)關(guān)。

至此為止,一切順利。但是,不可否認(rèn),8:8交叉點(diǎn)配置有一個(gè)局限性:同時(shí)只能傳輸兩路獨(dú)立信號(hào),每個(gè)COM引腳一路。但同時(shí)兩路信號(hào)有什么好處?如上所述,大多數(shù)信號(hào)可由GPIO驅(qū)動(dòng),只有少數(shù)信號(hào)要求內(nèi)部外設(shè)控制器。如果每個(gè)引腳分配一路GPIO,只有時(shí)間觸發(fā)的串行線(xiàn)路需要通過(guò)復(fù)用器連接。UART和I2C為2線(xiàn)總線(xiàn),所以不適合通過(guò)復(fù)用器的唯一串行總線(xiàn)是SPI。SPI只有一種接口定義,所以將SPI信號(hào)直接連接至連接器,作為這些接口的GPIO連接。當(dāng)其中某個(gè)引腳需要用作時(shí)間觸發(fā)功能時(shí),只需將GPIO置于三態(tài)。

信號(hào)電平怎么樣呢?最初的Arduino設(shè)計(jì)及許多后來(lái)者使用5V信號(hào)電平,但現(xiàn)在5V信號(hào)沒(méi)有以前那么常見(jiàn)。為解決這一問(wèn)題,后來(lái)的Arduino版增加了IOREF引腳,以表示基于較低電壓微控制器的衍生品。Pmod連接器沒(méi)有IOREF引腳,但其絕大多數(shù)模塊支持3.3V信號(hào)。幸運(yùn)的是,MAX14611等雙向電平轉(zhuǎn)化器解決了這一問(wèn)題。只需將Arduino信號(hào)連接至由IOREF供電的電平轉(zhuǎn)換器的一側(cè)。然后將另一側(cè)連接至由Arduino板上專(zhuān)用3.3V電平供電的Pmod連接器。MAX14661多路復(fù)用器采用1.8V至5V的電源供電時(shí)可承受及傳輸-5V至+5V的任何信號(hào),所以可安裝在電平轉(zhuǎn)換器的任何一側(cè)。由于至多路復(fù)用器的Arduino連接多于Pmod連接,所以將MAX14611安裝在電平轉(zhuǎn)換器的Arduino很有意義。按照這種方式,Pmod連接器處只需要兩片4通道器件(圖3)。

基于Fpga的Pmod與Arduino接口映射


圖3. 建議方案的邏輯圖。

方案評(píng)估

該方案的關(guān)鍵是每個(gè)通道支持同時(shí)多個(gè)連接。COM引腳不連接,但在復(fù)用器內(nèi)部用于選擇連接。MAX14661的16個(gè)復(fù)用連接中的8個(gè)專(zhuān)用于Pmod連接器,也連接至4路支持SPI的信號(hào)和4路其它GPIO(圖3)。其它8個(gè)復(fù)用連接綁定至2線(xiàn)串行總線(xiàn)和其它時(shí)間關(guān)鍵信號(hào),例如PWM或定時(shí)器引腳。例如,為實(shí)施I2C類(lèi)型,只需配置復(fù)用器,在通道A上使能SDA引腳和Pmod引腳4,在通道B上使能SCL和Pmod引腳3。通道A和B是任意選擇的,可隨意交換。實(shí)際上,甚至可以使能Pmod連接器上第二排的引腳3和4,以訪(fǎng)問(wèn)另外的6引腳I2C Pmod。如果I2C器件的地址不同,甚至可使兩個(gè)端口保持工作狀態(tài),或者動(dòng)態(tài)激活,以支持相同地址的兩個(gè)器件。使用跳線(xiàn)方法,根本不可能在兩個(gè)具有相同地址的器件之間進(jìn)行動(dòng)態(tài)切換。使用MAX14661,能夠以編程方式配置所有指定的Pmod類(lèi)型,甚至非標(biāo)準(zhǔn)類(lèi)型,而只需單片尺寸僅為4mm X 4mm的有源器件。

為什么有人設(shè)計(jì)非標(biāo)準(zhǔn)Pmod?原因之一是與微控制器相同的引腳復(fù)用問(wèn)題。例如,MAX14661支持I2C和SPI控制,取決于配置引腳的狀態(tài)。MAX14661的外設(shè)模塊的引腳排列與SPI Pmod類(lèi)型相匹配,但時(shí)鐘和數(shù)據(jù)引腳與Digilent Pmod規(guī)范規(guī)定的I2C引腳不匹配。適配卡上的MAX14661可將SDA和SCL信號(hào)映射到任意Pmod引腳,可用于支持非標(biāo)準(zhǔn)MAX14661外設(shè)模塊、I2C引腳映射。MAX14661也有兩個(gè)地址引腳,以支持4個(gè)不同的I2C器件地址。因此,可將系統(tǒng)設(shè)計(jì)為支持同一總線(xiàn)上的多個(gè)器件。

使用MAX14661復(fù)用I2C總線(xiàn)時(shí),在帶內(nèi)發(fā)送命令。切換將與I2C總線(xiàn)同步生效。當(dāng)然,在帶外復(fù)用I2C總線(xiàn)具有挑戰(zhàn)性,因?yàn)槿绻恍⌒模瑫?huì)在從機(jī)將SDA線(xiàn)拉低時(shí)斷開(kāi);下次選擇該總線(xiàn)分支時(shí),分支可能鎖死。MAX14661始終在I2C寫(xiě)命令結(jié)束時(shí)轉(zhuǎn)換總線(xiàn),此時(shí)開(kāi)關(guān)另一側(cè)的器件應(yīng)為空閑。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600450
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186346
  • Pmod
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8119
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    同步與多個(gè)FPGA接口的千兆樣本ADC

    電子發(fā)燒友網(wǎng)站提供《同步與多個(gè)FPGA接口的千兆樣本ADC.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 11:32 ?0次下載
    同步與多個(gè)<b class='flag-5'>FPGA</b><b class='flag-5'>接口</b>的千兆樣本ADC

    FPGA的SRIO接口使用應(yīng)注意的事項(xiàng)

    FPGA的SRIO(Serial RapidIO)接口使用時(shí),需要注意以下幾個(gè)方面以確保數(shù)據(jù)交換和通信的順利進(jìn)行: 接口連接與配置 : 確保FPGA和與其通信的設(shè)備(如DSP)上都配備
    發(fā)表于 06-27 08:33

    FPGA的sata接口設(shè)計(jì)時(shí)需要注意哪些問(wèn)題

    FPGA的SATA接口設(shè)計(jì)時(shí),需要注意以下幾個(gè)方面的問(wèn)題,以確保設(shè)計(jì)的穩(wěn)定性和性能: 接口版本和速度 : SATA有三代標(biāo)準(zhǔn),分別為SATA I(1.5 Gb/s)、SATA II(3.0 Gb
    發(fā)表于 05-27 16:20

    FPGA的PCIE接口應(yīng)用需要注意哪些問(wèn)題

    FPGA上的PCIe接口應(yīng)用是一個(gè)復(fù)雜的任務(wù),需要考慮多個(gè)方面的問(wèn)題以確保系統(tǒng)的穩(wěn)定性和性能。以下是在FPGA的PCIe接口應(yīng)用中需要注意的關(guān)鍵問(wèn)題: 硬件資源和內(nèi)部架構(gòu) :
    發(fā)表于 05-27 16:17

    FPGA的高速接口應(yīng)用注意事項(xiàng)

    FPGA的高速接口應(yīng)用注意事項(xiàng)主要包括以下幾個(gè)方面: 信號(hào)完整性與電磁兼容性(EMC) : 在設(shè)計(jì)FPGA高速接口時(shí),必須充分考慮信號(hào)完整性和電磁兼容性。這要求合理的PCB布局、走線(xiàn)策
    發(fā)表于 05-27 16:02

    fpga仿真器接口定義

    FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)仿真器接口的定義主要依賴(lài)于仿真器的具體設(shè)計(jì)和所支持的通信協(xié)議。在FPGA的設(shè)計(jì)和仿真過(guò)程中,接口
    的頭像 發(fā)表于 03-15 14:01 ?1047次閱讀

    高速ADDA模塊環(huán)路波形展示,FPGA專(zhuān)用

    高速ADDA模塊環(huán)路波形展示,FPGA專(zhuān)用,高速信號(hào)輸出,數(shù)模信號(hào)轉(zhuǎn)換,8Bit高速低功耗DA轉(zhuǎn)換,DA速率高達(dá)125MSPS,10BitAD轉(zhuǎn)換,AD速率35MSPS,模塊含SPI串口屏幕顯示、PMOD擴(kuò)展口......功能豐富,高性?xún)r(jià)比
    發(fā)表于 03-13 18:21

    高速ADDA模塊正弦波波形展示,FPGA專(zhuān)用

    高速ADDA模塊正弦波波形展示,FPGA專(zhuān)用,高速信號(hào)輸出,數(shù)模信號(hào)轉(zhuǎn)換,8Bit高速低功耗DA轉(zhuǎn)換,DA速率高達(dá)125MSPS,10BitAD轉(zhuǎn)換,AD速率35MSPS,模塊含SPI串口屏幕顯示、PMOD擴(kuò)展口......功能豐富,高性?xún)r(jià)比
    發(fā)表于 03-13 18:17

    2023年Arduino開(kāi)放原碼報(bào)告:持續(xù)茁壯的Arduino生態(tài)系!

    所謂出錢(qián)就是買(mǎi)一片Arduino開(kāi)發(fā)板或是付費(fèi)訂閱Arduino Cloud云端服務(wù),或單純資金贊助;出力就是撰寫(xiě)Arduino相關(guān)的程序并無(wú)私的分享程序代碼或回報(bào)錯(cuò)誤或投入翻譯等,筆者即有若干翻譯新版
    的頭像 發(fā)表于 01-25 16:45 ?1203次閱讀
    2023年<b class='flag-5'>Arduino</b>開(kāi)放原碼報(bào)告:持續(xù)茁壯的<b class='flag-5'>Arduino</b>生態(tài)系!

    拆解mmap內(nèi)存映射的本質(zhì)!

    mmap 內(nèi)存映射里所謂的內(nèi)存其實(shí)指的是虛擬內(nèi)存,在調(diào)用 mmap 進(jìn)行匿名映射的時(shí)候(比如進(jìn)行堆內(nèi)存的分配),是將進(jìn)程虛擬內(nèi)存空間中的某一段虛擬內(nèi)存區(qū)域與物理內(nèi)存中的匿名內(nèi)存頁(yè)進(jìn)行映射,當(dāng)調(diào)用
    的頭像 發(fā)表于 01-24 14:30 ?1148次閱讀
    拆解mmap內(nèi)存<b class='flag-5'>映射</b>的本質(zhì)!

    AD9684與FPGA用LVDS模式接口互聯(lián)時(shí),FPGA端如何使用?

    咨詢(xún)一個(gè)初級(jí)A/D問(wèn)題:AD9684中DCO時(shí)鐘的用法(FPGA控制)。AD9684與FPGA用LVDS模式接口互聯(lián)時(shí),FPGA端如何使用?手冊(cè)中沒(méi)有詳細(xì)說(shuō)明,是DCO上升沿捕獲數(shù)據(jù),
    發(fā)表于 12-13 09:01

    fpga高速接口有哪些

    fpga高速接口有哪些? FPGA(Field Programmable Gate Array)是一種可編程邏輯器件,可以實(shí)現(xiàn)高度定制的硬件功能。它在數(shù)字電路設(shè)計(jì)中扮演著重要的角色,可以用于各種
    的頭像 發(fā)表于 12-07 17:27 ?2866次閱讀

    AD9164 JESD204B接口的傳輸層是如何對(duì)I/Q數(shù)據(jù)進(jìn)行映射的?

    AD9164 JESD204B接口的傳輸層是如何對(duì)I/Q數(shù)據(jù)進(jìn)行映射
    發(fā)表于 12-04 07:27

    FPGA與ADC數(shù)字?jǐn)?shù)據(jù)輸出的接口指南

    電子發(fā)燒友網(wǎng)站提供《FPGA與ADC數(shù)字?jǐn)?shù)據(jù)輸出的接口指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-28 09:40 ?0次下載
    <b class='flag-5'>FPGA</b>與ADC數(shù)字?jǐn)?shù)據(jù)輸出的<b class='flag-5'>接口</b>指南

    Arduino人機(jī)界面及接口技術(shù)入門(mén)

    Arduino人機(jī)界面及接口技術(shù)入門(mén)
    發(fā)表于 10-23 09:19 ?0次下載