国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議

這篇具有很好參考價值的文章主要介紹了【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????該實現(xiàn)由兩個組件組成:在 LabVIEW FPGA 中實現(xiàn)的 SPI 協(xié)議以及用于從主機 PC 或?qū)崟r控制器與 FPGA 進行通信的 LabVIEW 主機接口。該架構(gòu)允許從單個主機程序控制多個 SPI 端口,同時仍然允許定制 FPGA VI 以進行其他數(shù)據(jù)采集和處理。該實現(xiàn)不使用任何DMA(直接內(nèi)存訪問)通道,允許使用NI掃描引擎和RIO掃描接口以及FPGA和主機之間的其他高速/大容量數(shù)據(jù)傳輸。

1.SPI協(xié)議介紹

????????

????????SPI 是一種以全雙工方式運行的同步串行數(shù)據(jù)鏈路。也就是說,攜帶數(shù)據(jù)的信號同時在兩個方向上傳播。設(shè)備使用主/從協(xié)議進行通信,其中主設(shè)備啟動數(shù)據(jù)幀。當(dāng)主設(shè)備生成時鐘然后選擇從設(shè)備時,數(shù)據(jù)可以同時在一個或兩個方向上傳輸。由主設(shè)備和從設(shè)備決定接收到的字節(jié)是否有意義。這可能需要設(shè)備丟棄“僅發(fā)送”幀中接收到的字節(jié)或為“僅接收”幀生成虛擬字節(jié)。 ?

????????四種典型的 SPI 信號包括:

  • 時鐘 (SCLK)?- 該信號由主機生成。傳輸中的其他信號根據(jù)該時鐘的邊沿時序而變化。
  • 主數(shù)據(jù)輸出,從數(shù)據(jù)輸入(MOSI)?——該線是從主設(shè)備到從設(shè)備的輸出。與主時鐘邊沿同步地逐位傳輸。
  • 主數(shù)據(jù)輸入,從數(shù)據(jù)輸出 (MISO)?- 該線是所有連接的從設(shè)備的輸出。從與主時鐘邊沿同步的從器件逐位傳輸。
  • 片選 (CS) 或從機選擇 (SS)?- 這是一組信號,其中每條線都連接到系統(tǒng)中的各個從機。一次斷言一根線以啟用與相應(yīng)從機的通信。片選通常被置為低電平。

?

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

2.FPGA實現(xiàn)?

????????本文檔中的 SPI 總線是使用LabVIEW FPGA?實現(xiàn)的,以執(zhí)行總線主控和時鐘信號。單周期定時循環(huán) (SCTL) 用于執(zhí)行 SPI 主設(shè)備 (?LabVIEW FPGA?VI) 與每個端口最多 8 個從設(shè)備之間通信的每一步??梢允褂孟嗤?FPGA VI 和主機程序接口創(chuàng)建多個端口。

????????該總線封裝在更高級別的 LabVIEW FPGA VI 中,該 VI 利用狀態(tài)機在每個 SPI 端口和主機接口之間執(zhí)行中間通信。該VI同步主機接口和SPI端口,并將從主機發(fā)送到指定端口的數(shù)據(jù)復(fù)用。

3.總線實現(xiàn)

????????狀態(tài)機用于執(zhí)行特定操作,然后確定要轉(zhuǎn)換到哪個狀態(tài)。由于 SPI 具有總線轉(zhuǎn)換發(fā)生的特定順序,因此狀態(tài)機是實現(xiàn)該協(xié)議的不錯選擇。每個狀態(tài)完成通信的一部分,然后按順序轉(zhuǎn)換到下一步。

