Jump to content

James Watson

Members
  • Posts

    11
  • Joined

  • Last visited

Reputation Activity

  1. Like
    James Watson reacted to zygot in Can I install and activate Vivado In Windows 8?   
    Not necessarily. For most Digilent FPGA boards an older version of Vivado is fine to use; perhaps even better than a newer version. Newer tool versions may not have the free IP that you want, and older versions have. If you are contemplating a board purchase look around to see what version of Vivado the demos for your board use. There's a big problem with Digilent demos and tool versions. Installers for older versions of Vivado fit on a DVD. Current versions of the tools ban be a 60+ GB download.
    As to why you are using Win8, that's another issue as that hasn't had Microsoft support for a while now.
    An alternative is to install a supported version of Linux for Vivado onto a second HD and boot to either Win8 or Linux via BIOS boot options. Windows has a tendency to interfere with Linux boot block code. I like to keep the separate to the extent possible. Personally, I'd be worried about exposing a PC with unsupported an OS to the internet. 
    If all you want to do is learn how to do FPGA development and learn how to use the tools you can install any version of Vivado, pick any FPGA platform, and simulate your designs. Just be aware that newer Vivado tool versions might have changes making porting projects built in earlier versions a bit of effort, and that constraint syntax changes. If you want to use a ZYNQ device, tool version earlier than 2019.2 have quite different software development frameworks. This is the only real downside to using an older version of the tools... you are learning how to use a tool that is not current. Generally this is not a big issue, especially for a beginner who just wants to start off.
    The Vivado doesn't need "activation". The free version provides most of the functionality the you will need. You will need create a user account with AMD/XILINX to download and get access to most of the documentation. This is free to do. Most Artix devices and most ZYNQ devices are supported with the free tools.
  2. Like
    James Watson reacted to Xanderel in Interfacing With Pmod MicroSD   
    Hello,
    I am currently working with the Pmod MicroSD Card Slot, and am trying to interface it with the Zybo Z7 board (although I would ideally eventually interface it with the Spartan 7 SP701 Evaluation Kit). I discovered, while trying to use the PmodSD IP files in my block design, that the versions of Vivado I am using (Vivado 2021 & 2022) do not support the IP.
    When searching through the forums, I found other posters from a couple of years ago who encountered this issue as well. My question is: is this information still accurate (the IP is no longer supported), or have there been any new developments regarding support for this Pmod SD device?
    If not, would anyone happen to have any recommendations for resources to use while implementing SPI for the SD card (projects, guides, etc.)? Ultimately, I need to write values from the on-board XADC (1 MSPS) onto the SD card. I chose SD in particular because it allows for a fast stream of data (UART was too slow, and I need as high of a sampling rate as possible for a received signal). This XADC output data (stream of 12-bit values) will need to eventually be accessible by MATLAB for plotting and signal processing. I am still a beginner, so any recommendations would be greatly appreciated.
    Please let me know if I should provide any more information regarding my devices/constraints of the project.
    Thank you!
  3. Like
    James Watson reacted to Lex in Fixing Data Drift in Pmod Gyro using Arduino Code   
    Thank you so much, James. I appreciate it.
    I have attempted improving the sampling rate and calibrating at rest but all to no avail. To the best of my knowledge, I have also modified the code and saved the data through a shield SD Memory; maybe something is off. While I attempt the last bullet point, which will take me away from using Pmod Gyro since there are other sensors like MPU-6050 with a combination of gyroscope and accelerometer. Do you mind looking at my most recent Arduino code:  
    #include <Wire.h>
    #include <L3G4200D.h>
    #include <SD.h>
    #define TIME_STEP 0.005
    #define NUM_POINTS 200
    #define DELAY_BETWEEN_POINTS 5 // in milliseconds
    L3G4200D gyroscope;
    float roll = 0;
    float pitch = 0;
    float yaw = 0;
    const int chipSelect = 8;
    int switchState = 0;
    boolean cardInitialized = false;
    String filename = "";
    void setup() {
      Serial.begin(115200);
      gyroscope.begin(L3G4200D_SCALE_2000DPS, L3G4200D_DATARATE_400HZ_50);
      gyroscope.calibrate(100);
      pinMode(7, INPUT);
      if (!SD.begin(chipSelect)) {
        Serial.println("Card failed, or not present.");
      } else {
        Serial.println("Card initialized.");
        cardInitialized = true;
      }
    }
    void loop() {
      for (int i = 0; i < NUM_POINTS; i++) {
        unsigned long timer = millis();
        Vector norm = gyroscope.readNormalize();
        roll = roll + norm.XAxis * TIME_STEP;
        pitch = pitch + norm.YAxis * TIME_STEP;    
        yaw = yaw + norm.ZAxis * TIME_STEP;
        Serial.print("roll:");
        Serial.print(roll);
        Serial.print(",");
        Serial.print("pitch:");
        Serial.print(pitch);
        Serial.print(",");
        Serial.print("yaw:");
        Serial.print(yaw);
        Serial.print(",");
        Serial.print("time:");
        Serial.println(millis() / 1000.0);
        if (cardInitialized) {
          switchState = digitalRead(7);
          if (switchState == HIGH) {
            String dataString = "";
            dataString = (String(millis() / 1000.0) + "," + String(roll) + "," + String(pitch) + "," + String(yaw));
            if (filename == "") {
              filename = getFilename();
            }
            File dataFile = SD.open(filename, FILE_WRITE);
            if (dataFile) {
              Serial.println("Writing data "+dataString+" to "+filename+".");
              dataFile.println(dataString);
              dataFile.close();
            } else {
              Serial.println("Error opening "+filename+". Could not write data.");
            }
          } else {
            filename = "";
          }
        }
        delay(DELAY_BETWEEN_POINTS);
      }
    }
    String getFilename() {
      String filename;
      for (int i = 1; i <= 9999; i++) {
        filename = "data";
        if (i < 10) {
          filename += "000";
        } else if (i < 100) {
          filename += "00";
        } else if (i < 1000) {
          filename += "0";
        }
        filename += String(i) + ".txt";
        if (!SD.exists(filename)) {
          return filename;
        }
      }
      return "";
    }
     
×
×
  • Create New...