[求助] 1G以太网光口调试问题

3008202060   2016-6-16 10:21 楼主
现在在做一个项目,需要两台设备通过光纤连接,一台sfp是用的88e1512,另外一边是自己在xilinx K7325T中例化了一个Ethernet 1000base-x pcs/pma 的IP核来实现光phy功能,现在两台机子连在一起带有88e1512的那台(这个肯定是好用的)一只不显示link(这个是通过mdio读phy的link_status的寄存器来实现的),现在就想问一下可能是什么原因导致88e1512不link,还有就是88e1512检测到什么信号才会把link_status状态至高。
我知道估计是我例化IP出的问题,但是不知道如何调起,我用仿真工具是能看到txp,txn是有信号输出的。谢啦
  • 3.png

回复评论 (14)

自己顶一个
点赞  2016-6-16 19:40
楼主你好,
你能想把下面的时钟输出的pin,用示波器看看freq嘛。
不能输出的,看一FPGA editor里面,时钟路径是否OK.
gtrefclk
userclk
userclk2
rxuserclk
rxuserclk2
gt0_qplloutclk_in
gt0_qplloutrefclk_in
txoutclk
rxoutclk
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-23 22:31
引用: 5525 发表于 2016-6-23 22:31
楼主你好,
你能想把下面的时钟输出的pin,用示波器看看freq嘛。
不能输出的,看一FPGA editor里面,时钟 ...

谢谢楼主 现在txp,txn有信号了,但是接受帧有crc错帧,我估计是txoutclk时钟不好(我用ila看了一下userclk2的时钟,信号不是很好,userclk2是由txoutclk来的),我现在想约束一下txoutclk的时钟,想请教一下如何使用create generated clock,
它里面需要设置master pin,master clock和source object,我不是很清楚每个都如何设置:例如我例化了一个dcm模块,一个clk_in1,和四个clk_out,如果我想约束clk_out1那我该如何选择master pin,master clock和source object这些信号呢??

谢谢版主


  • 1.png
  • 2.png
点赞  2016-6-25 10:46
“接受帧有crc错”, 你用 chipscope能抓到报文吧,mac 的头好不好?
“txoutclk时钟不好” 这个跟你做不做约束没有关系,得是有好的时钟。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-25 12:14
引用: 5525 发表于 2016-6-25 12:14
“接受帧有crc错”, 你用 chipscope能抓到报文吧,mac 的头好不好?
“txoutclk时钟不好” 这个跟你做不做 ...

不是用的chipscope,我有专门测以太网的机子;
好的时钟是指的啥,给transceiver的差分时钟吗,这个时钟是好的;
   gmii2sfp_tx_elastic_buffer tx_elastic_buffer_inst
   (
      .reset            (reset),
      .gmii_tx_clk_wr   (gmii_tx_clk_bufr),
      .gmii_txd_wr      (gmii_txd_reg),
      .gmii_tx_en_wr    (gmii_tx_en_reg),
      .gmii_tx_er_wr    (gmii_tx_er_reg),
      .gmii_tx_clk_rd   (userclk2),
      .gmii_txd_rd      (gmii_txd_fifo),
      .gmii_tx_en_rd    (gmii_tx_en_fifo),
      .gmii_tx_er_rd    (gmii_tx_er_fifo)
   );

这个是我FPGA内部逻辑的GMII接口到它IP核的GMII接口的一个缓冲(是它例程里带的),我用chipscope看了一下,那个userclk2信号不好,占空比不是1:1,而且频率也不是非常好;

但是比较奇怪的是我再
module gmii2sfp_clocking
   (
      input            gtrefclk_p,                // Differential +ve of reference clock for MGT: 125MHz, very high quality.
      input            gtrefclk_n,                // Differential -ve of reference clock for MGT: 125MHz, very high quality.
      input            txoutclk,                  // txoutclk from GT transceiver.
      input            rxoutclk,                  // rxoutclk from GT transceiver.
      input            mmcm_reset,                // MMCM Reset
      output           gtrefclk,                  // gtrefclk routed through an IBUFG.
      output  wire     mmcm_locked,               // MMCM locked

      output           userclk,                   // for GT PMA reference clock
      output           userclk2,                   // 125MHz clock for core reference clock.
      output           rxuserclk,                   // for GT PMA reference clock
      output           rxuserclk2                   // 125MHz clock for core reference clock.
   );

这个模块里看的时钟信号都是好的,包括txoutclk, rxoutclk, userclk2,userclk, rxuserclk;;这里的userclk2就是上一个模块的userclk2

我现在就一直怀疑是进入IP核的数据和时钟的沿没有对好,版主有没有什么建议
谢谢啦
点赞  2016-6-27 08:47
楼主,现在不要着急求功能,CRC 校验能通,

