基于区块链的毕业设计eth_vlg – eth阀门

本文提供基于区块链的毕业设计国外最新区块链项目源码下载,包括solidity,eth,fabric等blockchain区块链,基于区块链的毕业设计eth_vlg – eth阀门 是一篇很好的国外资料

eth_vlg

Modular Ethernet HDL project.

Description

This project’s goal is to create a silicon independent, compact, modular, yet easy to implement HDL for Ethenet communications. It is written in SystemVerilog with extensive use of interfaces, structs and other synthesyzable constructs.

Features

  • Functional TCP/IP stack capable of listening and connecting
  • Configurable number of TCP clients/servers, however timing gets worse. Tested for two.
  • SystemVerilog based, generics only, no vendor-specific code.
  • GMII/RGMII interface MAC.
  • ARP with dual-port RAM table
  • IPv4 (options not supported)
  • ICMP

Limitations

  • GMII interface only
  • No SACK
  • No compliance to RFC
  • Limited simulation and hardware tests
  • Not tested with Xilinx though compiled successfully (Vivado 2019.1).

Known issues

  • Problems with GMII timing constraints (Cyclone V, Cyclone 10 LP)
  • If TCP_TX_QUEUE_DEPTH is set higher than 14 bits, tx_queue will read 8’h00 regardless of data stored. This is probably due to timing limitations. Observed on both Cyclone V and Cyclone 10 LP. This somewhat limits throughput because server can’t use all available window.

Architecture

The logic is composed of protocol managers:

  • MAC
  • ARP
  • IPv4 — ICMP — TCP And additional logic:
  • Packet multiplexers
  • TCP/IP server and retransmission logic
  • ARP table

Compile-time parameters

  • MTU. Maximum transmission unit. Defines maximum size in bytes of IPv4 packet
  • MAC. Server MAC address
  • IPv4. Server IPv4 address
  • TCP_PORT. Server TCP port
  • ARP_TABLE_SIZE. Depth of ARP table
  • TCP_TX_QUEUE_DEPTH. Depth of TCP transmission buffer.

Other parameters:

  • TCP_ACK_TIMEOUT. Time in clock ticks before Ack is transmitted without data.
  • TCP_RETRANSMIT_TIMEOUT. Time in ticks before retransmissions occur
  • TCP_RETRANSMIT_TRIES. Number of failed retransmissions to terminate connection

MAC

MAC interfaces PHY outside the FPGA with a GMII interface:

input logic phy_rx_clk, input logic [7:0] phy_rx_dat, input logic phy_rx_val, input logic phy_rx_err,

output logic phy_gtx_clk, output logic [7:0] phy_tx_dat, output logic phy_tx_val, output logic phy_tx_err

And intrerfaces subsequent logic with mac interface defined in mac_vlg d MAC header

RX

When receiving a packet, MAC checks for correct preamble and delimiter. After that, MAC begins filling header fields: destination and source MAC addresses and Ethertype. MAC also calculates the 32-bit Frame Check Sequence over Ethernet header and payload, recalculates and compares the FCS at each clock cycle with last four bytes received. If equal, MAC generates EOF indicating that packet reception is complete. MAC also passes information about received packet in a mac_hdr structure

TX

If MAC is not busy and mac_hdr_v is asserted, MAC will generate Ethernet header based on mac_hdr and begin transmission. Transmission logic interfaces buf_mng module which holds data to be transmitted from multiple protocols simultaneously, currently ARP and IPv4. This FIFO is asynchronously (completely independently) written by ipv4_tx and arp_tx. When a compete is written to buf_mng, it asserts ‘val’ signal indicating that it is holdin g a packet. Valid mac_hdr is also present when MAC then acknowledges this by setting rdy high.

ipv4_vlg_top

ipv4_vlg_top module contains ipv4_vlg module which is responsible for IP 4 packet parsing and generating as well as all IPv4-based modules: ICMP, UDP and TCP. ipv4_vlg_top directly interfaces user logic with raw TCP streams and TCP control/status ports. ipv4_top transmission logic is based on buf_mng arbiter module which asynchronously receives packets from ICMP, UDP and TCP and queues them for transmission to MAC.

ipv4_vlg

tcp_vlg

tcp_vlg contains all logic responsible for TCP operation. It consists of several modules:

  • tcp_vlg_rx handles packet parsing from ipv4 and passing raw TCP stream to tcp_vlg_rx_queue
  • tcp_vlg_tx is responsible for packet generation, calculation of TCP checksum and streaming data to ipv4_vlg_top.
  • tcp_vlg_tx_queue is responsible for retransmission logic and payload checksum calculation. It stores raw TCP data from user logic in 8-bit RAM as well as all information about packets: length, sequence number, payload checksum, ticks before next retransmission and number of retransmission tries. When a new packet is pending for transmission, queue signals server logic.
  • tcp_vlg_server Server state machine is implemented. The state machine handles connection establishment, and termination. takes place here. Depending on run-time signals connect and listen, server can connect by IPv4 or listen for incoming connection.

