Announcement

Collapse
No announcement yet.

Tinkerer's ( and others ) FPGA backend processor

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    http://www.geotech1.com/forums/showp...4&postcount=38

    At the post above, there are a series of scope pictures.

    The no target picture includes a GROUND RESPONSE.

    The sampling window covers a time span of about 10uS.

    To look at this scope screen to read the target response is of course not possible in the field. However, it would be very useful if one could look at the scope screen to do the initial tuning of the ground balance. Once the initial tuning is done, the automatic tracking will update the ground balance as the ground keeps changing.

    Another interesting feature could be the choice of target sampling points.

    As I understand it, and I may be wrong, to take many samples and to process them and to filter them and to compare, add, subtract
    and manipulate the output into an indication that the detector operator can easily understand, takes a considerable amount of time with a MCU, that does all operations in sequence.

    so we take as few samples as possible to get a fast response.

    To be continued...

    Tinkerer

    Comment


    • #17
      Originally posted by moodz View Post
      [ATTACH]11592[/ATTACH]
      Nice!
      Attached Files

      Comment


      • #18
        Originally posted by Tinkerer View Post
        http://www.geotech1.com/forums/showp...4&postcount=38

        At the post above, there are a series of scope pictures.

        The no target picture includes a GROUND RESPONSE.

        The sampling window covers a time span of about 10uS.

        >>>> I will need a faster ADC

        To look at this scope screen to read the target response is of course not possible in the field. However, it would be very useful if one could look at the scope screen to do the initial tuning of the ground balance. Once the initial tuning is done, the automatic tracking will update the ground balance as the ground keeps changing.

        >>>>> The intention of the scope is to allow this and also for calibration of coils and experimentation in the field without the inconvenience of a dragging a real scope around. There are too many lab detector designs ... works well in lab ... not in field. The scope function is only a visualisation of the sampled data which the machine has to do anyway.

        Another interesting feature could be the choice of target sampling points.

        >>>>>> easily doable ... however the intention of the ADC is to sample at all points and do math on the waveform as a whole.
        eg .... GOLD_NUGGET_WAVEFORM minus NO_TARGET_WAVEFORM = RESULT. This a standard mathematical technique .... instead of processing individual samples ... groups of samples ( vectors ) may be manipulated in the same way. The samples that do not change get discarded or used as reference points ... we keep all the ones that change. Let us consider sample t in a sample vector where the number of samples is fixed ( eg 100 )... we can classify the sample for time domain analysis whether it moves up / down (amplitude) or left / right ( delay ) and by how much. We do this for each sample in the vector and we end up with a 'signature' vector.

        As I understand it, and I may be wrong, to take many samples and to process them and to filter them and to compare, add, subtract
        and manipulate the output into an indication that the detector operator can easily understand, takes a considerable amount of time with a MCU, that does all operations in sequence.

        >>>> FPGA can do maths as samples come in ... much more efficient than microcontrolller. I already do math in real time to samples to centre the trace line and 2's complement each digital sample value ( ie +/- samples ).
        This is no problem.

        so we take as few samples as possible to get a fast response.

        >>>> FPGA can take all the samples and still get fast response.

        To be continued...

        Tinkerer
        Tinkerer ... comments above.

        Comment


        • #19
          Originally posted by Tinkerer View Post
          http://www.geotech1.com/forums/showp...4&postcount=38

          At the post above, there are a series of scope pictures.

          The no target picture includes a GROUND RESPONSE.

          The sampling window covers a time span of about 10uS.

          To look at this scope screen to read the target response is of course not possible in the field. However, it would be very useful if one could look at the scope screen to do the initial tuning of the ground balance. Once the initial tuning is done, the automatic tracking will update the ground balance as the ground keeps changing.

          Another interesting feature could be the choice of target sampling points.

          As I understand it, and I may be wrong, to take many samples and to process them and to filter them and to compare, add, subtract
          and manipulate the output into an indication that the detector operator can easily understand, takes a considerable amount of time with a MCU, that does all operations in sequence.

          so we take as few samples as possible to get a fast response.

          To be continued...

          Tinkerer
          Sorry, I had an emergency to see to.

          Continuing with the above.

          We take few samples to get a fast response.
          If the FPGA can do parallel processing, it seems we could get more work done in a shorter time.

          Looking at the scope screen with the the signal.
          If we take only one target sample, we can get an indication that there is a target.
          Taking 2 samples we can tell if the target is magnetic or non-magnetic.

          If we take many samples, we can tell the TC of the target.
          Knowing the TC of the target, combined with the magnetic or not characteristics can give us much more information, specially if we have a software that can do the adding, subtracting, comparing etc. of all the samples taken.

          If we take 10 to 20 samples during the time when there is a target and/or ground response existing, we would be able to obtain much much more information about the target than we are getting now.

          How much time do we have available?

          The standard sweep speed of the detector coil is about 1m/S. If the detector indicates the existence of a target 2 or 3cm after the coil center has moved over the target, that is 20 or 30mS

          This is all the time we have available.

          I will continue my musing tomorrow.

          All the best in the meantime.

          Tinkerer

          Comment


          • #20
            Originally posted by moodz View Post
            Tinkerer ... comments above.
            moodz,

            thanks for the comments. FPGA is a whole new world for me. Thanks for your patience explaining the works for me.

            I have spent lots of time looking at the scope screen and how a certain part of the sampling window moves a little bit with the presence of a certain kind of target or a (simulated) ground effect.
            Why does it move at this point in time and not somewhere else?
            Why does it go up here and down here?
            Which way does it change when the target is tilted this way or that way?
            What does this squiggle in the signal shape tell me?
            How can I make it to change the way it moves?
            What happens if I increase the TX time?
            How can I enhance the RX to improve the signal for more sensitivity?

            There are virtually thousands of questions that I asked and looked for answers. In time I got a certain amount of control over the signal behavior and an intuitive knowledge of the why's and how's.

            The signal is speaking to me and I understand what is saying.

            The big problem is, how do I convert this knowledge into a form that other people can understand. Easily. In the field?

            It looks that FPGA is the platform that can do it. It seems that if I can convey my knowledge to you, you will be able to build and program the FPGA platform to do and control all these things.

            This is a very exciting prospect.

            All the best

            Tinkerer

            Comment


            • #21
              Just a quick update ... the ADC front end is now dual channel however only one display on the screen. The front end will be used in differential mode for robust noise immunity and increased sensitivity. I am going to stick with the 14 bit ADCs for the moment and see how they go with the Tinkerer front end and the Moodz differential ZPI.

              The Spartan 3E board packs a digitally programmable gain amp ahead of the ADC and the code for this is working nicely after some initial problems ( data clock for gain settings too fast )

              Here is the so called 'bit' file.plasma_3e.bit.zip This is the image file that programs the FPGA. ( not a source code !! ) For those people with a Digilent Spartan 3E 500 Starter Kit and Impact programming software you will be able to load up the board and see the PIScope in action by plugging a VGA monitor to the VGA port and the boot loader for the PlasmaMIPs CPU on the 1st serial port .. 115.2 Kbit/sec required. Note this is a proof of concept ... still more stuff to do ... the scope really works and the bootloader too.

              Next I will get the rotary encoder / LCD and TX waveform generator .... now where did I put those m******b pulse timings ....

              Moodz

              Comment


              • #22
                toolchain script for building assembler / compiler / linker / debugger

                Below is the script to build the cross compiler and tools for the PLASMIP processsor used in the PISCOPE backend. This was tested on Fedora Linux 64 bit ... but other types should work OK. If you are a windoze user then you might consider using Cygwin , VirtualBox or a liveCD distro.

                The following executables should be generated .....

                mips-elf-addr2line mips-elf-gcc-4.0.2 mips-elf-ld mips-elf-run
                mips-elf-ar mips-elf-gccbug mips-elf-nm mips-elf-size
                mips-elf-as mips-elf-gcov mips-elf-objcopy mips-elf-strings
                mips-elf-c++filt mips-elf-gdb mips-elf-objdump mips-elf-strip
                mips-elf-cpp mips-elf-gdbtui mips-elf-ranlib tclsh8.4
                mips-elf-gcc mips-elf-insight mips-elf-readelf wish8.4


                #######The Scriptum ... Haqued by Moodz le Haquer 2010##############
                #######Released under GPL#######################################

                #!/bin/bash
                GCC_VER="gcc-4.0.2"
                BINUTILS_VER="binutils-2.16.1"
                GDB_VER="gdb-6.6"
                INSIGHT_VER="insight-6.6"
                TARGET="mips"
                INSTALL_DIR=$HOME/mips_toolchain


                CFLAGS="-g -O2 -mabi=32"
                ASFLAGS=$CFLAGS


                export PATH=$PATH:$INSTALL_DIR
                rm -fr $INSTALL_DIR/*
                mkdir $INSTALL_DIR/build
                mkdir $INSTALL_DIR/src

                cd $INSTALL_DIR/src
                echo Downloading $BINUTILS_VER
                wget http://ftp.gnu.org/pub/gnu/binutils/...LS_VER.tar.bz2
                echo Uncompressing $BINUTILS_VER
                tar xvfj $BINUTILS_VER.tar.bz2 > /dev/null
                mv $BINUTILS_VER $INSTALL_DIR/build/$BINUTILS_VER

                cd $INSTALL_DIR/build/$BINUTILS_VER
                ./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
                make
                make install

                #the mips binutils now created so export the mips-elf bin path
                export PATH=$PATH:$INSTALL_DIR/bin

                cd $INSTALL_DIR/src
                echo Downloading $GCC_VER
                wget http://ftp.gnu.org/pub/gnu/gcc/$GCC_...CC_VER.tar.bz2

                echo Uncompressing $GCC_VER
                tar xvfj $GCC_VER.tar.bz2 > /dev/null
                mv $GCC_VER $INSTALL_DIR/build/$GCC_VER

                cd $INSTALL_DIR/build
                ./$GCC_VER/configure --prefix=$INSTALL_DIR --target=$TARGET-elf --enable-languages=c
                make
                make install

                cd $INSTALL_DIR/src
                echo Downloading $GDB_VER
                wget http://ftp.gnu.org/pub/gnu/gdb/$GDB_VER.tar.bz2

                echo Uncompressing gdb
                tar xvfj $GDB_VER.tar.bz2 > /dev/null
                mv $GDB_VER $INSTALL_DIR/build/$GDB_VER

                cd $INSTALL_DIR/build/$GDB_VER
                ./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
                make
                make install

                cd $INSTALL_DIR/src
                echo Downloading $INSIGHT_VER
                wget http://mirrors.kernel.org/sources.re...HT_VER.tar.bz2

                echo Uncompressing insight-gdb
                tar xvfj $INSIGHT_VER.tar.bz2 > /dev/null
                mv $INSIGHT_VER $INSTALL_DIR/build/$INSIGHT_VER

                cd $INSTALL_DIR/build/$INSIGHT_VER
                ./configure --prefix=$INSTALL_DIR --target=$TARGET-elf
                make
                make install

                cd $HOME
                tar -zcvf mips_toolchain.tgz ./mips_toolchain


                Moodz

                Comment


                • #23
                  T&O ( Tinkerer and Others ) So you want to play too ?

                  Resources for getting involved in this project.

                  Hardware Base : Digilent Xilinx S3E500 Starter Kit : Available @ digilentinc.com
                  FPGA SOC design : PLASMIP CPU : Available @ opencores.org
                  Compiler / linker / assem : GCC : Available @ gnu.org
                  Real time OS and tools : Simple OS for controlling the box : Available @ opencores.org

                  Your time : Learn , build , use , improve : Available @ yourself.com

                  Comment


                  • #24
                    Originally posted by moodz View Post
                    Just a quick update ... the ADC front end is now dual channel however only one display on the screen. The front end will be used in differential mode for robust noise immunity and increased sensitivity. I am going to stick with the 14 bit ADCs for the moment and see how they go with the Tinkerer front end and the Moodz differential ZPI.

                    The Spartan 3E board packs a digitally programmable gain amp ahead of the ADC and the code for this is working nicely after some initial problems ( data clock for gain settings too fast )

                    Here is the so called 'bit' file.[ATTACH]11606[/ATTACH] This is the image file that programs the FPGA. ( not a source code !! ) For those people with a Digilent Spartan 3E 500 Starter Kit and Impact programming software you will be able to load up the board and see the PIScope in action by plugging a VGA monitor to the VGA port and the boot loader for the PlasmaMIPs CPU on the 1st serial port .. 115.2 Kbit/sec required. Note this is a proof of concept ... still more stuff to do ... the scope really works and the bootloader too.

                    Next I will get the rotary encoder / LCD and TX waveform generator .... now where did I put those m******b pulse timings ....

                    Moodz
                    Moodz,

                    great job.

                    do you have a last version the Moodz differential ZPI? I would like to build it and do some tests.

                    Tinkerer

                    Comment


                    • #25
                      Originally posted by Tinkerer View Post
                      Moodz,

                      great job.

                      do you have a last version the Moodz differential ZPI? I would like to build it and do some tests.

                      Tinkerer
                      [IMG]file:///tmp/moz-screenshot-1.png[/IMG]
                      Hi Tinkerer ... the ZPI01 is the latest version but I will be throwing everything away past the clamping diodes and replace with PISCOPE backend. The coil is the essential part of the ZPI.

                      Click image for larger version

Name:	zpi01.jpg
Views:	1
Size:	140.4 KB
ID:	325387

                      I have added waveform highlight functionality to the scope display. The width and position and color are settable by the CPU .....

                      Click image for larger version

Name:	hotspot.jpg
Views:	1
Size:	148.5 KB
ID:	325389

                      and what is a scope without a frequency counter .... Added one in to achieve two things .... first the LCD is now working but not talking to main PLASMIP cpu yet ( soon ) and two .. the frequency counter is very handy for snooping all the timings inside the FPGA . The frequency counter is good to nearly 300 Mhz at 1 Hz accuracy.

                      use code like this clk <= lcd_frequency;

                      which is HDL for "connect the clock signal to the input of the frequency counter".
                      Good thing I did this as the ADC was only sampling at 735.294 Khz as shown in Photo and it should have been more like 1.8 Msps x 2 14 bit samples ( there is an SMA connector but I did not change the text ).

                      Click image for larger version

Name:	freq.jpg
Views:	1
Size:	144.5 KB
ID:	325388

                      Moodz

                      Comment


                      • #26
                        Manipulating the TX pulse

                        Thickness response test March 17, 2010

                        The purpose of the test is to see if a certain method of TX, can increase the response of thicker targets.
                        With traditional PI technology, the TX pulse generates mostly skin eddy currents in the target.
                        This works great with thin targets, like foil, that give maximum response for maximum surface exposed to the magnetic field of the coil.
                        Manipulating the TX pulses and multiple sampling can change the way a target responds, or the way we perceive it.
                        Parameters:
                        The coil diameter is 440mm, the coil itself is not shielded, but a disk shield nearly of the same diameter of the coil is placed below and above the coil.
                        The coil cable is 2 meters of 8 solid AWG 22 wires with a metalized polyester foil shield
                        Target distance above the coil…………………………….60mm
                        Total signal amplification……………….gain 45. This corresponds to a signal amplitude at the input of the preamp of about 44uV for the 0.1mm target and a signal amplitude of about 1mV for the largest target.
                        Pulses per second……………………………..1470
                        Samples taken………………………..3
                        Time of the samples taken at………6uS, 16uS, 42uS after TX switch OFF
                        Duration of the samples…………..8uS
                        The targets are approached to the center of the coil, on the end of a wooden stick, 60cm long.
                        The targets consist of copper disks with a diameter of about 20mm and of thickness varying from 0.1mm, 0.5mm, 1mm, 3.3mm, 9.2mm, 20mm, 28mm, 40mm.
                        The target with about 0.1mm thickness is only barely detected with 2mV signal. It is cut out of a single side PCB board.
                        Target signal response:
                        0.1mm ) = 2mV
                        0.5mm ) =20mV
                        1mm ) =10mV
                        3.3mm ) =14mV
                        9.3mm )=20mV
                        20mm )=25mV
                        28mm )=35mV
                        40mm)=45mV
                        All targets together, with distance between the targets as shown in photo, placed over the center of the coil 150mV.

                        The last test response, with all the samples together, is the biggest surprise.

                        It would be interesting to see comparative tests made with different detectors.
                        Tinkerer
                        Attached Files

                        Comment


                        • #27
                          Questions and comments .....

                          Originally posted by Tinkerer View Post
                          Thickness response test March 17, 2010

                          The purpose of the test is to see if a certain method of TX, can increase the response of thicker targets.
                          With traditional PI technology, the TX pulse generates mostly skin eddy currents in the target.
                          This works great with thin targets, like foil, that give maximum response for maximum surface exposed to the magnetic field of the coil.
                          Manipulating the TX pulses and multiple sampling can change the way a target responds, or the way we perceive it.
                          Parameters:
                          The coil diameter is 440mm, the coil itself is not shielded, but a disk shield nearly of the same diameter of the coil is placed below and above the coil.
                          Q. is the shield highly conductive and very thin ?

                          The coil cable is 2 meters of 8 solid AWG 22 wires with a metalized polyester foil shield
                          Target distance above the coil…………………………….60mm
                          Total signal amplification……………….gain 45. This corresponds to a signal amplitude at the input of the preamp of about 44uV for the 0.1mm target and a signal amplitude of about 1mV for the largest target.
                          Pulses per second……………………………..1470
                          COMMENT : that is quite high.
                          Samples taken………………………..3
                          Time of the samples taken at………6uS, 16uS, 42uS after TX switch OFF
                          COMMENT : your coil is very fast ? ... you first sample at 6uS.
                          Duration of the samples…………..8uS
                          The targets are approached to the center of the coil, on the end of a wooden stick, 60cm long.
                          The targets consist of copper disks with a diameter of about 20mm and of thickness varying from 0.1mm, 0.5mm, 1mm, 3.3mm, 9.2mm, 20mm, 28mm, 40mm.
                          The target with about 0.1mm thickness is only barely detected with 2mV signal. It is cut out of a single side PCB board.
                          Target signal response:
                          0.1mm ) = 2mV
                          0.5mm ) =20mV
                          1mm ) =10mV
                          3.3mm ) =14mV
                          9.3mm )=20mV
                          20mm )=25mV
                          28mm )=35mV
                          40mm)=45mV
                          All targets together, with distance between the targets as shown in photo, placed over the center of the coil 150mV.

                          The last test response, with all the samples together, is the biggest surprise.

                          It would be interesting to see comparative tests made with different detectors.
                          Tinkerer
                          Thanks for the information TInkerer ... I think I can duplicate the results I can set the PGA ( programmable gain amp) in the backend to
                          001 Gain = 1
                          010 Gain = 2
                          011 Gain = 5
                          100 Gain = 10
                          101 Gain = 20
                          110 Gain = 50
                          111 Gain = 100
                          There are two independant amps to the two ADC inputs.
                          These form a differential input in the digital domain to the DSP section in the FPGA.
                          ie Result = ADC1 - ADC2
                          The sample rate is 1.470585 MSPS
                          If the gain is set to 100 the full scale input to each ADC input is +/- 12.5 mV
                          This corresponds to resolution of approx 3uV in theory after processing this will be considerably better. ( due to effective oversampling and noise filtering )
                          The aquisition time is about 700nS for each sample.
                          The TX repetition rate is easily doable ... you dont mention the TX pulse length ... is this special for the descrim function ??

                          What about ground and earth field cancellation ... what do you propose here .. will it affect your tests.

                          Lastly are you in a position to aquire one of these boards ... I can send you the ROM code and how to program it for you to play with. The programming software is free and runs on windows or linux.

                          The code is nearly ready for basic testing. ( one or two weeks ... fingers crossed. )

                          Regards,

                          Moodz

                          Comment


                          • #28
                            Moodz,

                            thanks for the feedback.

                            Here are some answers:
                            Q. is the shield highly conductive and very thin ?
                            The coil is only in the makeshift stage. Once I am satisfied that I do not want any further changes I will properly shield and encapsulate it.
                            I have made good experience with graphite composition shielding, that I can apply such as to be more or less conductive.

                            This coil has separate TX and RX windings. The RX winding is center tapped and feeds into a differential input preamp.

                            COMMENT : that is quite high.

                            The pulse repetition rate can be varied at will.
                            High pulse repetition rate gives the possibility to reduce noise with averaging for better S/N, and still enables fast response.
                            The disadvantage is of course higher power consumption.

                            The total power consumption out of the battery, for the above test is still below 1A at 15V. This includes a large percentage of power loss in the very inefficient power supply.

                            COMMENT : your coil is very fast ? ... you first sample at 6uS.

                            I can sample earlier than that.

                            In this instance, I have taken 3 samples only. The coil is static, sitting on a few red clay bricks that give a magnetic response. In the floor, below the bricks, there is a Re-bar mesh, this is why I need to elevate the coil from the floor.
                            This setup simulated a fairly aggressive ground, but it is static not like real life aggressive ground in the field, that is highly variable and ever changing.

                            The TINKERERS_V1 has a tracking Ground Balance that was not used in this test. For the GB I take several samples.

                            For target identification, the time window of most interest is the 50 or so first uS after switch off. With 4 target samples and 4 ground samples I get FE discrimination and Ground Balance.

                            Taking more samples will also give further information about the TC of the target, tell if it is a small surface area target or if it is a large surface area target.

                            For testing purpose I would like to take about 50 samples during the first 50uS. Once these have been thoroughly analysed, probably about 15 out of the 50 will give all the information we want.

                            There is a lot that I need to learn about the ADC.
                            One of these things is the dynamic range. I think we need an automatic gain control in the amplifier before the ADC to get the dynamic range needed for high sensitivity and not getting saturation for large targets.

                            The minimal signal amplitude will depend on the minimum noise level at the input of the preamp. This in turn will depend a lot on the coil, shielding, and cable. I still have a lot of work to do on that end and a lot of learning.

                            TX pulse?
                            There is a relationship between coil TC, TX pulse duration and target TC. Any change in one factor will change all factors. Once the functions are understood, then the best combinations can be calculated to fit the means at hand.
                            The manipulated TX for the above test used a bipolar TX of rectangular voltage form. Further information is proprietary.

                            I can buy a FPGA board to do testing. It will take some time, because the shipping takes a long time and is very expensive by courier.

                            All the best

                            Tinkerer

                            Comment


                            • #29
                              Discriminating thin ferrous targets

                              Thin, very rusty scraps of cans litter many places where gold nuggets or relics could be found.
                              These scraps are a bit difficult to differentiate from non magnetic metals.
                              In the endeavor to find a solution to this problem I made some tests with targets that can represent the trash found in the field.

                              The targets are 3 steel disks of 30mm diameter.

                              One disk is new and still painted
                              The other disk I burned the paint off, then gave it a rinse in muriatic acid and then packed it into a wet paper towel with some salt, to speed up the rusting.
                              The third disk is very rusty. not much steel is left. At some places there are holes rusted through, where one can see light through the disk.

                              For this test I used the same setup, coil etc. as for the thickness test where I used copper targets above.
                              This setup is optimized for exciting eddy currents in the core of thick targets.

                              This steel scraps respond better to a TX pulse that is optimized for generating skin effect eddy currents.

                              I will repeat the tests when I have a setup that is optimized for that.

                              http://www.geotech1.com/forums/showp...5&postcount=26

                              The following is the test with steel disks, new, rusty and very rusty. The same setup as above has been used. No tweaking.

                              Steel disk. New with paint

                              Flat = negative 5mV
                              45 degrees = negative 4mV
                              90 degrees= positive 25mV

                              Steel disk, very rusty, some see through holes

                              Flat = negative 3mV
                              45 degrees = positive 2mV
                              90 degrees = positive 13mV

                              Steel disk, rusty, bent 90 degrees

                              Lying on half bent = positive 7mV
                              Vertical = positive 25mV

                              Steel can of beans of 450ml full, at 50cm
                              Flat = positive 2mV, Vertical = negative 2mV

                              Aluminium soda can of 355ml, empty, at 50cm
                              Flat negative =3mV Vertical negative = 3mV

                              With tweaking the magnetic response and using a TX pulse that is optimized for thin targets , the results can be improved.

                              So I will tweak and then show the tweaked results.

                              I hope the use of the FPGA will make it possible to have the choice of several different TX pulse methods that will make it possible to obtain much more information about the buried target, thus saving a lot of unnecessary digging.

                              Tinkerer

                              Comment


                              • #30
                                progress report

                                After some time off for the easter holidays here ... more code bashing on the TMPI ( tinkerer / moodz PI ) is getting somewhere.
                                The differential ADC capture is now fully functional with a 3.5 pF input capacitance.
                                The GPX4500 has 5 input channels .... the TMPI has 512 channels. The gain of each channel can be varied digitally from 1 to 100 or blanked. The output "flatness" at max gain of 100 across all channels is 4.7 uVolts. Each channel is the digital equivalent of the conventional sample and hold / demod / integrator found in conventional PI circuitry.
                                Input is dual differential ( ie two ADCs ) and the TX drive can also drive differential switching. The interface will work with Mono, IB, Differential Coils.
                                All channels are simultaneously available for processing thanks to Xilinx dual port RAM blocks in the FPGA. ( ie you can read AND write the ram at the same address at the same time )
                                The noise output of each channel at max gain / input grounded is better than 3 uV
                                The default TX / RX window is 512 uS.
                                The TX pulse is stored in a small RAM block in the FPGA and is locked to the RX waveform sampler. This means that any duty cycle / pulse repetition waveform can be generated by loading the RAM with a TX 'Pattern' . The input channels sample across the TX flyback and RX windows. The default clock for the TX / RX sync is 100Mhz ... 10 ns resolution. Each ADC channel aquisition time is a minimum of 67 nS.

                                Things to do ... build the tinkerer front end. Code the menu etc ...

                                Comment

                                Working...
                                X