不要着急看黑盒啊,先看最基本的吧。

如果是我,会这个弄
1 先把时钟通过 ODDR打出了,用示波器看他们的freq 是不是和预期一样
2 接口信号个 什么时钟domain 都理一遍,
  (可以通过,FPGA editor 看,点击那个信号的 DFF, 能点到CLK 信号)
  (也可查代码)
3 在2的基础上,分别用对应的时钟抓对应数据的波形,chipscope看
4 最后才是看测得那个机子

MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-27 19:56
引用: 5525 发表于 2016-6-27 19:56
楼主,现在不要着急求功能,CRC 校验能通,

不要着急看黑盒啊,先看最基本的吧。

如果是我,会这个弄 ...

如果我chipscope中用一个时钟(比如我自己生成的500M的),去抓不同时钟域的信号会不会报错啊
我最近的ila一直在报各种错误。。

我总结了一下大概有一下这几个

1. ERROR: [Labtools 27-147] vcse_server: Arg. to function CseILA_unrollTraceMemory() failed:traceMemorySize >= (samplewordsizewithmark * sampleCnt * windowCnt)
ERROR: [Labtools 27-147] vcse_server: Could not get Parameter: trace_data.

ERROR: [Labtools 27-1829] vcse_server failed during internal command 'CseXsdb_getParameters'. See previous error messages.


2. [Labtools 27-189] hw_probe refers to invalid ILA match unit trigger port[0], index[0].  


3. ERROR: [Labtools 27-147] vcse_server: Data structures not initialized for CseXsdb slave Device:0, user chain number/bus:1, slave index:0.

ERROR: [Labtools 27-1829] vcse_server failed during internal command 'CseXsdb_getRegisters'. See previous error messages.


4. ERROR: [Labtools 27-147] vcse_server: XSDB Master timed out.

ERROR: [Labtools 27-1437] Failed to get a response from the Debug Core Hub on device xc7k325t_0 (JTAG device index = 0), in user chain = 1.
出类似的错误是不是因为我用同一个时钟去采样不同时钟域的信号呢???

还有就是500M的时钟能去采样125M的时钟吗?? (因为我想看看那些rxuserclk,userclk的信号质量)

谢啦

点赞  2016-6-27 22:23
>chipscope中用一个时钟(比如我自己生成的500M的),去抓不同时钟域的信号会不会报错
这样做了没有意义,
第一 全是异步,没意义
第二 500M的时钟没有你想的那么干净
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-27 22:28
看那些rxuserclk,userclk的信号质量 用示波器量吧,没有这样看的说法。
节约时间不能这样呀。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-27 22:30
引用: 5525 发表于 2016-6-27 22:30
看那些rxuserclk,userclk的信号质量 用示波器量吧,没有这样看的说法。
节约时间不能这样呀。

嗯嗯 其实我也不是想节约时间,我就是怕示波器看的不如在ila上明显; 我看那个500m采样125m的时候有一个时钟的频率和占空比都不是很好,那我明天把这些信号都引出来测测
点赞  2016-6-27 22:38
ila上看慢速的 那个无所谓 ila采样时钟 要么和被采样数据同期,要么是他的10倍速以上  祝你好运
点赞  2016-6-28 08:38
引用: 5525 发表于 2016-6-28 08:38
ila上看慢速的 那个无所谓 ila采样时钟 要么和被采样数据同期,要么是他的10倍速以上  祝你好运

版主 再请教你个问题,那些始终需要用create generated clock来约束呢,那些用DCM生成的时钟应该不用吧
还有就是
set_clock_groups -asynchronous -group [get_clocks clkout0] -group [get_clocks clkout1]
set_clock_groups -asynchronous -group [get_clocks clkout1] -group [get_clocks clkout0]
这两个约束有啥不一样吗? 不都是来声明这两个时钟异步吗??

谢谢
点赞  2016-6-30 08:40
>set_clock_groups -asynchronous -group [get_clocks clkout0] -group [get_clocks clkout1]
>set_clock_groups -asynchronous -group [get_clocks clkout1] -group [get_clocks clkout0]

这个是把两个时钟域的 关联性,从时序分析里面去掉

应为在ISE的时候,UCF文件来指定,你不让他分析,他不分析
换了vivado, 怕你忘了,你不让他分析,他也分析

但是不管怎么样,自己心里要有谱,
  有几个时钟域,这个时钟域里面有哪些信号  有哪些信号是跨时钟域的


附带,ucf 和 sdc 互换图
  • ucf sdc.png
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-6-30 20:57
版主再麻烦您个问题:      您之前用过Ethernet 1000base-x的IP核加了自协商吗? 我现在加了自协商之后没有效果 不知道版主有没有类似经验
点赞  2016-7-15 11:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复