FPGA硬件逻辑资源实现UDP协议通信的开源代码


FPGA硬件逻辑资源实现UDP协议通信的开源代码,用FPGA实现千兆以太网的数据协议打包部分,可直接移植到xilinx的FPGA芯片上使用,VHDL纯语言编写。
资源截图
代码片段和文件信息
package com.pjf;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;


public class UDPCxn {
     private DatagramSocket skt;
     private InetAddress dstIP;

     public UDPCxn(long dstIPadr) throws SocketException UnknownHostException {
     skt = new DatagramSocket();
byte[] target = new byte[4];
target[0] = (byte) ((dstIPadr >> 24) & 0xff);
target[1] = (byte) ((dstIPadr >> 16) & 0xff);
target[2] = (byte) ((dstIPadr >> 8) & 0xff);
target[3] = (byte) (dstIPadr & 0xff);
dstIP = InetAddress.getByAddress(target);    
     }

     public UDPCxn(String dstIPadr) throws SocketException UnknownHostException {
     skt = new DatagramSocket();
     String[] parts = dstIPadr.split(“[.]“);
     if (parts.length != 4) {
     throw new UnknownHostException(“ip addr must have 4 parts“);
     }
byte[] target = new byte[4];
for (int i = 0; i<4; i++) {
target[i] = (byte) Integer.parseInt(parts[i]);
}
dstIP = InetAddress.getByAddress(target);    
     }

     public void send(byte[] data int port) throws IOException {
     DatagramPacket pkt = new DatagramPacket(data data.length dstIP port);
     System.out.println(“Sending packet“);
     skt.send(pkt);   
     }
    
     public void fixSend(String str int port boolean print) throws IOException {
     String s1 = str.replace(‘~‘‘01‘);
     byte[] data = s1.getBytes();
     DatagramPacket pkt = new DatagramPacket(data data.length dstIP port);
     if (print) {
     System.out.println(“Sending packet: “ + str + “ on port “ + port);
     }
     skt.send(pkt);   
     }

    
     public byte[] rcv() throws IOException {
          byte[] buf = new byte[1024];
       DatagramPacket pkt = new DatagramPacket(buf buf.length);
//     System.out.println(“waiting to receive ...“);
    skt.receive(pkt);
    int len = pkt.getLength();
    byte[] rd = pkt.getData();
          byte[] data = new byte[len];
    for (int i=0; i      data[i] = rd[i];
    }
    return data;
     }
    
     public void close() {
    skt.close();    
     }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)