Implementing a SATA disk controller on a Virtex5 FPGA

The aim of this master thesis was to develop an SATA disk controller that complies with the Intel AHCI standard. The main operation of the AHCI standard is to make the user capable of interacting with the attached SATA hard disk. Hence the user can write and read sectors in the disk through software...

Full description

Bibliographic Details
Main Author: Tuncer, Berk
Format: Others
Language:English
Published: KTH, Skolan för informations- och kommunikationsteknik (ICT) 2012
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-105044
Description
Summary:The aim of this master thesis was to develop an SATA disk controller that complies with the Intel AHCI standard. The main operation of the AHCI standard is to make the user capable of interacting with the attached SATA hard disk. Hence the user can write and read sectors in the disk through software. The AHCI controller has been coded in VHDL and tested on a Xilinx ML505 FPGA. To test the behavior of the design, a C program has been coded which puts the user specific commands into the system memory and notifies the user of the responses of the SATA disk. The design is tested with both SATA-1 and SATA-2 standards and is proven to be working with each of these. The controller consists of two different parts which are the front end region and the AMBA AHB region. The front end interfaces the SATA disk to the AMBA domain where the main state machine resides. The operation frequencies of these two domains are also different. The front end operates at 150 MHz, whereas the AMBA domain is functioning at 80 MHz. So, these two domains need clock synchronization to operate mutually. The design has been wrapped into a single core and can be extended with additional features of the AHCI standard that have been left out for the sake of completion of the project. === Syftet med detta examensarbete var att utveckla en SATA-disk controller som följer med Intel AHCI-standarden. Den huvudsakliga funktionen hos AHCI standarden är att göra användaren kan interagera med den bifogade SATA hårddisken. Därför kan användaren skriva och läsa sektorer i disken genom mjukvara. Den AHCI controller har kodats i VHDL och testades på en Xilinx ML505 FPGA. För att testa beteende mönstret har ett C-program kodats som sätter användaren specifika kommandon i systemminnet och meddelar användaren om svaren från SATA disken. Designen är testad med både SATA-1 och SATA-2-standarder och har visat sig att arbeta med var och en av dessa. Regulatorn består av två olika delar som är främre regionen och AMBA AHB regionen. Den främre änden gränssnitt SATA hårddisk till AMBA domänen där den huvudsakliga statsmaskineriet finns. Operationen frekvenserna för dessa två domäner är också annorlunda. Den främre änden arbetar vid 150 MHz, medan AMBA domänen fungerar vid 80 MHz. Så dessa två domäner behöver klocksynkronisering att fungera varandra. Designen har lindats till en enda kärna och kan förlängas med ytterligare funktioner i AHCI standarden som har lämnat ut till förmån för projektets genomförande.