Server logic

After reset, the FSM is in idle state. Asserting listen signal will transition to a state which listens to incoming connection, that is, a packet with SYN flag set targeting local TCP port. Asserting connect signal will generate a TCP packet targeting rem_port TCP port and rem_ipv4 IPv4 address. After either signal is asserted, a structure called Transmission Control Block or TCB is filled with information about connection being created. After successfully performing the three-way handshake, the FSM results is in connected state in which data transfer takes place. TCB rem_ack and rem_seq are being updated with TCP packets received and loc_ack and loc_seq are being updated from internal logic.

Transmission queue and retransmissions

TCP receiver does not need to acknowledge each packet, instead it may cknowledge multiple packets if all were received successfully. This implies that sender stores all unacknowledged data and may retransmit unacknowledged packets. Transmission queue stores user data in RAM which is filled with new user data and freed as remote acknowledge progresses. It also stores information about each packet written: sequence number, length and checksum in a separate RAM pkt_info in A packet is considered complete and is queued if:

  • MSS is reached
  • tcp_vin was held low for at least TCP_TX_TIMEOUT ticks (default: 50).

and a new entry in pkt_info is created. Queue’s FSM continiously scans packet info RAM for entries with present flag set. Present flag indicates that a packet is stored in data RAM. Depending on packet’s sequence number and remote acknowledgment number, one of the events will occur:

  • Packet’s sequence number plus packet’s length is less or equal than remote acknowledgment number indicates that packet is acked. Present flag will be cleared releasing entry for next packets
  • Packet’s sequence number plus packet’s length is higher than remote acknowledgment number and retransmit timer is less than timeout value. This situation indicates that packet is yet unacknowledged, but there is still time for remote device to acknowledge it. Retransmit timer is incremented.
  • Packet’s sequence number plus packet’s length is higher than remote acknowledgment number and retransmit timer is equal to timeout value indicates that packet is unacknowledged and retransmission timeout is reached. Retransmission occurs, number of retransmission tries is incremented and retransmit timer is reset to zero. Note that when a new entry is created, retransmit timer is preloaded with timeout value, so the first time a new packet is transmitted without waiting for retransmission timeout.
  • Retransmit tries reaching limit will trigger forced connection termination.

IPv4 checksum is recalculated with each new byte written.

Transmission queue is directly wired to user transmission logic with inputs tcp_din, tcp_vin and an output tcp_cts.

Each protocol a used in eth_vlg has

ARP

ARP is responsible for binding IPv4 address with MAC. Because of ARP, one must not know remote MAC address, but only IPv4. arp_vlg replies to ARP requests and generates ARP requests if MAC is not known for target’s IPv4 address.

Simulation

Simple testbench is provided to verify functionality. Run modelsim.bat. (modelsim.exe location should be in PATH) 2 modules are instantiated, for client and server. After ARP, 3-way handshake is performed and data is streamed in both directions.

Testing

The code was compiled with for

  • Cyclone V (5CEBA5) -8 speed grade with Texas Instruments DP83867IR PHY (Quartus 17.1) on a custom PCB.
  • Cyclone 10 LP -8 speed grade with RTL8211 PHY (Quartus 18.0) using QMTech Cyclone 10LP development kit. Both failed timing, although worked as expected. Changing speed grade to -7 fixed timing.

Compiling (Intel)

You can manually specify target FPGA family, part and flash memory used in create_prj.tcl.

set FamilyDev "Cyclone V" set PartDev "5CEBA5F23C8" set MemDev "EPCS64" set FlashLoadDev "5CEBA5" 

The pins are modified in pins.tcl.

To compile an example project, run complete_flow.bat. (quartus.exe location should be in PATH). To add code to your desired project


ethvlg

模块化以太网HDL项目。

说明

该项目的目标是为Ethenet通信创建一个独立于硅、紧凑、模块化且易于实现的HDL。它是用SystemVerilog编写的,大量使用了接口、结构和其他可合成的构造。

局限性限制

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP

已知问题

  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。

架构

编译时参数

MAC

RX

r3>RX

TX

ipvvlg顶部

<3><3><

服务器逻辑

传输队列和重传

ARP

模拟

测试

