规佳SATA IP核接口定义说明
版本:v1.8.1
1 版本
版本:1.8.1
修改仿真文件,工程可以直接仿真。
因:上硬件测试前,通过仿真完成大部分功能,上硬件调试后,就未仿真,导致1.8版本无法仿真成功,因有需求,故在此版本更新仿真文件,sataHost未动。
版本:1.8
原版本接收跨时钟域信号后并未接到上层,致使上层问题不断,在该版本中消除该问题。
测试代码添加循环次数。
版本:1.7
新建(文档版本同软件版本)。
2 版本特性
- SATA3.0 ,暂不支持自适应向下兼容;
- 仅支持Read DMA Extended(25h)和Write DMA Extended(35h)命令;
- 暂不支持读取盘信息。
- SATA协议是半双工,不支持同时读写。
3 全局复位信号
序号 | 信号名 | 位宽 | I/O | 信号说明 |
1 | oobRst | 1 | I | oob复位,高有效 |
2 | resetu | 1 | I | 用户oob复位,高有效 |
这俩信号都将复位SATA oob模块,后续版本将删除resetu。
4 GTH部分信号
序号 | 信号名 | 位宽 | I/O | 信号说明 |
1 | clk | 1 | I | GT发送时钟 |
2 | rst | 1 | I | GT发送时钟复位,高有效 |
3 | host | 1 | I | 无用 |
4 | phy_ready | 1 | I | GT准备好,gtwiz_reset_tx_done_out & cplllock_out |
5 | rxoobreset | 1 | O | 接GTH对应信号。 |
6 | rxcominitdet | 1 | I | |
7 | rxcomwakedet | 1 | I | |
8 | rxbyteisaligned | 1 | I | |
9 | txcomfinish | 1 | I | |
10 | rxpmareset | 1 | O | |
11 | rxpmaresetdone | 1 | I | |
12 | txcomwake | 1 | O | |
13 | txcominit | 1 | O | |
14 | txelecidle | 1 | O | |
15 | tx_data | 32 | O | 发送数据,接GTH对应信号。 |
16 | tx_charisk | 4 | O | 发送数据模式,接GTH对应信号。 |
17 | rxbyterealign_out | 1 | I | 接GTH对应信号。 |
18 | rxclkcorcnt_out | 2 | I | |
19 | rxelecidle_out | 1 | I | |
20 | rxrst | 1 | I | GT接收时钟 |
21 | rxclk | 1 | I | GT接收时钟复位,高有效 |
22 | rx_data | 32 | I | 接收数据,接GTH对应信号。 |
23 | rx_charisk | 4 | I | 接收数据模式,接GTH对应信号。 |
5 应用部分信号
序号 | 信号名 | 位宽 | I/O | 信号说明 |
1 | linkup | 1 | O | SATA盘连接成功。高为连接。 |
2 | sataCmd_tvalid | 1 | I | Sata命令有效,高电平有效,有效后需保持到tready有效。 |
3 | sataCmd_tready | 1 | O | Sata命令执行完毕,高电平有效。 |
4 | sataCmd_sectorAddr | 48 | I | Sata命令的扇区基地址。 |
5 | sataCmd_sectorNum | 16 | I | Sata命令的扇区数量。 |
6 | sataCmd_type | 3 | I | Sata命令的模式:sataCmd_type[1]:为高,读硬盘sataCmd_type[2]:为高,写硬盘 |
7 | sataCmd_status | 1 | O | Sata命令的执行情况,tready有效时有效。1:出错;0:成功。 |
8 | sataRd_tvalid | 1 | O | 读硬盘时,数据返回通路。 |
9 | sataRd_tready | 1 | I | |
10 | sataRd_tdata | 32 | O | |
11 | sataRd_tlast | 1 | O | |
12 | sataWr_tvalid | 1 | I | 写硬盘时,数据通路。 |
13 | sataWr_tready | 1 | O | |
14 | sataWr_tdata | 32 | I | |
15 | sataWr_tlast | 1 | I |
6 测试工程
6.1 测试工程
该测试工程使用VIO产生对盘的读写。

6.2 测试工程使用方法
- 下载bit
- 设置读写硬盘的基地址、每次读写的扇区数、读写方式、循环读写多少次,并将cmdStart设置为Active High button。
- sataCmd_sectorAddr0指示要申请的硬盘基地址,若不更改该地址,写入硬盘地址将顺序递增。
- sataCmd_sectorNum指示单次命令扇区大小。
- sataCmd_type指示读写命令,2读,4写。
- loopNum_set指示重复多少次命令。
- cmdStart指示开始执行命令。
- writeDataClr可以对写入数据清零,写入数据为累加数,若不清零,写硬盘的数据将一直累加。
- Linkup显示与硬盘连接情况。
- SataCmd_status指示命令完成情况。
- wrDws指示当前命令剩余双字数量。
- ST[1]指示当前正在执行命令,如果一直为1,说明命令执行出问题。
- loopNum指示剩余的重复命令数量。
- sataCmd_sectorAddr指示当前执行的扇区地址。
- sataCmd_tready指示单次命令控制器完成。
- 点击cmdStart执行读写操作。

7 工程仿真
直接执行 Run Simulation。
如需案例更改,则修改顶层文件sataTb.v内容,如在initial块中添加readDisk(48’h0, 16’h0010)。