????????當(dāng) FPGA 上的 SPI 引擎收到命令時,一個通信周期開始。每個字節(jié)均從 VI 范圍 FIFO 中讀取,數(shù)據(jù)從多路復(fù)用器傳遞并作為布爾數(shù)組存儲在 FPGA 上。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????接收到要發(fā)送到 SPI 總線的數(shù)據(jù)后,指定要寫入的器件的片選 (CS) 線被置位。當(dāng)器件的片選線被置位時,它就準(zhǔn)備好一次一位地接收和發(fā)送數(shù)據(jù)。在執(zhí)行過程中的任何時刻只能有一條片選線處于活動狀態(tài)。CS 線作為寫入 FPGA 硬件上數(shù)字 I/O 端口的整數(shù)來實現(xiàn)。每個 CS 端口可以尋址 8 個單獨的從站。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????每個器件都需要由 FPGA 主器件生成時鐘信號 (SCLK)。對于端口上的所有設(shè)備,該時鐘的速率可能不一致,因此可以在每個數(shù)據(jù)傳輸周期之前設(shè)置時鐘速率。一旦片選被置位,主機和從機都準(zhǔn)備好進行數(shù)據(jù)傳輸。狀態(tài)機轉(zhuǎn)換到等待狀態(tài)并保持在該狀態(tài)足夠長的時間以考慮所選的時鐘速率。

????????當(dāng)延遲完成時,應(yīng)生成第一個時鐘信號以開始數(shù)據(jù)傳輸。SPI 設(shè)備可能需要四種時鐘模式之一進行傳輸。這些模式取決于時鐘極性 (CPOL) 和時鐘相位 (CPHA)。CPOL 指定時鐘的空閑狀態(tài)是邏輯低還是邏輯高(分別為 0 或 1)。CPHA 指定數(shù)據(jù)是在第一個邊沿還是第二個邊沿(分別為 0 或 1)記入/記出。

????????當(dāng)時鐘被設(shè)置時,它從空閑狀態(tài)轉(zhuǎn)換到活動狀態(tài)。如果 CPHA 為 0,則在此轉(zhuǎn)換期間也會對數(shù)據(jù)進行計時。如果 CPHA 為 1,則當(dāng) SCLK 從活動復(fù)位為空閑時對數(shù)據(jù)進行計時。在設(shè)置和重置 SCLK 之間,會出現(xiàn)另一個等待狀態(tài),以確保正確的時鐘速率。對于必須發(fā)送的每個位,這些狀態(tài)都會按順序重復(fù)。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????每個字節(jié)傳輸完畢后,VI從從設(shè)備接收到的數(shù)據(jù)會被放入另一個VI范圍的FIFO中,以便傳輸回主機。如果發(fā)送到狀態(tài)機的所有數(shù)據(jù)都已發(fā)送完畢,則片選線復(fù)位為無效狀態(tài),程序等待下一個命令。如果數(shù)據(jù)多于一個字節(jié),則會轉(zhuǎn)換回設(shè)置時鐘狀態(tài),并傳輸其余數(shù)據(jù)。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????除了SPI協(xié)議之外,每個端口的VI還具有配置狀態(tài)。當(dāng)主機發(fā)送的命令為配置時,SCLK 速率、CPOL、CPHA 和端口號將被讀取并用于下一個數(shù)據(jù)傳輸序列。

4.FPGA多路復(fù)用器

????????為了允許以最少的配置實例化多個端口,使用中間FPGA VI在SPI端口VI和主機VI之間進行通信。該VI由一個狀態(tài)機組成,管理主機/FPGA握手以及將數(shù)據(jù)復(fù)用到正確的端口。

????????主機負責(zé)傳達多路復(fù)用器應(yīng)執(zhí)行的狀態(tài)。多路復(fù)用器處于空閑狀態(tài),等待來自主機的啟動命令。當(dāng)接收到啟動命令時,多路復(fù)用器將數(shù)據(jù)指定的端口寫入每個端口可訪問的全局變量中。在開始執(zhí)行之前,每個端口VI都會檢查它是否是指定端口。

