汇总篇:
Xilinx FPGA平台以太网接口(汇总篇)_子墨祭的博客-CSDN博客_fpga实现以太网接口
目录
在有了本系列(一)(二)的基础之后,我们开始进入实操。插句题外话,FPGA只是工具,会用就行了,更多的知识在FPGA之外;什么叫会用,直接用IP来搬砖轻轻松松。
Xilinx为我们提供了一个叫做“Tri-Mode Ethernet MAC”的IP核,三种模式的以太网介质访问控制层器,支持全双工半双工的千兆、百兆、十兆和2.5G的传输速率,支持MII、GMII、RGMII、SGMII和TBI接口。文档为《PG051》。
首先输入 ETH 找到三速以太网IP:

第一页:传输速率

设置最大的通讯速率,1Gb/s支持高达1Gb/s的以太网速度。支持四种类型的物理接口,即GMII,MII,RGMII和内部接口均可用。2.5 Gb / s 只适用于物理接口为“内部”,所有其他类型均被禁用。
第二页:接口配置

物理接口:
Internal/MII/GMII/RGMII可选,配置与MAC接口的类型,接口类型,可以回顾系列(二)中的MAC层接口说明:
Xilinx - FPGA平台以太网接口(二)系统架构及MAC层接口介绍
我们这里选择RGMII,使用时根据具体情况而定。
PS : RGMII也可以使用原语完成设计(IDDR、ODDR、IDELAYE2、ODELAYE2、IDELAYCTRL)
MAC Speed:
三速以太网IP可支持2.5Gb/s和1Gb/s速度运行,10Mb/s和100Mb/s速度运行以及全三速运行(10Mb/s,100Mb/s和1000Mb/s)。可用于速度支持选择的选择取决于所选的物理接口:
我们这里选择三速模式,可以通过接口改动传输速率。
管理类型:
选择“ AXI4-Lite”选项以包括用于IP配置的可选管理接口。如果未选择AXI4-Lite管理界面,则AVB选项不可用。默认设置是选择AXI4-Lite管理接口。
启用管理接口后,选择“管理数据输入/输出接口(MDIO)”选项以包括可选的MDIO接口。如果未选择此选项,则生成的内核不具有管理物理层中的对象所需的MDIO逻辑。
如果启用了MDIO,请选择“为MDIO接口端口添加IO缓冲区”选项以为MDIO接口端口插入I / O缓冲区。这将创建双向I / O总线mdio,并为mdc插入输出缓冲区。如果未选择此选项,则将使用mdio_i,mdio_o和mdio_t端口生成内核。
AXI4-Lite频率:
指定AXI4-Lite接口的频率。
第三页:共享逻辑
选择放入example design。
第四页:特性

