This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
resources:fpga:docs:hdl:m2k [17 Dec 2019 13:37] – Update block diagram Stanca-Florina Pop | resources:fpga:docs:hdl:m2k [14 Jan 2021 05:24] (current) – use / interwiki links Robin Getz | ||
---|---|---|---|
Line 45: | Line 45: | ||
The TX (DAC) interface works at 75MSPS data rate with interpolation by 2 on the AD9963 chip. The DAC path inside AD9963 chip works at 150MHz, pushing part of the spurs outside the 100MHz bandwidth. Given that the reference clock for AD9963 is 100 MHz and DACs maximum sampling rate is 170 MSPS, this is the best option available. The 75MHz clock is not available in the FPGA. In order to reduce the number of PLL used in the FPGA, we are using AD9963 and a BUFR (divide by 2) to generate this clock. When the clock is generated by AD9963, DDR transfer is not available. The TX interface works at 150 MHz, SDR. The IO standard is CMOS at 3.3V. \\ | The TX (DAC) interface works at 75MSPS data rate with interpolation by 2 on the AD9963 chip. The DAC path inside AD9963 chip works at 150MHz, pushing part of the spurs outside the 100MHz bandwidth. Given that the reference clock for AD9963 is 100 MHz and DACs maximum sampling rate is 170 MSPS, this is the best option available. The 75MHz clock is not available in the FPGA. In order to reduce the number of PLL used in the FPGA, we are using AD9963 and a BUFR (divide by 2) to generate this clock. When the clock is generated by AD9963, DDR transfer is not available. The TX interface works at 150 MHz, SDR. The IO standard is CMOS at 3.3V. \\ | ||
- | More information: | + | More information: |
==== AXI_ADC_TRIGGER ==== | ==== AXI_ADC_TRIGGER ==== | ||
Line 62: | Line 62: | ||
The output of the core embeds the triggers in the data words, as only 12 bits of the 16 bit word are used for data. These need to be extracted before being forwarded to the DMA. Embedding the trigger with the data allows for additional IPs with unknown pipeline length to be introduced in the path. \\ | The output of the core embeds the triggers in the data words, as only 12 bits of the 16 bit word are used for data. These need to be extracted before being forwarded to the DMA. Embedding the trigger with the data allows for additional IPs with unknown pipeline length to be introduced in the path. \\ | ||
- | More information: | + | More information: |
==== UTIL_VAR_FIFO ==== | ==== UTIL_VAR_FIFO ==== | ||
Line 68: | Line 68: | ||
The UTIL_VAR_FIFO IP allows M2K to store and display data before the trigger. In the design, it has a length of 8192 and can easily be increased. The IP controls an external BRAM. If DEPTH is 0, the FIFO is bypassed. When the DEPTH is changed, the read and write pointers are reset, effectively resetting the FIFO. There is a 2 cycle clock latency, even if it’s bypassed. If valid is not always asserted (decimation is active), the latency is 1 clock cycle instead of two. | The UTIL_VAR_FIFO IP allows M2K to store and display data before the trigger. In the design, it has a length of 8192 and can easily be increased. The IP controls an external BRAM. If DEPTH is 0, the FIFO is bypassed. When the DEPTH is changed, the read and write pointers are reset, effectively resetting the FIFO. There is a 2 cycle clock latency, even if it’s bypassed. If valid is not always asserted (decimation is active), the latency is 1 clock cycle instead of two. | ||
- | More information: | + | More information: |
==== UTIL_EXTRACT ==== | ==== UTIL_EXTRACT ==== | ||
Line 74: | Line 74: | ||
The UTIL_EXTRACT IP will extract the trigger that was embedded in the data stream by the AXI_ADC_TRIGGER IP. | The UTIL_EXTRACT IP will extract the trigger that was embedded in the data stream by the AXI_ADC_TRIGGER IP. | ||
- | More information: | + | More information: |
==== AXI_ADC_DECIMATE ==== | ==== AXI_ADC_DECIMATE ==== | ||
Line 84: | Line 84: | ||
At the end of the filter chain, there is an arbitrary decimation block. The arbitrary decimation can be activated independently and it does not implement any type of filtering. \\ | At the end of the filter chain, there is an arbitrary decimation block. The arbitrary decimation can be activated independently and it does not implement any type of filtering. \\ | ||
- | More information: | + | More information: |
==== AXI_DAC_INTERPOLATE ==== | ==== AXI_DAC_INTERPOLATE ==== | ||
Line 94: | Line 94: | ||
At the end of the filter blocks, we have an arbitrary interpolation zero-order hold block which holds the value for a configurable number of samples. \\ | At the end of the filter blocks, we have an arbitrary interpolation zero-order hold block which holds the value for a configurable number of samples. \\ | ||
- | More information: | + | More information: |
==== AXI_LOGIC_ANALYZER ==== | ==== AXI_LOGIC_ANALYZER ==== | ||
Line 111: | Line 111: | ||
If the FIFO is active, it is filled before being read, not forwarding any data until it is full. The maximum size of the FIFO is 8192 samples. The FIFO is implemented using BRAM blocks configured for minimal power consumption. \\ | If the FIFO is active, it is filled before being read, not forwarding any data until it is full. The maximum size of the FIFO is 8192 samples. The FIFO is implemented using BRAM blocks configured for minimal power consumption. \\ | ||
- | More information: | + | More information: |
==== Pinout Table ==== | ==== Pinout Table ==== |