Forum Discussion
SATA host IP for cyclone IV GX ?
Hi,
I planning to develop a SATA interface to plug a SSD to save video sequences. I would like to use the cyclone IV GX family. I have found a development kit and a daughter card (cyclone IV GX development kit and SATA/SAS HSMC Card by Terasic) but I am still searching for a SATA IP. I have found 3 IP by nuvation / intelliprop / asics.ws but only intelliprop IP seems to be ready for Altera & cyclone IV GX. I was expecting a price around 5000$ but it's really more expensive (>x5). So I would like to know what solutions are used by other designer : other commercial IP ? difficulty of developing a SATA interface from scratch ?... Thanks for helping.22 Replies
- Altera_Forum
Honored Contributor
You can use SATA/SAS without additional chips according to http://www.altera.com/technology/high_speed/protocols/sata-sas/pro-sata-sas.html
You'll only need a small board to interface transceivers with a SATA connector. - Altera_Forum
Honored Contributor
Thanks for your advice. It could save a little money to do my own daughter card.
But my main problem is more about the IP which cost 25,000$ (550 for the Terasic daughter card). Very expensive and low level only (needs a controller to manage data, file system...). - Altera_Forum
Honored Contributor
You can develop your own SATA IP. It is not as complicated as the core price leads to believe. Unfortunately, I cannot share the source at this point but here is what you will need:
1- A good understanding of transceivers, especially reset sequences - read all the erratas. 2- SATA specs ($25) 3- ATA/ATAPI specs - most of it is free 4- Some kind of processor that will handle the commands (NIOS for example) One of the challenges we ran into was the lack of compliance by the devices out there. Most of them follow the specs, but in some instances they behave in ways that are not documented. A SATA analyzer comes in very handy here. Before we had access to a SATA analyzer, we just made the hardware impersonate a host and started sending commands to a hard drive and figured out the responses. Also, since you will be developing your own IP, you can tailor it to your needs and save on logic. If you develop your own card, make sure you have both host and device connectors - the connector is the same but the TX and RX pairs are reversed. Having both host and device will come in really handy during development. Expect the core to take about 160 hours of coding. If you are mimicking a file system or implementing a SCSI device, you will need to spend some more time - this is work you will have to do anyway. None of these tasks are complicated, but they will require some research and implementation time. When we did the analysis, the cost of developing vs buying was a wash so we opted to develop our own in order to gain the experience. The 25K price is in the lower end - some quotes we got were way above this. Good luck! - Altera_Forum
Honored Contributor
ironmoose, I've faced with the same problem with rx_signaldetect in Arria 2 GX 125 demo board as you not so far ago in another topic. I've also applied the ALTERA's suggestion but rx_signaldetect still stuck high. Could you please explain in more detail about this. How did you solved the problem with rx_signaldetect ?
- Altera_Forum
Honored Contributor
This is the link I followed and rx_signaldetect started working. Make sure you modify your qsf file as indicated.
http://www.altera.com/support/kdb/solutions/rd04042011_919.html?gsa_pos=1&wt.oss_r=1&wt.oss=rx_signaldetect - Altera_Forum
Honored Contributor
Yes, I've followed this link but can't understand the correct form of this assignment
I've tried this:
thisset_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_board:top_level_board|top_level_Device:top_level_Device|ALTGX1_alt4gxb:ALTGX1_alt4gxb|rx_datain" set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_board:top_level_board|top_level_Host:top_level_Host|ALTGX2_alt4gxb:ALTGX2_alt4gxb|rx_datain"
this:set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_board:top_level_board|top_level_Device:top_level_Device|ALTGX1:ALTGX1|rx_datain" set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_board:top_level_board|top_level_Host:top_level_Host|ALTGX2:ALTGX2|rx_datain"
and this:set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_Device:top_level_Device|ALTGX1:ALTGX1|ALTGX1_alt4gxb:ALTGX1_alt4gxb_component|rx_datain" set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "top_level_Host:top_level_HOST|ALTGX2:ALTGX2|ALTGX2_alt4gxb:ALTGX2_alt4gxb_component|rx_datain"
but nothing helped. How did you assigned ? P.S. I'm using Quartus 11.0 SP1 Here are my ALTGX.v in attachmentsset_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "ALTGX1:ALTGX1|ALTGX1_alt4gxb:ALTGX1_alt4gxb_component|rx_datain" set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to "ALTGX2:ALTGX2|ALTGX2_alt4gxb:ALTGX2_alt4gxb_component|rx_datain" - Altera_Forum
Honored Contributor
thanks for your advice ironmoose.
I am waiting the answer for other quote but 25k$ seems to be a standard price. Not interesting at all : encrypted files, 1 fpga family... Do you have a SATA device simulation model ? - Altera_Forum
Honored Contributor
Tue,
set_instance_assignment -name ARRIAIIGX_RX_CDR_LOCKUP_FIX_OVERRIDE ON -to rx_data_in [0] rx_data_in [0] is your signal from the top level entity. For example, the top level file has: module top_of_project (input clk, output led, input [1:0] rx_data_in) ... Do not put there signals from any descending hierarchy. - Altera_Forum
Honored Contributor
SebastienG,
I do not have a model for that. Modeling a device is as much work as actually implementing it. Yes, another deterrent from the commercial solution was that the cost was per project. That did not make any sense to us. When we buy IP from Altera, they don't ask us how many projects we will be using the IP on. When/if you start on the project, I can answer your questions along the way. - Altera_Forum
Honored Contributor
ironmoose, very thank you for your reply. rx_signaldetect now working properly !