Jump to content

J.J.

Members
  • Posts

    9
  • Joined

  • Last visited

Everything posted by J.J.

  1. Oh actually I came up with a way to assign buses in Patterns1 through Script. The appropriate parameter for me was: // Bus1 named as IN1, and also the calculated integer value is stored in var IN1 Patterns1.Channels.IN1.Number.value = IN1; Now I am trying to sync iterations of the for loop with a 10 MHz toggling signal that indicates outputs of the DUTs are ready.
  2. Hi. I successfully measured my unit DUT with the forum's help. Now I am trying to expand the measurement by connecting more DUTs and do some calculations to generate integer values that can be assigned to bus inputs of the DUTs. Most of the controls will be implemented in Script. To be more specific, the whole system goes like this: 30 MHz clock signal and enable signal are assigned to three DUTs. (This can be done manually, or simply by running Patterns1.run() with settings done in GUI) Three 5-bit bus values range between integer 0 and 31. Initializing is not that important here. Logic analyzer will capture 3 DUT digital output signals whenever the sync signal falls. Only one of the three signals will be valid. The other two are prohibited to be changed for three cycles. So the other two values will be replaced with previously saved digital values. (if statement starting from line 50) Predefined integers are multiplied with corresponding DUT outputs and added to implement a weighted sum (IN1, IN2, IN3). Weighted sum values will be converted into binary expressions and assigned to corresponding DUTs. The procedure iterates 1000 times, and each start should be synchronized with falling edge of DIN0. DIN0 receives a 10 MHz toggling signal that comes from a DUT. I am having hard time coding how to sync for loop with DIO0, and assigning three 5-bit bus signals with calculated IN1, IN2, IN3. I attached my workspace. Could someone show me a way to do this? Thanks always. J.J. DUT3.dwf3work
  3. Hi @attila, Thank you for your prompt response. I will consider using "config();" right after assigning critical signals. Again, thank you for sharing valuable insights into Waveforms and Script. Best, J.J.
  4. Hi @attila, Oh yes, by selecting my DD in the device manager manually, now I can choose from the whole range of DIN0..23 and DIO24..31. Would you mind explaining a few things related to the sample code in Script? Patterns.run(); StaticIO.Channel0.CAL_START.value = 1; StaticIO.config(); StaticIO.Channel0.SignalA.value = 1; wait(2); Logic.single(); StaticIO.Channel0.SignalA.value = 0; Logic.wait(); StaticIO.Channel0.SignalA.value = 0; StaticIO.Channel0.CAL_START.value = 0; Patterns.stop(); 1. In line 3, StaticIO.config(); comes in between assigning CAL_START and SignalA. In help page, it says that Instrument#.config(); applies configuration immediately. Could you explain why config() is executed before assigning SignalA? What kind of configuration is applied with that method? 2. In line 6, Logic.single(); performs a single acquisition. If acquiring mode is set to synchronous in GUI, does the single acquisition work as synchronized mode? From Logic1 GUI, it seems that one synchronous sampling is done by running the code. Thank you for your support. Best, J.J.
  5. Hi @attila, Thank you for building a complete configuration! After updating my Waveforms to the latest beta, synchronous config in Logic1 lets me choose Enable and Clock pins from DIN0 to DIN7. Is there something I'm missing? Waveforms version is 3.18.30.
  6. Hi @attila, Thanks for letting me know that. Many things are clear now. Could you go over my test plan and check whether it's feasible or not? A Digital Discovery (DD) will be paired with Waveforms installed in my laptop. I want my Script code to assign a clock (CLK), an enable, a calibration-start (CAL_START), and a rising digital step signal (Signal A) to DUT, wait a couple of seconds, make Signal A logical '0', and then start capturing samples synchronized with falling edges of a digital signal (TIMING) generated inside DUT. Assign a 30 MHz CLK to DUT with Waveforms Pattern1 Assign an enable signal to DUT with Waveforms Pattern1 Assign CAL_START and Signal A to DUT with Waveforms Pattern1 Wait 2 seconds (DUT calibration time) Make Signal A as logical '0' As DUT receives the clock and enable signal, a 10 MHz cyclic signal TIMING, whose duty cycle is less than 50%, is generated and passed to Waveforms Logic1 to capture samples synchronized with falling edge of TIMING (because of internal delay of DUT, falling edges of TIMING are not necessarily aligned with CLK) Logic1 needs to start synchronous acquire using falling edge of TIMING, as soon as the calibration ends (Signal A falling edge) Since operating frequency surpasses my clicking speed, Logic1 acquire triggered by the falling edge of Signal A is a crucial point. I configured the test environment in GUI by directly connecting digital outputs of DD to digital inputs of DD. DUT is omitted for a quick verification. Is there any logic analyzer sample code that I can use to write appropriate Script code? Thanks in advance. Best, J.J.
  7. Hi @attila, Thanks for showing me how to adjust system frequency. I checked that the system frequency ranges in between 50 MHz and 120 MHz. I read through a few Waveforms SDK Python sample codes, but it seems that an interactive Waveforms GUI window won't open in that workflow, so I would like to stick to JS workflow for now. Could you provide a sample Waveforms JS script that can assign digital output pins in Patterns1 and sample a few data signals in Logic1 sync mode? Best, J.J.
  8. Hi @JColvin, Thank you for moving my thread to a proper place. Yes, a part of my first objective includes adjusting base clock frequency. I will check the thread you recommended and apply to my work. Thanks for your help! Best, J.J.
  9. Hi. I am trying to write a script that enables two DIO pins to be used as a 30 MHz clock source(seems that DD only supports frequencies like 50M, 25M, 12.5M) and a piece-wise linear enable signal & thirteen DIN pins to get a timing signal (negative edge will be used for logic analyzer trigger) and twelve digital output signals from DUT. I referred to Waveforms help manual and help page, but examples utilizing logic analyzer and pattern generator were not available. I wrote a practice code, but Patterns feature only works when I manually add corresponding DIO pin to Patterns window in GUI. Otherwise, output log says, 'TypeError: Result of expression 'Patterns1.Channels.DIO33' [undefined] is not an object.' Also, I am also having hard time setting logic analyzer details with a script. Which properties should be defined in the script for activating thirteen DIN pins is not clear. Could someone advise me how to write a proper script based on the following block diagram and my code? Thanks in advance! Best, J.J. Code: clear(); print("Fresh start"); if(!('Logic1' in this) || !('Patterns1' in this)) throw "Please open a Logic analyzer and a pattern generator instrument"; // patterns window should be opended already // required signal IO pin should be assigned in GUI. if not, error evoked: Patterns1.Channels.DIO## 'undefined' is not an object // PP: push-pull (0 and 1); OD: open drain (0 and Z); OS: open source (Z and 1); TS: three state (0 and 1 and Z) // pins used in patterns window need to be created in GUI. failed to activate ceratin pins Patterns1.Channels.DIO33.setEnable(); Patterns1.Channels.DIO33.Output.text = "PP"; // output type is push-pull (allowed pattern values are 0 and 1) Patterns1.Channels.DIO33.Type.text = "Clock"; Patterns1.Channels.DIO33.Frequency.value = 25E6; // 20 MHz clock (scientific notation works) Patterns1.run(); Logic1.Trigger.Trigger.text = "Auto"; //Logic1.Trigger.Clock.text = "Internal"; Logic1.Channels.DIN23.Trigger.text = "Fall"; // falling edge of CLK_S will be the sampling timing print("End of code.");
×
×
  • Create New...