Data acquisition: 32-bit parallel data to PC over Ethernet - Page 1
Forum section: electronics / beginners

author: Dav1
author_rank: Newbie
timestamp: March 11, 2023, 09:22:30 pm
content: Hello everyone,I’m a long-time lurker, first time poster here and I would like to ask you all for some advice, guidance, and help with a data acquisition system I am trying to put together.I have a piece of measurement equipment that produces a 5 V TTL, 32-bit wide parallel data output provided via a ribbon cable and a separate trigger signal that tells the data acquisition system when to read the data. The trigger pulses are produced randomly as the measurement progresses and can reach a maximum rate of 4 MHz for 16 MB/s data rate. Originally the machine came with a Sun computer-based acquisition system that recorded and further processed the data.Over the years the system broke and was replaced with a solution which composed of a small PCB that simply served as an adapter from the ribbon cable to a D-Sub cable which then was connected to a data acquisition PCI card in a Windows PC that then saved the data to the hard drive. The data could then be processed at a later time which was also more beneficial to us. The intermediate board also contained some 74 logic to invert some bits, rearrange others, and shape the trigger pulse to work with the new acquisition card.Now, I have an idea to upgrade the system and ditch the use of PCI. I would like to use an Ethernet connection and a dedicated LAN setup to connect the machine and send the packeted data to my PC connected to that network. The PC would then run a custom program that would read the data packets coming from that machine and save the binary data to a file.However, I have very little experience with networking outside of serial especially dedicated Ethernet setups especially at this scale. I previously used Arduinos with an Ethernet controller connected via an SPI interface to access sensor data.So, in essence I'm looking for a solution, a controller chip, a series of chips, etc that would read the 32-bit parallel data word at the trigger, buffer it, serialise it, and send it over the Ethernet to a computer. I'm also trying to avoid using FPGAs so if there needs to be any control of the setup an Arduino could be used for that.Please let me know or give me ideas about an Ethernet interface I could use or let me know if this is a totally wrong idea and you might have a better solution or communication method that could transfer the data to a PC without using a PCI interface.

author: dobsonr741
author_rank: Frequent Contributor
timestamp: March 12, 2023, 01:05:19 am
content: What distance and what latency requirements do you have? Greatly influences the choices. For example, can you pack 2000 samples into a jumbo packet and incur 10 ms latency?Furthermore, if it's indeed an Ethernet: do you want point to point ethernet cable connection or perhaps do you want to route it through/mix the traffic on a shared backbone?Industrial Ethernet based field bus solutions exist, but not sure the complexity is in line with what you need, or can afford, based on the details you shared so far.A bit old-ish comparison of Ethernet fieldbuses:https://www.manufacturingtomorrow.com/article/2016/05/5-real-time-ethernet-based-fieldbuses-compared/8044My favorite is EtherCAT. Again, devil is in your additional details.

author: pcprogrammer
author_rank: Super Contributor
timestamp: March 12, 2023, 07:44:10 am
content: Hello Dav1,welcome to the forum.An interesting problem you have here. Unfortunately the bit rate makes this not so simple. You need 32bits with a maximum sample rate of 4MSa/s. This means 128Mbits/s. With protocol overhead this means gigabit Ethernet.For modern microcontrollers you would have to convert the TTL signals to what suits the microcontroller. A lot of them work on 3.3V. There are plenty of ic's that can do this so not a huge problem.A bit of a problem is that there are no microcontrollers with gigabit Ethernet support for as far as I know of, so a single board computer solution comes to mind.Maybe a Raspberry PI 4 or similar can be used to get this done, but requires not only converting the 5V TTL signals to something the PI can handle but also extend the number of inputs, because it only has 26 GPIO.But the issue dobsonr741 mentioned is of importance for getting to a solution. Can there be latency, but also you mention a maximum of 4MHz, does this means the rate is variable and if so is this part of the information needed on the processing system, or does it have to be controlled from the processing system.Another option could be USB. It might be possible with USB2 high speed to stream the data to a PC. USB3 would do the trick for sure. You could look into some logic analyzer systems that are on the market. This could solve your problem with a commercial solution.

author: Nominal Animal
author_rank: Super Contributor
timestamp: March 12, 2023, 11:29:32 pm
content: I would use USB 2.0 (480 Mbit/s) and a Teensy 4.1 with a carrier board having sixTI ISO6760-Q1isolators for both level shifting and signal isolation. (On the data acquisition side, you'd provide the 32 data bits, the data valid strobe, ground, and a 5V – or whatever voltage is used for the data and strobe lines – at about 50mA max.) Aside from having standard 0.1" pin spacings for the Teensy 4.1, it would also have perhaps a staggered pinout for the ribbon cables; the isolators are trivial, straight off the datasheet, and only need a dozen 0.1µF supply bypass capacitors, two per each isolator. (The components cost about 25€ per board from Mouser,Teensy 4.1 about $32 from PJRC. The carrier board is about 80mm by maybe 40mm, two layers, so in the $2-$5 per five boards class at JLCPCB and PCBWay.)I use EasyEda for these, but KiCAD is a good choice too.Teensy could be connected to any computer, even a small SBC like a Raspberry Pi. On the computer side, the data is a simple USB Serial port, reading the data to disk or streaming over the internet. The isolators mean the computer is not directly connected to the acquisition, although the isolation is capacitive and not magnetic like in Ethernet; ISO6760-Q1 are rated for over 1kV (RMS) continuous ground/reference potential difference.A trivial test case of mine can generate Xorshift64* pseudorandom numbers on Teensy 4.x and provide them over USB Serial at well over 200 Mbit/s (sustained), so that's not a problem.Teensy is programmed in the Arduino environment, using theTeensyduino add-on.It runs at 600 MHz, so the interval at 4 MHz is 150 cycles, and it has 512kB + 512kB (one megabyte total) of RAM, so plenty for temporary buffering if the PC side has a hiccup.To ensure the data is latched at the proper strobe edge, I'd try to use three DMA channels, all triggering on the strobe edge, reading three of the GPIO banks, into a temporary buffer. I haven't done this myself, yet, but it is how e.g. Teensy OctoWS2811 library does it, so itshouldwork. Similarly, if you need a timestamp for each 32-bit input sample/strobe, at something like microsecond resolution, that should be arrangeable too, although it might be better to switch to bulk USB transfers then, to avoid the overhead in USB Serial; and such a timer wraps around once every 71.583 minutes (a bit over an hour).The main loop waits for data to arrive, picks the correct 32 data bits from the three temporary data buffers (four if timestamped), and writes the data to USB Serial (or buffers in USB Bulk transfers), whenever an application has the port open or is ready to receive USB bulk transfers.The bulk transfers are easy on Linux, dunno about Windows.(Teensy 4.1 does have Ethernet, but only 10/100, so not enough bandwidth.)

author: pcprogrammer
author_rank: Super Contributor
timestamp: March 13, 2023, 06:30:11 am
content: Quote from: Nominal Animal on March 12, 2023, 11:29:32 pmYou really love your Teensy's don't you.Reading your posts about them is almost persuading me to buy one.But teasing aside, it sounds like a good solution. To allow for the best speed the isochronous transfer mode is even better, but that requires writing your own drivers on both systems.Not sure if the Arduino way is suitable for such a fairly demanding project. Bare metal C makes the risk of errors less, but that is my personal view on almost every aspect of Arduino software projects.

author: mariush
author_rank: Super Contributor
timestamp: March 13, 2023, 07:28:25 am
content: I would want to investigate how compressible those samples are. Also, for how long, how much time would you log data? And does it have to be transferred in real time?You could have some processor with let's say a bunch of 64 KB ... 512 KB (or maybe even higher sizes) memory buffers, and fill those buffers with 32 bit samples, as soon as one buffer is full with measurements switch to filling another buffer and the controller can use spare cpu cycles to compress the previous buffer and then dump data to a SLC/MLC flash chip or maybe some SDRAM/DDR stick (if the whole data will fit into a few gigabytes of ram)When the logging is done, you can just transfer the data over 10 mbps or higher ethernet or serial or wireless or whatever, as you're not time constrained, you don't have to guarantee 16 MB/s sustained or whatever.

author: pcprogrammer
author_rank: Super Contributor
timestamp: March 13, 2023, 07:55:44 am
content: Good point from mariush. Compression can bring the rate down, but requires time to do it.If there is no need for real time transfer to another system it is also possible to just write the data to a SD card. With 32GB you can store about half an hour uncompressed, and with a 256GB card up to 8 hours. Add compression and maybe more than double that.There are many ways to get to Rome.

author: Nominal Animal
author_rank: Super Contributor
timestamp: March 13, 2023, 08:26:31 am
content: Quote from: pcprogrammer on March 13, 2023, 06:30:11 amDo note how I framed my answer: it's whatIwould do. I have my limitations, and others might have even better suggestions.There aren't that many MCUs with HS USB (480 Mbit/s), and Teensys and Teensyduino just works darn well.STM32 Nucleo boards are large, and AFAIK only have FS (12 Mbit/s).STM32F7 Discovery has three (723E, 746G, 769I) and STM32H7 Discovery one (747I) with USB HS, but they're larger and more expensive than even Teensy 4.1 with 16Mbytes of extra PSRAM + Ethernet Kit. (4.1 already has a microSD slot, using proper SD signaling (CMD, clock, four data lines), so 16 Mbytes/s to a microSD card should not be a problem with a suitable microSD card.)I don't do much interesting stuff electronically, I just interface various SBCs, switches and routers to microcontrollers via USB, for small displays, extra buttons, and such. I kinda-sorta need that HS USB. When others pop up with similar needs, I pipe up. There are lots of people doing stuff on Teensys, see the forum atforum.pjrc.com, now that even Mouser sells them (via SparkFun, not directly from PJRC).On some of the MicroMod Teensies that SparkFun sells there have been some individual pad issues possibly due to flexing (these use M.2 connector for their pins) and SparkFun has been very good at fixing any issues discovered, but the normal Teensy 4.0 and 4.1 are pretty darned rock solid (unless we include butterfingery like shorting output pins to ground when high or to VCC when low, and so on).I'm not affiliated except for being a long-time user, Teensy 3.0 Kickstarter backer, and received one free Teensy 4.1 for helping others at that forum.My first microcontroller project was a Teensy 2.0++ -based Arcade Joystick Birch Plank (sitting on your lap, across chair arms) with a small absolute encoder that switched different keyboard keys that the digital joystick and two arcade buttons generated. For playing SuperTux, and Flash games online.It was so easy to start with, and the AVR and ARM Teensy cores (written by Paul Stoffregen of PJRC) so well written ––go see for yourself–– I got spoiled, and don't really want to deal with STM32Cube et cetera.However:I am waiting for my Ox64 (16Mbit) to arrive, which might be even better for some use cases. It has a Bouffalo Labs BL808 RISC-V SOC, with three cores (64-bit 480MHz RV64 C906, 32-bit 320MHz RV32 E907, 32-bit 150MHz RV32 E902), silly amounts of memory, and so on. I'm not sure how the single-core performance compares to Teensy 4 (which with additional cooling is known to be overclockable to just under a GHz quite reliably), but it is interesting.Quote from: pcprogrammer on March 13, 2023, 06:30:11 amI do do other stuff as well, just look at myprojects at oshwlab.com.But really, I'm much more a HPC and Linux software guy. Anything from kernel innards and drivers upwards, up to web backends and frontends (HTML+CSS+JS and Canvas and/or embedded SVG).I do have considered gettingOlimex iCE40FPGA EVBs for very similar use case as OP, for parallel to serial conversion, and although I do have a EZ-USB FX2LP board for interfacing directly to high-speed USB, I don't think I've got the EE chops to do FPGA-to-ULPI/UTMI USB stack.. so in all cases I'd be interfacing to a high-speed microcontroller anyway.Quote from: pcprogrammer on March 13, 2023, 06:30:11 amSure. I do have a Teensy 4 test case somewhere, which easily sustains 200+ Mbit/s over USB Serial to Linux, though. At such rates, the Linux tty layer starts to slow things down, so using USB bulk transfers you can get even better bandwidth. (I've even run that test case on an Core i5 laptop with multiple Teensies on different USB root ports, so it really is sustained rate per Teensy, in one direction, and not just dummy data but Xorshift64* PRNG sequence, verified.)Quote from: pcprogrammer on March 13, 2023, 06:30:11 amFor a commercial project, sure. But long-term maintained one-offs, I think it is okay.Besides, these bigger MCUs are horribly complicated beasts. There are lots of subsystems in i.MX RT1062 that are available in Teensy, but haven't been explored very well (or those who have, haven't reported back).However, as discussed in the other thread, youcando bare-metal development for Teensy 4.x, because the bootloader is on a separate chip. You just don't have JTAG or debugger access (because it's hardwired to the MKL02 bootloader chip). While I haven't done this myself yet, I am familiar enough with the Teensyduino cores (the Arduino support stuff) that adapting the important parts from there shouldn't be too difficult.Another of my projects is to do my own USB HS isolator (USBISO211, ADUM3166), so I can move the USB isolation boundary to the other side of the Teensy, preferably to the "host" USB port, especially if I could make it asecondUSB device port. I could then hardwire serial port also to my Teensies, so that when I connect a laptop or other machine to one of my Teensies connected to an SBC or router, I automagically get the (buffered!) serial console, and all isolated so no worries about ground loops or such. Single microcontroller connected to two hosts at the same time...The current cheap (<$10) ADUM3160-based isolators off eBay work very well for USB FS (12 Mbit/s, about 1 megabyte per second data payload in practice), but USB HS (480 Mbit/s) is still unreasonably expensive; you can tell them apart based on the HS ones always having a 24 MHz crystal (it's required for USB 2.0 HS). That's also why I suggested isolating the 33 data lines instead for OP; that only costs ~ 25€, and works up to 50 MHz signaling according to the datasheet.I might even add another 2/2 isolator for an UART (1/1 for RX/TX, +1/1 for hardware handshaking, RTS/CTS), since they're cheap, and also handle voltage level conversion (within limits, depending on the isolator), for connecting yet another UART.

author: pcprogrammer
author_rank: Super Contributor
timestamp: March 13, 2023, 09:49:26 am
content: Quote from: Nominal Animal on March 13, 2023, 08:26:31 amHa, you should know me by now. I was just teasing a bit. You skipped that bit of my post.When I shift back to micro's again, a Teensy is on my list for sure. At the moment more into my FischerTechnik. But you are right about the STM32 MCU boards that support HS USB are more expensive and they also, at least the H7, need an external PHY. I do have a H7 based board from Waveshare with all the trimmings, which is very nice, but have not really done a project with it though.Another MCU with a HS USB interface and build in PHY is the Allwinner F1C100s. (Sipeed Lichee Nano) It is an oldie though and not as nice as the MCU on the Teensy. Also not suited for this project due to the lack of IO.About USB bulk transfer, I don't fully know about how it is for HS, but with FS it depends on the host driver if it can sustain the almost full 12Mbit/s. I did a project with a STM32F103 to transfer 16bit ADC readings at 100KSa/s and only got it working properly with isochronous transfer. Wrote the driver for linux and did the USB bit on the STM32F103 in bare metal C. With bulk transfer I got data overruns in the STM32F103, because the driver on linux failed to fetch them in time. The problem has to do with the bulk packet size and the only guaranteed fetch every millisecond. The other fetches are not guaranteed, where as for isochronous transfer they are.For FPGA's I can understand not wanting to do native USB with them. They are fun though for all kinds of projects. Do require additional learning for sure.Quote from: Nominal Animal on March 13, 2023, 08:26:31 amYou seem to be doing rather nice jobs beside this though.My affiliation lies more with the standalone low level stuff of the digital world, even though I know it is actually analog, before someone trips over thatHave worked on all sorts of stuff though, including web stuff and networking. Always picked up new stuff quick enough and earned good money in doing so.Ah well, there is so much fun stuff out there, and so little time to play with it all

author: Nominal Animal
author_rank: Super Contributor
timestamp: March 13, 2023, 11:41:53 am
content: Quote from: pcprogrammer on March 13, 2023, 09:49:26 amOh I do!But, as others read this thread too, I thought it was best to give a bit of a background, so that others can better judge for themselves whether they're thinking along similar lines as I do, or not.Besides, I was actually hoping someone would know how to use and suggestFTDI FT601(PDF datasheet) for this (with the 33 signal lines isolated or level-shifted). Mouser sells the chip for under 10€ in singles, and you only need a 30 MHz crystal oscillator, its caps, some bypass capacitors, and a couple of resistors. It is designed for this kind of FIFO use, and does support 32-bit wide data bus, and supports both USB 2.0 HS and USB 3 SS, with ridiculous burst data rates (400 Mbytes/s claimed). On the plus side, no programming except for the computer software to store the data received via USB: FTDI provides ready-made drivers for Windows, Macs, and Linux.There are members here on this forum who have used FT601, though, and a forum search will find such mentions.

author: pcprogrammer
author_rank: Super Contributor
timestamp: March 13, 2023, 01:57:02 pm
content: Quote from: Nominal Animal on March 13, 2023, 11:41:53 amQuote from: Nominal Animal on March 13, 2023, 11:41:53 amDoes look like a very interesting chip and could provide a solution to the problem. I myself fear the QFN packages a bit. Hand soldering them does not work well for me

author: Dav1
author_rank: Newbie
timestamp: March 13, 2023, 03:55:45 pm
content: Wow thank you everyone for your wonderful insights and recommendations.So let me fill in some blanks in the specs I provided and talk a bit about what I do.I'm a nuclear physicist who just graduated and started working at a university were I upkeep a lot of our acquisition electronics which mostly consist of NIM modules (https://www.ortec-online.com/products/electronics), VME modules (https://www.caen.it/sections/modular-pulse-processing-electronics/), and building PMT based detector arrays and some solid state detectors too. Besides that we have a couple old medical systems like PET and SPECT imaging devices from the 80s-90s that we don't use for that purpose anymore and "hack" them to increase their event acquisition speeds and interface with their serial communication lines to mess with their internal settings here and there. It's a lot of trial and error as we have very little information available from manufactures and service providers but with time my predecessors have reversed engineered and learned a lot about these systems.Anyways it is one of the PET scanners that I'm trying to design this new interface for. Originally, the scanner had a Sun based image acquisition system which was able to read the produced data at these speeds back in the 80s but it never saved it raw (some did but for only a small portion, mostly for diagnostic purposes). Mostly due to the prohibitive cost of memory needed to save so much data for a single image back in those days. It interpreted the 32 bit data word in real time and simply incremented a counter, in bin, in a sinogram, in memory which later would be processed to form a 2D image per slice of the scanner.Now my predecessors simply threw away the Sun computer and read the raw 32 bit data from the scanner to study nuclear decays and track particles with these machines. The 32 bit word contains information on particle energy, interaction position, status flags, etc. The current board reshuffles the bits as they are presented in a weird order on the ribbon cable to just make post-processing them later on easier, avoiding a lot of unnecessary software bit shifting. The status bits were also thrown away and a 5 bit counter was inserted that then gave us a ms accurate time since start of recording which was calculated by the post-processing software after the acquisition was done. The acquisition itself is done by a PCI (not PCIe) card on a Windows Vista PC. Now the PC is on its last leg and building a new PC with a modern motherboard that has an old PCI slot or buying a new PCIe acquisition card is more than £2000 which we don't have for this system. A lot of university money is divided into grants and general funds. If I had a grant for updating this system then I would easily just buy a new PCIe card and PC and call it a day but I can only use general funds so I need to be as cost effective as possible.So, how does all of this translate into data rates? As you can imagine as we study stuff decaying the data rate is directly dependent on the activity of the sample in the system with an upper limit placed by the digital electronics in the scanner being able to process the data. The upper limit for the outgoing 32 bit data is 4 MHz or MSa/s simply due to the electronics processing the events running at that frequency (actually the chips run at a higher frequency but the data transfer between the different stages is done synchronously at 4 MHz). We quite often put samples which produce more interaction events then the scanner can handle so the scanner simply rejects them. I actually only observed output data rate to be about 3.8 MSa/s as there is some event rejections happening during the event processing. So, the observed data rates run from 4-3.8 MSa/s down to 50 kSa/s or even less than 1 kSa/s as the measurement progresses and we stop the recording. The sustained max data rate can last from a few minutes to a few hours at the start and decrease with time. The overall measurement can take from 30 minutes to a maximum of 2 days which again is all dependent on what we are measuring, how quickly it decays, and how radioactive it is at the start. Ideally, the system could record at 4 MSa/s until the computer runs out of hard drive space.The data latency is not that important in the grand scheme of things as it is saved to a file and processed at a later time but I would like to incorporate a sort of "real time" data visualizer when the data is being written to the hard drive. I have already written the visualizer software in C++ OpenGL to do that while reading data from already written files. It only plots a small subset of data to display on the screen in real time at a reasonable frame-rate as visualizing millions of events per second takes quite a bit of processing power especially to process the binary words and then communicate the new positions to the graphics card. So, while small latency is not a problem even up to a few seconds while the buffers fill, doing data compression on the board side is something that I would like to explore but having a visualizer running concurrently would be better in the long run.@dobsonr741I was actually thinking EtherCAT but looking at how expensive some of the industrial systems are I think I will have to do away with the Ethernet idea, unless there is something more cost effective in the Ethernet area. The latency would not be that important and I would be happy to wait for like a 2000 event buffer to fill up first before being transferred in bulk to the PC. It would be ideal to use a shared backbone as I would like to use this sort of setup for other machines we have in the future (nothing this data intensive) and then use a computer per each to record the data. So there would be multiple data streams going on in the background but always a single PC would be reading a single machine and there would be no other traffic besides that. But then thinking about it, running multiple CAT5e or better cables would not be a problem and just connecting a computer directly to each machine might be easier to program and setup.@pcprogrammer and @Nominal AnimalReading everything you wrote about using MCUs for this task actually in the long run makes the most sense, especially with their lower cost and possible re-usability. The control of the scanner is done through a separate RS-232 connection so no commands would be sent over this data connection, the data rate is purely dependent on what the scanner detects and processes and the rest of the data acquisition system needs to adapt to it via the trigger signal indicating data being ready to be read from the ribbon cable. There is no need for a read acknowledge signal to be sent to the scanner here as if the acquisition system is bucked up, the scanner will simply keep presenting new data on the ribbon cable not caring of it was recorded or not.Isolating the data at the ribbon cable is actually very important (I forgot to mention that in the original post) as the detectors in the scanner are powered between 1-1.5 kV DC and every now and then we see it back-feeding to the digital electronics when one of the isolation capacitors breaks. It doesn't seem to hurt anything on the scanner side but the original Sun system did have an isolation unit. Modern PET scanners actually made the system safer in the early 90s by replacing this galvanic ribbon cable connection with a fiber optic connection.Reading your suggestions I think I'll buy a Teensy 4.1 and start experimenting with it. I think @Nominal Animal you read my mind with that timer idea. The current 5 bit, ms counter not only wraps too often but we observe thousands of events between the timer ticks so incorporating a us accurate timer would be a dream come true.@mariushI think the compressability would also be a great idea if it could be done. Since my idea of visualizing the data would not always be used I could write two programs for the Teensy, one for very demanding, long running projects where saving space would be of a great benefit and one where the data would be uncompressed for short acquisitions.@pcprogrammer The SD card idea is also very enticing and it is something I tried doing with an FPGA before but I didn't have the skillset to program or buy the IP for a 4 data lane communication with it so with the Teensy having that functionality it would be a definite possibility. Maybe I could compress and write the data the the SD card and send a small subset of it uncompressed to a computer for visualization... Hmmm.....I just saw your @Nominal Animal post today about the FT601 seems like an interesting solution, I wonder if there is a chip that can fill the FIFO at lower or even asynchronous rates.This gave me a lot to think about now haha

author: mariush
author_rank: Super Contributor
timestamp: March 13, 2023, 05:23:10 pm
content: QuoteJust a comment on this ... You can still buy motherboards with PCI slots today, and you don't have to pay thousands of pounds / dollars etcFor example, if you want something new, $218 gets you this :https://www.newegg.com/intel-d2500hn-mini-itx/p/N82E16813121705It's Intel Innovation D2500HN Desktop Motherboard - a motherboard with soldered dual core Atom processor and native pci slot. Add one or two DDR3 sticks (laptop style so-dimm sticks, supports max 4 GB DDR3 in total) and a regular ATX power supply and you have your computer... the cpu is slow, but probably fast enough to process 16 MB/sWould be short-ish term solution, as you could buy now 3-5 boards and you could keep using pci cards for maybe 10-15 years or more until those motherboards also fail...And if you want something more powerful, you could get for example Asus B550M-C-CSM at $130 :https://www.newegg.com/asus-pro-b550m-c-csm/p/N82E16813119365?Item=N82E16813119365&quicklink=trueCSM is corporate stable model or something like that ... a model with more basic components like plain onboard audio, plain gigabit, but with some guarantee that they'll have this model available for longer time or something like that.You can add a 50-100$ ryzen cpu and some ddr4 and you have a computerNote though that the PCI is added through a pci to pci-e bridge IC which may not be 100% compatible with everything out there. If your pci capture card does some super weird stuff, it may not work well on such modern motherboard.

author: ejeffrey
author_rank: Super Contributor
timestamp: March 13, 2023, 06:41:06 pm
content: If you are looking for something between a complete DIY solution and a GPB 2000 PCIE DAQ card, you might be able to find a USB digital IO card that will do what you want for less. Most of the cheap USB IO boards I have seen are only 16 bit but I found this which looks promising:https://accesio.com/product/usb-dio-32/

author: dobsonr741
author_rank: Frequent Contributor
timestamp: March 13, 2023, 07:51:51 pm
content: Based on the new details a GigE version of the BeagleBone can catch your data at 4MHz. The EDMA can load in RAM and the Gige speed Ethernet over UDP can safely deliver while unmodified kernel/driver in Windows/Linux can consume it. It’s big enough to leave space for expansions later. Platform is well supported, your part is to construct a cape to interface the 32bit wide signal + trigger proper.

author: Dav1
author_rank: Newbie
timestamp: March 13, 2023, 08:52:38 pm
content: Quote from: mariush on March 13, 2023, 05:23:10 pm@mariush you are totally right I was actually eyeing the Asus B550M-C-CSM and a few older Asus CSM boards but the twist here is that I work at a university where we have an IT department and they claim almost everything to do with computers. I have to use our special accounting system to pace orders with preapproved suppliers (thankfully all the major component suppliers like RS, Mouser, Farnell, etc. are on there) and when I try to buy computer replated part like an internal HD, motherboard, CPU even with a pre-approved supplier the order is instantly rejected because I need to open an IT case and fully justify why I want these parts, then these parts have to be approved by some overload, before I can finally order them, and then they have to be installed by an IT technician who makes sure all the uni spyware is installed on the machine. All of this is also because my university has like a signed contract with Lenovo at the moment where they give us a selection of like 6 computers setups (laptops and desktops) and we are pretty much forced to get these. Anything custom takes a few months to get through the paper work by which time the parts get sold out on our pre-approved component sites. I actually crated 3 separate computer parts list to replace this PC but they took so long that these specialised Asus CSM motherboards got sold out everywhere. So, after 3 times I gave up and now I’m trying to find a way to exclude this PC from the mix and get something that you can just connect to any PC witch some custom software and it will start acquiring data. These is a quicker way to get a custom PC by using a custom computer building service/company but they want closer to a 1000 GBP for that machine… I really hate this system but what can I do, when the thing breaks, I'll just dump it on an IT tech desk and tell them to fix it.Sorry about the rant, IT dep is just a pain in my life…Now ordering any specialised, non-PC parts from non-preapproved suppliers is possibles (like I once purchased some FPGA dev boards from waveshare for students) but it also takes like two weeks for our accounting department to place those orders manually. And we have blacklisted sites like we cannot buy anything on Amazon and eBay because someone once was posting items, they bought for cheaper, placed them on sale on these websites, and then made the uni buy them making a small profit and ruining it for everyone else. I can buy the PC parts out of my own money but then I would not be able to claim the money back. Also, the old PCI card is the Adlink PCI-7300a and has features like DMA so it might be incompatible with PCI to PCIe adapters but I'm not sure.Quote from: ejeffrey on March 13, 2023, 06:41:06 pmThank you for the suggestion @ejeffrey I'll defiantly have a look at it. As you said I also did notice that most DAQ cards are only 16 bits, I wonder why that is. I had a quick look through their specifications and I did not see a trigger input unless one of the "clock" inputs can be used with a varying frequency trigger. I'll have a deeper look at it thoughQuote from: dobsonr741 on March 13, 2023, 07:51:51 pm@dobsonr741 I never heard of BeagleBone but it also looks very promising especially if it’s going to be "easy" to program/setup. I'll have a read through their manuals and tutorials, but at the moment it seems the Enhanced version is on pre order only in UK on SanCloud. Thank you for the idea!Wow there really are so many ways to solve this problem...

author: dobsonr741
author_rank: Frequent Contributor
timestamp: March 13, 2023, 09:29:10 pm
content: The particular BeagleBone is the AI-64 I'm thinking of for you:https://www.digikey.com/en/products/detail/beagleboard-by-seeed-studio/102110646/15929655It packs quite a lot of capabilities @ $190. Some might say AI accelerator is not needed, however this boards gets the best price/performance from the family.The real benefit is the PRU subsystem:https://www.ti.com/video/series/pru-training-series.html?keyMatch=PRUor if you prefer a lighter read, this blog explains how to make a 100Msps logic analyzer out of the PRU subsystem:https://theembeddedkitchen.net/beaglelogic-building-a-logic-analyzer-with-the-prus-part-1/449

author: Nominal Animal
author_rank: Super Contributor
timestamp: March 14, 2023, 06:02:05 am
content: Quote from: Dav1 on March 13, 2023, 03:55:45 pmYup; your needs sounded quite familiar to me. My stint in academia was on computational materials physics (including a lot of HPC cluster stuff), but there were some interesting projects like a fusor I participated in for similar stuff as you do now; I was part of an accelerator lab for a while.I've also done some extracurricular work on sensors and detectors myself (at basically zero budget).As dobsonr741 mentioned, the PRU subsystem in BeagleBones (esp. AI-64) is what makes them so interesting. In crude terms, consider them built-in microcontrollers that can interface to the OS at very nice data rates.The details on BeagleBone AI-64 are maintained athttps://git.beagleboard.org/beagleboard/beaglebone-ai-64/. Because it is OSHW - open source hardware, it makes it a very good choice for a Linux-based single-board computer to interface to acquisition hardware. At its core, it has a Texas Instruments TDA4VM "Jacinto" SoC which contains two ARM Cortex-A72 cores, with (4+2, I believe) Cortex-R5F PRU coprocessors.(All this started with TI "Sitara" SoCs around 2008, if you're interested in the history of BeagleBoard/BeagleBones.)If you design the acquisition interface –– the isolators and either a connector or solder-in header for the data acquisition cable –– as a BeagleBoard cape, it is very likely that future versions of BeagleBoards and other similar acquisition hardware interfaces need at most small hardware revisions to the "cape".If this is work you enjoy, it obviously makes for an opportunity to contact others that do similar stuff in other universities, and network. Perhaps create a site for such interfaces to acqusition hardware based on OSHW (the open source part of it being the reason to do this in public, instead of internally), which also definitely does not hurt your CV either. All this assuming you really like this sort of work, and are not too keen on administrative career paths; although if you can rope in interested undergrads to do the grunt work, that might be a possible path also. But do study up on licensing; if necessary, pay a lawyer specialized in licensing who knows about GPL, MIT, BSD licenses, to explain how they work and why. Best money ever spent on a lawyer, if you ask me.Depending on your university or organization, you might be able to find a way for someone else to fund you a few BB AI-64's in the name of OSHW in research. Do consider whether setting up such a project page, with a separateFunding/Thankspage, might help in that. Keep all schematics, board files, and links to FOSS and OSHW used in your projects somewhere there also, and maybe even a short progress blog. Might help with funding and/or administration (to see what is involved in the upkeep). Having expensive hardware unused because of horrible/unreliable interfaces is money lost and research not done.I prefer the microcontroller approach more, simply because of funding. Currently, I fund my experiments from my own private pockets (which are not deep; I have always been utterly shitty at marketing myself, and am broke), which limits me to $20-$30 Teensies and $6 Ox64's and a $50 order of parts from Mouser every couple of months. (Mouserhada small batch of ADUM3166's – USB HS 480 Mbit/s isolator chips – but ran out before my next order.)I habitually use the cheap ADUM3160-based USB (12 Mbit/s) isolators when developing microcontroller stuff, just because it reduces stress: I know that even if I short VCC to GND, all that breaks is maybe that microcontroller; my computer on the other side of the isolator will be safe. I'm not sure I could ever relax with a $175 BeagleBone AI-64.As I am basically at Arduino level myself in electronics (but stupid or courageous enough to design my own boards nevertheless; I did do digital electronics in Uni, but that was basically all theory), I do want to point out that members are very friendly and helpful when asked for advice/criticism/suggestions about schematics and board files in theBeginnerandProjectsforums here, especially for stuff like this. You definitely should own a copy of The Art of Electronics by Horowitz and Hill, too; it's chock full of information you'll find useful on the electronics side.Apologies for the walls of text. I am well known for being overly verbose.

author: Dav1
author_rank: Newbie
timestamp: March 16, 2023, 10:38:51 am
content: Quote from: dobsonr741 on March 13, 2023, 09:29:10 pmQuote from: Nominal Animal on March 14, 2023, 06:02:05 amThank you @dobsonr741 and @Nominal Animal for the details and tutorial links. Yea, I never used anything so advanced before so it will be fun to learn something new.Sorry for a late reply but I had a few very busy days. I think I will purchase both the BeagleBone AI-64 and the Teensy 4.1 and experiment with both of them as I can always find a use for the other one. And it’s always good to gain experience with a new platform.Quote from: Nominal Animal on March 14, 2023, 06:02:05 amOh man, I really do enjoy doing this sort of work especially on a system that I understand, at least on one end, as I find soldering and PCB design quite a relaxing process. And you’re right, I’m not too keen on going the admin way. Too much paper work and extra duties for my likingThat’s a good idea with networking. I know there are only a few institutions around the word that work with old PET scanners at such a deep level as we do and we already have a very good relationship with two of them. I will defiantly end up sharing my journey here on the forum and I’ll try to publish what I can on GitHub but that will be after my group makes a decision on whether we will want to write an article about it or not. Unfortunately, our university is very bad about keeping specialized per department pages up to date, I think my physics department page was last updated in like 2014. I think I could ask for access to update it but then everybody would start coming to me with requests to change things on there, that’s also probably why nobody has dared to touch in 9 years... The main university page does keep a very up to date list of articles published per department and per person so that’s how we advertise our research more or less and then use GitHub or similar for shearing the details. It’s actually a weird system when I think about it. But as a top Professor in my department told me, that in her experience in the UK, when asking for funding in physics what counts the most is the number of publications with your name on them and letters of support from other colleagues and companies.I’m actually scheduled to take a class on the different licenses in a few months but as far as I know whenever we use government funding it usually ends up being MIT or Apache license but yea, I defiantly need more training in that area.Quote from: Nominal Animal on March 14, 2023, 06:02:05 amI feel my life going down a similar path haha. So far, I haven’t had a problem with getting my department to fund cheap, jellybean parts for whatever I want to do but like you when it comes to MCU, SBC, etc. I either have to have a very good reason or just buy them myself. I already “donated” a few PIs and Arduinos here and there.Haha same here, once you start talking about something you like it’s always hard to stop yourself, no worries at allWell I guess it's time to file some POs. Again thank you everyone for the wonderful suggestions and all the help