Implantable Stimulator-Transponder (A3036)

© 2019 Kevan Hashemi, Open Source Instruments Inc.




[22-AUG-19] The Implantable Stimulator-Transponder (A3036) is a wireless electrical stimulator that receives commands and responds with acknowledgements using a single antenna. The electrical stimulus is delivered through two silicone-insulated helical wires terminated with miniature pins. When combined with an Implantable Lamp (A3036IL) head fixtures, the A3036 provides optogenetic stimulus for brain and nerve tissue. When combined with a bipolar depth electrode, the IST provides direct electrical stimulus. When equipped with a 19-mAhr lithium-polymer battery, the IST volume is less than 1.0 ml. We first proposed the development of the IST in our IST Technical Proposal.

Figure: A3036AV1 Prototype Circuit with Antenna and White LED. The programming extension is in the background. The logic chip is the square component in the rear. It is 2.5 mm × 2.5 mm.

The IST is managed by a field-programmable gate array (FPGA) in a 2.5-mm square package, the XO2-1200. This device provides both volatile and non-volatile memory as well as thousands of programmable logic gates. It is capable of implementing arbitrarily-complex stimuli in response to a single command. The A3036A uses the same firmware as the Implantable Sensor with Lamp (A3030E), in which a single stimulus consists of a set number of pulses, each of fixed length, generated at regular intervales, or at random intervals with a known average value.

The IST command receiver is a crystal radio that consumes less than 8 μA when the stimulator on standby. The commands arrive from a transmitter such as the 915-MHz Command Transmitter (A3029C), which we control with the same software we developed for the Implantable Sensor with Lamp (ISL). This software operates with our LWDAQ data acquisition hardware. The IST transmits its acknowledgements and metadata at 915 MHz also, for detection by a data receiver such as the Octal Data Receiver A3027E. The IST transmissions use the same protocol as our Subcutaneous Transmitter System (SCT). The IST command transmissions take tens of milliseconds, and during command transmission, SCT samples will be lost.

Version Battery
A3036A 19 1.0 33
Table: Versions of the Implantable Sensor with Lamp (A3036).

The IST is designed to be implanted together with an SCT so that stimuli can be generated in response to EEG activity in real time, with the help of the Event Classifier running on the data acquisition computer. Our earlier ISL device combined stimulator and sensor in the same device, powered by the same battery, and suffered from lamp artifact. When we separate the stimulator and the sensor into two circuits each powered by their own battery, we eliminate lamp artifact in optogenetic applications, and greatly reduce it for electrical stimulation applications.

Version LED Fiber Diameter
Optical Power
(mW at 20 mA)
A3036IL-A C469EZ500 No Fiber 460 (Blue) 20
A3036IL-B C527EZ500 No Fiber 527 (Green) 10
A3036IL-C C469EZ500 450 460 (Blue) 10
A3036IL-D C527EZ500 450 527 (Green) 5
A3036IL-P C460TR2227 none 460 (Blue) 20
A3036IL-Q C527TR2227 none 527 (Green) 10
A3036IL-R C460TR2227 270 460 (Blue) 10
A3036IL-S C527TR2227 270 527 (Green) 5
Table: Versions of the Implantable Lamp (A3036IL). We quote expected optical power at the tip of the fiber, if one exists, or total forward-going power for a bare LED

All ISTs are equipped with a lithium-polymer battery. No other miniature battery can provide 20 mA for the lamp. The IST applies its battery voltage to the lamp through its lamp leads. The resistance of the lamp leads limits the LED current, and we make this resistance part of the design of the device. The average voltage of lithium-polymer battery during its lifetime is 3.7 V. The forward voltage of the blue EZ500 LEDs at 20 mA is 2.9 V. The forward voltage of the green EZ500 and both the blue and green TR2227 LEDs is 3.1 V at the same current. We choose the resistance of the leads to set the lamp current at 20 mA for battery voltage 3.7 V. The 19-mAhr battery of the A3036A will provide 57 minutes of continuous light output. If our stimuli consist of 10-ms pulses at 10 Hz, the A3036A can deliver 570 minutes of stimulus. The table above gives the optical power emitted by each source, bare LED or fiber tip.

