User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
ee:hydrophones:start [2018/01/28 16:36]
Ryan Summers [Software Design]
ee:hydrophones:start [2018/04/03 09:50]
Ryan Summers
Line 38: Line 38:
 The analog signal goes through a five-stage amplification and filtering process. First, the signal is sent through two gain stages, each of which apply an adjustable gain to the signal. After the signal is gained into a reasonable voltage range, it is passed through a low-pass filter and then a high-pass filter to result in a bandpass filter of the signal. The analog signal goes through a five-stage amplification and filtering process. First, the signal is sent through two gain stages, each of which apply an adjustable gain to the signal. After the signal is gained into a reasonable voltage range, it is passed through a low-pass filter and then a high-pass filter to result in a bandpass filter of the signal.
  
-Once the signal has been filtered and gained, it is preprocessed for the ADC. In order to acquire more accurate measurements,​ the ADC requires signals to be differential. The analog signals are therefore put through a single-ended to differential converter and biased around a DC voltage supplied by the ADC. Immediately before the signals enter the ADC, there is a low-pass anti-aliasing filtering (Low-pass differential RC).+Once the signal has been filtered and gained, it is preprocessed for the ADC. In order to acquire more accurate measurements,​ the ADC requires signals to be [[https://​en.wikipedia.org/​wiki/​Differential_signaling|differential]]. The analog signals are therefore put through a single-ended to [[https://​en.wikipedia.org/​wiki/​Differential_signaling|differential]] converter and biased around a DC voltage supplied by the ADC. Immediately before the signals enter the ADC, there is a low-pass anti-aliasing filtering (Low-pass differential RC).
  
  
Line 44: Line 44:
 {{ :​ee:​hydrophones:​fpga-hydrozynq.jpg |}} {{ :​ee:​hydrophones:​fpga-hydrozynq.jpg |}}
  
-The FPGA has a number of parts to it, but its ultimate goal is to take samples sent from the ADC and transfer them into the processor'​s memory. Immediately,​ the differential signals are passed to the FPGA IO buffers to convert them to single-ended. After the single-ended conversion, a custom Verilog block was written that takes in the ADC's clock and data signals to properly digitize the data. It then provides this data on an [[https://​www.xilinx.com/​support/​documentation/​ip_documentation/​ug761_axi_reference_guide.pdf|AXI-Stream]] interface. Because ADC reader block is driven off an external clock and the rest of the FPGA is clocked internally, care must be taken to cross the clock boundaries to prevent metastability. The Xilinx FIFO generator was used, as it generates an asynchronous read-write FIFO that can be used for synchronizing data with the internal FPGA clock.+The FPGA has a number of parts to it, but its ultimate goal is to take samples sent from the ADC and transfer them into the processor'​s memory. Immediately,​ the [[https://​en.wikipedia.org/​wiki/​Differential_signaling|differential signals]] are passed to the FPGA IO buffers to convert them to single-ended. After the single-ended conversion, a custom Verilog block was written that takes in the ADC's clock and data signals to properly digitize the data. It then provides this data on an [[https://​www.xilinx.com/​support/​documentation/​ip_documentation/​ug761_axi_reference_guide.pdf|AXI-Stream]] interface. Because ADC reader block is driven off an external clock and the rest of the FPGA is clocked internally, care must be taken to cross the clock boundaries to prevent metastability. The Xilinx FIFO generator was used, as it generates an asynchronous read-write FIFO that can be used for synchronizing data with the internal FPGA clock.
  
 After synchronization,​ the AXI stream is connected to a Stream-To-Multi-Master Direct Memory Access (S2MM DMA) engine. The DMA engine is a software-programmable peripheral that will asynchronously write the ADC samples into the processor'​s RAM. After synchronization,​ the AXI stream is connected to a Stream-To-Multi-Master Direct Memory Access (S2MM DMA) engine. The DMA engine is a software-programmable peripheral that will asynchronously write the ADC samples into the processor'​s RAM.
Line 107: Line 107:
 === Port Descriptions === === Port Descriptions ===
 ^ Port Number ^ Destination ^ Description ^ ^ Port Number ^ Destination ^ Description ^
-| 3000        | HydroZynq ​  | Command port                      +| 3000        | HydroZynq ​  | Command port                            
-| 3001        | Cobalt ​     | Sample data stream port           ​+| 3001        | Cobalt ​     | Sample data stream port                 ​
-| 3002        | Cobalt ​     | Time of Arrival Delay result port | +| 3002        | Cobalt ​     | Time of Arrival Delay result port       ​
-| 3003        | Cobalt ​     | Cross-correlation stream port     ​+| 3003        | Cobalt ​     | Cross-correlation stream port           ​
-| 3004        | Cobalt ​     | Debug/​STDOUT port                 ​|+| 3004        | Cobalt ​     | Debug/​STDOUT port                       | 
 +| 3005        | Cobalt ​     | Requests to silence the control system. ​|
  
 Note that the HydroZynq does not run ROS natively, so python scripts running on cobalt are necessary for interfacing the HydroZynq with ROS. As of now, these scripts are still under development. Note that the HydroZynq does not run ROS natively, so python scripts running on cobalt are necessary for interfacing the HydroZynq with ROS. As of now, these scripts are still under development.
Line 138: Line 139:
 | threshold ​ | unsigned int | Sets the HydroZynq ping ADC threshold value. | | threshold ​ | unsigned int | Sets the HydroZynq ping ADC threshold value. |
 | debug      | unsigned int | If data is 0, HydroZynq debug mode is disabled. Otherwise, debug mode is enabled. | | debug      | unsigned int | If data is 0, HydroZynq debug mode is disabled. Otherwise, debug mode is enabled. |
 +| frequency ​ | unsigned int | Specifies target pinger frequency. May be 25000, 30000, 35000, or 40000. Units are Hz. |
 +| post_ping_duration_us | unsigned int | The number of microseconds after ping threshold to truncate the signal to. //Default: 50 us//|
 +| pre_ping_duration_us | unsigned int | The number of microseconds before ping threshold to truncate the signal to. //Default: 100 us//|
 +| filter ​    | unsigned int | If data is 0, IIR filtering is disabled. Otherwise, filter is enabled. //Default: disabled.// |
  
 In debug mode, the HydroZynq records for 2.1 seconds, dumps all 2.1 seconds of data to the data stream port, and repeats. No correlations are performed and no result is sent. In debug mode, the HydroZynq records for 2.1 seconds, dumps all 2.1 seconds of data to the data stream port, and repeats. No correlations are performed and no result is sent.