Welcome to the Digilent! Here you can find our latest news, videos, and product details. Additionally, you can engage with us in our forums.
Digilent, an NI company, has been at the forefront of innovation since 2000, crafting hardware and software solutions that empower engineers, researchers, educators, and scientists to design and test with unparalleled flexibility. Our customizable solutions cater to both seasoned professionals and emerging engineers, accelerating development while maintaining a low barrier to entry.
We're committed to accessibility, offering competitive pricing, portable products, and comprehensive documentation. With a global presence spanning three continents, Digilent ensures speedy and cost-effective access to our products through an extensive distribution network. Specializing in Xilinx-based FPGA development boards, USB-based test and measurement devices, a variety of expansion modules for customizing applications, and the respected MCC DAQ product line, our design philosophy champions your creativity. By emphasizing speed, modularity, customizability, world class support, and open-source principles, we provide the building blocks while you bring the brilliance.
“DAQopter” is a data acquisition and monitoring system for a wide range of signals: video, distance measuring, temperature measuring, GPS tracking, collected in various environments via a hexacopter drone which is controlled over the wireless using the Digilent Wi-FIREDigilent Wi-FIRE PIC32MZ development board for IoT and an Android device for overall system control and mobility. The hexacopter drone is a carrier of sensors and it will fly over a long distance or hardly inaccessible environments by the humans in order to acquire digital data useful for the control, for processing, or for predictions. Thus, there will be secured access to remote or hardly accessible places without the need of being there in person. Our system will do the job of remote and wireless data collection, centralized storage, and intelligent predictions.
Digilent Wi-FIREWi-FIRE has43 available I/O pins, 12 analog inputs, 3.3 operating voltage, 4 user LEDs, potentiometer, buttons, uses MRF24 on-board wireless module, microSD Card, dedicated SPI Signals and high efficiency switching 3.3V switching power supply for low-power operation.
Inventory for this Project
- 1 pcs Digilent Wi-FIRE
- 1 pcs chipKIT PGM Programmer/Debugger
- 1 pcs GWS Servo Kit
- 1 pcs Flame Wheel ARF KIT
- 1 pcs 3S LiPo Battery
- 6 pcs GP2Y0A02YK0F - Infrared Proximity Sensor Long Range
- 1 pcs TTL Serial JPEG Camera
- 6 pcs 5mm LED’s
Design Overview
The hexacopter receives a byte array from the Android device and decodes it as the values for the throttle, aileron, rudder, elevator commands need for the Naza M lite Flight controller. The controller the operates the motor for the specific task needed. The Communication between the Wi-Fire and the Naza M is done using PWM servo signals. The hexacopter has Infrared Proximity Sensors to avoid approaching objects in order to avoid a collision and damaging the device. The object of this project is to make a device that can access places that people can’t and collect information about that place. This project can be transformed into a room scanning hexacopter that can detect persons in a fire with the front camera and avoid objects with the aid of the sensors. Could be used to scan tunnels or all sort of spaces or high altitude where a person could not go without risking their life.
Find all the project details and the source code by visiting the Digilent Project Page.
Demonstration
In this project, users will see how to set up the Pmod OLEDrgbPmod OLEDrgb 96 x 64 RGB OLED Display with 16-bit color resolution with the Arduino Uno in order to display different sizes and color messages.
The Pmod OLEDrgbPmod OLEDrgb features a 96x64-pixel RGB OLED display that is capable of 16-bit color resolution. As a graphical display, users may show off graphs, full-color pictures, text, and anything else they want to see by communicating with it through a standard SPI interface. The Pmod OLEDrgb utilizes a Solomon Systech SSD1331 display controller to receive information from the host board and display the desired information on the OLED screen. The SSD1331 is a single-chip CMOS OLED/PLED driver with 288 segments and 64 commons output, supporting up to 96RGB x 64 dot matrix display. It has embedded Graphic Display Data RAM (GDDRAM). It supports with 8, 9, 16 bits 8080 / 6800 parallel interface as well as serial peripheral interface.
The Pmod OLEDrgb communicates with the host board via the SPI protocol. By driving and keeping the Chip Select (CS) line at a logic level low, users may send both commands and data streams to the display controller based on the state of the Data/Command (D/C) pin. The display controller operates in SPI Mode 3 (clock idles on logic high, data is captured on the clock rising edge, and data is transferred on the clock falling edge) and with a minimum clock cycle time of 150 ns. The embedded display only supports SPI write, so users will not be able to receive any information back from the display over SPI. As a graphical display interface, users may light up any individual pixel on the OLED, display predefined characters, or even load bitmaps onto the screen. Each pixel can be set to one of the 65,535 colors that are available in a 5-6-5 bit RGB format. The OLED display has a specific power-up and power-down sequence to ensure the longevity of the device.
Quick Configuration Commands
You can run a sequence of commands to configure the display when the Pmod is powered on and off. For example,
Enable the driver IC to accept commands by sending the unlock command over SPI (0xFD, 0x12).
SpiWriteMultiple(2, 0xFD, 0x12); //Write two bytes-- the (un)lock commands register and the byte value to set the register to unlock command mode
Send the display off command.
SpiWrite(0xAE); //Turn off the display with a one byte command
Set the Display start Line to the top line (0xA1, 0x00).
SpiWriteMultiple(2, 0xA1, 0x00); //Write two bytes-- the set display start line command and the single byte value for the top line
Make it a normal display with no color inversion or forcing the pixels on/off (0xA4).
SpiWrite(0xA4); //A single byte value for a normal display
Find all the data acquisition commands on the Pmod OLEDrgb Reference Page.
Connecting the Pmod OLEDrgb to Arduino Uno
Follow the below instructions to connect Pmod OLEDrgb to Arduino Uno.
Pmod Pin | Arduino Uno Pins |
---|---|
Vcc | 3V3 |
GND | GND |
SCK | 13 (SCK) |
MOSI | 11 (MOSI) |
CS | 10 |
D/C | 9 |
RES | 8 |
VCCEN | 3V3 |
PmodEN | 3V3 |
Software applications
PmodOLEDrgb communication with Arduino Uno through SPI (SPI mode 3). The Adafruit_SSD1331.h library is used to control the display. This library includes the Adafruit-GFX library (https://github.com/adafruit/Adafruit-GFX-Library) which provides functions for displaying text and geometrics in different sizes and colors.
First of all, all pins and color hex codes are defined. Then, an object is created. Then the display is initialized.
The display background is set and cleared after each run. A range of member functions are used to
Project code
/************************************************************************ Test of the Pmod OLEDrgb ************************************************************************* Description: Pmod_OLEDrgb A test message will be displayed on the OLEDrgb module with different size and colors Material 1. Arduino Uno 2. Pmod OLEDrgb 3. breadboard https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino https://github.com/adafruit/Adafruit-GFX-Library ************************************************************************/ //pin definitions #define SCK 13 //serial clock #define MOSI 11 //master-out slave-in #define CS 10 //chip select #define DC 9 //data/command control #define RES 8 //power reset #include <Adafruit_SSD1331.h> //include display library //define colors #define black 0x0000 #define blue 0x001F #define red 0xF800 #define green 0x07E0 #define cyan 0x07FF #define magenta 0xF81F #define yellow 0xFFE0 #define white 0xFFFF Adafruit_SSD1331 display = Adafruit_SSD1331(CS, DC, MOSI, SCK, RES); //create the object void setup() { display.begin(); //initialize the display } void loop() { display.fillScreen(black); //set background and clear everything //display text display.setTextColor(white); //set text color display.setCursor(25, 0); //set cursor position (x, y) display.setTextSize(1); //set the size of text display.print("Testing:"); // display text //display one letter at a time char test[] = {"PMODOLED"}; //store characters display.setTextColor(cyan); //set text color display.setCursor(25, 15); //set cursor position (x, y) display.setTextSize(2); //set the size of text for (int i = 0; i < 4; i++) { display.print(test[i]); delay(200); } //continue in a new line display.setTextColor(yellow); //set text color display.setCursor(5, 40); //set cursor position (x, y) for (int i = 4; i < 8; i++) { display.print(test[i]); delay(200); } //letters with different colors display.setTextColor(red); //set text color display.print("r"); delay(200); display.setTextColor(green); //set text color display.print("g"); delay(200); display.setTextColor(blue); //set text color display.print("b"); delay(200); delay(5000); }
This projects showcase how to use Digilent Pmod HB5Pmod HB5 H-bridge driver and Arduino Uno to drive the DC motor. The Pmod HB5 offers a 2A H-bridge circuit to drive small- to medium-sized DC motors. Two sensor feedback pins are incorporated into the motor connection header and are specifically designed to work with the Digilent motor/gearbox, which incorporates quadrature encoder feedback. An Arduino Uno can be used to control the motor direction and speed. Digilent Pmod BTN pushbutton let users input the speed and direction.
First of all, you need to connect the Pmod HB5 and Pmod BTN to Arduino Uno. To drive the DC motor, you need to connect a 9V battery to Pmod HB5.
Pmod HB5 <----------> Arduino Uno <----------> Pmod BTN
VCC to 5V to VCC
GND to GND to GND
DIR to 2 to -
EN to 3 to -
- to 4 to BTN0
- to 5 to BTN1
- to 6 to BTN2
Then, you can enter the below Arduino code in the Arduino IDE and upload the sketch.
/************************************************************************ Test of the Pmods HB5 and BTN ************************************************************************* Project description: The pushbutton BTN0 changes the direction of the motor The pushbutton BTN1 increases the motor speed. The pushbutton BTN2 decreases the speed of the motor. The motor speed is displayed on the serial monitor. ***********************************************************************/ //defining connections #define DIR 2 #define EN 3 #define BTN_0 4 #define BTN_1 5 #define BTN_2 6 void setup() { Serial.begin(9600); // Initialization of the serial monitor pinMode(DIR, OUTPUT); // Configure DIR to an output pin digitalWrite(DIR, LOW); // Set DIR Low pinMode(EN, OUTPUT); // Configure EN to an output pin digitalWrite(EN, LOW); // Set EN Low pinMode(BTN_0, INPUT); // Configure BTN_0 to input pin pinMode(BTN_1, INPUT); // Configure BTN_1 to input pin pinMode(BTN_2, INPUT); // Configure BTN_2 to input pin } unsigned int spd = 0; //define motor speed as unsigned integer and set initial motor speed to 0 bool dir = LOW; //define dir (motor direction) as a Boolean variable and set initial direction to low void loop() { //read buttons bool b0 = digitalRead(BTN_0); // Reading BTN_0 bool b1 = digitalRead(BTN_1); // Reading BTN_1 bool b2 = digitalRead(BTN_2); // Reading BTN_2 //increment motor speed by 5 if button 1 is pressed and spd is less than the maximum duty cycle (255) if (spd < 255 && b1) { spd += 5; } //decrement motor speed if button 2 is pressed and spd is greater than 0 if (spd > 0 && b2) { spd -= 5; } //change direction if button 0 is pressed if (b0) { dir = !dir; } //control motor digitalWrite(DIR, dir); //set direction analogWrite(EN, spd); //Use PWM to control the motor speed //display data Serial.print("Motor speed: "); Serial.print(map(spd, 0, 255, 0, 100)); //convert pwm to percentage Serial.println("%"); Serial.print("Direction: "); if (dir) { Serial.println("counter-clockwise"); } else { Serial.println("clockwise"); } delay(100); }
The direction and the speed of the motor are displayed in the serial monitor.
All of Digilent Portable Test and Measurement Devices including Analog Discovery 2Analog Discovery 2, Analog Discovery StudioAnalog Discovery Studio and Digital DiscoveryDigital Discovery have external trigger. With triggers enabled, a dynamic waveform can be displayed as a static image. You can also capture data around or locate an infrequent event. For example, digital pulses are missing, irregular in width, or do not reach valid logic high or low levels. An external trigger uses an external signal to generate a trigger.
You can use Digilent Test and Measurement Device tutorial "Using External Triggers" to understand what trigger is and how trigger works in Digilent test and measurement device. In addition, you can learn how to use external trigger in oscilloscope and logic analyzer of Digilent test and measurement devices.
This is an example of using an analog signal to trigger the oscilloscope. When you press the push button, it will generate a trigger. The trigger point should change each time the button is pressed since no condition is set to be displayed at t=0.0 seconds
This is an example of using a digital signal to automatically trigger the logic analyzer. Digital input/output pins (DIO0 and DIO1) will be used to stimulate the external trigger and to provide some data to be read. A clock signal from DIO0 is used as the trigger. A random logic signal at a rate of 10kHz is generated on DIO1 which is being observed in the Logic instrument on the respective DIO1 signal line. DIO1 should update every two seconds in the Logic Analyzer with every rising edge of the clock signal from DIO0
The Digilent Electronics Explorer Electronics Explorer includes all of the test and measurement equipment needed to design, build, and test analog and digital circuits of all types. Built around a large solderless breadboard, the Electronics Explorer includes
You will use the Arbitrary Waveform Generator (AWG) and Oscilloscope instruments within the Digilent WaveForms software. The circuit is built on the breadboard of Electronics Explorer. The AWG will be used to apply either a step input or sinusoidal input to the RC circuit. The Oscilloscope will be used to observe the circuit’s resulting behavior. In this project, we will look at generating a step response and a sinusoidal response in the time domain. We will also use the Network Analyzer to generate a sinusoidal response in the frequency domain.
Digilent WaveForms is our powerful multi-instrument software application. It seamlessly connects to our USB portable oscilloscope, logic analyzer, and function generator products such as the Electronics Explorer, with full Windows, Mac OS X, and Linux support. Designed with a clean, easy to use graphical interface for each instrument, WaveForms makes it easy to acquire, visualize, store, analyze, produce, and reuse analog and digital signals.
Step 1: Turn on Electronics Explorer and Connect it to the computer
Connect the Electronics Explorer to your PC with the USB cable. Connect the board's external power supply and flip the Ready switch to the ON position.
Step 2: Create a simple RC circuit on the breadboard
Build the circuit by connecting the DC channel on Scope 1 to AWG channel 1, the 1 kΩ resistor from AWG channel 1 to one side of the 4.7 nF capacitor, the DC channel on Scope 2 to the same row as the connected resistor and capacitor, and by wiring the unconnected side of the capacitor to ground.
Step 3: Connect the Electronics Explorer to Waveforms
Launch the WaveForms Software. The Device Manager will pop up. Click your EExplorer on the list and click Select. The WaveForms main window will now appear.
After you build the circuit and connect them to right instruments of Electronics Explorer. We can see different input responses.
You are going to configure the Arbitrary Waveform Generator and Oscilloscope.
Configure the AWG with the following settings:
Configure the Oscilloscope with the following settings:
Go back to the AWG window and click either the Run or Run or the green arrow on the Wavegen tab to start the AWG. Return to the Oscilloscope Window and click Run here as well. The result is shown in the figure below.
For this portion of the project, you will use the same circuit as the previous part. You will begin by making some quick changes to the AWG and Oscilloscope instruments. Return to the AWG window and apply the following settings:
Next, you need to configure the Oscilloscope. Trigger Settings: Mode to Auto, Source as Channel 1, Trigger Cond. as Rising, Trigger Level to 5V. On the right side of the screen, set Time Position = 0s, Time Base = 10us/div, Channel 1 & 2 Offsets to 0V, Channel 1 & 2 Ranges to 2V/div. Disable Channels 3 & 4 by clicking their respective check-boxes. Go back to the AWG window and click Run AWG 1 or Run All. Return to the Oscilloscope Window and click Run here as well.
Again, you will continue using the same circuit for the last portion of this project. Return to the WaveForms main window. Click the Network icon to open the Network Analyzer. Set the Start frequency to 1kHz, the Stop frequency to 230kHz, Amplitude to 5V, and Samples to 100. On the right-hand side of the WaveForms GUI, in the Magnitude box set the Top to 10dB and the Range to 30dB, and set the Channel 1 Gain to 2X. Once you have the Network Analyzer configured, click “Run”.
You should see the results shown below.
Get all the project details and explore additional features of the WaveForms software by visiting the Digilent Wiki Page.
A student creates a Bluetooth controlled synthesizer with Digilent Nexys Video Digilent Nexys Video and Pmod BT2Pmod BT2. You can control the frequency and amplitude of 10 sine waves from the mobile apps.
The synthesizer is designed in additive synthesis. This involves the summation of multiple sinusoidal signals to form a more complex signal. The additive synthesis parameters in a discrete-time implementation can be determined using the Fast Fourier Transform (FFT) that computes the Discrete Fourier Transform (DFT) of a sequence.
The system consists of
The student built a few IPs in Xilinx Vivado to run the additive synthesis. You can see the building blocks in the below block diagram.
After you complete the block design and generate the wrapper. You can run the synthesis, implementation and export the hardware to Xilinx SDK. Then, you can write the application in C programming language. Then, you can program the design in the FPGA.
After that, you can plug in Pmod BT2 and headphone on the Nexys Video.
You also need to download the mobile apps and pair that with the Pmod BT2. Then, you can create different sounds
You can follow the steps in the project page and replicate the project.
In the process of developing a new Xilinx Zynq SoC system, it's important to know the specifications of the hardware and see the timing of signals. Unfortunately, the speed of the QSPI transactions in the boot sequence isn’t always an evident specification. Digilent Digital DiscoveryDigital Discovery and High Speed Adapter High Speed Adapter system is capable of visualizing QSPI transmission which can take place at much higher clock speeds, over 100 MHz. Because of the 512 MB DDR memory that the Digital Discovery has, it can perform very large acquisitions. Then, engineers and developers can visualize the boot sequence to determine timing.
The Digital Discovery is a USB Logic Analyzer, Protocol Analyzer and Pattern Generator. The digital inputs and outputs can be connected to a circuit using simple wire probes or breadboard wires. Alternatively, the Digital Discovery High Speed Adapter and impedance-matched probes can be used to connect and utilize the inputs and outputs for more advanced project.
Driven by the free WaveForms software application, Digital Discovery can be configured to be the following instruments:
We can look at the boot sequence of the flash on Digilent ZYBO Zynq SoC platform. First of all, you need to use SOIC clip to bring the QSPI signals out and feed them into Logic Analyzer of Digital Discovery.
Then, you can use javascript to create the debugging test and translate the signals into data in WaveForms. This can be done by choosing Click to Add Channels -> Custom in the Logic Analyzer.
// rgData: input, raw digital sample array // rgValue: output, decoded data array // rgFlag: output, decoded flag array var c = rgData.length // c = number of raw samples var pClock = false; // previous *** signal level var iStart = 0; // used to keep track on word start index var cByte = 0; // byte count per transmission var cBits = 0; // bit counter var bValue = 0; // value variable var fCmd = true; for(var i = 0; i < c; i++){ // for each sample var s = rgData[i]; // current sample var fSelect = 1&(s>>0); // pin0 is the select signal var fClock = 1&(s>>1); // pin1 is the clock signal var fData = 1&(s>>2); // pin2 is the data signal var fData4 = 0xF&(s>>2); // DIN 2-5 DQ 0-3 if(fSelect != 0){ // select active low // while select inactive reset our counters/variables iStart = i+1; // select might become active with next sample cByte = 0; cBits = 0; bValue = 0; pClock = false; fCmd = true; continue; } if(pClock == 0 && fClock != 0){ // sample on clock rising edge bValue <<= 4; // serial data bit, MSBit first bValue |= fData4; cBits++; if(cBits==2){ // when got the 8th bit of the word store it cByte++; // store rgValue/Flag from word start index to current sample position for(var j = iStart; j < i; j++){ // Flag change will be visible on plot even when data remains constant. // This is useful in case we get more consecutive equal values. rgFlag[j] = cByte; rgValue[j] = bValue; } iStart = i+1; // next word might start after this sample cBits = 0; // reset bit count for the next byte bValue = 0; // reset value variable } } pClock = fClock; // previous clock level }
Once you turn on Digilent ZYBO, the instructions will be sent from Zynq to the flash memory. You can then visualize the boot sequence in the Logic Analyzer. The application note is available at Digilent Wiki.
The Fourier transform (FT) decomposes a signal into its constituent frequencies and shows that any signal can be re-written as the sum of sinusoidal functions. It is also a mathematical method for transforming a function of time into a function of frequency , i.e. transforming from the time domain to the frequency domain. The Fast Fourier transform (FFT) computes the Discrete Fourier transform (DFT) of a sequence.
Field Programmable Gate Arrays (FPGAs) offer a high performance and flexibility for real time implementation. FPGA is attractive for high-speed signal processing due to their parallel processing abilities. Pablo has explained how to use the Xilinx FFT IP core to offload the FFT algorithm on the Digilent Eclypse Z7 Zynq SoC PlatformDigilent Eclypse Z7 Zynq SoC Platform. He creates harmonics through FFT.
First of all, you need to add xFFT from the IP catalog.
Then, you can configure the IP by
Once the xFFT IP is configured, you can implement the harmonics design. The below block diagram shows Pablo's design. Other than the xFFT IP, he uses AXI-Datamover and AXI-FIFO for data storage and transfer. The input is stored in the first BRAM and then transferred to FPGA through UART.
Pablo design's block diagram (source: https://www.controlpaths.com/2020/05/25/eclypse-z7-and-xfft/ )
The project details is at Pablo's controlpath blog. He welcomes questions and feedback.
Many engineers have come across Digilent Pmods standard and even included Pmods in their systems. Pmod modules allow for more effective designs by routing analog signals and power supplies only where they are needed, and away from digital controller boards. However, Pmods aren't for high speed communication. So, engineers can't use Pmods in high speed instrumentation systems or digital signal processing applications. At the same time, high speed FPGA Mezzanine Cards are bulky and comparatively pricey. To solve this problem, Digilent makes use of SYZYGY standard and launch a new line of expansion modules for high-speed control, signal processing, or test and measurement applications
Similar to Pmod standard, SYZYGY is an open standard from Portland, Oregon’s Opal Kelly. It fits – in cost, size, and performance – somewhere between the Pmod and FMC standards. Although not much larger than many Pmods, SYZYGY-compatible modules are capable of high-bandwidth connections to an FPGA, enabling very compact and cost-effective high performance I/O. The small, SYZYGY standard form factor recommends them for compact, configurable, rugged systems.
Comparison between Pmod, Syzygy and FMC standard. Source: https://syzygyfpga.io/
Digilent starts the Zmods line with two data acquisition Zmods - Zmod ADCZmod ADC and Zmod DACZmod DAC. The SYZYGY compatible connectors provide enough data transfer bandwidth (BW) for dual-channel, 100MSPS. The high BW and sampling rate, the flexible input/output range, the high resolution and the flexibility provided by the FPGA interface make them ideal for a wide variety of applications.
Zmod ADC 1410
Zmod DAC 1411
A pair of Zmod DAC / Zmod ADC, together with a SYZYGY compatible FPGA carrier, like Eclypse Z7Eclypse Z7, could be used for closed analog loops with digital control, digital filters with analog input and output, hardware-in-the-loop, digital signal processing, high frequency modulators/demodulators, real-time image processing, SDR, etc.
Eclypse Z7 + Zmod ADC + Zmod DAC
The following tutorials step through the process of creating a hardware platform that supports Zmods.
Digilent provides a set of libraries supporting Zmod modules on both Linux and baremetal (standalone) platforms. The Zmod Base Library implements functionality common to all Zmods. For each Zmod, separate libraries are implemented, based on Zmod Base Library.
Digilent Genesys ZU-3EG is an advanced computing platform loaded with Xilinx Zynq Ultrascale+ MPSoC EG and a range of peripherals and interface. Let's take a closer look.
Memory
Main memory is a single-slot populated DDR4 SODIMM, always upgradeable by the user. It is wired to the Processing System (PS) side using the hard-core memory controller. The bundled module is a 4GiB Kingston HyperX HX424S14IB/4. There is also a serial flash memory from ISSI. This memory is used to provide non-volatile code and data storage. It can be used to initialize the PS subsystem as well as configure the Programmable Logic (PL). The flash memory is also commonly used to store non-configuration data needed by the application. If doing this from a bare-metal application, the flash memory can be freely accessed using standalone libraries included with a Xilinx SDK BSP project. If doing this from a Petalinux generated embedded Linux system, the flash can be partitioned as desired and mounted like a standard Memory Technology Device (MTD) block device. The microSD connector has a hinge-based mechanism. It is compatible with UHS-I allowing 1.8V signaling and speeds up to SDR104, or 104MB/s.
Platform MCU
Tying all the features of the Genesys ZU together into a computing platform requires an embedded controller which is called Platform MCU. Part of the platform is the coin battery, the fan, a temperature sensor inside the Zynq Ultrascale+ MPSoC EG device and Power Management Units (PMU). Management is done through dedicated signals or over the main I2C bus. The Platform MCU is implemented by a Microchip ATmega328PB. It is on the auxiliary 3.3V power domain, immediately available after power-up. This power domain is independent of the PMUs which provide main power, giving the Platform MCU control over main power. It also shares the main I2C bus with the Zynq Ultrascale+ MPSoC EG device, giving it access to all the critical peripherals. Other features include Zynq Ultrascale+ MPSoC EG device temperature sensing, fan speed control, and VADJ voltage setting. The Platform MCU program memory has two sections:
Software Support
Digilent provides an out-of-the-box Petalinux project and Vivado Webpack project. There are free IP-support for the following peripherals
Network Interface
The Genesys ZU uses a TI DP83867CR PHY to implement a 10/100/1000 Ethernet port for wired connectivity. After power-up, the PHY starts with Auto Negotiation enabled, advertising 10/100/1000 link speeds and full duplex. If there is an Ethernet-capable partner connected, the PHY automatically establishes a link with it, even with the Zynq Ultrascale+ MPSoC device is not configured.
Microchip ATWINC1500 module provides 2.4GHz IEEE 802.11 b/g/n wireless network connectivity. It interfaces to the PS-side of Zynq Ultrascale+ MPSoC EG device over SPI, supporting a maximum theoretical data rate of 48Mbps. The module can be used in bare-metal applications with the full IP stack included in the firmware loaded from flash. It is also supported in Linux in the ATWILC1000-compatible mode, where the firmware is loaded on-the-fly upon boot and the OS IP stack is used.
The Mini PCIe socket allows users to connect any wireless radio module compatible with the PCIe Mini Card standard. With both PCIe x1 and USB 2.0 available in the socket, the dual Wi-Fi/Bluetooth modules can be used. User can use the SIM slot to bring in WWAN radio on board.
USB Interface
USB 3.1 Gen1 and USB 2.0 support is handled by the Full-Featured Type-C receptacle. The connector has a USB 2.0 pair for backward compatibility, one high-speed transceiver lane (two pairs) for USB 3.1, and configuration channel (CC). Since the plug is reversible, the upper and lower rows double the number of pins for each function, designated by suffixes 1 and 2. Plug orientation is established during the configuration process over the CC1 and CC2 pins. Depending on the orientation, either pins with suffix 1 or pins with suffix 2 carry actual signals. Multiplexing 1 and 2 for the USB 3.1 lane is done by an on-board hardware multiplexer.
Host-only USB 2.0 functionality is implemented by a Microchip USB3320 PHY and a Microchip USB2513B hub. The PHY is wired to the PS-side controller of Zynq Ultrascale+ MPSoC EG device over ULPI. The hub has three Downstream-Facing Ports. Two of these connect to a dual-stacked Type-A connector, providing 0.5A current per port. The third port is connected to the MiniPCIe slot, an embedded USB port.
The micro Type-B connector connects to an FTDI FT4232HQ USB bridge. It provides a JTAG interface for programming and debugging, one UART interface connected to the Zynq Ultrascale+ MPSoC EG device and one UART interface connected to the Platform MCU. The UART interfaces are exposed as standard COM ports.
Multimedia
The dual-lane mini DisplayPort connector is wired to a PS-side DisplayPort Controller of Zynq Ultrascale+ MPSoC EG device via two PS-GTR transceiver lanes. Resolutions up to 4Kx2K@30fps are supported at a maximum 5.4Gbps line rate.
The Genesys ZU-3EG includes an Analog Devices ADAU1761 SigmaDSP audio codec complementing its multimedia features. Four 1/8” (3.5mm) audio jacks are available for line-out, headphone-out, line-in, and microphone-in. Line-out, headphone-out and line-in jacks are stereo and the microphone input is mono. To record or play back audio, the audio data needs to be converted. The audio codec bridges the gap between the analog jacks and the digital FPGA pins. It connects to the PL side of the Zynq Ultrasacle+ MPSoC EG device. Analog-to-digital and digital-to-analog conversion is done at up to 24 bits and 96 kHz sampling rate. Digital audio data is carried to/from the FPGA on a serial, full-duplex interface, which supports several different formats, the default being I2S. This interface is clocked by the FPGA through BCLK by default, but the codec can be configured to provide the clock itself. Configuring the audio codec can be done over I2C. The codec is clocked from the FPGA through the Master Clock (MCLK) pin. A clock must be provided for the codec to function, including the I2C port. The exact frequency depends on the desired sample rate and whether PLL will be used, but 12 MHz is a good start.
The two MIPI ports are 15-pin, 1 mm pitch, zero insertion force (ZIF) connectors designed specifically for attaching Digilent PCAM 5C, 5MP camera sensor modules, to Genesys ZU-3EG. It allows for bi-directional D-PHY lanes thanks to direct I/O support in the UltraScale+ architecture. Therefore, it also supports MIPI DSI applications.
Mini PCIe / mSATA
It is compatible with PCI Express Mini card types F1/F2 (Full-Mini) and H1/H2 (Half-Mini) and mSATA card types Mini and Full size. Mechanical compatibility is assured by the relocatable stand-offs included in Genesys ZU-3EG. Electrically, the SATA lane and the PCIe x1 lane share the same PS-GTR transceiver lane. Therefore, it is up to the MPSoC configuration to enable either the SATA or the PCIe Root controller and map it to the GTR lane. Mini PCIe modules can also make use of the embedded USB 2.0 port wired to the on-board USB hub and the MPSoC USB1 controller up the chain.
Expansion Port
The Genesys ZU includes an FPGA Mezzanine Card (FMC) Standard-conforming carrier card connector that enables connecting mezzanine modules compliant with the same standard. All user defined signals are bonded to the PL-side of the Zynq Ultrascale+ MPSoC EG device.
The Zmod port uses the SYZYGY Standard interface to communicate with installed SYZYGY pods. Each SYZYGY Standard interface contains 14 single-ended I/O pins (2 of which I2C), 8 differential I/O pairs (which can alternatively be used as 16 additional single-ended I/O pins), and two dedicated differential clocks - one for input and one for output. The Zmod port is wired to PL-side Zynq Ultrascale+ MPSoC EG device powered by the VADJ rail, sharing them with FMC signals.
Pmod ports are 2×6, right-angle, 100-mil spaced female connectors that mate with standard 2×6 pin headers. Each 12-pin Pmod port provides two 3.3V VCC signals (pins 6 and 12), two Ground signals (pins 5 and 11), and eight logic signals
Oscillators
The PS on Genesys ZU-3EG has a clock source of 30MHz while the PL has a clock source of (by default) 25MHz
Coin battery
A Seiko TS621E lithium rechargeable battery provides power to the Zynq Ultrascale+ MPSoC EG device Battery Power Domain (BPD) through the VCC_PSBATT pin. It is connected in parallel with a 100 uF capacitor. The BPD includes the real-time clock with a dedicated crystal oscillator and a RAM available for storing a secure configuration key. The capacitor alone can provide power for approx. 15 minutes after main power is turned off. The battery will provide power after that.
You can have the detailed information from Genesys ZU-3EG reference manual