The implantable lamps use either the TR2227 or EZ500 series LEDs. With no fiber, the LED is covered with clear epoxy and intended for direct contact with the tissue to be illuminated. All head fixtures are equipped with a hypodermic tube on the opposite side of the LED to allow the lamp to be located and held securely during imlantation. We cut off the tube after securing with dental cement.

When we equip the IST stimulus leads with small gold-plated pins, we can plug these into the sockets on any of the Implantable Lamp (A3036IL) light sources. These each have two sockets on the top side of a tiny, square circuit board, and an LED mounted on the bottom side. Some have fiber with a tapered tip glued to the LED, others have the LED covered with epoxy for direct mounting on the skull surface of nerve bundle. Each implantable lamp has a 10-mm long steel tube glued to the top side that we use to hold the lamp during implantation. We cut the steel tube once the lamp has been cemented in place.


S3030A_1: IST Schematic.
Code: Logic Programs and Test Scripts.
LCMXO2-1200ZE: The programmable logic chip data sheet.
WLCS-25: The 2.5 mm square BGA logic chip package. PCB for A3036A, Gerber files and drawing. Panel A3036A, Gerber files for assembly.
A303601A_Top: Rendering of top side of circuit board.
A303601A_Bottom: Rendering of bottom side of circuit board.
A3036A.ods: Bill of Materials and Pick and Place for A3036A.
Controller Tool: Software to control the IST.
A303602A_Top: Rendering of top side of TR2227 LED board.
A303602A_Bottom: Rendering of bottom side of TR2227 LED board.
A303602B_Top: Rendering of top side of EZ500 LED board.
A303602B_Bottom: Rendering of bottom side of EZ500 LED board.
TR2227_Footprint: Close-up of TR2227 LED footprint.


[18-NOV-19] The A3036AV1 needs the following modifications.

  1. Connect D2-1 to U5-2 with wire link in order to correct a PCB error and complete the 0V net.
  2. Replace D1 SMS7621079LF with SMS7630079LF. The Pin-1 marker on the new diode is the anode, while on the previous diode it was the cathode.
  3. Add 0.5 pF in parallel with C6 to bring matching network resonant frequency close to 910 MHz.

For the A3036B we are going to make the following enhancements to the circuit.

  1. Add 33 kΩ resistor in series with U8-D4 so we can pull OND up on the programming extension for calibration. The A3036A has no such resistor, and we must apply RF power to turn on the board during calibration.
  2. Bring signal VR out to programming extension so we can calibrate matching network more easily.


[23-AUG-19] Schematic complete. Arrange components on 10-mm × 10 mm circuit board, narrowed at the top to fit into the terminal end of our 19-mAhr LiPo battery. The A3036 crystal radio uses the SMS7630079LF detector diode in a 1.7-mm long SC-79 package. The threshold comparator is the same MCP6541 but in the smaller SC-70-5 package. The stimulus and battery-check switches are two N-channel enhancement mode mosfets provided by a DMG1024UV in a 1.7 mm × 1.0 mm SOT-563 package. The OR gate is is the same SN74AUP1G32, but in the much smaller UDFN-6 1.0 mm × 1.5 mm package, which we use on our A3028GV1 circuit boards. This package fails to load properly in roughly 1% of assemblies and is impractical to replace by hand, but it is small. The logic chip is the same LCMXO2-1200ZE, but in a 2.5 mm square WLCS-25 package with balls on a 0.4-mm pitch. We are not yet sure how to make a footprint for so fine a ball pitch.

[04-SEP-19] The IST uses the LCMXO2-1200ZE in a WLCS-25 package. The WLCS-25 has twenty-five balls on a 0.4-mm (15.7-mil) pitch. With 10-mil diameter pads the clearance between pads is only 6 mil, which is barely enough to run a 2-mil track, let alone the 5-mil tracks of our usual fabrication process. We consult with Epectec for a solution to the layout problem. They propose that we use 12-mil pads with 10-mil soldermask opening and a 4-mil laser-drilled microvia from the top copper (L1) to the first middle copper layer (L2).

Figure: BGA Footprint on A303601A Printed Circuit Board. Shown are the top copper (L1), top soldermask, and the drill holes.

The second layer of copper (L2) has 10-mil pads to receive the 4-mil microvias, as shown below.