MAC选项:
选择是否启用半双工逻辑。默认是全双工模式。
AVB选件:
Audio Video Bridging,AVB用于增强以太网的实时音视频性能,同时保持了向后兼容传统以太网。如果选择此选项,则除了三模式以太网MAC license外,还需要收费的以太网AVB端点许可证来启用内核生成。
帧过滤器选项:
可以使用帧过滤器生成内核,从而阻止接收与此MAC不匹配的帧。。
流控:
启用基于优先级的流控支持。一般不用。若勾选,则包括在发送时生成PFC帧并在接收时解释PFC帧的电路。
统计宽度:
使用内置的统计计数器生成内核。统计信息计数器可以是32位或64位宽。
统计复位:
当包括统计计数器时,可以包括逻辑以确保在硬件复位时将计数器清除为零。默认选择。
重点关注标色的几部分:
浅绿色:表示接收部分
这是什么色:表示发送部分
蓝色:表示与PHY之间的接口
黄色:表示配置接口
颜色,同时也表示同一时钟域。
PS:而在下一篇example design中,你讲会发现,example design在外围又封装了一层FIFO接口,tx/rx_axis_fifo_*
| gtx_clk | IN | 1 | 核的全局时钟,1Gbps是125M,2.5Gbps是312.5M |
| gtx_clk_out | OUT | 1 | 该时钟相对于gtx_clk输入具有0°相移,并用于RGMII数据传输。 |
| gtx_clk90_out | OUT | 1 | 该时钟相对于gtx_clk输入具有90°相移,用于RGMII发送器时钟转发。 |
| refclk | IN | 1 | 仅适用于GMII或RGMI,空闲控制需要,200M到300M, 对于UltraScale需要到300至1333M |
| rx_mac_aclk
| Out
| 1 | 用于在物理接口上接收数据的时钟,该时钟应用于为物理接口接收电路和RX AXI4-Stream接收电路提供时钟。 312.5MHz对应2.5 Gb/s 125MHz对应1 Gb/s 25MHz对应100 Mb/s 2.5MHz对应10Mb/s |
| rx_reset | Out | 1 | 高电平有效 RX部分的软复位 |
| rx_axis_mac_tdata | Out | 8 | 核收到的用户数据 |
| rx_axis_mac_tvalid | Out | 1 | rx_axis_mac_tdata的数据有效信号 |
| rx_axis_mac_tlast | Out | 1 | rx_axis_mac_tdata端口的控制信号。 表示帧中的最后一个字节。 |
| rx_axis_mac_tuser | Out | 1 | rx_axis_mac_tdata的控制信号。 在帧接收结束时置位,表示帧有错误。 |
| rx_axis_filter_tuser | Out | X+1 | 每帧滤波器调谐器输出。可用于仅发送特定帧过滤器传递的数据。有关详细信息,请参阅帧过滤器 |
| tx_enable | Out | 1 | 对于RGMII, 若为1Gbps,则一直高电平; 若为100Mbps,则十个周期中1个周期为高电平 若为10Mbps,则一百个周期中1个周期为高电平 |
| tx_ifg_delay | IN | 8 | 用于可配置帧间间隙的控制信号 |
| tx_statistics_vector | Out | 32 | 状态收集统计 |
| tx_statistics_valid | Out | 1 | tx_statistics_vector数据的有效信号 |
| tx_mac_aclk | Out | 1 | 用于在物理接口上传输数据的时钟,该时钟应用于为物理接口发送电路和TX AXI4-Stream发送电路提供时钟。 312.5MHz对应2.5 Gb/s 125MHz对应1 Gb/s 25MHz对应100 Mb/s 2.5MHz对应10Mb/s |
| tx_reset | Out | 1 | 高有效,发送端模块的复位信号 |
| tx_axis_mac_tdata | IN | 8 | 要传输的帧数据 |
| tx_axis_mac_tvalid | IN | 1 | tx_axis_mac_tdata的数据有效信号,高电平有效 |
| tx_axis_mac_tlast | IN | 1 | tx_axis_mac_tdata的最后一个有效数据高电平 |
| tx_axis_mac_tuser | IN | 1 | tx_axis_mac_tdata端口的控制信号。表示允许MAC向PHY发送错误的帧中的错误情况,例如FIFO欠载。 |
| tx_axis_mac_tready | OUT | 1 | 握手信号。当tx_axis_mac_tdata上的当前数据已被接受且tx_axis_mac_tvalid为High时,置位。在10/100 Mb / s时,这用于以正确的速率将数据计量到核心。 |
| pause_req | IN | 1 | 暂停请求:根据请求,MAC在当前数据包完成时发送暂停帧 |
| pause_val | IN | 16 | 暂停值:插入到传输的暂停帧的参数字段中。 |
| speedis100 | OUT | 1 | 当内核以100Mb/s运行时,此输出有效。它来自MAC速度配置寄存器的位[13:12]。如果不存在可选的管理接口,则这是从配置向量位[13:12]派生的。 |
| speedis10100 | OUT | 1 | 当内核以10 Mb / s或100 Mb / s运行时,此输出有效。它来自MAC速度配置寄存器的位[13:12]。如果管理接口不存在,则从配置向量位[13:12]导出 |
| rgmii_txd | OUT | 4 | 传输数据到PHY,与PHY接口数据 |
| rgmii_tx_ctl | OUT | 1 | 到PHY的控制信号 |
| rgmii_txc | OUT | 1 | 到PHY的时钟信号 |
| rgmii_rxd | IN | 4 | 接收PHY的数据 |
| rgmii_rx_ctl | IN | 1 | 来自PHY的控制信号 |
| rgmii_rxc | IN | 1 | 来自PHY的时钟 |
| inband_link_status | OUT | 1 | 来自PHY的链路状态 |
| inband_clock_speed | OUT | 2 | 来自PHY的链路速度,这个是PHY硬件配置的 |
| mdio | INOUT | 1 | 用于与PHY配置和状态通信的数据信号。若未使用则绑定高。输出数据信号,用于与PHY配置和状态进行通信 |
| mdc | OUT | 1 | MDIO管理时钟:使用可选的管理接口时,根据提供的配置数据从s_axi_aclk派生。 |
对上面接口的进一步说明。

下一篇,我们将继续Example Design的介绍,重点查看仿真内容。
我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect
我一直在为使用acts_as_list的模型实现一些不错的交互界面,这些界面可以对我的mRails应用程序中的列表进行排序。我有一个排序函数,在每次拖放之后使用sortable_elementscript.aculo.us函数调用并设置每条记录的位置。这是在拖放完成后处理排序的Controller操作示例:defsortparams[:documents].each_with_indexdo|id,index|Document.update_all(['position=?',index+1],['id=?',id])endend现在我正在尝试对嵌套集模型(acts_as_nested
一、离线方式1.1.下载ip2region.xdbGitHub项目地址:https://github.com/lionsoul2014/ip2region我们首先需要下载一个ip2region.xdb的文件下载地址:https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb打开后点击如图的Download图标即可下载。下载完成后,需要将该文件放到我们的项目中。ps:我是直接放到服务器的,因为放在项目的资源文件夹下,当我们调试的时候使用JavaSpring自带的工具去获取该文件的绝对路径时,没有任何问题,能够正
1、报文格式前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述的。wireshark中IP数据报文呈现一个IP数据报文由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。是所有IP数据报文必须具有的。在首部的固定部分的后面是一些可选字段,其长度可变。2、首部个字段意义 1、版本占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。版本号为6(即IPv6) 2、首部