| |
本部分介绍利用verilog语言实现无协议数据的收发,这个是用硬件直接调试,啊,啊,哦,等等之后会给出UDP协议传输的;
1、做个实验:在不需要懂网络协议做个实验吧,通过PC机利用以太网测试软件或测试程序向88E1111实验板发送一组数据,例如01 02 03……,只要是已知数据就好,最好能发无任何协议的数据,要是带UDP协议的那就是后面一段才是自己定义的数据;
2、读信号:通过SignalTap抓波形,抓那些数据呢?那就要看硬件了,我介绍《FPGA与88E1111千兆以太网实现—硬件》第3步,打开手册一看根读数据相关的有RX_CLK、RX_ER、RX_DV、RXD[7:0],一看太好了都是输出不需要控制时序(这就是为啥要做读数据实验),看下说明4个标志依次代表读时钟、读数据错误、读数据有效、读数据,到现在应该知道通过SignalTap抓什么了吧,快点搭建SignalTap抓数据吧;
3、抓取数据:PC向板子发送的数据都为预先设定好的,即为已知数据(数据要是少系统后面会自动补数据8’h00),多发送几次变化的数据,看看抓到什么时序,都会出现前面8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’hd5+数据+4字节变化的数,对这就是88E1111的格式,如果通过PC用抓包软件只能看到‘数据+4字节变化的数’做下对比吧!在此把88E1111发送的数据流比喻成针线,8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’hd5这就是针,数据就是线,4字节变化的数这个是啥呢,如果针带着线一直穿是不行的,因为停不下来需要打个节,嗯,这样就会停下来了,知道这‘4字节变化的数’是啥了吧;
4、数据结构:上一步说了那么多就是为了理解,简单从网络传输理解就是发送的数据前面要有前导,后面要有校验,前导都是固定的数据了,很好,只要是这组数据就行,那么校验是怎么做的呢,也是比较简单的,就是通过CRC校验和完成的,至于用查表还是16位数相加求反复习一下吧,温馨提示前导不计算在校验和内;
5、写信号:知道数据读取咋回事了吧,至于说不加协议怎么用,那接下来就是应用的事了,下面接着说发送数据吧,嗯,有了读数据,写数据就是一个反过程,从硬件角度讲,所有有关读引脚变写引脚,那也就意味着都是输入脚了,好吧,需要应用FPGA控制输出时序状态了,其实也是很容易的,看看有那些引脚GTX_CLK、TX_ER、TX_EN、TXD[7:0],不用多说手册明确说明依次为写时钟、写数据错误、写使能、写数据,为了能发出数据一定保证数据的正确性,所以只要用到GTX_CLK、TX_EN、TXD[7:0]这三个就可以了,时钟为125MHz,TX_EN信号置1后TXD[7:0]就为有效数据了,一个时钟一个字节数据;
6、发送数据:在TX_EN有效后,对应读数据结构应该知道发送什么数据吧,那个‘针’,有前导才可以畅通无阻的,乖乖的一个时钟一个时钟的发8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’h55 8’hd5这一串数吧,发完了接着来,别停,发你自己的数据喽,千万别忘了,还要做校验和呀,数据完事了,也别停,快把校验和发出去,嗯,可以歇歇了,一个数据包就这么发出去了,好吧,通过PC机用抓包软件看看数据能不能抓到、数据对不对;
7、发送注意:前导根校验和有一个错误,数据都是发送不出去的,就是没有‘针’‘节’网络传输是不识别的,这个其实还根硬件电路板布局布线有关系的,但要简单几十个数一般问题不大的,要是加上协议,好吧,需要约束的~~~
PS:怎么日志中只能加URL的图片,怎样可以加个截图,可以给出实验截图,这样说真是不好理解,我这个小学语文是数学老师教的,文字功底太差了!