Figure: The Middle Copper (L2) Beneath the BGA. Shown are the middle copper tracks with 10-mil pads to receive the microvias, and the 4-mil microvia holes themselves.

There are no pads for the 4-mil holes on the remaining four copper layers: ground plane (L3), power plane (L4), middle copper (L5) and bottom copper (L6). But our drill file specifies 4-mil holes, and we see these rendered in the plot below.

Figure: The L3-L6 Copper Layers. There are no pads for the 4-mil holes, because the 4-mil holes are indented to pass only between the L1 and L2 layers. These holes are, nevertheless, shown in this plot, because our drill file cannot specify partial drill holes.

We could have routed tracks directly beneath the microvia holes, but our layout software is incapable of understanding drill holes that pass between only two layers. So we kept the bottom four layers clear of copper around the drill holes. In order to generate the gerber files for the bottom four layers, we deleted the 4-mil vias temporarily.

[06-SEP-19] Completed draft version of P3036A01 firmware, including battery voltage measurement by timing how long it takes to charge up C4. When we request a battery measurement, the firmware will assert BT, which closes the battery test switch U3-6 to U3-1. Capacitor C4 starts to charge through R1 and R2. These resistors present a voltage source 80.5% of VB through a resistance of 6.43 kΩ. Capacitor C4 is 1.0 μF. The charging time constant is 6.4 ms. The BTV signal connects to an input on U8, a 3.0-V logic input with logic threshold around 1.5 V. When VB = 3.6 V, voltage BTV will take around 3 ms to reach 1.5 V, or 100 cycles of our on-board 32.768 kHz clock. To the first approximation, time taken is inversely proportional to the battery voltage, so we expect 86 periods when VB = 4.2 V and 106 periods when VB = 3.4 V. Submit A303601A Rev 1 printed circuit board for fabriction on a ten-day turn.

[30-SEP-19] We have the A303601A printed circuit boards, quantity 100, in panels of 10 each. We solder a battery to a blank circuit board, and a charging connector. We succeed on the fourth battery, having figure out how to fold the battery tabs, solder them to the pads on the circuit board, and press the board into place. One of our 0-V connections is missing due to a bug in the way our PCB layout software implements relief connections to the ground plane. We find we can correct this error with a short wire link.

Figure: A 19-mAhr LiPo Battery Loaded On A303601A PCB.

Once the programming extension is clipped off, the battery and circuit will be contained within a 10 mm × 20 mm × 3 mm cuboid. Allowing for 0.5 mm of epoxy and silicone over all surfaces, final volume will be ≤0.92 ml. We are hoping for 0.80 ml. We charge the battery.

[03-OCT-19] We ship components and circuit boards to our assembly house. We have ordered 20 circuits made. We should receive first article in two weeks.

[04-OCT-19] We receive 1254 of C527TR2227 (green ≥10 mW @ 20 mA) and 1777 of C460TR2227 (blue ≥30 mW @ 20 mA). They come on plastic sheets. They are so thin they are transparent.

Figure: Twelve C527TR2227 On Plastic Sheet. Each is 270 μm × 220 μm.

We ship all the green ones to an assembly company we have contracted to load the dies onto the A303602A printed circuit board, which we submit for fabrication on a 25-day turn.

[11-OCT-19] We have our first three assembled A3036AV1 circuits, No1-No3. We connect D2-1 to U5-2 in order to correct a PCB error and complete the 0V net. When we connect power, current consumption is 7 μA. We see a 3.3-V 32.768-kHz square wave on both sides of R7. The A3036AV1 has no resistor between OND and its two destinations U6-2 and P3-3. If we tie P3-3 to P3-4, we connect a LO output of U8 to a Hi voltage. We remove U6 on No1 and use its pads to connect 3VB to 3VA. We set VB to 3.3 V. On our programming cable, we connect ispEN to VCC. When we plug the programmer into P1, the cable drives PEN Hi so as to enable the JTAG interface. We program U8 repeatedly from our laptop. Once we program U8, we see a 2.8-V square wave on U7-2 and a 1.9-V square wave on RCK. No matter how we configure TP1 and TP2, we cannot change their state. TP1 remains Hi and TP2 remains Lo. We remove U6 on No2 and repeat the above steps, arriving at the same result.

