Nunc Ille Est Magicus


Non destructive testing and imaging ultrasound modalities have been around since the ’50s in . More and more ultrasound-based initiative are emerging, mostly focusing on image processing - while hardware has been left behind. Several teams have produced succesful designs for the different possible uses, mostly efforts from research laboratories. Most have been used on commercial US scanners, traditionaly used as experiment platforms, but they are not cheap, and yield very little in terms of data access and control. Others have been developped in labs, but, sadly, very few have been open-sourced. This particular project stems from a previous beaglebone-based design, as well as an arduino-like module-based design.

It has also been shown that simple (be it low-power, low-cost and small) can be achieved - and this, even for relatively complex systems, based on 16 to 64 parallel channels front-end processing and software back-end processing (embedded PC or DSP). This makes it a bit more complex for the layman, hobbyist, or non-specialist researcher to use, not to mention the very little information that is accessible.

How about a case study?

The board was connected to a single element piezo, in water, with a reflector a few centimers away, immersed in water. Pulser is set up at 25V high pulses. Control was done through a Raspberry Pi W.

Acquisition is realized, with a small offset, between 32Msps and 64Msps. Data is explored a bit further.

Non Quod Maneat, Sed Quod Adimimus

Simplified hardware: specs and features

  1. FPGA: Lattice iCE40HX4K - TQFP 144 Package
  2. Memory:
    • 8 Mbit SRAM, 10ns, 512 k x 16, equivalent:
    • 65 full lines of 120us at 64Msps
    • 840 lines of 120us at 10Msps, 8 bits * 8 Mb SPI Flash for FPGA configuration
  3. Ultrasound processing:
    • VGA: AD8331 controled by DAC
    • Pulser: MD1210 + TC6320
    • ADC: 10Msps ADC10065
    • 10 bits of data / sample
    • 2 bits of line counters
    • 4 bits of IOs (counters, …)
  4. Parameters: Settings programable via USB or Raspberry Pi
    • Type of acquisition (one line / set of lines)
    • Number of lines
    • Length of lines acquisitions
    • Delay between acquisitions
    • Pulse width
    • Delay between pulse and beginning of acquisitions
    • 200us time-gain-compensation programmable (8 bits, from 0 to Max), every 5us
  5. Extensibility:
    • 2 x Pmod connectors
    • SMA plug for transducers
    • RPi GPIO
  6. User Interfaces:
    • 2 x PMOD for IOs
    • 3 x push button (with software noise debouncing)
    • Jumpers for high voltage selection
  7. Input Voltage:
    • 5 V from RPi or USB
    • Uses 350mA-450mA at 5V
  8. Fully Open Source:
    • Hardware: github repository
    • Software: github repository
    • Toolchain: Project IceStorm
    • Documentation: gitbook
  9. Operating Voltage:
    • FPGA and logics at at 3.3 V
    • High voltage at 25V, 50V, 75V
  10. Dimensions: @todo!
  11. Weight: @todo!

Si (Non) Confectus, (Non) Reficiat

If it’s not broken..

Quia Ego Sic Dico

Installation steps

  1. Setup
  2. Install the image on the Raspberry
  3. Burn bitstream
  4. Acquire the signal
  5. Process and display!

Moneta Supervacanea, Magister?

Non Ante Septem Dies Proxima, Squiri

V1 RELEASE ! @todo

Liber Paginarum Fulvarum

Thanks to