ccs 发表于 2010-10-31 15:27:14

1.GTP的PCS没有de/scramble,没有CRC,但是有8b/10b,COM Detect,elastic buffer等

2.PIPE是一个规范,如果要做PCI-e,必须遵守,否则不是PCI-e。可以参考附件中的一个老版本的PIPE Spec

3.PIPE中规定了8bit/16bit两种位宽,码率只有2.5Ghz(Gen1)以及5Ghz(Gen2)两种量产的规格,Gen3不清楚

4.xilinx例化一个GTP,实现了PIPE的功能。GTP还可以例化实现其他功能

5.Xilinx出来的62.5Mhz,是在GTP出来的PIPE的125Mhz基础上,加上de/scramble,COM alignment等功能后,再将GTP出来的16bit转为32bit的位宽,并不是GTP直接出来32bit。

6.假设PIPE采用32bit位宽,频率貌似下来了,但是中间的COM alignment,de/scramble,CRC等计算会复杂很多,延迟路径会更长。否则按照这个推论,128位宽可以解决任何问题了。

下面是一个GTP例化成PIPE的顶层描述,来源是xilinx提供的pci-express硬核的代码
数据位宽16位,GTP恢复出来的mgt_clk经过全局buffer送入当全局时钟

// GT->PLM PIPE Interface rx
wire     rx_char_is_k;
wire    rx_data;
wire          rx_enter_elecidle;
wire     rx_status;
wire          rx_polarity;

// GT<-PLM PIPE Interface tx
wire     tx_char_disp_mode;
wire     tx_char_is_k;
wire          tx_rcvr_det;
wire    tx_data;

// GT<->PLM PIPE Interface Misc
wire          phystatus;

// GT<->PLM PIPE Interface MGT Logic I/O
wire          gt_reset_done;
wire          gt_rx_valid;
wire          gt_tx_elec_idle;
wire     gt_power_down;
wire          rxreset;
wire          gt_plllkdet_out;

BUFGmgt_bufg    (.O(mgt_clk),    .I(clk_125));

gtpa1_dual_wrapper_top
mgt (
    .rx_char_is_k      ( rx_char_is_k      ),
    .rx_data             ( rx_data         ),
    .rx_enter_elecidle   ( rx_enter_elecidle ),
    .rx_status         ( rx_status         ),
    .rx_polarity         ( rx_polarity       ),
    .tx_char_disp_mode   ( tx_char_disp_mode ),
    .tx_char_is_k      ( tx_char_is_k      ),
    .tx_rcvr_det         ( tx_rcvr_det       ),
    .tx_data             ( tx_data         ),
    .phystatus         ( phystatus         ),
    .gt_usrclk         ( mgt_clk         ),
    .gt_usrclk2x         ( mgt_clk_2x      ),
    .sys_clk             ( sys_clk         ),
    .sys_rst_n         ( sys_reset_n_c   ),
    .arp_txp             ( pci_exp_txp       ),
    .arp_txn             ( pci_exp_txn       ),
    .arp_rxp             ( pci_exp_rxp       ),
    .arp_rxn             ( pci_exp_rxn       ),
    .gt_reset_done       ( gt_reset_done   ),
    .gt_rx_valid         ( gt_rx_valid       ),
    .gt_plllkdet_out   ( gt_plllkdet_out   ),
    .gt_refclk_out       ( gt_refclk_out   ),
    .gt_tx_elec_idle   ( gt_tx_elec_idle   ),
    .gt_power_down       ( gt_power_down   ),
    .rxreset             ( rxreset         )
);
页: 1 [2]
查看完整版本: PCIe的RC和EP能同时跑在1.25G吗