[14-OCT-19] We use the Lattice Diamond Programmer V3.9, instead of the older ispVM 18.0, to program No1. Now RCK is a 3.0-V square wave, and we can program the behavior of TP1 and TP2 as we wish. We add output KEEPER on unused pin B1 and set equal to STBY in the firmware so as to stop the compiler eliminating the power control unit. We had deleted this output when we adapted the A3030 firmware for the A3036. We solder a white LED with 100-Ω resistor to the L+ and L− outputs of No3, and a steel antenna to A. The No3 circuit still retains U5. We place the antenna over a Loop Antenna (A3015C) driven with 10 dBm of 910 MHz. With the logic chip erased, XEN is Lo, the RF power causes RP to go Hi, and chip power turns on, after which the erased chip asserts OND, ONL, and XEN, keeping its own power turned on, turning on the lamp, and disconnecting the antenna from the tuner. We connect the programming cable. We remove from our source of 910 MHz. We program the device successfully. Stanby current is 7.4 μA.

Figure: A3036AV1 Prototype Circuit with 3-mm White LED and Steel Antenna.

We look at the RF power signal on D1-1, which we call VR. We have the A3036AV1 over a source of 910 MHz. When VR reaches 10 mV, RP is asserted and both 1V2 and 3VB turn on. With a Command Transmitter (A3029C) we are able to flash the white LED. When the device receives a STOP command, it flashes its lamp. When 1V2 turns on, OND, ONL, and XEN all rise to about 1.5 V for 1 ms. We enable aknowledgements and the No3 circuit transmits an RF signal. The signal is not received by our data receiver. We have not yet calibrated the RF canter frequency or its modulation clock.

During stimulation, the current in No3 when the lamp is off is 220 μA. We solder antennas and lamps to No1 and No2. These are permanently on because of our removal of U6. Their quiescent current consumption is 150 and 250 μA respectively. This is what we call the "active" current of the device, and we expect it to be around 60 μA. Looking at the Lattice Diamond power calculator, this 200 μA quiescent current is consistent with a failure to turn off the band gap references. We try to calibrate the RF center frequency and the transmit clock, but we find that the ring oscillator is not working. It is being eliminated from the design. We believe we can fix these problems by attention to the firmware, so we will proceed with assembly of another 17 circuits.

We add routing priority for the ring oscillator bits, and the fck divisor bits, see P3036A.lpf. Now the compiler preserves all bits and we see the ring and divisor in the device view. We add frequency estimates for the four clocks. We note that we have SDM_PORT set to the default value DISABLE, which means that outputs DONE, INITN, and PROGRAMN are available for general-purpose I/O. We are using one of these, INITN, for our output XEN.

[16-OCT-19] We are able to persuade the compiler to retain our ring oscillator only if we disable the ring oscillator for some fraction of the time. So we turn it on and off with RCK and route it to TP1 directly on No1. The ring oscillator runs 50% of the time. Current consumption is 5.2 mA. The ring oscillator output has period 8.5 ns, frequency 118 MHz. Instead of running the ring oscillator directly to TP1 we run TCK to TP1 and RCK to TP2. We see TCK with period 201 ns. Current consumption 750 μA. Of this, 150 μA is present without the ring oscillator, so the oscillator consumes 600 μA for 50% of the time, the equivalent of 1200 μA for 118 MHz continuously, or 10 μA/MHz, which compares well to the 11 μA/MHz we observed with the A3030 oscillator.

[05-NOV-19] We calibrate the ring oscillator on No2, one of the circuits that is always on. We have not calibrated its RF center frequency. The transmit clock period (TCK period) is 190 ns, which is on the edge of being too low. But we receive acknowledgements from the device. We study the battery monitor, which consists of U3-2, R1, R2, and C4. When we assert BT, U3-2 turns on, charging C4 (1 μF) through R1 (8 kΩ), with R2 (33 kΩ) present to limit the voltage we attain at BTV, and to discharge C4 between measurements. Eventually BTV reaches the threshold of the Schmitt trigger input on U8-D5, which we have set to have "small" hysteresis. We measure the charging time in RCK periods, which are 30.5 μs. The charging time constant is 6.4 ms, or 200 periods. The A3036A returns the charge time in the data of an auxilliary message on channel 15. We vary VB and transmit battery commands to No2 and plot the charge time versus voltage.

