色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用FPGA和RS485進行工業通信

科技觀察員 ? 來源:亞當泰勒 ? 作者:亞當泰勒 ? 2022-05-26 17:43 ? 次閱讀

工業應用中傳輸信息可能具有挑戰性。在這個項目中,讓我們看看我們如何使用FPGARS485做到這一點。

poYBAGKPS1SAIDI3AAb1bJMfsJE486.png

項目背景:

許多FPGA部署在工業環境中,用于控制流程、驅動器、執行器和傳感器

用于與這些傳感器、執行器和驅動器接口的協議非常多樣化,盡管時間敏感網絡正在改變這一點。雖然有許多不同的協議,例如Modbus、Profibus和EtherCat。其中許多協議都基于常見的物理層,例如EIA/RS485、EIA/RS422以太網

許多接口的關鍵要求之一是能夠在嘈雜的工業環境中以物理層中的低鏈路誤碼率運行。EIA/RS485和EIA/RS422都是差分物理層,它們提供強大的多點接口,能夠進行雙向(EIA/RS485)或單向(EIA/RS422)通信

有許多應用層協議可以使用這些物理層來實現。在這個項目中,我們將研究使用RS485Pmod和定制的應用層協議將兩個MiniZed連接在一起。

硬件部件

安富利MiniZed×1

DigilentPmodRS485×2

軟件應用程序和在線服務

AMD-XilinxVivado設計套件

AMD-XilinxVitis統一軟件平臺

應用層

實現的自定義通信協議將使主MiniZed能夠從從MiniZed內的16位地址空間讀取或寫入32位字。對于這個項目,我們將從從站中的BRAM讀取和寫入。然而,這個BRAM可能被從MiniZed上收集數據的傳感器填充。

數據將使用UART通過RS485鏈路發送,數據包包含多個UART傳輸

寫入的格式是

《STX》《ADDRMSB》《ADDRLSB》《DataMSB》《Data》《Data》《DataLSB》

從機將以單字節ACK或NACK響應寫入

讀取的格式是

《ENQ》《ADDRMSB》《ADDRLSB》

MiniZed從站的讀取響應將是

《SOH》《ADDRMSB》《ADDRLSB》《DataMSB》《Data》《Data》《DataLSB》

SOH、STX、ENQ、ACK和NACK在ASCII表中定義

當然,這個協議可以在像ZYNQ這樣的處理器中使用UART來實現,以使協議具有可擴展性。我為UART、ProtocolMaster和ProtocolSlave創建了自定義RTL模塊。

由于RS485在同一雙絞線上是定向的,因此協議必須僅在準備好發送時啟用RS485發送器,以減少多個發送器嘗試同時發送時總線上的爭用可能性。

MiniZedMaster

MiniZedMaster設計將使用PS內核通過RS485接口發送和接收數據。這將使鏈路能夠被測試,因為數據應該能夠通過鏈路寫入,然后以不同的順序從MiniZed從站中的塊RAM中讀回。

poYBAGKPS06AbezsAAEfp7OWEPs531.png

該設計使用連接到協議主模塊的AXIGPIO模塊來驅動協議主模塊的接口要求。這包括地址、數據和讀或寫操作。結果提供了從中讀取的地址和讀取的數據。

為了能夠調試應用程序,我還包括了幾個ILA,幫助理解系統行為。

在MinizedMaster上運行的軟件應用程序是

#include

#include "platform.h"
#include "xil_printf.h"
#include "xgpio.h"

#define DATA_ADDR XPAR_GPIO_0_DEVICE_ID
#define VALID_RW XPAR_GPIO_1_DEVICE_ID
#define DATA_BCK XPAR_GPIO_2_DEVICE_ID
#define DATA_VALID_CH 1
#define ADDR_RW_CH 2

XGpio Gpio1;
XGpio Gpio2;
XGpio Gpio3;

int count = 0;

int main()
{
init_platform();

XGpio_Initialize(&Gpio1, DATA_ADDR);
XGpio_Initialize(&Gpio2, VALID_RW);
XGpio_Initialize(&Gpio3, VALID_RW);

while(1){

u32 rd_data, rd_addr;
//write

XGpio_DiscreteWrite(&Gpio1, DATA_VALID_CH, count );
XGpio_DiscreteWrite(&Gpio1, ADDR_RW_CH, 0x5001);
XGpio_DiscreteWrite(&Gpio2, ADDR_RW_CH, 0x0);
XGpio_DiscreteWrite(&Gpio2, DATA_VALID_CH, 0x1);
XGpio_DiscreteWrite(&Gpio2, DATA_VALID_CH, 0x0);

usleep(1000);
//read
XGpio_DiscreteWrite(&Gpio1, ADDR_RW_CH, 0x5001);
XGpio_DiscreteWrite(&Gpio2, ADDR_RW_CH, 0x1);
XGpio_DiscreteWrite(&Gpio2, DATA_VALID_CH, 0x1);
XGpio_DiscreteWrite(&Gpio2, DATA_VALID_CH, 0x0);
usleep(10000);

rd_data = XGpio_GetDataDirection(&Gpio3, 1);

rd_data = XGpio_DiscreteRead(&Gpio3, 1);
rd_addr = XGpio_DiscreteRead(&Gpio3, 2);

if(rd_data != count){
printf("read back not correct %d, %d \n\r", rd_data, count);
}

usleep(1000000);
count++;

}
cleanup_platform();
return 0;
}
MiniZedSlave