????????設(shè)置端口信息后,復(fù)用器檢查主機發(fā)送的命令。如果命令是Configure,則將CPOL、CPHA、CS和總字節(jié)數(shù)寫入全局變量,為下一次數(shù)據(jù)傳輸做準(zhǔn)備。如果命令是讀/寫 SPI,則從主機接收的數(shù)據(jù)將傳遞到每個端口可訪問的目標(biāo)范圍 FIFO。該數(shù)據(jù)從目標(biāo)范圍的 FIFO 傳輸?shù)侥繕?biāo)端口的 VI 范圍的 FIFO,以在寫入和讀取狀態(tài)下傳遞到 SPI 總線。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????由于多路復(fù)用器設(shè)置了數(shù)據(jù)的目的地,因此即使有多個端口可用,一次也只能有一個端口傳輸數(shù)據(jù)。一旦一個端口的所有數(shù)據(jù)都已傳輸,下一個端口就可以開始其傳輸序列。

?5.主機接口

????????創(chuàng)建了 SPI 通信狀態(tài)機的 LabVIEW 接口,以方便主機 PC 或?qū)崟r控制器與 FPGA 多路復(fù)用器之間的簡單數(shù)據(jù)傳輸。借助此高級 API,多個 SPI 端口可以與應(yīng)用程序所需的任何其他LabVIEW FPGA代碼一起實例化。

????????該API由兩個VI組成:FPGA SPI_Configure和FPGA SPI_Read Write。FPGA SPI_Configure 設(shè)置 SCLK 速率、CPOL、CPHA、CS 和要使用的端口。該信息通過配置命令傳遞到 FPGA 多路復(fù)用器,并存儲在 FPGA 全局變量中。

????????FPGA SPI_Read Write 需要傳輸?shù)目偽粩?shù)以及指定該數(shù)據(jù)的端口。U8字節(jié)數(shù)組被傳遞到VI并返回相同大小的數(shù)組。主機和 FPGA 之間的所有握手和數(shù)據(jù)傳輸都封裝在這些 VI 中。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

?

????????如果其他 FPGA 代碼要與 SPI 總線一起使用,來自 FPGA 多路復(fù)用器的 SPI 通信循環(huán)和所有前面板控件將需要出現(xiàn)在頂層 VI 中。如果沒有這些,則需要修改主機 API 以使用正確的標(biāo)簽與前面板控件進行通信。使用Open FPGA Reference VI創(chuàng)建的FPGA參考還需要綁定到API使用的FPGA Reference.ctl typedef。

????????FPGA 內(nèi)核和主機 API 附帶的示例程序展示了如何從多個端口寫入和讀取數(shù)據(jù)。每次按下 Write 按鈕時,Write Data 中的數(shù)據(jù)會發(fā)送到 FPGA,而 Read Data 則會從 SPI 總線返回。在寫入之間,可以更改端口和配置數(shù)據(jù)。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

6.添加多個SPI端口

????????向 FPGA 添加多個 SPI 端口相對簡單。在項目中,必須為新端口的 SCLK、MOSI、MISO 和 CS 添加新的 FPGA I/O。不需要其他項目配置。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????在 FPGA SPI_FPGA Top Level VI 中,所需要做的就是添加 FPGA SPI_SPI Port VI 的另一個實例,并添加端口號的輸入以及用于 SCLK、MOSI、MISO 和 CS 的 FPGA I/O。多路復(fù)用器VI中的SPI通信循環(huán)處理與新端口之間的數(shù)據(jù)傳遞。

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

7.更改FPGA目標(biāo)

????????如果需要在不同的目標(biāo)上編譯和運行該示例,則應(yīng)將主機VI和FPGA參考復(fù)制到新目標(biāo)的非FPGA部分。對于CompactRIO和 Single-Board RIO,這將是 RT 控制器。如果移動到R系列智能DAQ目標(biāo),主機VI應(yīng)移動到項目中的“我的電腦”目標(biāo)。

