当前位置:   article > 正文

Xilinx-7-SelectIO-ISERDESE2-串并转换器

iserdese2

博主福利:100G+电子设计学习资源包!

http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
--------------------------------------------------------------------------------------------------------------------------

 

一、ISERDESE2简介


ISERDESE2是专用的串并转换器,它在完成串并转换时并不会带来多余的时序上的问题,从而很适合应用到高速源同步应用中。比如摄像头数据。

 

专用解串器/串并转换器:
它可以完成高速数据传输同时不需要FPGA端匹配数据频率,这个转换器支持SDR(single data rate)和DDR(double data rate)。SDR模式支持2-,3-,4-,5-,6-,7-,8bit位宽;DDR模式支持4-,6-,8-bit位宽。10或14-bit需要两个级联。


Bitslip 子模块:
该子模块可以使设计者重新排列输入的并行数据。可用于源同步tranining。
特意支持strobe-based 存储接口


二、测试程序


此次选择SDR模式6bit位宽作为测试。所需时钟由PLLE2_BASE产生,数据经IDELAYE2输入到ISERDES2中。
 

  1. ISERDESE2 #(
  2. .DATA_RATE("SDR"), // DDR, SDR
  3. .DATA_WIDTH(6), // Parallel data width (2-8,10,14)
  4. .DYN_CLKDIV_INV_EN("FALSE"), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)
  5. .DYN_CLK_INV_EN("FALSE"), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)
  6. // INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1)
  7. .INIT_Q1(1'b0),
  8. .INIT_Q2(1'b0),
  9. .INIT_Q3(1'b0),
  10. .INIT_Q4(1'b0),
  11. .INTERFACE_TYPE("NETWORKING"), // MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE
  12. .IOBDELAY("NONE"), // NONE, BOTH, IBUF, IFD
  13. .NUM_CE(1), // Number of clock enables (1,2)
  14. .OFB_USED("FALSE"), // Select OFB path (FALSE, TRUE)
  15. .SERDES_MODE("MASTER"), // MASTER, SLAVE
  16. // SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1)
  17. .SRVAL_Q1(1'b0),
  18. .SRVAL_Q2(1'b0),
  19. .SRVAL_Q3(1'b0),
  20. .SRVAL_Q4(1'b0)
  21. )
  22. ISERDESE2_inst (
  23. .O(out), // 1-bit output: Combinatorial output
  24. // Q1 - Q8: 1-bit (each) output: Registered data outputs
  25. .Q1(Q1),
  26. .Q2(Q2),
  27. .Q3(Q3),
  28. .Q4(Q4),
  29. .Q5(Q5),
  30. .Q6(Q6),
  31. .Q7(Q7),
  32. .Q8(Q8),
  33. // SHIFTOUT1, SHIFTOUT2: 1-bit (each) output: Data width expansion output ports
  34. .SHIFTOUT1(),
  35. .SHIFTOUT2(),
  36. .BITSLIP(BITSLIP), // 1-bit input: The BITSLIP pin performs a Bitslip operation synchronous to
  37. // CLKDIV when asserted (active High). Subsequently, the data seen on the Q1
  38. // to Q8 output ports will shift, as in a barrel-shifter operation, one
  39. // position every time Bitslip is invoked (DDR operation is different from
  40. // SDR).
  41. // CE1, CE2: 1-bit (each) input: Data register clock enable inputs
  42. .CE1(1'b1),
  43. .CE2(1'b0),
  44. .CLKDIVP(), // 1-bit input: TBD
  45. // Clocks: 1-bit (each) input: ISERDESE2 clock input ports
  46. .CLK(clk_high), // 1-bit input: High-speed clock
  47. .CLKB(), // 1-bit input: High-speed secondary clock
  48. .CLKDIV(clk_div), // 1-bit input: Divided clock
  49. .OCLK(), // 1-bit input: High speed output clock used when INTERFACE_TYPE="MEMORY"
  50. // Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity
  51. .DYNCLKDIVSEL(1'b0), // 1-bit input: Dynamic CLKDIV inversion
  52. .DYNCLKSEL(1'b0), // 1-bit input: Dynamic CLK/CLKB inversion
  53. // Input Data: 1-bit (each) input: ISERDESE2 data input ports
  54. .D(DATAOUT), // 1-bit input: Data input
  55. .DDLY(), // 1-bit input: Serial data from IDELAYE2
  56. .OFB(), // 1-bit input: Data feedback from OSERDESE2
  57. .OCLKB(), // 1-bit input: High speed negative edge output clock
  58. .RST(rest_ise), // 1-bit input: Active high asynchronous reset
  59. // SHIFTIN1, SHIFTIN2: 1-bit (each) input: Data width expansion input ports
  60. .SHIFTIN1(),
  61. .SHIFTIN2()
  62. );
  63. assign outdata = {Q6,Q5,Q4,Q3,Q2,Q1};

 

三、仿真结果


不使用Bitslip功能的仿真结果:


这里写图片描述

 

在中间开启bitslip功能,注意第二个数取位后移了一位:


这里写图片描述
 

注意:Bitslip的移位并不是首尾循环,只是模拟数据循环输出。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/866429
推荐阅读
相关标签
  

闽ICP备14008679号