MiniZedSlave使用PS模塊為邏輯設計提供時鐘。協議從站連接一個BRAM,該BRAM存儲通過通信鏈路提供的數據。

poYBAGKPS0eAd7ibAAEshq4aCL4964.png

MiniZedSlave的這個實現不需要軟件,只需要ProtocolSlave、UART和BRAM。與MiniZedMaster一樣,PS為模塊提供時鐘。

普通XDC

MiniZedMaster和Slave都使用MiniZed上的Pmod1連接到RS485Pmod。因此,兩者的XDC文件是相同的。

set_property IOSTANDARD LVCMOS33 [get_ports {re[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports de]
set_property IOSTANDARD LVCMOS33 [get_ports rx]
set_property IOSTANDARD LVCMOS33 [get_ports tx]
set_property PACKAGE_PIN L15 [get_ports {re[0]}]
set_property PACKAGE_PIN M14 [get_ports de]
set_property PACKAGE_PIN L14 [get_ports rx]
set_property PACKAGE_PIN M15 [get_ports tx]

為RS485總線接線

RS484總線非常簡單,但我們確實需要正確連接Pmod,如DigilentPmodRS485參考指南中所示。

pYYBAGKPS0SAV_QuAADz05d5Jbs994.png

RS485端子的兩端需要用一個電阻端接,在PmodRS485上可以使用跳線安裝或不安裝。對于此應用,需要安裝兩個電阻器

pYYBAGKPS0CALSwbAAeBBZ5mPC0323.png

接線時,請小心為Pmod上的接收器連接回路。

硬件測試

使用在MiniZed主機上運行的軟件應用程序,我們可以讀取和寫入MiniZed從機中的BRAM內存。然而,要了解它是如何工作的,我們最好通過查看總線上的波形來學習

邏輯TX引腳上來自主機的寫入傳輸如下所示

poYBAGKPSzuAKfeEAAGD_C429oU289.png

相應的總線端如下所示-請注意末尾的0x06是確認。

poYBAGKPSzeAFmbsAAGVG5bZfOk363.png

主機上的邏輯RX信號上的RX引腳顯示寫入和寫入確認。MiniZedMaster和Slave的設計都永久啟用了RX

pYYBAGKPSzOAS6ORAAGbEJykJGk335.png

從MiniZedSlave讀取的數據如下所示,其中數據表示由MiniZedMaster寫入的遞增計數。

poYBAGKPSzCAFa-uAAGB87Hlq0g251.png

在下面的波形中,可以在讀取響應之前在總線側觀察到讀取請求。

pYYBAGKPSyuAJ59QAAGvXMklh98435.png

TX啟用相對于TX數據的時序如下所示,請注意我們如何在預期回復時禁用TX路徑。

poYBAGKPSyeANvLRAAGpvhlLHYc809.png

探測MiniZedMaster和Slave上的不同TX使能顯示了

poYBAGKPSyOAChIvAAFzkEuDp64620.png

結論

FPGA為許多工業應用提供了很好的解決方案,該項目展示了使用常用工業接口連接不同板和傳輸數據是多么容易。在這個應用程序中,數據速率為1Mb/s,可以實現高達16Mb/s或更快的線速率!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    603010
  • RS485
    +關注

    關注

    39

    文章

    1156

    瀏覽量

    82291
  • 工業通信
    +關注

    關注

    0

    文章

    121

    瀏覽量

    15548
收藏 人收藏

    評論

    相關推薦

    RS485原理解析和應用

    RS485一、RS485 通信----簡介RS485 是美國電子工業協會(Electronic Industries Association
    的頭像 發表于 04-17 10:44 ?4445次閱讀
    <b class='flag-5'>RS485</b>原理解析和應用

    RS485通信原理是什么?RS485應用存在哪些問題?

    RS485特點是什么?RS485通信原理是什么?RS485應用存在哪些問題?
    發表于 05-20 06:06

    基于FPGARS485通信接口設計

    介紹RS485是一個定義平衡數字多點系統中的驅動器和接收器的電氣特性的標準,該標準由電信行業協會和電子工業聯盟定義。使用該標準的數字通信網絡能在遠距離條件下以及電子噪聲大的環境下有效傳輸信號。
    發表于 07-26 06:21

    RS485通信硬件實現

    閱讀目錄1、RS485簡介 2、RS485特性3、RS485通信硬件實現4、RS485通信軟件實
    發表于 08-19 08:20

    如何實現基于FPGARS485通信接口設計

    RS485是什么?如何實現基于FPGARS485通信接口設計?
    發表于 09-28 07:53

    RS485通信與Modbus協議的相關資料分享

    文章目錄RS485 通信與 Modbus 協議單片機 RS485 通信接口、控制線、原理圖及程序實例RS485
    發表于 11-30 07:31

    RS485是什么?RS485通信的特點有哪些

    RS485簡介485(一般稱作 RS485/EIA-485)是隸屬于 OSI 模型物理層的電氣特性規定為 2 線,半雙工,多點通信的標準。它
    發表于 01-14 07:54

    單片機如何和RS485設備進行通信

    RS485是什么?有何特點?單片機如何和RS485設備進行通信呢?需要注意什么?
    發表于 02-23 06:40

    提高RS485總線通信速度的設計

    介紹一種通信總線RS485主從通信方式,提高RS485總線采集速度的方法,該方法解決了主從式通信慢的缺點,提高
    發表于 04-12 00:37 ?44次下載
    提高<b class='flag-5'>RS485</b>總線<b class='flag-5'>通信</b>速度的設計

    RS485通信電纜選型經驗值推薦

    RS485通信電纜選型經驗值推薦:關于RS485通信電纜長度和電纜截面積的對應,在傳輸速率9600bps及以下,經驗值有如下的推薦:工業自動
    發表于 09-03 08:27 ?148次下載

    RS485通信協議

    RS485通信協議 、RS485 通信協議1.概述C320 系列變頻器提供標準RS485 通信
    發表于 04-07 17:26 ?89次下載

    RS485總線接口電路

    RS485總線接口電路     測試儀通過RS485工業總線與PC機進行通信,其硬件接口電路如圖5所示。
    發表于 05-13 11:59 ?3731次閱讀
    <b class='flag-5'>RS485</b>總線接口電路

    PLC的RS485通信口設計

    三菱FX plc一般不帶RS485通信口,如果要與變頻器進行RS485通信,須給PLC安裝FX2N-48
    發表于 07-20 15:07 ?2810次閱讀

    rs485轉tcp網關盒子怎么用(rs485協議轉以太網tcp/ip)

    隨著工業自動化技術的不斷發展,越來越多的工業設備在使用時需要進行數據通信。其中,RS485通信協議是一種常見的
    的頭像 發表于 05-05 15:50 ?3225次閱讀
    <b class='flag-5'>rs485</b>轉tcp網關盒子怎么用(<b class='flag-5'>rs485</b>協議轉以太網tcp/ip)

    RS485工業通信網關的原理是什么?

    一、引言 隨著工業自動化技術的飛速發展,工業通信網關作為連接各種設備和系統的關鍵節點,發揮著越來越重要的作用。RS485工業
    的頭像 發表于 05-27 17:32 ?467次閱讀
    主站蜘蛛池模板: 亚洲男人的天堂久久精品麻豆| 99视频精品国产在线视频| 蜜臀AV精品一区二区三区| 国产AV一区二区三区传媒| 一天不停的插BB十几次| 人驴交f ee欧美| 久久秋霞理伦片| 国产婷婷综合在线视频中文| georgielyall装修工| 一本道久久综合久久88| 天堂tv免费tv在线tv香蕉| 免费毛片视频网站| 精品国产人成亚洲区| 国产精片久久久久久婷婷| 北岛玲手机在线观看视频观看 | 日本欧美久久久久免费播放网| 久久福利影院| 果冻传媒免费观看| 国产成人mv 在线播放| chinesedaddy80老年人| 中文字幕亚洲欧美日韩2o19| 亚洲欧美在无码片一区二区| 无码AV免费精品一区二区三区| 欧美怡红院视频一区二区三区| 久久伊人电影| 久久精品热99看二| 饥渴的护士自慰被发现| 国产午夜理论片YY8840Y| 国产精品99久久久久久WWW | 日本亚洲精品色婷婷在线影院| 蜜臀亚洲AV永久无码精品老司机| 久久成人国产精品一区二区| 国产亚洲高清视频| 87.6在线收听| 擼擼擼麻豆密臀AV| 99在线播放| 4399的视频BD高清在线观看免费| 亚洲免费视频观看| 亚洲精品无码葡京AV天堂| 亚洲 天堂 国产在线播放| 丫鬟粗大狠狠贯穿h|