????????項目的 FPGA 部分中必須復(fù)制的項目是頂層 FPGA VI 和目標(biāo)范圍的 FPGA FIFO。需要將新的 FPGA I/O 添加到項目中,以便為 SPI 端口創(chuàng)建參考,以便在正確的線路上進行通信。如果FPGA I/O名稱與示例中的名稱不同,則需要更改端口VI的FPGA I/O常量輸入以匹配新項目的FPGA I/O。

?

【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議,現(xiàn)場可編程門陣列【LabVIEW FPGA】,labview,LabVIEW FPGA,CompactRIO

????????要使用主機API,當(dāng)在主機VI中調(diào)用Open FPGA VI Reference時,該引用應(yīng)綁定到項目中的FPGA Reference控件。這會將目標(biāo)信息傳播到主機 API 的子 VI。?文章來源地址http://www.zghlxwxcb.cn/news/detail-796454.html

到了這里,關(guān)于【LabVIEW FPGA入門】LabVIEW FPGA 實現(xiàn)SPI通信協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【LabVIEW FPGA入門】LabVIEW FPGA實現(xiàn)I2S解碼器

    【LabVIEW FPGA入門】LabVIEW FPGA實現(xiàn)I2S解碼器

    ????????該示例演示了如何使用 LabVIEW FPGA 解碼 I2S 信號。該代碼可用于大多數(shù)支持高速數(shù)字輸入的LabVIEW FPGA 目標(biāo)(例如R 系列、CompactRIO)。I2S 用于對系統(tǒng)和組件內(nèi)的數(shù)字音頻數(shù)據(jù)進行編碼。例如,MP3 播放器或 DVD 播放器內(nèi)部的數(shù)字音頻通常使用 I2S 協(xié)議進行通信。 ??

    2024年01月17日
    瀏覽(20)
  • 基于SPI實現(xiàn)stm32與fpga通信(一)

    SPI通信協(xié)議有以下4種模式: 模式0:時鐘極性為0,時鐘相位為0,數(shù)據(jù)在時鐘下降沿捕獲,數(shù)據(jù)在時鐘上升沿改變。 模式1:時鐘極性為0,時鐘相位為1,數(shù)據(jù)在時鐘上升沿捕獲,數(shù)據(jù)在時鐘下降沿改變。 模式2:時鐘極性為1,時鐘相位為0,數(shù)據(jù)在時鐘上升沿捕獲,數(shù)據(jù)在時鐘

    2024年04月16日
    瀏覽(43)
  • 【接口協(xié)議】FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號采集

    【接口協(xié)議】FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號采集

    使用vivado聯(lián)合modelsim實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號連續(xù)采集。 SPI是串行外設(shè)接口,是一種同步/全雙工/主從式接口。通常由四根信號線構(gòu)成: CS_N :片選信號,主從式接口,可以有多個從機,用片選信號進行從機選擇; SCLK :串行時鐘線,由主機提供給從機; MISO :主機

    2024年02月07日
    瀏覽(23)
  • FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號采集

    FPGA實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號采集

    使用vivado聯(lián)合modelsim實現(xiàn)SPI協(xié)議基于ADC128S022進行模擬信號連續(xù)采集。 SPI是串行外設(shè)接口,是一種同步/全雙工/主從式接口。通常由四根信號線構(gòu)成: CS_N :片選信號,主從式接口,可以有多個從機,用片選信號進行從機選擇; SCLK :串行時鐘線,由主機提供給從機; MISO :主機

    2024年02月14日
    瀏覽(22)
  • 【LabVIEW FPGA入門】使用數(shù)字IO卡實現(xiàn)計數(shù)器輸入功能

    【LabVIEW FPGA入門】使用數(shù)字IO卡實現(xiàn)計數(shù)器輸入功能

    ????????1.首先需要用一個數(shù)字IO的輸入FPGA端口,并將其拖入程序框圖中,同時創(chuàng)建一個循環(huán)。 ???????? ? ? ? ? 2.如果想要在循環(huán)中實現(xiàn)累加功能,就可以使用移位寄存器。 ? ? ? ? 數(shù)字輸入的當(dāng)前值和歷史值進行比較,用于一個判斷大于,來確定是否出現(xiàn)了上升沿

    2024年01月20日
    瀏覽(21)
  • FPGA實現(xiàn)基于SPI協(xié)議的Flash驅(qū)動控制(全擦除、頁擦除、讀數(shù)據(jù)、頁寫、連續(xù)寫—地址寫)

    FPGA實現(xiàn)基于SPI協(xié)議的Flash驅(qū)動控制(全擦除、頁擦除、讀數(shù)據(jù)、頁寫、連續(xù)寫—地址寫)

    本論文使用Verilog HDL硬件描述語言,結(jié)合野火可以FPGA征途Pro開發(fā)板,實現(xiàn)了SPI通信協(xié)議的全擦除,扇區(qū)擦除,讀數(shù)據(jù),頁寫,連續(xù)寫的驅(qū)動設(shè)計。在 Altera Cyclone Ⅳ 芯片上采用“自頂向下”的模塊化設(shè)計思想及 Verilog HDL 硬件描述語言,設(shè)計并實現(xiàn)串行外設(shè)接口(SPI)。在 Qu

    2024年02月12日
    瀏覽(24)
  • SPI通信協(xié)議&SPI通信外設(shè)

    SPI通信協(xié)議&SPI通信外設(shè)

    目錄 SPI 介紹 硬件電路 移位示意圖 ?軟件SPI SPI時序基本單元 ?SPI時序?編輯 W25Q64? 硬件電路 W25Q64框圖 Flash操作注意事項 指令集? 硬件SPI SPI框圖 ?主模式全雙工連續(xù)傳輸 非連續(xù)傳輸? 推挽輸出 ,高低電平都有很強的驅(qū)動能力,使得上升沿和下降沿都很迅速。? ?當(dāng)ss為高電

    2024年02月10日
    瀏覽(18)
  • 【FPGA開發(fā)】HDMI通信協(xié)議解析及FPGA實現(xiàn)

    【FPGA開發(fā)】HDMI通信協(xié)議解析及FPGA實現(xiàn)

    ??筆者在這里使用的開發(fā)板是正點原子的達芬奇開發(fā)板,F(xiàn)PGA型號為XC7A35TFGG484-2。參考的課程是正點原子的課程手把手教你學(xué)達芬奇達芬奇Pro之FPGA開發(fā)篇。 ??HDMI,全稱為High Definition Multimedia Interface,即高清多媒體接口。它不僅可以傳輸視頻信號,還可以傳輸音頻信號。上

    2024年02月21日
    瀏覽(23)
  • 詳解UART通信協(xié)議以及FPGA實現(xiàn)

    詳解UART通信協(xié)議以及FPGA實現(xiàn)

    ??從《淺談UART,TTL,RS-232,RS-485的區(qū)別》這篇文章,我們知道了UART是一種串行、異步、全雙工的通信協(xié)議,屬于協(xié)議層;傳輸過程一般采用RS-232,RS-485電平標(biāo)準(zhǔn),將所需傳輸?shù)臄?shù)據(jù)一位接一位地傳輸;整體傳輸框架如下: ??串口通信由發(fā)送端和接收端構(gòu)成,兩根信號線

    2024年04月28日
    瀏覽(22)
  • Verilog實現(xiàn)FPGA可編程電路中的RAM存儲器

    Verilog實現(xiàn)FPGA可編程電路中的RAM存儲器 在FPGA可編程電路的設(shè)計中,RAM存儲器通常被廣泛使用。而手寫RAM存儲器則可以提供更加靈活、高效的設(shè)計方案。本文將介紹如何使用Verilog語言來手寫FPGA中的RAM存儲器。 首先,我們需要確定RAM存儲器的大小和寬度。假設(shè)我們需要實現(xiàn)一個

    2024年02月04日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包