4-ch RAID0 by SATA Host-IP Demo Instruction
Rev1.6 22-Aug-23
This document describes the instruction to run 4-ch RAID0 by using SATA Host-IP on FPGA development board and AB09-FMCRAID board. The demo is designed to write/verify data with four SATA-III devices. User can control test operation through Serial console.
To run SATA Host RAID0 demo on FPGA development board, please prepare following hardware.
1) Supported FPGA Development board: KC705/VC707/ZC706/VC709/KCU105/ZCU102/
Zynq Mini-ITX
2) PC with Xilinx programmer software (Vivado) and Serial console software
3) AB09-FMCRAID board
4) Power supply for SATA device to connect to power connector on FMCRAID board
5) Four SATA-III devices connecting at CN0-CN3 of FMCRAID board
6) Xilinx Power adapter for Xilinx board or ATX Power for Mini-ITX board
7) micro USB cable for programming FPGA between FPGA Development board and PC
8) mini/micro USB cable for Serial console connecting between FPGA board and PC
Figure 1‑1 SATA Host RAID0 Demo Environment Setup on KC705
Figure 1‑2 SATA Host RAID0 Demo Environment Setup on VC707
Figure 1‑3 SATA Host RAID0 Demo Environment Setup on VC709
Figure 1‑4 SATA Host RAID0 Demo Environment Setup on ZC706
Figure 1‑5 SATA Host RAID0 Demo Environment Setup on KCU105
Figure 1‑6 SATA Host RAID0 Demo Environment Setup on Zynq Mini-ITX
Figure 1‑7 SATA Host RAID0 Demo Environment Setup on ZCU102
1) Power off system.
2) Set up board option.
a) For ZC706 board only,
i. Set SW11=”00000” to configure PS from JTAG, as shown in Figure 2‑1.
ii. Set SW4=”01” to connect JTAG with USB-to-JTAG interface, as shown in Figure 2‑2.
Figure 2‑1 SW11 setting to configure PS from JTAG on ZC706 board
Figure 2‑2 SW4 setting to use USB-to-JTAG on ZC706 board
b) For Zynq Mini-ITX board only,
i. Set SW7="00000" to configure PS from JTAG, as shown in Figure 2‑3.
ii. As shown in Figure 2‑4, install a jumper on JP1 pins 1-2 to enable JTAG chain, install the power module onto the board via J8, J9, J10 connectors, and connect ATX power cable to FPGA board via P2 connector.
Figure 2‑3 SW7 setting to configure PS from JTAG on Zynq Mini-ITX
Figure 2‑4 The power module installed onto the board
c) For ZCU102 only, set SW6="0000" (SW = ON) to configure PS from JTAG, as shown in Figure 2‑5.
Figure 2‑5 SW6 setting to configure PS from JTAG on ZCU102
3) Connect AB09-FMCRAID board to FMC-HPC, FMC1-HPC, or FMC-HPC0 connector on FPGA development board.
4) Connect four SATA-III devices to CN0-CN3 on FMCRAID board.
5) Connect power to power connector on FMCRAID board.
Figure 2‑6 AB09-FMCRAID connection
6) Connect micro USB cable from Xilinx development board to PC for JTAG programming
7) Connect mini/micro USB cable from Xilinx board to PC for Serial console.
Figure 2‑7 USB cable connection
8) Power on FPGA development board and power supply for SATA device.
9) Open Serial console such as TeraTerm, HyperTerminal and set Buad rate=115,200 Data=8 bit Non-Parity Stop=1.
10) Download configuration file and CPU firmware to FPGA
a) For ZC706/Zynq Mini-ITX board, open Vivado TCL shell, change current directory to ready_for_download. Next, run xxx_ HSATARaid0x4.bat as shown in Figure 2‑8. For example, type zc706_HSATARaid0x4.bat, zcu102_HSATARaid0x4.bat, MiniITX_7z045(or 7z100)_HSATARaid0x4.bat.
Figure 2‑8 Command script for download demo file to ZC706/Mini-ITX by Vivado tool
b) For KC705/VC707/VC709/KCU105 board, use Vivado tool to program bit file, as shown in Figure 2‑9.
Figure 2‑9 Programmed by Vivado
11) Check LED status on Xilinx development board. The description of LED is follows.
Table 1 LED Definition
GPIO LED |
ON |
OFF |
0/D4 |
Normal operation |
System is in reset condition |
1/R/D5 |
System is busy |
Idle status |
2/C/D6 |
Error detect |
Normal operation |
3/L/D7 |
Data verification fail |
Normal operation |
Figure 2‑10 4-bit LED Status for user output
12) After programming completely, LED[0] and LED[1] are ON for initializing RAID0 system. LED[1] is OFF when RAID0 completes initialization process. Now system is ready to receive command from user. After that, main menu is displayed as shown in Figure 2‑12.
Figure 2‑11 LED status after program configuration file and RAID0 initialization complete
Figure 2‑12 Main menu after program configuration file and RAID0 initialization complete
13) If some SATA devices cannot be detected, error message (CH[X] Not Detect) will be displayed as shown in Figure 2‑13. Please check SATA device in error channel.
Figure 2‑13 Error message when some devices cannot be detected
Select ‘0’ to send Identify device command to RAID0. When operation is completed, four device details are displayed on the console, i.e.
1) SSD model number
2) Security feature set is supported or not supported. If some devices are not supported, user must not use menu 3 for the test.
3) Normal Erase Mode Time: The estimation time to complete security erase command, returned from SATA device. Minimum valid value is 2 minutes. This information will be displayed when SATA device supports Security feature set.
4) RAID capacity: Capacity which is output value from RAID0 block. The value is calculated by (4 x SATA CH#0 capacity).
Figure 3‑1 Result from Identify Device menu
Select ‘1’ to send Write command to RAID0. Three inputs are required for this menu.
1) Start LBA: Input start address of RAID0 in sector unit. The input can be decimal unit or add “0x” as a prefix “0x” for hexadecimal unit.
2) Sector Count: Input total transfer size in sector unit. The input can be decimal unit or add “0x” as a prefix for hexadecimal unit.
3) Test pattern: Select test pattern of test data for writing to RAID0. Five types can be selected, i.e. 32-bit increment, 32-bit decrement, all 0, all 1, and 32-bit LFSR counter.
As shown in Figure 3‑2, if all inputs are valid, the operation will be started. During writing data, current transfer size is displayed to the console to show that system still be alive. Finally, test performance, total size, and total time usage are displayed on the console as test result.
Figure 3‑2 Input and result of Write SSD menu
Figure 3‑3 Example Test data in sector#0/#1 of 4 devices by LFSR pattern
Test data of each sector has different 64-bit header which consists of 48-bit LBA address and 16-bit all 0 value. 48-bit LBA address is unique value for each sector. After that, the test pattern is filled following user selection such as 32-bit LFSR pattern (as shown in Figure 3‑3), 32-bit increment pattern.
Stripe size in 4-ch RAID0 demo is 1 sector (512-byte). So, LBA address in the header of 1st sector in Disk#0, Disk#1, Disk#2, and Disk#2 are equal to 0, 1, 2 and 3 sequentially. The address in the header of the next sector for Disk#0 is 4.
Figure 3‑4 – Figure 3‑6 show error message when user input is invalid. “Invalid input” message is displayed on the console. Then, it returns to main menu to receive new command.
Figure 3‑4 Invalid Start LBA input
Figure 3‑5 Invalid Sector count input
Figure 3‑6 Invalid Test pattern input
Select ‘2’ to send Read command to RAID0. Three inputs are required for this menu.
1) Start LBA: Input start address of RAID0 in sector unit. The input can be decimal unit or add “0x” as a prefix for hexadecimal unit.
2) Sector Count: Input total transfer size in sector unit. The input can be decimal unit or add “0x” as a prefix for hexadecimal unit.
3) Test pattern: Select test pattern to verify data from RAID0. Test pattern must be matched with the test pattern which is used during write test. Five types can be selected, i.e. 32-bit increment, 32-bit decrement, all 0, all 1, and 32-bit LFSR counter.
Similar to write test if all inputs are valid, test system will read data from RAID0. Test performance, total size, and total time usage are displayed after end of transfer. “Invalid input” will be displayed if some inputs are out-of-range.
Figure 3‑7 Input and result of Read SSD menu
Figure 3‑8 and Figure 3‑9 show the error message when data verification is failed. “Verify fail” message is displayed with error address, expected data, and read data. User can press any key to cancel read operation or wait until all read process complete.
“RESET” button must be pressed to restart the system when user cancels the operation.
Figure 3‑8 Data verification is failed but wait until read complete
Figure 3‑9 Data verification is failed and input any keys to cancel operation
Select ‘3’ to send Security Erase command to RAID0. Please confirm that all SATA devices support Security Erase feature by using Identify device menu. The estimation of operation time to run security erase is also displayed in Identify device menu.
After selecting the menu, warning message is displayed on the console. User input ‘y’ or ‘Y’ to continue security erase operation or input other keys to cancel operation.
Number 0-9 is displayed on the console every second to show that system still run alive. Finally, total time usage is displayed as shown in Figure 3‑10.
Figure 3‑11 shows the example when user inputs other keys to cancel the command.
Figure 3‑10 Result from Security Erase command
Figure 3‑11 Cancel Security Erase command
Revision |
Date |
Description |
1.0 |
24-Nov-14 |
Initial version release |
1.1 |
3-Apr-15 |
Add ZC706 support |
1.2 |
7-Sep-16 |
Add CPU and support KCU105 board |
1.3 |
29-Sep-16 |
Add Zynq Mini-ITX support |
1.4 |
9-Nov-16 |
Add Security erase command and support VC709 |
1.5 |
2-Aug-17 |
Add LFSR pattern |
1.6 |
15-Jan-18 |
Add ZCU102 support |