编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
    • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
    • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。

    编译时参数

    逻辑由协议管理器组成:

    • MAC
    • ARP
    • IPv4-ICMP-TCP和附加逻辑:
    • 分组复用器
    • TCP/IP服务器和重传逻辑
    • ARP表

    MAC

    • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
    • IPv4。服务器IPv4地址
    • TCP端口。服务器TCP端口大小。ARP表的深度
    • TCP发送队列深度。TCP传输缓冲区的深度。
    • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
    • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数

    其他参数:

    • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
    • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
    • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。

    RX

    带GMII接口的FPGA外部的MAC接口:

    输入逻辑PHY_rx_clk,输入逻辑[7:0]PHY_rx_dat,输入逻辑PHY_rx_val,

    输出逻辑PHY_gtx_clk,输出逻辑[7:0]PHY_tx_dat,输出逻辑phy_tx_val,输出逻辑phy_tx_err

    并使用mac vlg d mac报头中定义的mac接口返回后续逻辑

    r3>RX

    TX

    ipvvlg顶部

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 当接收包时,mac检查前导码和分隔符是否正确。之后,MAC开始填充头字段:目的地和源MAC地址以及Ethertype。MAC还计算以太网报头和有效载荷上的32位帧检查序列,重新计算并比较每个时钟周期的FCS与接收到的最后四个字节。如果相等,MAC生成EOF,指示分组接收完成。MAC还以MAC_hdr结构传送关于接收到的分组的信息

    TX

    ipvvlg顶部

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 如果MAC不忙并且MAC_hdr_v被断言,MAC将基于MAC_hdr生成以太网报头并开始传输。传输逻辑接口buf峎mng模块,该模块保存要同时从多个协议(当前为ARP和IPv4)传输的数据。这个FIFO是由ipv4_tx和arp_tx异步(完全独立地)写入的。当competie被写入bufümng时,它断言“val”信号,表示它保存了一个数据包。当mac随后通过设置rdy high来确认这一点时,也会出现有效的mac_hdr。

    ipvvlg顶部

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • ipv4 vlg_顶层模块包含ipv4 vlg模块,该模块负责ip4数据包的解析和生成,以及所有基于ipv4的模块:ICMP、UDP和TCP。ipv4 vlg_top直接将用户逻辑与原始TCP流和TCP控制/状态端口连接起来。ipv4的传输逻辑是基于bufümng仲裁器模块,该模块异步地接收来自ICMP、UDP和TCP的数据包,并将它们排队以传输到MAC层。

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • tcpu vlg包含所有负责tcp操作的逻辑。它由几个模块组成:

    • 达到MSS
    • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
    • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
    • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 复位后,FSM处于空闲状态。断言侦听信号将转换为侦听传入连接的状态,即设置了针对本地TCP端口的SYN标志的数据包。断言连接信号将生成一个以rem_port TCP port和rem_ipv4 ipv4地址为目标的TCP包。在任何一个信号被断言后,一个称为传输控制块(Transmission Control Block)或TCB的结构将填充有关正在创建的连接的信息。在成功地进行了三次握手后,FSM结果处于连接状态,在这种状态下进行数据传输。TCB rem_ack and rem_seq正在使用接收到的TCP数据包进行更新,loc_ack和loc_seq正在从内部逻辑更新。

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • TCP接收器不需要确认每个数据包,相反,如果所有数据包都成功接收,它可能会确认多个数据包。而未确认的数据包可能会存储所有未确认的数据。传输队列将用户数据存储在RAM中,RAM中充满新的用户数据,并随着远程确认的进行而释放。它还存储有关写入的每个数据包的信息:序列号、长度和校验和在一个单独的RAM pkt_信息包中的信息被认为是完整的,如果:

    • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
    • 重新传输尝试达到限制将触发强制连接终止。

    并且在pkt_info中创建了一个新的条目,那么它就被认为是完整的。队列的FSM持续扫描数据包信息RAM中是否有设置了当前标志的条目。Present标志表示数据包存储在数据RAM中。根据数据包的序列号和远程确认号,将发生以下事件之一:

    • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
    • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
    • Packet’s sequence number plus packet’s length is higher than remote acknowledgment number and retransmit timer is equal to timeout value indicates that packet is unacknowledged and retransmission timeout is reached. Retransmission occurs, number of retransmission tries is incremented and retransmit timer is reset to zero. Note that when a new entry is created, retransmit timer is preloaded with timeout value, so the first time a new packet is transmitted without waiting for retransmission timeout.
    • Retransmit tries reaching limit will trigger forced connection termination.

    IPv4校验和在写入每个新字节时重新计算。

    传输队列直接连接到用户传输逻辑,输入端为tcp_-din、tcp-vin和输出端tcp-cts。

    以太网vlg中使用的每个协议都有

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • ARP负责将IPv4地址与MAC绑定。由于ARP,人们必须不知道远程MAC地址,而只能知道IPv4。如果不知道目标的IPv4地址,arpU vlg会回复arp请求并生成arp请求。

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 提供简单的测试台来验证功能。跑模型模拟.bat. (modelsim.exe模型位置应在路径中)为客户端和服务器实例化了2个模块。在ARP之后,进行三方握手,并在两个方向上传输数据。

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 代码是用编译的,

    • Cyclone V (5CEBA5) -8 speed grade with Texas Instruments DP83867IR PHY (Quartus 17.1) on a custom PCB.
    • Cyclone 10 LP -8 speed grade with RTL8211 PHY (Quartus 18.0) using QMTech Cyclone 10LP development kit. Both failed timing, although worked as expected. Changing speed grade to -7 fixed timing.

    <3><3><

    服务器逻辑

    传输队列和重传

    ARP

    模拟

    测试

    编译(Intel)

  • 能够监听和连接的功能性TCP/IP堆栈
  • 可配置数量的TCP客户端/服务器,但是计时变得更糟。测试了两个。
  • SystemVerilog,仅限泛型,没有特定于供应商的代码。
  • GMII/RGMII接口MAC。
  • 带双端口RAM表的ARP
  • IPv4(不支持选项)
  • ICMP
  • 仅限GMII接口
  • 无SACK
  • 不符合RFC
  • 有限的模拟和硬件测试
  • 虽然编译成功,但没有使用Xilinx进行测试(Vivado 2019.1)。
  • GMII定时约束问题(Cyclone V,Cyclone 10 LP)
  • 如果TCP发送队列深度设置为高于14位,则无论存储的数据如何,TX队列都将读取8’00。这可能是由于时间限制。在气旋V和气旋10 LP上观察到。这在一定程度上限制了吞吐量,因为服务器不能使用所有可用窗口。
  • MAC
  • ARP
  • IPv4-ICMP-TCP和附加逻辑:
  • 分组复用器
  • TCP/IP服务器和重传逻辑
  • ARP表
  • MTU。最大传输单位。定义IPv4数据包的最大大小(以字节为单位)。服务器MAC地址
  • IPv4。服务器IPv4地址
  • TCP端口。服务器TCP端口大小。ARP表的深度
  • TCP发送队列深度。TCP传输缓冲区的深度。
  • TCP确认超时。在没有数据的情况下传输Ack之前,以时钟周期为单位的时间。
  • TCP重传超时。重新传输发生之前的时间,以滴答为单位。终止连接的失败重传次数
  • tcp_vlg_rx处理来自ipv4的数据包解析并将原始tcp流传递到tcp_vlg_rx_队列
  • tcp vlg_tx负责包生成、计算tcp校验和并将数据流传输到ipv4 vlg_top。tcp vlg tx_queue负责重传逻辑和有效负载校验和计算。它将来自用户逻辑的原始TCP数据存储在8位RAM中,以及关于数据包的所有信息:长度、序列号、有效载荷校验和、下次重传前的滴答声和重传尝试的次数。当新的数据包等待传输时,队列向服务器逻辑发送信号。
  • tcp vlg_服务器状态机已实现。状态机处理连接的建立和终止。发生在这里。根据连接和侦听的运行时信号,服务器可以通过IPv4进行连接或侦听传入连接。
  • 达到MSS
  • tcpu vin至少保持在较低的tcp发送超时时间(默认值:50)。
  • 数据包的序列号加上数据包的长度小于或等于远程确认号,表示数据包已被确认。当前标志将被清除,释放下一个数据包的条目
  • 数据包的序列号加上数据包的长度大于远程确认号,并且重传计时器小于超时值。这种情况表明数据包尚未被确认,但远程设备仍有时间进行确认。重传计时器递增。
  • 数据包的序列号加上数据包的长度大于远程确认数,且重发计时器等于超时值,则表示数据包未被确认,并且达到了重新传输超时。重传发生,重传次数增加,重传定时器复位为零。注意,当一个新的条目被创建时,重传计时器被预先加载了超时值,所以第一次传输新数据包时,不需要等待重新传输超时。
  • 重新传输尝试达到限制将触发强制连接终止。
  • 旋风V(5CEB5)-8速度等级,带德州仪器DP83867IR PHY(Quartus 17.1)在定制PCB上。
  • 旋风分离器10 LP-8速度等级,带RTL8211 PHY(Quartus 18.0),使用QMTech Cyclone 10LP开发套件。两个时间都失败了,虽然工作如预期。将速度等级更改为-7固定正时。在
  • 您可以手动指定创建时使用的目标FPGA系列、部件和闪存_珠江三角洲.

    set FamilyDev "Cyclone V" set PartDev "5CEBA5F23C8" set MemDev "EPCS64" set FlashLoadDev "5CEBA5" 

    管脚在引脚.tcl.

    要编译示例项目,请运行complete_流量.bat. (夸脱斯.exe位置应在路径中)。将代码添加到您所期望的项目中,将代码添加到您所期望的项目中

    部分转自网络,侵权联系删除区块链源码网

    www.interchains.cc

    https://www.interchains.cc/16519.html

    区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 !
    区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » 基于区块链的毕业设计eth_vlg – eth阀门

    提供最优质的资源集合

    立即查看 了解详情