I got the downstream interface working but it is lagging. What this means is that packet arrival is faster than packet departure. There are two ways to deal with this. One is to back-pressure the upstream interface until the packet is sent downstream. This means you cannot get new data from upstream interface until all the previous data has drained downstream. The other approach is to use a reasonably sized FIFO and let the arrived data fill up the FIFO. While new data arrives at the FIFO, downstream block consumes data from FIFO.
Initially, i am going to try the first approach. Later, i can deal with the second approach.
What i first encountered during synthesis was of course
Synthesis Errors !!!!
ERROR:HDLCompiler:1401 - "/home/user/gsoc14/python_code/myhdl_code/sim_models/rtp_xilinx/rtl/packetizer.v" Line 148: Signal nxt_fifo_full in unit packetizer is connected to following multiple drivers:
Driver 0: output signal nxt_fifo_full of instance Latch (nxt_fifo_full).
Driver 1: output signal nxt_fifo_full of instance Multiplexer (fifo_full_fifo_full_MUX_20689).
ERROR:HDLCompiler:1401 - "/home/user/gsoc14/python_code/myhdl_code/sim_models/rtp_xilinx/rtl/packetizer.v" Line 220: Signal nxt_send_buffer[10399] in unit packetizer is connected to following multiple drivers:
So i had to rewrite RTL to make these Errors go away. I was able to do rewrite RTL as well as synthesize correctly. Here is the synthesis log file. Here is the synthesized netlist and testbench
Please run the code and help me find bugs that you come across.
Here is the output for a few clock cycles. The format is timestamp : 4bytes of RTP Data
4356:80180000
4376:00000000
4416:00000501
4436:001a0000
4456:00010000
4476:02000003
4496:00000400
4516:00050000
4536:06000007
4556:00000800
4576:00090000
4596:0a00000b
.
.
.
I will do more testing next week.
No comments:
Post a Comment