DE2-115 以太網通信之一88E1111網卡接收PC數據


想利用手頭上的DE2-115 寫一個關於以太網通信的驅動,經過了這么多天的實驗調試終於有了一些認識。

1、我在觀察網卡發送數據與接收數據的過程中發現,我從fpga上的一個網卡發送數據,然后另一個網卡接收數據,接收到的數據前面會有55h這8bit的數據。我從PC上發送數據,用fpga上的網卡接收數據,那么在接收到的數據前面會有55h,55h,55h,55h,55h,55h,55h,5dh這64bit的數據。那么如果55h這8bit數據是PHY發送時自動添加那么從PC上接收到的最后應該是55而不應該是5d。那么只能是網卡在接收的時候自動添加的55h這8bit位。那剩下的56bit應該是自己添加在數據中發送的。

2、我用signaltap ii設置的采樣頻率是50Mh,而數據的帶寬是100Mhz。當我用小兵以太網測試儀設置的發送頻率為1000000/次時,發現siganltap ii 中rx_data的數據很久才會變化,其余時刻都是零,但是用led通過對接收數據進行觀察時就符合發送的頻率,那么signal tap ii 很長時間觀察不到數據的情景應該和時鍾的設置有關。

3、有一段時間我從PC上發送數據,然后fpga上接收的數據,一段數據的個別位發生錯誤。等我把板子上兩個phy的配置都設置正確時。就能正確的接收數據了。

4、signaltap 接收到的PC數據高四位與第四位顛倒,比如說如果發送的數據是56h 75h 83h 那么接收到的數據就是65h 57h 38h。說明數據在發送的過程中高先發送低四位后發送高四位。

5、88E1111 采用100M ,全雙工 能從Pc接收數據的寄存器設置。

a、PHY的物理地址為10000,板子連接JP1的23.

b、讀寄存器以及寫寄存器。讀寄存器主要是為了觀察PHY配置是否正確。在調試的過程中正確的讀寄存器非常重要。

代碼如下

 1 if(flag) begin 
 2         case(mdc_num)
 3           0:begin     RST_N<=0;mdio_reg<=mdio_reg+1;if(mdio_reg&32'hffffffff==32'hffffffff) begin  RST_N<=1; mdc_num<=1;end 
              else mdc_num<=0;end 4 1:begin mdio_reg<=96'hffff_ffff__585a__0000_ffff_ffff;mdc_num<=2;end //選擇page0 copper 5 2:begin mdc_count<=mdc_count+1; 6 if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=2;end 7 else begin mdc_num<=5;mdc_count<=0;end end 11 5:begin mdio_reg<=96'hffff_ffff__5812_0101_ffff_ffff;mdc_num<=6;end //4 100full duplex,802.3 12 6:begin mdc_count<=mdc_count+1; if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=6;end 14 else begin mdc_num<=9;mdc_count<=0;end end 9:begin mdio_reg<=96'hffff_ffff__5826__0400_ffff_ffff;mdc_num<=10;end //9自動主從,multi port device 19 10:begin mdc_count<=mdc_count+1; if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=10;end else begin mdc_num<=13;mdc_count<=0;end end 22 13:begin mdio_reg<=96'hffff_ffff__5842__0068_ffff_ffff;mdc_num<=14;end //16 power up 25 14:begin mdc_count<=mdc_count+1; if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=14;end                else begin mdc_num<=17;mdc_count<=0;end end 2       17:begin mdio_reg<=96'hffff_ffff__5852_9051_ffff_ffff;mdc_num<=18;end //9051 31 18:begin mdc_count<=mdc_count+1;if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=18;end                  else begin mdc_num<=19;mdc_count<=0;end end 34 19:begin mdio_reg<=96'hffff_ffff__5802_a100_ffff_ffff;mdc_num<=20;end 35 20:begin mdc_count<=mdc_count+1; if(mdc_count<96)begin mdio<=mdio_reg[95]; wr_rd<=1;mdio_reg<=mdio_reg<<1;mdc_num<=20;end                  else begin mdc_num<=21;mdc_count<=0 ;end end 38 21:begin mdc_count<=mdc_count+1;if(mdc_count<32)begin mdio<=1'b1; wr_rd<=1;mdc_num<=21;end 46 else begin flag<=0;wr_rd<=0;end end 47 endcase

      end 48 else 49 begin 50 51 case(timenum) 52 0:begin mdio_reg<=96'b11111111111111111111111111111111_01101000010001z1_zzzzzzzzzzzzzzzz_11111111111111111111111111111111;timenum<=1;wr_rd<=1;mdc_count<=0;end 53 1:begin mdc_count<=mdc_count+1; if(mdc_count<48)begin mdio<=mdio_reg[95]; mdio_reg<=mdio_reg<<1;timenum<=1;end else begin wr_rd<=0;timenum<=2;end end 54 2:begin data1[15]<=mdio_in;timenum<=3;end 55 3:begin data1[14]<=mdio_in;timenum<=4;end 56 4:begin data1[13]<=mdio_in;timenum<=5;end 57 5:begin data1[12]<=mdio_in;timenum<=6;end 58 6:begin data1[11]<=mdio_in;timenum<=7;end 59 7:begin data1[10]<=mdio_in;timenum<=8;end 60 8:begin data1[9]<=mdio_in;timenum<=9;end 61 9:begin data1[8]<=mdio_in;timenum<=10;end 62 10:begin data1[7]<=mdio_in;timenum<=11;end 63 11:begin data1[6]<=mdio_in;timenum<=12;end 64 12:begin data1[5]<=mdio_in;timenum<=13;end 65 13:begin data1[4]<=mdio_in;timenum<=14;end 66 14:begin data1[3]<=mdio_in;timenum<=15;end 67 15:begin data1[2]<=mdio_in;timenum<=16;end 68 16:begin data1[1]<=mdio_in;timenum<=17;end 69  17:begin data1[0]<=mdio_in;mdc_count<=1;timenum<=18;end 70 18:begin mdc_count<=mdc_count+1;wr_rd<=1;mdio<=1;if(mdc_count==7'h3f)mdc_count<=0;timenum<=0; end 71 endcase 72 75 end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM