• Content count

  • Joined

  • Last visited

  1. Regarding the speed of real time streaming, please check the following: I ran some tests on different computers and published the results there. Regarding using Pi - I don;t know if you know about the difference between write speed of SD card / conventional HDD / SSD but if you think about real time streaming then you would be better off just writing your data on SSD.
  2. Hello @pascaljackson, >>I would like to find out if it is possible to log an analog signal at 100MSPS for about 5 to 10 minutes? I am 99% sure that this is not achievable with AD2 or any other low priced device what I am aware of. Let's see how big should be onboard buffer for storing the data for 5 minutes. You are talking about an analog signal I will assume a digital signal (i.e. each state can be described by 1 bit only, in case of an analog signal it will be far more than 1 bit (8 or more if we are talking about some precision). So, 100M * 5 * 60 = 30 000 Mb i.e. 30 Gb. As far as I know, the best what you can find among $100-$400 devices (logic analyzers) is equipped with 2Gb RAM (Digital Discovery and such). And that's a lot of memory! Other LA which dont have big buffers rely on real time data streaming - you will not get the required speed from those devices (it has been already discussed on the forum in great details). But may be you are trying to solve the problem not in the most optimal way? Do you want to explain why do you think you need to collect the data for such long time? thanks.
  3. Hello @attila, The new triggering mode "Scope Detection" option works great. I am observing short (you said 10 I see 7.5 ns but I think that's the result of inaccuracy of my LA which has only 400 MHz max sampling rate) impulses on each trig. event, it runs in nonstop mode ignoring the GUI settings (single vs continuous acquisitions) and I assume this is how it supposed to work. At max. sampling rate of AD2 (100MHz) there is a small delay (300 ns) between the actual trig. event and generation of the impulse on External Trigger pin, which is more than suffice for general use measurements. The aforementioned delay grows with the decrease of the sampling rate of AD2 which also fully understandable. Thanks.
  4. That's a very impressive customer support. I could not even dream about a possibility to add a new feature which solves my problem just in a couple days. Thank you very much!
  5. Hello @attila, Thanks for provided explanation, I see what is going on now. Looks like nothing is easy. I found in the manual the following information: ---- Trigger Detectors and Trigger Distribution Networks are implemented in the FPGA. This allows real time triggering and cross-triggering of different instruments within the Analog Discovery device. Using external Trigger inputs/outputs, cross-triggering between multiple Analog Discovery devices is possible. ---- May I ask what FPGA pin is assigned to the trigger detector? As a simple workaround I could simply use that pin at my own risk. >2. The second pulse is a bit of bug when using single acquisitions. >The second pulse is due to the automatic rearming and acquisition of the device. Well, if nothing else works, I can use an ATtiny85 and convert that multi-pulse triggering event for single acquisition into a short, single impulse with 10-20 lines of C or assembler code. This solution will require just one extra element (AVR or other MCU). Thanks.
  6. Hello @attila >> Use Run to have one pulse per read acquisition. I would gladly do that if I knew that it works as expected. But this mode also makes me wonder what is going on. I am attaching 2 screenshots (one is the zoomed version of another) for continuous acquisitions (i.e. RUN mode). I don't understand why the time between trig. events is not constant or at least "kind of constant", I mean the time between cursors 4 / 1 (105 ms) and 2 / 3 (170 ms). Where does this delay come from? In my view it can only happen if AD2 uses some sort of software implementation of triggering the signal on Trigger 1 output - otherwise I simply cannot imagine why any reasonably fast hardware implementation triggering mechanism would not be able to generate a steady flow of triggered events on Trigger 1 output at such low speed - we are talking here about hundreds of milliseconds. Is there any workaround for this problem?
  7. Hello, Being sort of disappointed in AD2 logic analyzer capabilities (see the post post https://forum.digilentinc.com/topic/2004-ad2-continuous-digital-acquisition-speed-is-slow/ and similar for details) I obtained a different logic analyzer with a lot of memory on board + support of RLE. But I do really like the flexibility of AD2 when it comes to setting different conditions/triggers soI decide to use it a master device/LA that should control the second LA (aka slave LA with limited triggering capabilities but with a lot of RAM). The idea is simple - AD2 uses Trigger1 as output and it is connected to Trigger input of the second LA. AD2 has very limited sampling range / almost non-existing buffer but as soon as it senses the right condition it triggers the second LA with very wide range (up to 2 G (RLE)) and that allows me to capture and analyze quote long periods of time. But the use of Trigger 1 as an output pin is confusing and I simply cannot explain its behavior. Eventually I started using the second LA just to observe the correlation between the scope triggering mechanism and the Trigger 1 on AD2 and have several questions in this regard. By that I mean the following: AD2 scope is connected to an AVR generating short pulses (about 8-9 ms period with 4-4.5 ms width). Trigger 1 is set to "Scope" - i understand it as the scope's triggering condition is mirrored on Trigger 1 pin. The scope runs in "singe" trigger mode and it works but works "kind of" - see the attached screenshot (I attached 2 high resolution screenshots providing all necessary info just please don't be lazy to examine it). Questions: a) Why did Trigger 1 generate 2 impulses (shown as Channel 1/TRIGGER1 on DSLogic)? I would expect 1 and I cannot explain why 2 and not 3 for example. b ) What defines the width of the triggered impulse (right now it is 182 ms)? I assume this is the number of samples * by the sampling rate. Am I correct? More questions will come later, the post is already long enough. Thanks.
  8. Hello, Is there any update? Thanks
  9. Hello, -------- >I use a late 2013 MacBookPro, i74850HQ, 16GB, OS X 10.11 >The DigitalIn_Record.py with 1M samples is working fine for me down to divider 26, up to ~3.8MHz. ------- >i'm using a 2014 macbook pro with 2,5Ghz Core i7 and 16GB ram, so I guess this should not be the bottleneck... >When executing my program (sample format 8bits, divider 200) I can't get much more than 500Ksamples/sec otherwise I get data lost and >corruptions. ------- It's interesting that you both use similar Apple hardware and get such different results. I will try to find a MacBook but attila could you please tell us the following: a) version of WF; b ) version of FTDI driver; c) firmware version of your AD2 (btw, is it upgradable? ) d) whatever else might be useful to know to be able to replicate your environment; It would be also very interesting to know what do you get if you repeat the same test with on Windows using the latest software available on your web site - I just want to know if those numbers (divider 26 etc) are really achievable at present time for Windows users using WF 3.5.4 installer. thanks
  10. the continuation. sample rate / num of samples/ num of loss occurrences/ num of lost samples 1MHz 10.000000 11 45056 1MHz 10.000000 5 65536 1MHz 1.000000 2 28672 1MHz 1.000000 1 4096 2MHz 1.000000 1 8192 2MHz 1.000000 2 8192 2MHz 10.000000 12 409600 2MHz 10.000000 7 40960 2MHz 10.000000 7 49152 2MHz 10.000000 7 36864 PS: num of loss occurrences - is the number of times when cLost.value > 0, number of lost samples is += cLost.value in terms of DigitalIn_Record.py if the number of samples is set to 1.000.000 then no samples are lost at 2MHz but this very short period since we are talking about possibility to continuously stream data to a PC And this is a standalone python script, in WF you will have 5 time slower sample rate (there are several posts on the forum) I have searched the forum and saw the staff's explanation why we have such results: a) USB bandwidth limitation. That makes no sense to me (just personal opinion) since USB 2.0 has more than enough bandwidth to cope with those data acquisition speeds (people were asking if USB 3 would help - even USB 2 in this case is far from saturation (just looking at the numbers); b ) The necessity to poll several tools at once (in case of WF) and as a result the need to use USB bus for multiple transfers in addition to stream data from AD2 to PC. That makes no sense to me either since the result does not depend on the number of WF tools - I can open only Logic analyzer and still not get 1MHz or so s.r. in WF for any buffer that is longer a certain, fixed number. And yes, it works fine for short periods i.e. small set of data. There is possibility that I, somehow misunderstood something and therefore the provided results are not entirely correct. But at the moment my understanding is that one can either record a short periods of time with high (relatively because it does not come even close to 100MS/s (yes, I understand that this is an internal s.f.) sample frequency or longer periods with lower sample frequency - low enough not to allow you to reliably capture 400 kHz SPI data exchange from WF for 5 seconds. Thanks.
  11. Hello, I am observing a similar situation and pretty much sure that the problem is not in the user's hardware. I already spent a lot of time trying to make it work at some acceptable level but with no success. I have tried 3 different computers, WinXP, Win7 32/64, two (different high end Lenovo) of them have SSD with write speed way faster than 100 MB/s, 24GB-32GB RAM, different USB 2 and 3 controllers, 2 different (USB 2 and USB 3) hubs, WaveForms 3.5.4, AD2 is powered by an individual 5V power supply. I tried "record" mode from WaveForms and from standalone python script (modified DigitalIn_Record.py). The result i.e. whether or not you get a message about lost/corrupted samples depends on both the sample rate and the number of samples to acquire. On the most powerful Lenovo (32GB RAM, SSD 450 MB/s write speed), with both USB2/3 plus with/without dock's USB 2 controller I can get the following result: sample rate / num of samples/ num of loss occurrences/ num of lost samples 1MHz 10.000000 11 45056
  12. Hello, I decided to use Pi 3B (pigpio lib, python) as a I2C slave and AD2 as master just to learn more about AD2 features and I2C protocol in general. the script itself: var ddd = [] if(Clear()!=true) return "I2C bus error. Check the pull-ups." i_ret = Write(0x13, 116) if( i_ret != 0) return i_ret; // "Device NAK"; //wait(0.1); ddd = Read(0x13,10) FileWriteBinary("~/Desktop/data2.bin", ddd); return ddd A simple scenario: AD2 sends a command from a script (100 kHz freq) , in 10-100 ms Pi (I2C slave) responds with 10 bytes of data, I want to capture the request/response data. What can be simpler? But the problem is that I am limited by the number of samples (16K at best). First and foremost - I cannot use "Record" mode because I need to run the script (in "Record" mode this option is not available from I2C tab). So, I have 16K samples max (with noise turned on I have only 8K), the bus speed is 100 kHZ, therefore I need the sample rate faster than 2XX kHz. I noticed that the result greatly depends on the selected rate: odd numbers like 200, 300 kHz may/will yield some sensible results but 280 kHz, 310 kHz almost guarantied to lead to totally inadequate results. With 300kHz rate, 8K samples I can cover only (1 / 300000) * 8192 = 27.3 ms or for 16K => 54ms, which no enough for this example. What is more - many captures just contain incomplete/incorrect data but I think this is the result of low sampling rate (300 kHz). Some of them contain just captured request data, some - response data (and that is really weird since it means that request data _was sent but missed by AD2). So, what is the right way to achieve this simple goal with AD2? PS: I read about real-time sample compression used in different types of logic analyzers and I think that it could be a very nice solution to this type of problems and great improvement for AD2 - most of the time during that 10-100 ms time frame the state of signals don't change i.e. the state is static and therefore being compressed it would take very little space in the buffer. That would lead automatically to the longer observation period, using the same sampling rate. Simple and powerful... Thanks.
  13. Hello attila, >You can use Logic Analyzer I2C interpreter for such purpose. Thanks for the advice, I will try.
  14. Hello attila, Thank you for the provided screenshots, it really helped. That's totally my fault that I missed such obvious thing as "Help" tab.
  15. Hello, I was wondering if there is a way to use AD2 as i2C slave ? It isn't a problem to use it as I2C master, it works as expected and is very useful for data exchange visualization. But somehow I have difficult time to figure out how to use it in slave mode, I assume it has to be some sort or script. But looking at the available script commands ( I am neither an expert in WF nor i2C communication) I cannot figure out how to do that. Thanks.