Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| programmable-logic:usb104a7:reference-manual [2022/09/12 12:29] – changed forum.digilentinc.com to forum.digilent.com jeff.greenberg_ni.com | programmable-logic:usb104a7:reference-manual [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== USB104 A7 Hardware Reference Manual ====== | ||
| + | The USB104 A7 conforms to the industry-standard PC/104 form factor, and brings power and versatility to your PC/104 stackable PC. It features an Xilinx Artix-7 XC7A100T. Artix®-7 devices provide the highest performance-per-watt fabric making the USB104 A7 ideal for size, weight, and power constrained projects. I/O is provided with three 12-pin Pmod ports, a SYZYGY-compatible Zmod port. It features a USB port with multiple I/O interfaces, from UART to DSPI and DPTI, providing anything from a simple command interface up to a 40MB/s parallel interface, controllable through the Digilent Adept API. | ||
| + | |||
| + | {{Digilent Image Gallery | ||
| + | | image = {{ : | ||
| + | | image = {{ : | ||
| + | | image = {{ : | ||
| + | }} | ||
| + | |||
| + | ===== Features ===== | ||
| + | |||
| + | * **Xilinx Artix-7 FPGA (XC7A100T-1CSG324I)** | ||
| + | * 15,850 slices containing four 6-input LUTs and 8 flip-flops apiece | ||
| + | * 4,860 Kbits of fast block RAM | ||
| + | * 6 Clock Management Tiles (CMTs), each with a phase-locked loop and mixed-mode clock manager | ||
| + | * 240 DSP slices | ||
| + | * Internal clock speeds exceeding 450MHz | ||
| + | * On-chip analog-to-digital converter (XADC) for FPGA die temperature monitoring | ||
| + | * Programmable over JTAG and Quad-SPI Flash | ||
| + | * **Memory** | ||
| + | * 512 MB Micron DDR3 with 16-bit bus @ 800 or 667 MT/s depending on configurable voltage | ||
| + | * 16 MB Spansion Quad-SPI Flash | ||
| + | * **Power** | ||
| + | * Powered over USB or 5V external power source | ||
| + | * **USB** | ||
| + | * DPTI/DSPI Data Transfer Interface | ||
| + | * USB-JTAG Programming Circuitry | ||
| + | * USB-UART Bridge | ||
| + | * **Zmod Port** | ||
| + | * One ports following the SYZYGY Standard interface specification | ||
| + | * Compatible with a variety of SYZYGY pods, allowing for a wide variety of applications | ||
| + | * Dedicated differential clocks for input and output | ||
| + | * 8 differential I/Os | ||
| + | * 16 single-ended I/Os | ||
| + | * DNA interfaces connected to Platform MCU allowing for various auto-negotiated power supply configurations | ||
| + | * **Pmod Ports** | ||
| + | * 3 twelve-pin ports with a total of 24 FPGA-connected I/Os | ||
| + | * **User GPIO** | ||
| + | * 2 push-buttons | ||
| + | * 4 LEDs | ||
| + | |||
| + | ---- | ||
| + | |||
| + | {{ : | ||
| + | < | ||
| + | |||
| + | ^ Callout # ^ Description | ||
| + | ^ 1 | Xilinx Artix-7 FPGA ^ 6 | FPGA Programming Reset Button | ||
| + | ^ 2 | Micron DDR3 Memory | ||
| + | ^ 3 | Barrel Jack for External Power Supply | ||
| + | ^ 4 | Power Good Indicator LED | ||
| + | ^ 5 | Programming Done LED ^ | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Functional Description ===== | ||
| + | ==== 1. Power Supplies ==== | ||
| + | |||
| + | The USB104 A7's power circuitry was carefully designed to meet the requirements of the Artix-7 FPGA and all peripherals while also allowing the flexibility required to support a variety of different Zmod/SYZYGY modules. | ||
| + | |||
| + | An overview of the power circuit is shown in Figure 1.1: | ||
| + | |||
| + | {{ : | ||
| + | < | ||
| + | |||
| + | All on-board power supplies are automatically sequenced on when a power supply, whether USB or an external supply connected to the barrel jack (), is connected to the board. | ||
| + | |||
| + | The power indicator LED, labeled " | ||
| + | |||
| + | An additional indicator LED, labeled " | ||
| + | |||
| + | === 1.1. Power Input Source === | ||
| + | |||
| + | The USB104 A7 can be powered either over USB or via a wall wart supply with a barrel jack, via connector J6. The wall wart supply must use a center-positive 2.1 mm internal-diameter plug and deliver between 4.65V and 5.5V DC. It should also be able to provide at least 5 A (25 Watts) in order to support power-hungry FPGA design and external peripherals. A compatible 30 Watt power supply ships with the USB104 A7. | ||
| + | |||
| + | The power input source is automatically determined by the supply circuitry. The barrel jack supply is preferred. If a supply is connected when the board is already powered through USB, then the board will seamlessly switch over to the external supply without brownout or reset. If the external supply is disconnected, | ||
| + | |||
| + | //Table 1.1.1: USB104 A7 Power Input Specifications// | ||
| + | ^ Connector Type ^ Connector Label ^ Schematic Net Name ^ Min/Rec/Max Voltage | ||
| + | | Barrel Jack | J6 | VEXT5V0 | ||
| + | | USB Type B | J2 | VBUS | 4.65/ | ||
| + | |||
| + | === 1.2. Power Specifications === | ||
| + | |||
| + | Table 1.2.1 describes the characteristics of the USB104 A7's on-board power rails. It can be used to estimate power consumption for a project, or determine how much current attached peripherals can draw before being limited. | ||
| + | |||
| + | //Table 1.2.1: USB104 A7 Power Rail Specifications// | ||
| + | ^ Net Name ^ Upstream Net Name ^ Power IC Type ^ Power IC Label ^ Min/Typ/Max Voltage | ||
| + | | VCC1V0 | ||
| + | | VCC1V8 | ||
| + | | DDRVCC | ||
| + | | DDRVTT | ||
| + | | VCC3V3 | ||
| + | | VADJ | VCC5V0 | ||
| + | | SYZ5V0 | ||
| + | |||
| + | ~~REFNOTES~~ | ||
| + | |||
| + | === 1.3. Power Sequencing === | ||
| + | The power-on sequence for the USB104 A7 is controlled by the connections between the power-good and enable pins of the supplies. The sequence is started when a power input source is connected to the board. The power supplies shut down in the opposite order when both input sources are disconnected. The startup sequence is as follows: | ||
| + | |||
| + | - VCC5V0, SYZ5V0 | ||
| + | - VCC1V0 | ||
| + | - VCC1V8 | ||
| + | - DDRVCC/ | ||
| + | - VCC3V3 | ||
| + | - VADJ | ||
| + | |||
| + | **Note:** //The VADJ rail may or may not be powered on, depending on the PMCU configuration and whether a Zmod or other SYZYGY pod is installed.// | ||
| + | |||
| + | === 1.4. Platform MCU === | ||
| + | As noted in previous sections, the USB104 A7 uses an Atmega328PB microcontroller (IC12), referred to as the Platform MCU (PMCU), to implement the SmartVIO requirements of the SYZYGY standard, set the DDR voltage, configure the USB Hub, and provide information about the power supply settings and SYZYGY ports to the FPGA. | ||
| + | |||
| + | The Platform MCU enumerates the SYZYGY port and determines the power needs of an installed module. The power budget of the USB104 A7 is then determined based on the needs of the Zmod, as well as other peripherals. | ||
| + | |||
| + | The PMCU firmware for the USB104 A7 supports setting the DDR operating voltage based on the position of the DDR voltage select switch (SW1/2). The state of this switch is only read during the power-on sequence. Further information on the DDR voltage select functionality can be found in Section 3, [[# | ||
| + | |||
| + | If the hub configuration/ | ||
| + | |||
| + | **Note:** //Switches SW1/3 and SW1/4 are intended for restoration of and updates to the Platform MCU firmware and the USB Hub configuration. Please reach out to Digilent Support on the Programmable Logic section of the [[https:// | ||
| + | |||
| + | When the USB104 A7 is turned on, the PMCU enumerates the pods attached to the USB104 A7's SYZYGY ports and retrieves their DNA, in order to correctly configure the variable supplies. | ||
| + | |||
| + | After SYZYGY enumeration is complete, the PMCU configures itself as an I2C slave device with a chip address of 0x60. Control of the I2C bus is then handed over to the FPGA, with SCL and SDA connected to FPGA pins U16 and V17, respectively. For MicroBlaze-based designs, Xilinx' | ||
| + | |||
| + | ---- | ||
| + | ==== 2. FPGA Configuration ==== | ||
| + | After power-on, the Artix-7 FPGA must be configured (or programmed) before it can perform any functions. The FPGA can be configured in one of two ways: | ||
| + | - A PC can use the Digilent USB-JTAG circuitry connected to the USB port (J2, labeled " | ||
| + | - A file stored in the nonvolatile serial (SPI) flash device can be transferred to the FPGA using the SPI port. | ||
| + | |||
| + | {{ : | ||
| + | < | ||
| + | |||
| + | Figure 2.1 shows the different options available for configuring the FPGA. An on-board programming mode select switch (SW1/1) selects between the programming modes. | ||
| + | |||
| + | The FPGA configuration data is stored in files called bitstreams that have the .bit file extension. The Vivado software from Xilinx can create bitstreams from VHDL, Verilog®, or schematic-based source files. | ||
| + | |||
| + | Bitstreams are stored in SRAM-based memory cells within the FPGA. This data defines the FPGA’s logic functions and circuit connections. The data remains valid until it is erased by removing board power, by pressing the reset button (BTNP, labeled " | ||
| + | |||
| + | An Artix-7 100T bitstream is typically 30,606,304 bits and can take a long time to transfer. The time it takes to program the USB104 A7 can be decreased by compressing the bitstream before programming, | ||
| + | |||
| + | The following sections provide greater detail about programming the USB104 A7 using the different methods available. | ||
| + | |||
| + | === 2.1. JTAG Configuration === | ||
| + | |||
| + | Xilinx tools typically communicate with FPGAs using the Test Access Port and Boundary-Scan Architecture, | ||
| + | |||
| + | Programming the USB104 A7 with an uncompressed bitstream using the onboard USB-JTAG circuitry usually takes around 5 seconds. JTAG programming can be done using Vivado' | ||
| + | |||
| + | === 2.2. Quad SPI Configuration === | ||
| + | |||
| + | Since the FPGA on the USB104 A7 is volatile, it relies on the Quad-SPI flash memory to store the configuration between power cycles. This configuration mode is called Master SPI. The blank FPGA takes the role of master and reads the configuration file out of the flash device upon power-up. To that effect, a configuration file needs to first be downloaded to the flash. When programming a nonvolatile flash device, a bitstream file is transferred to the flash in a two-step process. First, the FPGA is programmed with a circuit that can program flash devices, and then data is transferred to the flash device via the FPGA circuit (this complexity is hidden from the user by the Xilinx tools). This is called indirect programming. After the flash device has been programmed, it can automatically configure the FPGA at a subsequent power-on or reset event as determined by the mode switch setting (see Figure 3). Programming files stored in the flash device will remain until they are overwritten, | ||
| + | |||
| + | Programming the flash can take as long as four to five minutes, which is mostly due to the lengthy erase process inherent to the memory technology. Once written however, FPGA configuration can be very fast—less than a second. Bitstream compression, | ||
| + | |||
| + | Quad-SPI programming can be done using Vivado' | ||
| + | |||
| + | ---- | ||
| + | ==== 3. DDR3/DDR3L Memory ==== | ||
| + | |||
| + | The USB104 A7 includes one MT41K256M16TW-107 memory component, creating a single rank, 16-bit wide interface with 512MB of capacity. It is routed to an HR (High Range) FPGA bank, powered at either 1.35V or 1.5V (discussed in Section 3.1, [[# | ||
| + | |||
| + | For proper operation of the memory, a memory controller and physical layer (PHY) interface needs to be included in the FPGA design. The easiest way to accomplish this on the USB104 A7 is to use the Xilinx 7-series memory interface solutions core generated by the MIG (Memory Interface Generator) Wizard. The MIG Wizard can generate a native FIFO-style or an AXI4 interface to connect to user logic. This workflow allows the customization of several DDR parameters optimized for the particular application. Table 3.1 below lists the MIG Wizard settings optimized for the USB104 A7 (any settings not mentioned can be left in default state). | ||
| + | |||
| + | //Table 3.1: Memory Interface Generator Settings for the USB104 A7// | ||
| + | |||
| + | ^ Setting | ||
| + | ^ Memory type | DDR3 SDRAM | DDR3 SDRAM | | ||
| + | ^ Max. clock period | ||
| + | ^ Memory part | MT41K256M16XX-107 | ||
| + | ^ Memory Voltage | ||
| + | ^ Data width | 16 | 16 | | ||
| + | ^ Data mask | Enabled | ||
| + | ^ Recommended Input Clock Period | ||
| + | ^ Read Burst Type and Length | ||
| + | ^ Output Driver Impedance Control | ||
| + | ^ Rtt (nominal) – On-die termination | ||
| + | ^ Controller Chip Select pin | Disabled | ||
| + | ^ Internal Vref | Enabled | ||
| + | ^ Internal termination impedance | ||
| + | |||
| + | For clocking, it is recommended that the System clock be set to "No buffer", | ||
| + | |||
| + | For your convenience, | ||
| + | |||
| + | For those using the MIG with a MicroBlaze project, the USB104 A7 MIG settings and pinout can be automatically imported from Digilent' | ||
| + | |||
| + | For more details on the Xilinx MIG, refer to the 7 Series FPGAs Memory Interface Solutions User Guide (Xilinx UG586). | ||
| + | |||
| + | === 3.1. DDR3 Voltage Levels === | ||
| + | The USB104 A7 supports two voltage levels for the DDR3/DDR3L memory. The Platform MCU reads the position of the DDR voltage select switch (SW1/2) during powerup, and sets the rail voltages appropriately. While the select switch can be set for 1.35V so that the board uses less power, this comes with a performance tradeoff, and is intended only for advanced users. The MIG.prj file provided with Digilent' | ||
| + | |||
| + | //Table 1.4.1: DDR Voltage Select Switch Settings// | ||
| + | |<60% 40% 30% 30%>| | ||
| + | ^ Switch Position | ||
| + | | 1.5V (OFF) | 1.5V | 0.75V | | ||
| + | | 1.35V (ON) | 1.35V | 0.675V | ||
| + | |||
| + | ---- | ||
| + | ==== 4. Quad-SPI Flash ==== | ||
| + | |||
| + | FPGA configuration files can be written to the Quad-SPI Flash (Spansion part number **S25FL128SAGMF100**), | ||
| + | |||
| + | The contents of the memory can be manipulated by issuing certain commands on the SPI bus. The implementation of this protocol is outside the scope of this document. All signals in the SPI bus are general-purpose user I/O pins after FPGA configuration. On other boards, SCK is an exception because it remains a dedicated pin even after configuration, | ||
| + | |||
| + | Xilinx' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | < | ||
| + | |||
| + | ---- | ||
| + | ==== 5. Oscillators/ | ||
| + | The USB104 A7 includes a 100 MHz crystal oscillator connected to pin E3, an MRCC input on FPGA bank 35. | ||
| + | |||
| + | Xilinx offers the Clocking Wizard IP core to help users generate the different clocks required for a specific design. This wizard will properly instantiate the needed MMCMs and PLLs based on the desired frequencies and phase relationships specified by the user. The wizard will then output an easy-to-use wrapper component around these clocking resources that can be inserted into the user’s design. The clocking wizard can be accessed from within the Vivado and IP Integrator tools. | ||
| + | |||
| + | The 100 MHz clock is intended as both a general purpose system clock, and to drive the system clock input of the Memory Interface Generator (MIG) IP Core to allow for proper use of the DDR3/DDR3L memory. Section 3, [[# | ||
| + | ---- | ||
| + | |||
| + | ==== 6. USB Port ==== | ||
| + | The USB104 A7 includes a high-retention USB-B port intended for all communication with a host computer. This port is connected to a USB hub which breaks out the traffic into several different FPGA-connected interfaces, via a FTDI FT2232HQ USB-UART bridge and a FTDI FT232H hi-speed single-channel USB to UART/FIFO bridge. The USB hub and the two controller are transparent to the user. A UART interface (referred to as the USB-UART Bridge), the USB-JTAG programming interface, and a parallel data interface (DPTI) are implemented. The USB JTAG programming functionality is discussed in the [[# | ||
| + | |||
| + | **Note:** //The hub and bridge circuitry of the USB104 A7 is designed such that the interfaces do not interfere with one another. For example, programmers interested in using the UART or parallel transfer functionality of the USB104 A7 within their design do not need to worry about the JTAG circuitry interfering with the UART data transfers, and vice-versa.// | ||
| + | |||
| + | As long as mode switch SW1/4 is placed in the " | ||
| + | |||
| + | === 6.1. DPTI Parallel Data Transfer Interface === | ||
| + | |||
| + | The DPTI interface is an 8-bit wide parallel FIFO-style data interface supporting both asynchronous and synchronous modes. In FTDI terminology, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | < | ||
| + | |||
| + | //Table 6.1.1. DPTI Signal Descriptions// | ||
| + | |<100% 10% 15%>| | ||
| + | ^ Signal ^ Direction (FPGA) ^ Description ^ | ||
| + | | D[7:0] | I/O | Data bus. | | ||
| + | | RXE# | Input | When low, data is available to be read from the FIFO. | | ||
| + | | TXE# | Input | When low, data can be written to the FIFO. | | ||
| + | | RD# | Output | A low pulse triggers data to be read out from the FIFO. | | ||
| + | | WR# | Output | A low pulse triggers data to be written to the FIFO. | | ||
| + | | SIWU# | Output | Send Immediate or Wake-up. In normal mode, a low pulse triggers sending a data packet with teh data currently in the FIFO, even if below the normal packet size. In suspend mode, a low pulse can wake up the host computer. | ||
| + | | OE# | Output | When low, the data bus is driven by the USB controller (read transfer). When high, the bus is driven by the FPGA (write transfer). | ||
| + | | CLKO | Input | 60 MHz clock used in synchronous mode. Data is launched and can be captured on the rising edge. | | ||
| + | |||
| + | Microblaze support for DPTI is provided by the AXI DPTI IP core which can be found in the [[https:// | ||
| + | |||
| + | The Digilent Adept Runtime can be used with the the Digilent Adept API in order to simplify the host side communication through DPTI. The Adept Runtime can be downloaded through the [[software: | ||
| + | |||
| + | **Note:** //A DSPI interface is also connected, but no demos are provided as of time of writing. Since the interfaces share pins, DPTI and DSPI cannot be used simultaneously. The pulldown resistor on the SPI enable line means that the default interface is DPTI. SPIEN should be held low or not be driven by the FPGA while using DPTI.// | ||
| + | /* | ||
| + | === 6.2 DSPI Serial Transfer Interface === | ||
| + | |||
| + | The DSPI interface is mapped to two logical ports on the host computer. | ||
| + | |||
| + | ^ SPI parameter ^ Port 0 ^ Port 1 ^ | ||
| + | |||
| + | Timing parameters can be adjusted through the host-side API. | ||
| + | |||
| + | Xilinx AXI QSPI | ||
| + | */ | ||
| + | === 6.2. USB-UART Bridge (Serial Port) === | ||
| + | |||
| + | The USB104 A7's FTDI FT2232HQ USB-UART bridge allows you use PC applications to communicate with the board using standard Windows COM port commands. Free USB-COM port drivers, available from www.ftdichip.com under the " | ||
| + | |||
| + | Two on-board status LEDs provide visual feedback on traffic flowing through the port: the transmit LED (labeled " | ||
| + | |||
| + | The connections between the FT2232HQ and the Artix-7 are shown in Figure 6.2.1: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | < | ||
| + | |||
| + | ---- | ||
| + | ==== 7. Zmod Port ==== | ||
| + | |||
| + | The USB104 A7 features one Zmod ports, which uses a SYZYGY Standard interface to communicate with an installed SYZYGY pod. The port is compatible with version 1.1 of the SYZYGY specification from Opal Kelly. | ||
| + | |||
| + | SYZYGY SmartVIO functionality is implemented by the Eclypse' | ||
| + | |||
| + | **Warning**: | ||
| + | |||
| + | A SYZYGY Standard interface contains 16 single-ended I/O pins, 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. Bank 15 of the FPGA is dedicated to the Zmod port and is powered by a dedicated adjustable rail, configured by the Platform MCU as the USB104 A7 is powered on. Template constraints for the Zmod port can be found in the USB104 A7's Master XDC file, available through Digilent' | ||
| + | |||
| + | Digilent provides Eclypse-compatible low-level IPs, scripted Vivado flows, and software libraries to support each [[zmod: | ||
| + | |||
| + | For more information on the SYZYGY standard, see [[https:// | ||
| + | |||
| + | === 7.1. SYZYGY Pod Compatibility === | ||
| + | |||
| + | The USB104 A7's Zmod port is compatible with a variety of different SYZYGY pods. Information required to determine if the USB104 A7 is compatible with a certain pod is summarized in Table 7.1.1: | ||
| + | |||
| + | //Table 7.1.1: SYZYGY Compatibility Table// | ||
| + | |||
| + | ^ Parameter | ||
| + | ^ Port Type | Standard | ||
| + | ^ ::: | Single-Wide | ||
| + | ^ Total 5V Supply Current | ||
| + | ^ Total 3.3V Supply Current | ||
| + | ^ VIO Supply Voltage Range | 1.2V to 3.3V | | ||
| + | ^ Total VIO Supply Current | ||
| + | ^ Port Groups | ||
| + | ^ I/O Count | 28 total (8 DP) | | ||
| + | ^ Length Matching | ||
| + | |||
| + | ---- | ||
| + | ===== 8. Pmod Connectors ===== | ||
| + | |||
| + | Pmod connectors are 2x6, right-angle, | ||
| + | |||
| + | **Warning: | ||
| + | |||
| + | Digilent produces a large collection of Pmod accessory boards that can attach to the Pmod expansion connectors to add ready-made functions like A/D’s, D/A’s, motor drivers, sensors, and other functions. See www.digilentinc.com for more information. | ||
| + | |||
| + | The USB104 A7 has four Pmod connectors, some of which behave differently than others. Each Pmod connector falls into one of two categories: standard or high-speed. Also, some Pmod connectors share their connections with the inner rows of the shield connector, and should not be used at the same time as a shield that requires those pins. Table 8.1 specifies which category each Pmod falls into, whether it shares any pins with the shield connector, and also lists the FPGA pins they are connected to. The following sections describe the different types of Pmods. | ||
| + | |||
| + | **Note:** //Some Pmods use a 1x6 pin header. Designs and IP provided by Digilent for these Pmods connect their pins to the top row of the standard 2x6 pin interface (pins 1-4).// | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | //Figure 8.1. Pmod connector.// | ||
| + | |||
| + | //Table 8.1: USB104 A7 Pmod Pinout.// | ||
| + | | ^ **Pmod JA ** ^ **Pmod JB** ^ **Pmod JC** ^ | ||
| + | ^ **Pmod Type** | ||
| + | ^ **Pin 1** | F4 | C4 | C5 | | ||
| + | ^ **Pin 2** | F3 | B2 | C6 | | ||
| + | ^ **Pin 3** | E2 | B3 | B6 | | ||
| + | ^ **Pin 4** | D2 | B4 | C7 | | ||
| + | ^ **Pin 7** | H2 | B1 | A5 | | ||
| + | ^ **Pin 8** | G2 | A1 | A6 | | ||
| + | ^ **Pin 9** | C2 | A3 | B7 | | ||
| + | ^ **Pin 10** | C1 | A4 | D8 | | ||
| + | |||
| + | The standard Pmod connectors are connected to the FPGA via 200 Ohm series resistors. The series resistors prevent short circuits that can occur if the user accidentally drives a signal that is supposed to be used as an input. The downside to this added protection is that these resistors can limit the maximum switching speed of the data signals. | ||
| + | ---- | ||
| + | ==== 9. User GPIO ==== | ||
| + | |||
| + | The USB104 A7 includes 2 push buttons and 4 individual LEDs, as shown in Figure 7.1. | ||
| + | |||
| + | The push buttons are connected to the FPGA via series resistors to prevent damage from inadvertent short circuits which could occur if an FPGA pin assigned to a button was defined as an output. The two push buttons are " | ||
| + | |||
| + | The four individual high-efficiency LEDs are anode-connected to the FPGA via 330-ohm resistors, so they will turn on when a logic high voltage is applied to their respective I/O pin. | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | < | ||
| + | ---- | ||

