[1799] | 1 | The WARP v3 configuration CPLD code implements two functions: |
---|
| 2 | * SPI flash configuration: The CPLD passes through the signals for the Virtex-6 |
---|
| 3 | "Master SPI" configuration mode, connecting them to the 128Mb SPI flash chip. |
---|
| 4 | * SD card configuration: The CPLD implmenets an SPI master for reading .bin files from |
---|
| 5 | the SD card and writing the configuration data to the Vitex-6 via "Slave Serial" mode |
---|
| 6 | |
---|
| 7 | The code for the SD card configuration mode is based on the SPI Boot project at Open Cores |
---|
| 8 | (http://opencores.org/project,spi_boot). The original SPI boot source on which we based our design |
---|
| 9 | is included in the spi_boot_OpenCores_src subdirectory of our source folder. |
---|
| 10 | |
---|
| 11 | The source code for the WARP v3 config CPLD design is organized as: |
---|
| 12 | |
---|
| 13 | w3_cpld_sd_config.v - top-level module |
---|
| 14 | |-spi_boot.vhd - top-level of SPI boot core |
---|
| 15 | |-spi_boot_pack-p.vhd |
---|
| 16 | |-spi_counter.vhd |
---|
| 17 | |
---|
| 18 | Our verison of spi_boot.vhd has very minor changes realtive to the Open Cores version. Our |
---|
| 19 | version includes two extra lines (diff output below) to explicitly drive the FPGA's PROG |
---|
| 20 | signal high when the Virtex-6 state machine requires it. |
---|
| 21 | |
---|
| 22 | ==================================================================================================== |
---|
| 23 | Unified diff between original spi_boot.vhd and the verison used in the WARP v3 config CPLD design |
---|
| 24 | |
---|
| 25 | --- /WARP/Hardware/WARP_v3/Rev1.1/Config_CPLD/src/spi_boot.vhd Sat Jun 23 22:44:34 2012 |
---|
| 26 | +++ /WARP/Hardware/WARP_v3/Rev1.1/Config_CPLD/src/spi_boot_OpenCores_src/rtl/vhdl/spi_boot.vhd Sat Jun 23 12:28:00 2012 |
---|
| 27 | @@ -582,9 +582,6 @@ |
---|
| 28 | when WAIT_START => |
---|
| 29 | spi_cs_n_s <= '1'; |
---|
| 30 | |
---|
| 31 | - --POM 2012-06-23: Adding de-assertion of PROG |
---|
| 32 | - config_n_o <= '1'; |
---|
| 33 | - |
---|
| 34 | -- detect rising edge of start_i |
---|
| 35 | if start_i = '1' and start_q = '0' then |
---|
| 36 | -- decide which mode is requested |
---|
| 37 | @@ -621,9 +618,6 @@ |
---|
| 38 | when WAIT_INIT_HIGH => |
---|
| 39 | spi_cs_n_s <= '1'; |
---|
| 40 | |
---|
| 41 | - --POM 2012-06-23: Adding de-assertion of PROG |
---|
| 42 | - config_n_o <= '1'; |
---|
| 43 | - |
---|
| 44 | if cfg_init_n_i = '1' and cmd_finished_s then |
---|
| 45 | ctrl_fsm_s <= CMD18; |
---|
| 46 | else |
---|
| 47 | ==================================================================================================== |
---|
| 48 | |
---|
| 49 | |
---|
| 50 | Licensing: |
---|
| 51 | |
---|
| 52 | It is unclear udner which license the Open Cores spi_boot project is distributed. The source |
---|
| 53 | code includes a copy of the GPL v2, but the source file headers don't mention the GPL in thier |
---|
| 54 | copyright sections (instead they include BSD-like distribution terms). |
---|
| 55 | |
---|
| 56 | Just to be safe, we'll assume the author intended his code be distributed under the GPL v2. As such, |
---|
| 57 | our full config CPLD design is likewise made available under GPL v2. The Mango-owned code (w3_cpld_sd_config.v) |
---|
| 58 | is dual-licensed, also available under the standard WAPR license (http://warp.rice.edu/license). |
---|
| 59 | |
---|
| 60 | Our adoption of the GPL v2 for the CPLD design does not extend to any designs running in the Virtex-6 FPGA. |
---|
| 61 | These designs will continue to be licensed under the BSD-based WARP license (http://warp.rice.edu/license). |
---|
| 62 | |
---|
| 63 | If you have any questions or concerns, please contact Patrick Murphy at Mango (patrick [at] mangocomm.com). |
---|