打印

请教FPGA实现以太网控制器

[复制链接]
2921|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wolfskin|  楼主 | 2014-3-18 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FPGA与RTL8201芯片连接,RTL8201通过RJ45与PC机连接,现在在PC机上通过Netassist网络调试软件发数。Netassist调试软件中发送端IP设置为192.168.0.3(即PC机IP),端口号为8000H;目的地(即FPGA电路板)IP设置为192.168.0.2,端口设置为8000H。在Netassist软件中连续发送十六进制数01 02 03 04 05 06 07 08,通过chipscope抓取RTL8201发送给FPGA的数据线(E_RXD[3:0])上的数据,数据不对,是乱数。请问FPGA程序中是不是也要设置该电路板的IP地址(192.168.0.2)及端口号(8000H),该怎么设置?请教各位!!!!多谢!!!!!!!!

相关帖子

沙发
haitaox| | 2014-3-19 08:50 | 只看该作者
MII上的数据都不对,跟FPGA还没有多大关系吧。
送给RTL8201的时钟复位首先要保证正确啊。

使用特权

评论回复
板凳
wolfskin|  楼主 | 2014-3-19 11:38 | 只看该作者
本帖最后由 wolfskin 于 2014-3-19 11:39 编辑

调试的电路板是买的fpga开发板,用他们提供的fpga例子(该fpga例子实现接收外部输入数据,然后将接收的数据返回),通过Netassist网络调试软件发数,该软件能收到正确的返回数据。我想实现单路数据传输,即计算机通过Netassist软件发数,fpga将接收的数据存储起来,现在测试的情况是,Netassist发数后,通过chipscope抓取RXD[3:0]数据为乱数

使用特权

评论回复
地板
ococ| | 2014-3-19 15:23 | 只看该作者
wolfskin 发表于 2014-3-19 11:38
调试的电路板是买的fpga开发板,用他们提供的fpga例子(该fpga例子实现接收外部输入数据,然后将接收的数据 ...

乱数是什么意思?
你用chipscope抓取的MII接口的数据肯定不会是简单的你发的那几个数,是抓取的以太网包数据,你发的数据是在以太网包内的。

使用特权

评论回复
5
wolfskin|  楼主 | 2014-3-19 16:38 | 只看该作者
看了一下抓取的数据,首先发送7个55H,然后是d5H,接下来应该是开发板MAC地址,是6个FFH(这是不对的),然后是计算机MAC地址,这是对的,再下来是协议类型,我采用的是UDP协议,应该是0800H,而目前抓到的是0806H。

使用特权

评论回复
6
ococ| | 2014-3-19 17:23 | 只看该作者
wolfskin 发表于 2014-3-19 16:38
看了一下抓取的数据,首先发送7个55H,然后是d5H,接下来应该是开发板MAC地址,是6个FFH(这是不对的),然 ...

这不是乱数。你采用的UDP协议是以太网包上层的协议,UDP外层还要打包。
你抓到的是广播包。应该是你电脑除了发送你的UDP包以外还发别的包了。
你可以设置一下chipscope的触发条件,当满足你想抓取的数据时再触发。

使用特权

评论回复
7
wolfskin|  楼主 | 2014-3-19 17:43 | 只看该作者
多谢,我试试!

使用特权

评论回复
8
wolfskin|  楼主 | 2014-3-20 10:17 | 只看该作者
fpga程序的收数模块检测输入的数据包中是否有开发板MAC地址数据(6个字节),若有,且其他数据格式正常,则收取数据包中的有效数据送FIFO,通过chipscope抓取FIFO输入端口数据,触发条件是FIFO的写使能wr_en,chipscope一直处于等待状态,无数据!请教一下,开发板的MAC地址(6个字节)在开发板的哪个芯片?是不是要写入RTL8201?目前我的fpga只控制RTL8201的RXD[3:0]、RXDV、RXC和TXD[3:0]、TXC、TXEN。

使用特权

评论回复
9
ococ| | 2014-3-20 11:35 | 只看该作者
本帖最后由 ococ 于 2014-3-20 11:42 编辑

MAC地址是通信时互相学习期间建立的,8201只是phy芯片不涉及mac写入。
你的PC如果不知道板卡的mac地址,再你发送数据前,会发广播包到网络询问满足你IP地址的设备的MAC地址,
如果一直得不到回应,那么你的数据也就发不出去,因为不知道发往哪里。

你先网上学一下网络通信的一些知识~

使用特权

评论回复
10
wolfskin|  楼主 | 2014-3-20 12:16 | 只看该作者
多谢ococ,对网络通信确实了解不多,我先学习一下!

使用特权

评论回复
11
ococ| | 2014-3-20 12:23 | 只看该作者
wolfskin 发表于 2014-3-20 12:16
多谢ococ,对网络通信确实了解不多,我先学习一下!

可以手动在你PC上建立ARP表。
你在cmd里面 输入arp -a 可以查看当前系统存储的arp表,也就是每个ip对应的mac地址。应该是没有你发送IP对应的MAC地址。
你用 arp -s手动建立一个IP和MAC映射,再发数据,用chipscope抓,看看。

使用特权

评论回复
12
wolfskin|  楼主 | 2014-3-20 15:36 | 只看该作者
我想计算机只管按照UDP协议发数,fpga电路板只管接收数据,两者之间没有任何交互,这能实现吗?请教!

使用特权

评论回复
13
cuianbin| | 2014-3-20 16:00 | 只看该作者
用FPGA控制与STM32控制相比较有什么优势呢?

使用特权

评论回复
14
cuianbin| | 2014-3-20 16:01 | 只看该作者
wolfskin 发表于 2014-3-19 11:38
调试的电路板是买的fpga开发板,用他们提供的fpga例子(该fpga例子实现接收外部输入数据,然后将接收的数据 ...

该不会是Spartan6的板子吧?

使用特权

评论回复
15
wolfskin|  楼主 | 2014-3-20 16:10 | 只看该作者
cuianbin 发表于 2014-3-20 16:00
用FPGA控制与STM32控制相比较有什么优势呢?

我没用过STM32

使用特权

评论回复
16
wolfskin|  楼主 | 2014-3-20 16:11 | 只看该作者
ococ 发表于 2014-3-20 12:23
可以手动在你PC上建立ARP表。
你在cmd里面 输入arp -a 可以查看当前系统存储的arp表,也就是每个ip对应的 ...

我想计算机只管按照UDP协议发数,fpga电路板只管接收数据,两者之间没有任何交互,这能实现吗?请教!

使用特权

评论回复
17
ococ| | 2014-3-20 17:20 | 只看该作者
wolfskin 发表于 2014-3-20 16:11
我想计算机只管按照UDP协议发数,fpga电路板只管接收数据,两者之间没有任何交互,这能实现吗?请教! ...

我上面写了,你告诉PC IP对应的mac地址就可以了。

使用特权

评论回复
18
wolfskin|  楼主 | 2014-3-23 13:36 | 只看该作者
本帖最后由 wolfskin 于 2014-3-23 13:38 编辑

感谢ococ,通过运行arp -s IP MAC,软件Netassist能够实现数据发送,通过chipscope抓取到了正确的UDP数据。对网络通信了解较少,还要多看看!
再次感谢ococ!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

206

帖子

0

粉丝