• 大小: 18.84MB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: 其他
  • 标签: FPGA  UDP  VHDL  

资源简介

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(‘~‘‘\001‘);
     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();    
     }
}

评论

共有 条评论