wiki:mgt_ref

MGT Reference Design

The MGT is a flexible, programmable differential serial interface, allowing a multi-gigabit transceiver to be easily integrated into FPGA design. The ROCKETIO MGTS provide full duplex connections and benefits the designer for the ability to operate at any serial bit rate in the range from 600Mb/s to 3.125 GB/s per channel. The WARP can support 8 MGTs at most. So the peak rate is over 20G bit/s, which will meet transmission requirement between boards or chips.

Our design is based on Aurora Core which implements MGT internally. The Aurora Core is provided by Xilinx and is easy to be embedded in one design. The following picture shows the structure of this design. The media stream is packetted and transmitted from one PC to the PPC in one WARP board through Ethernet. Then the PPC send it out to the LINKPORT via RAM or FIFO in IPIF. The LINKPORT has the Aurora Core in it. This LINKPORT transmit data to another LINKPORT through MGT. Then again through another PPC, the data is transmitted to another PC.

To demo this project, we need

  • 1 two WARP board and two computers
  • 2 installing the VLC tools on two computers
  • 3 downloading the Project tran on sending computer, downloading the project rec on receiving computer
  • 4 configuring IP of both the PC for TX and RX as IP 192.168.0.102
  • 5 configuring the VLC so that the PC for TX send UDP packet to 192.168.0.5:1234
  • 6 configuring the VLC so that the PC for RX should listen to port 4321
  • 7 connecting the TX PC and TX WARP by Ethernet cable
  • 8 connecting the RX PC and RX WARP by Ethernet cable
  • 9 connecting the MGT #5 in TX WARP and RX WARP by MGT cable

Software part

The RX and TX are sharing the same hardware structure, but different software design. The project tran for RX parts while the project rec is for RX part. There are 3 functions in TX design and TX design separately.

  • 'main()' in TX is the main function.
  • 'video_main()' in TX do all the initial work. Then enter a nonstop loop. In the loop, just arm the Ethernet reception.
  • 'receiveUDP()' in TX is a callback function which is invoked when a new packet is received. In this function the received packets is send out through the MGT.
  • 'main()' in RX is the main function.
  • 'video_main()' in RX is the most important function in this project. When Xilkernel is running, this function is invoked. In 'video_main()' all the hardware is initialized, then enter a non-stop loop. In the loop, it always checks whether data from MGT is received. If data is received, it will be transmitted back to PC through the Ethernet.
  • 'receiveUDP()' in RX is a callback function which is invoked when a new packet is received. In this function just do nothing.
Last modified 16 years ago Last modified on Sep 26, 2006, 10:21:40 PM

Attachments (1)