Figure: Capacitor Charge Time versus Battery Voltage. The charge time is the number of 32.768 kHz periods it takes to charge C2 to the logic threshold of roughly 1.5 V. The device does not transmit for VB ≤ 2.5 V.

We prepare ISL Controller Tool 6.1, which supports the A3036A battery measurement. We are able to measure the battery voltage with better than ±0.5 V precision around the critical region of 3.6-3.8 V.

[08-NOV-19] We take No2 and remove the wire between 3VA and 3VB. We see 3VB at 0.2 V and 1V2 at 0.0 V. Current consumption from VB is 8.7 μA. We connect 3VB to VB with 1 kΩ using the pins of P1 and P3. We apply 3.3 V to VB. We see 2.3 mV across the 1 kΩ, implying that U8's I/O circuits, U9's shutdown current, and U2's enable input current are together 2.3 μA. We find we can program the board with the 1 kΩ VB to 3VB series resistor in place. When we turn on the lamp, TP2 is asserted and we see 360 mV across our 1 kΩ resistor, which is the current flowing through the 1 kΩ and R13 (8 kΩ). With the lamp off, the total current consumption from VB is 213 μA. The Lattice Diamond power calculators says the core current consumption of U8 when the band-gaps are turned off is 60 μA, which was what our A3030 circuits consumed with almost identical firmware.

We install the Lattice Diamond 3.11.0. We were previously using 2.2.0. In both cases, we select the LSE synthesis tool. We re-create the P3036 firmware for LD3.11 and compile. Total current consumption 220 μA, command reception and acknowledgement working. With fck_divisor = 11 we get TCK period 188 ns, implying ring oscillator 117 MHz. With fck_divisor = 12 we get 220 ns, implying ring frequency 109 MHz. We have some work to do stabilizing the ring oscillator with respect to fck_divisor.

We are using Lattice Diamond Programmer 3.9.0. We discover the TCK Divisor setting. Programming is unreliable with the divisor set to 1. With the divisor set to 2, scanning and programming works every time, but takes twice as long: 123 seconds. Current consumption of No2 remains 224 μA. In order to free up U8 pins A4, B4, A5, and C5 for general-purpose I/O, we have disabled the JTACK interface by default. We now enable the JTAG interface and program again. We remove R1 because BT (TDO) is HI. Current consumption 218 μA.

We turn on the RF oscillator continuously, at the LO frequency. With frequency_low = 7, the center frequency is 909.5 MHz, and with frequency_low = 8, center is at 915.5 MHz. We set frequency_step = 2 and frequency_low = 7 and obtain reception of acknowledgements.

We route the BTV logic signal to TP1. This signal is the voltage BTV at U3-1 passed through U8-D5's Schmitt trigger input. Let's call it BTVL. We look at BT, BTV, and BTVL during a battery test for No1. Battery voltage is 3.58 V. Acknowledgments are turned off, so the only response of the device is the battery message.

Figure:BTV (yellow, 500 mV/div), BT (blue, 2 V/div), and BTVL (red, 2 V/div) During Battery Test, No1. Charge time is 4.68 ms according to the cursors.

We are not receiving acknowledgements from No1. The TCK period is correct, but we have not checked the RF center frequency. We don't have its report of the charge time in RCK periods. But we expect from our earlier calibration that this will be around 120 periods, or 3.66 ms, which is not consistent with the above measurement. The above measurement was performed with this same circuit, but acknowledgments were enabled. We repeat for No2.

Figure:BTV (yellow, 500 mV/div), BT (blue, 2 V/div), and BTVL (red, 2 V/div) During Battery Test, No2. Charge time is 5.16 ms according to the cursors.

We do receive acknowledgements from No2, and it says 172 every time, or 5.25 ms, which is consistent with the the above observation.

[20-NOV-19] The A3036AV1 is loaded with the SMS7621079LF, which turns out to be the wrong member of the family. This diode is designed to measure power from a 50-Ω source. We need the SMS7630079LF, which is the zero-biase detector diode with video resistance 5 kΩ. We order these. In the meantime, we supply 10 dBm of RF power to an A3015C loop antenna and place an A3036AV1 on top. Matching network resonance is at 1000 MHz. We add 0.5 pF in parallel with C6 and resonance drops to 920 MHz.