Jump to content

artvvb

Technical Forum Moderator
  • Posts

    987
  • Joined

  • Last visited

Reputation Activity

  1. Like
    artvvb reacted to Brogli in The IP ZmodScopeController initializes, but does only shows zeroes in cDataAxisTdata   
    A month ago I got everything to work and then the exam weeks came around, so I forgot to inform you. Thank you for your help. It is much apprechiated. 
  2. Like
    artvvb reacted to DavideDevoti in Cora Z7 boot from SD card   
    Hi,
    I've tried to rebuild all my application using 2023.1 tools and boot image works fine. 
    Thanks
    Davide
  3. Like
    artvvb reacted to GLC in Driver for connecting Cora Z7s to pc   
    Thank you all for the help.
    The problem was in one of the two drivers (the bus one) and in the working policy of the notebook that made it not working .Finally, it worked with these drivers https://digilent.com/reference/software/adept/start?_ga=2.225815646.578235468.1707132485-1962113075.1645638136 .
    Hope it will help others in future
  4. Like
    artvvb reacted to malexander in VADJA_PWR_EN in eclypse   
    Hi Kishore,
    My colleague @artvvb loaded image 0.3 onto an SD card, booted the Eclypse Z7 without anything plugged into Zmod A or B, and confirmed that he was able to set the voltage to 1.8V and then 3.3V using the decutil setviocfg command. He measured voltages of 1.821V and 3.327V. Please download the v0.3 image here and then follow Step 2 of the "Setting up the Linux Projects" section described here to get our petalinux image up and running. Once you've booted please execute "sudo decutil setviocfg -chanid a -override y -enable y -voltage 1800" to set enable VADJA and set the voltage to 1.8V. If you want to do the same for VAJDB then you can execute "sudo decutil setviocfg -chanid b -override y -enable y -voltage 1800".
    Please let me know if this works, and again, make sure you have no boards or cables connected to ZMOD A or ZMOD B.
    Thanks,
    Michael
  5. Like
    artvvb reacted to Viktor Nikolov in ILI9488 TFT SPI display library for AMD Xilinx SoC and FPGA   
    Hi!
    In a project of mine, I want to use this 3.5″ 480x320 TFT SPI display based on the ILI9488 display controller. 
    I, therefore, ported the ILI9488 Arduino library for use on AMD Xilinx SoC and FPGA. The integral part was porting of the Adafruit_GFX library because the ILI9488 library is based on it. I removed all Arduino-specific code, optimized SPI writes for the capabilities of Xilinx SPI libraries, and made other modifications.
    I published the library and sample projects on the GitHub repository.
    You can see the capabilities of the library in this video.
    I tested the library on AMD Xilinx Zynq-7000 SoC and Artix-7 FPGA (running on MicroBlaze soft CPU).
    The repository contains sample projects that run on Digilent boards Zybo Z7, Arty A7 and Cmod A7.
    I also provided a detailed step-by-step tutorial on how to use the display on the Zynq board Cora Z7.
    The library supports both Zynq Processing System SPI and AXI Quad SPI IP.
    The library also supports both Zynq Processing System EMIO GPIO and AXI GPIO IP.
    Different kinds of SPI and GPIO can be combined (e.g., you can use AXI SPI with PS GPIO and vice versa). All four combinations are supported by the library. Three out of four combinations are showcased by the sample projects in the repository.
    I tested the ILI9488 library with a standalone application running on ARM core or MicroBlaze. I believe it should also work on a PetaLinux app.
    Viktor



  6. Like
    artvvb reacted to JColvin in PMOD connectors on BASYS 3   
    The female host Pmod connector on the Basys 3 (and other Digilent products) is a Sullins PPTC062LJBN-RC, with 100 mil pitch between each of the pins.
    Thanks,
    JColvin
  7. Like
    artvvb got a reaction from nurber3 in Current and Power Adapter wish   
    Hey Sven,
    The adapter won't come with them, but there are various banana plug to X connector adapters that can be sourced from other vendors online that should work, see below for an example of USB (note that I have not tried this particular product).
    Max current is listed in the specs in the reference manual (https://digilent.com/reference/test-and-measurement/current-and-power-adapter/reference-manual), there are a couple of different range selections, but the widest is up to 25 A.
    Thanks,
    Arthur

  8. Like
    artvvb reacted to Xband in Testing hardware(Vivado) with known working software (Vitis)?   
    @artvvb, 
    Thanks for the help, 
     I just cheated and copied the bit file it was complaining about into the directory.  It actually ran, while that is good I'll follow your directions and try to clean it all up.  Glad that my setup isn't necessarily bad with the Win10, though it seems I"m able to find every way to mess things up.  
    Thanks again.  
  9. Like
    artvvb reacted to engrpetero in Multiple Displays   
    I never thanked you for the reply, @artvvb.  Certainly appreciate it.
     
  10. Like
    artvvb reacted to zygot in PMOD max data rate in Basys3 board   
    "The max rate isn't specified. You can find other users trying to get Pmods going as fast as possible"
    It's hard to argue with a statement that doesn't make any assertions.

    Be aware that all of the PMODs on the Basys3 are the "low speed" variety; that is they have 200 ohm series resistors between the FPGA pins and the PMOD connector pins.

    If all you want to do is toggle pins at 100 MHz, yes you can do that. if you want to use such a signal to transmit information, then there's a lot more to consider.

    Only the so called high speed differential PMODs have any PCB trace length matching. That's only between the _n/_p pin pairs. And no PMOD, except on n the ATLYS can do differential signalling.

    None of the PMODs that I know of have length matching across all 8 pins.

    Most PMODs don;t have a clock capable pin connected to any of the PMOD pins. This might be a problem for high speed interfaces.

    10 MHz toggle rate is what most of Digilent's Reference Manuals suggest for the standard low speed PMOD. That's probably very conservative. I'd certainly implemented SPI interfaces using PMOD connector to external devices via a custom PCB adapter that exceed 32 MHz; on the high speed PMODs. I'm guessing from past experimentation that ~50 MHz is practical limit for useful educational work. Of course the termination on the receiving end, the quality of the transmission line from FPGA pin to receiver pin, the current drive, slew rate, etc will determine the quality of your signal. Large amounts of overshoot or undershoot will degrade performance and potentially reliability.

    Basically, what I'm trying to say is that if you want a good answer to your question, then you need to ask a better question. A nebulous question invites a nebulous answer.

    I suppose that what you really want to know is whether or not your design idea will work with a Basys3 PMOD connected to some external circuit. A good answer requires more information about what you are trying to do.

    I looked over the current Basys3 Reference Manual and was surprised to see that it didn't mention a useful toggle rate for the PMOD connectors. Since that board is pretty old I assume that this information was scrubbed from the original manual. This seems to be consistent with the new Digilent policy of removing important information from easy access when it doesn't reflect well on the product capabilities and replace specifications with ill-defined comments that suggest something more positive.
  11. Like
    artvvb reacted to jaberroteran10 in How to boot Microblaze from flash on a board without DDR memory   
    Hi @artvvb
     
    It worked on my Arty S7.
     
    Thanks for your help
     
     
  12. Like
    artvvb got a reaction from Xband in Eclypse DDR Streaming Project channel calibration question   
    Looking into it. The calibration reader app expects the names to be "Zmod ADC 1410-105" and "Zmod DAC 1411-125", based on the original names of the products before a rebrand. The EEPROM contents that store the product model name must have been changed. Changing lines 23:27 and 53:57 of main.c in the calibration_reader app as follows should clear the issue, using this as the point of comparison if you've made any changes: https://github.com/Digilent/Eclypse-Z7-SW/blob/ddr-streaming/src/calibration_reader/src/main.c.
    Thanks,
    Arthur
  13. Like
    artvvb got a reaction from ApplicationSecurity-TVM in Hello from Poland   
    Welcome to the forum!
  14. Like
    artvvb got a reaction from faraday in Hello from Poland   
    Welcome to the forum!
  15. Like
    artvvb got a reaction from Mavitaka in Generating a 50Hz signal with adjustable harmonics (3, 5, 7, 9, 11)   
    Happy new year!
    This question was responded to over here: 
    Thanks,
    Arthur
  16. Like
    artvvb got a reaction from Mavitaka in Inquiry on Generating a Programmable Harmonic 50Hz Signal Using Eclypse Z7 with Zmod AWG   
    Hi @Mavitaka
    Modifiable in what way? By a human tweaking amplitudes in real-time, setting amplitudes from software on a computer, or selection based on some FPGA input? The first two could potentially be accomplished via a custom waveform in the WaveForms app (see below, where the third harmonic of a wave is set to 0.3x of the original wave's amplitude) or WaveForms SDK. The last would require a custom design in Vivado potentially adapting one of the demos, which would not be trivial.
    If you haven't bought hardware, you can try out the WaveForms app without it. Edit to add: Note that any WaveForms-compatible device with analog output (like AD3, which is cheaper) is capable of this, ignoring any other specifications that might be necessary for your application.
    Thanks,
    Arthur
     

  17. Like
    artvvb got a reaction from werosic in Is it possible to run TCP and Zmod_ADC on Eclypse Z7 at the same time?   
    Hi @werosic
    I assume based on previous threads that you are trying to use zmodlib and the lwip echo server template project together? I assume that you've replaced zmodlib with C (not C++) sources that accomplish similar things.
    Generally, the ADC sources and ethernet sources should not affect each other, except where shared resources are being accessed, or where performance concerns become a problem. I would check whether both the ADC library and the ethernet sources are initializing the GIC - the Zynq's interrupt controller, as it seems like the most likely potentially-shared system to cause an issue like this. If they both reset it and initialize it with their interrupt handlers, then the last subsystem initialized could cancel out part of the initialization of the other subsystem.
    Thanks,
    Arthur
  18. Like
    artvvb reacted to evers4 in Implimenting Etherent on the Zybo Z7 development board   
    Great news,
    the original goal has mostly been accomplished at this point, thank you! I'm receiving data over Ethernet from the custom IP in the firmware, and better still, so far it appears correct. In main() I'm sending data once a connection is made via the accept callback.
    My question now is how can I detect an active connection. The accept callback increments the connection variable, but it doesn't decrement it. So I'm wondering how to reliably detect that an active connection exists.
    The way the C code works is it fills a ring buffer with data, from the IP in the firmware, and pushes that out to an active connection as long as new data exists. I'm currently looping on 3 conditions: an active connection, data available, & a state I call sending. I'm using the connection variable in the accept callback to determine if a connection is active. But, this value does seem to track disconnects.
     
    err_t accept_callback(void *arg, struct tcp_pcb *newpcb, err_t err)
    {
        static int connection = 1;
        xil_printf("Echo: c_pcb=%u\n\r",(u32)newpcb);
        /* set the receive callback for this connection */
        tcp_recv(newpcb, recv_callback);
        /* set the sent callback for this connection */
        tcp_sent(newpcb, sent_callback); // <- add this
        /* just use an integer number indicating the connection id as the
           callback argument */
        tcp_arg(newpcb, (void*)(UINTPTR)connection);
        /* increment for subsequent accepted connections */
        connection++;
        return ERR_OK;
    }
  19. Like
    artvvb reacted to Dante in Using the ARTY_A7 onboard flash for user data storage.   
    Thank you @artvvb, with your advice I was able to successfully interface with the onboard flash.
  20. Like
    artvvb got a reaction from evers4 in Implimenting Etherent on the Zybo Z7 development board   
    C sources should include xil_cache.h and call Xil_DCacheInvalidateRange before accessing the memory that the IP has written into. I think what's happening is that the data written on the first pass is being cached and the cached values are being read instead of new stuff in DDR on every subsequent pass. https://github.com/Digilent/Zybo-Z7-SW/blob/c21218c91e7d6dfd2018d35932a5f0d9d38eec9a/src/Zybo-Z7-20-DMA/src/demo.c#L262 is where the audio demo invalidates cache for received data. Your base address and byte count for the call will differ. You might call this in the handler or wherever in your C source you're reading that data.
  21. Like
    artvvb reacted to evers4 in Implimenting Etherent on the Zybo Z7 development board   
    Ow wow! That did it, thanks for the easy fix! Side question, is it possible to read from DDR while within an ISR? Does it require any special consideration(s)?
  22. Like
    artvvb reacted to evers4 in Implimenting Etherent on the Zybo Z7 development board   
    I connected up a slow 200MHz scope to the custom_int signal in the block design. What I see is distorted pulse that does otherwise appear correct.
    After this, I replaced the single cycle pulse by a slow 4Hz clock, the ISR appears to be working as expected now. I expected some distortion on the probe, but I don't think the interface between the Zynq/IP should be effected by this. I'm cautiously optimistic that the problem has been resolved.
    I'm now attempting to merge this code with the Ethernet Example you provided. I'll follow up with you after making some progress. Thanks!
  23. Like
    artvvb got a reaction from evers4 in Implimenting Etherent on the Zybo Z7 development board   
    I reproduced this and I think fixed it. Below 1446 bytes, the system only actually sends a single burst, indicated by the sent_callback only being entered once per client request. Above it, multiple callbacks would occur, but some data would be lost. What seems to be happening is that submitting more data to tcp_write than fits in a single segment (typically 1500 bytes, slightly lower for a reason I'm not sure of here) maybe causes the additional data to be lost or ignored. What worked for me to fix it was to replace the tcp_sndbuf(tpcb) calls in the sent and recv callbacks with tcp_mss(tpcb), so that no more data than fits into a single segment is included in a single tcp_write call. "MSS" in the function name stands for max segment size. I've revised the code in the blog post.
    Thanks!
    Arthur
  24. Like
    artvvb reacted to Jordan T in Analog Discovery 3 USB Interface   
    Excellent, got it working. Thanks for your help.
  25. Like
    artvvb reacted to gabagool in How can I include the Waveforms SDK files into my VSCode path?   
    I think I've resolved my issue by following the instructions listed here:
     
    https://digilent.com/reference/test-and-measurement/guides/waveforms-sdk-getting-started#:~:text=Installing the Package
×
×
  • Create New...