Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmable-logic:nexys-a7:reference-manual [2021/05/14 16:07] – ↷ Links adapted because of a move operation Arthur Brown | programmable-logic:nexys-a7:reference-manual [2022/10/04 04:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 10: | Line 10: | ||
| }} | }} | ||
| + | |||
| + | =====%hide download===== | ||
| * Download this reference manual: {{ : | * Download this reference manual: {{ : | ||
| Line 102: | Line 104: | ||
| The only difference between the Nexys A7 and Nexys 4 DDR is the addition of the Nexys A7-50T variant of the Nexys A7, which has a smaller gate array. The Nexys A7-100T variant is functionally identical to the Nexys 4 DDR. | The only difference between the Nexys A7 and Nexys 4 DDR is the addition of the Nexys A7-50T variant of the Nexys A7, which has a smaller gate array. The Nexys A7-100T variant is functionally identical to the Nexys 4 DDR. | ||
| - | Users of the Nexys A7 may find resources produced for the Nexys 4 DDR helpful, which can be found at the Nexys 4 DDR's [[programmable-logic: | + | Users of the Nexys A7 may find resources produced for the Nexys 4 DDR helpful, which can be found at the Nexys 4 DDR's [[programmable-logic: |
| ==== Migrating from Nexys 4 ==== | ==== Migrating from Nexys 4 ==== | ||
| Line 140: | Line 142: | ||
| - | The Nexys A7 features overcurrent and overvoltage protection on the input power rail. A 3.5A fuse (R287) and a 5V Zener diode (D16) provide a non-resettable protection for other on-board integrated circuits, as displayed in Figure | + | The Nexys A7 features overcurrent and overvoltage protection on the input power rail. A 3.5A fuse (R287) and a 5V Zener diode (D16) provide a non-resettable protection for other on-board integrated circuits, as displayed in Figure |
| ---- | ---- | ||
| Line 169: | Line 171: | ||
| ==== 2.1 JTAG Configuration ==== | ==== 2.1 JTAG Configuration ==== | ||
| - | The Xilinx tools typically communicate with FPGAs using the Test Access Port and Boundary-Scan Architecture, | + | The Xilinx tools typically communicate with FPGAs using the Test Access Port and Boundary-Scan Architecture, |
| - | Programming the Nexys A7 with an uncompressed bitstream using the on-board USB-JTAG circuitry usually takes around five seconds. JTAG programming can be done using the hardware server in Vivado or the iMPACT tool included with ISE and the Lab Tools version of Vivado. | + | Programming the Nexys A7 with an uncompressed bitstream using the on-board USB-JTAG circuitry usually takes around five seconds. JTAG programming can be done using the hardware server in Vivado or the iMPACT tool included with ISE and the Lab Tools version of Vivado. |
| ==== 2.2 Quad-SPI Configuration ==== | ==== 2.2 Quad-SPI Configuration ==== | ||
| - | Since the FPGA on the Nexys 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 be downloaded first 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 jumper setting (see Figure | + | Since the FPGA on the Nexys 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 be downloaded first 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 jumper setting (see Figure |
| 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, | 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, | ||
| Line 216: | Line 218: | ||
| More advanced users or those who wish to learn more about DDR SDRAM technology may want to use the Xilinx 7-series memory interface solutions core generated by the MIG (Memory Interface Generator) Wizard. Depending on the tool used (ISE, EDK or Vivado), 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 Nexys A7. | More advanced users or those who wish to learn more about DDR SDRAM technology may want to use the Xilinx 7-series memory interface solutions core generated by the MIG (Memory Interface Generator) Wizard. Depending on the tool used (ISE, EDK or Vivado), 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 Nexys A7. | ||
| - | | **Table 3.1.1 DDR2 settings for the Nexys A7.** | + | | **Table 3.1 DDR2 settings for the Nexys A7.** || |
| | **Setting** | | **Setting** | ||
| | Memory type | DDR2 SDRAM | | | Memory type | DDR2 SDRAM | | ||
| Line 233: | Line 235: | ||
| The MIG Wizard will require the fixed pin-out of the memory signals to be entered and validated before generating the IP core. For your convenience, | The MIG Wizard will require the fixed pin-out of the memory signals to be entered and validated before generating the IP core. For your convenience, | ||
| - | For more details on the Xilinx memory interface solutions, refer to the 7 Series FPGAs Memory Interface Solutions User Guide (ug586)¹. | + | For more details on the Xilinx memory interface solutions, refer to the 7 Series FPGAs Memory Interface Solutions User Guide (ug586) |
| + | ¹. | ||
| ==== 3.2 Quad-SPI Flash ==== | ==== 3.2 Quad-SPI Flash ==== | ||
| - | FPGA configuration files can be written to the Quad-SPI Flash (Spansion part number S25FL128S), and mode settings are available to cause the FPGA to automatically read a configuration from this device at power on. An Artix-7 100T configuration file requires just less than four MiB (mebibyte) of memory, leaving about 77% of the flash device available for user data. Or, if the FPGA is getting configured from another source, the whole memory can be used for custom data. | + | FPGA configuration files can be written to the Quad-SPI Flash, and mode settings are available to cause the FPGA to automatically read a configuration from this device at power on. An Artix-7 100T configuration file requires just less than four MiB (mebibyte) of memory, leaving about 77% of the flash device available for user data. Or, if the FPGA is getting configured from another source, the whole memory can be used for custom data. |
| 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 except SCK are general-purpose user I/O pins after FPGA configuration. SCK is an exception because it remains a dedicated pin even after configuration. Access to this pin is provided through a special FPGA primitive called STARTUPE2. | 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 except SCK are general-purpose user I/O pins after FPGA configuration. SCK is an exception because it remains a dedicated pin even after configuration. Access to this pin is provided through a special FPGA primitive called STARTUPE2. | ||
| + | |||
| + | To find out the exact memory part loaded, check the PCB revision and any stickers placed on the PCB with the flash part number printed on it. The table below lists the possible load options. | ||
| + | |||
| + | ^ Manufacturer | ||
| + | | Spansion/ | ||
| + | | Spansion/ | ||
| + | //Table 3.2.1 Flash memory part loaded// | ||
| + | |||
| + | The two part numbers are highly compatible and the " | ||
| + | A non-exhaustive list of the differences between the S25FL127S and the S25FL128S: | ||
| + | * Read SFDP command (5Ah) is supported now. The Linux kernel driver is known to probe this command and use the SFDP feature to dynamically initialize the flash device instead of relying on a static configuration if the command is available. | ||
| + | * DDR Fast Read (0Dh, 0Eh), DDR Dual I/O Read (BDh, BEh), and Read DDR Quad I/O (EDh, EEh) not supported | ||
| + | * Memory organization: | ||
| + | * Maximum clock frequency: 108 MHz vs. 133 MHz. Practically however, the system board limit is usually lower. The 50 MHz read/write maximum frequency of the Nexys A7 applies. | ||
| **NOTE: Refer to the manufacturer’s data sheets² | **NOTE: Refer to the manufacturer’s data sheets² | ||
| Line 246: | Line 263: | ||
| //Figure 3.2.1 Nexys A7 SPI Flash Pin-out// | //Figure 3.2.1 Nexys A7 SPI Flash Pin-out// | ||
| - | ¹[[http://www.xilinx.com/ | + | ¹[[https://docs.xilinx.com/ |
| - | ²[[https:// | + | ²[[https:// |
| + | [[https:// | ||
| - | ³[[http://www.xilinx.com/ | + | ³[[https://docs.xilinx.com/ |
| Line 264: | Line 282: | ||
| Two on-board LEDs (LD23 = LED2, LD24 = LED1) connected to the PHY provide link status and data activity feedback. See the PHY datasheet for details. | Two on-board LEDs (LD23 = LED2, LD24 = LED1) connected to the PHY provide link status and data activity feedback. See the PHY datasheet for details. | ||
| - | EDK-based designs can access the PHY using either the axi_ethernetlite (AXI EthernetLite) IP core or the axi_ethernet (Tri Mode Ethernet MAC) IP core. A mii_to_rmii core (Ethernet PHY MII to Reduced MII) needs to be inserted to convert the MAC interface from MII to RMII. Also, a 50 MHz clock needs to be generated for the mii_to_rmii core and the CLKIN pin of the external PHY. To account for skew introduced by the mii_to_rmii core, generate each clock individually, | + | EDK-based designs can access the PHY using either the axi_ethernetlite (AXI EthernetLite) IP core or the axi_ethernet (Tri Mode Ethernet MAC) IP core. A mii_to_rmii core (Ethernet PHY MII to Reduced MII) needs to be inserted to convert the MAC interface from MII to RMII. Also, a 50 MHz clock needs to be generated for the mii_to_rmii core and the CLKIN pin of the external PHY. To account for skew introduced by the mii_to_rmii core, generate each clock individually, |
| ISE designs can use the IP Core Generator wizard to create an Ethernet MAC controller IP core. | ISE designs can use the IP Core Generator wizard to create an Ethernet MAC controller IP core. | ||
| Line 442: | Line 460: | ||
| ===== 10 Pmod Ports ===== | ===== 10 Pmod Ports ===== | ||
| - | The Pmod ports are arranged in a 2x6 right-angle, | + | The Pmod ports are arranged in a 2x6 right-angle, |
| **Warning: | **Warning: | ||
| Line 460: | Line 478: | ||
| | JA10: G18 | JB10: H16 | JC10: E6 | JD10: F3 | JXADC10: A18 (AD11N) | | JA10: G18 | JB10: H16 | JC10: E6 | JD10: F3 | JXADC10: A18 (AD11N) | ||
| - | 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, as well as other functions. See www.digilentinc.com | + | 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, as well as other functions. See the [[/ |
| ==== 10.1 Dual Analog/ | ==== 10.1 Dual Analog/ | ||
| Line 556: | Line 574: | ||
| | 0.4-1=-0.6 | | 0.4-1=-0.6 | ||
| - | To keep things simple, assume that the analog input and digital output have the same voltage range 0~Vdd. The input of the flip-flop acts like a comparator (any signal above Vdd/2 is considered as ‘1’ and any input bellow Vdd/2 is considered ‘0’). The input of the integral circuit is the difference of the input analog signal and the PDM signal of the previous clock cycle. The integral circuit then integrates both of these inputs, and the output of the integral circuit is sampled by a D-Flip-flop. Table 6 shows the function of the delta-sigma modulator with an input of 0.4Vdd. | + | To keep things simple, assume that the analog input and digital output have the same voltage range 0~Vdd. The input of the flip-flop acts like a comparator (any signal above Vdd/2 is considered as ‘1’ and any input bellow Vdd/2 is considered ‘0’). The input of the integral circuit is the difference of the input analog signal and the PDM signal of the previous clock cycle. The integral circuit then integrates both of these inputs, and the output of the integral circuit is sampled by a D-Flip-flop. Table 14.1.2 |
| Note that the average of the flip-flop output equals the value of the input analog signal. So in order to get the value of analog input, all that is needed is a counter that counts the ‘1’s for a certain period of time. | Note that the average of the flip-flop output equals the value of the input analog signal. So in order to get the value of analog input, all that is needed is a counter that counts the ‘1’s for a certain period of time. | ||

