GJ FPGA SATA Host IP

规佳SATA IP核接口定义说明

版本:v1.8.1

版本

版本:1.8.1

修改仿真文件,工程可以直接仿真。

因:上硬件测试前,通过仿真完成大部分功能,上硬件调试后,就未仿真,导致1.8版本无法仿真成功,因有需求,故在此版本更新仿真文件,sataHost未动。

版本:1.8

原版本接收跨时钟域信号后并未接到上层,致使上层问题不断,在该版本中消除该问题。

测试代码添加循环次数。

版本:1.7

新建(文档版本同软件版本)。

版本特性

  1. SATA3.0 ,暂不支持自适应向下兼容;
  2. 仅支持Read DMA Extended(25h)和Write DMA Extended(35h)命令;
  3. 暂不支持读取盘信息。
  4. SATA协议是半双工,不支持同时读写。

全局复位信号

序号信号名位宽I/O信号说明
1oobRst1Ioob复位,高有效
2resetu1I用户oob复位,高有效

这俩信号都将复位SATA oob模块,后续版本将删除resetu。

GTH部分信号

序号信号名位宽I/O信号说明
1clk1IGT发送时钟
2rst1IGT发送时钟复位,高有效
3host1I无用
4phy_ready1IGT准备好,gtwiz_reset_tx_done_out & cplllock_out
5rxoobreset1O接GTH对应信号。
6rxcominitdet1I
7rxcomwakedet1I
8rxbyteisaligned1I
9txcomfinish1I
10rxpmareset1O
11rxpmaresetdone1I
    
12txcomwake1O
13txcominit1O
14txelecidle1O
 
15tx_data32O发送数据,接GTH对应信号。
16tx_charisk4O发送数据模式,接GTH对应信号。
 
17rxbyterealign_out1I接GTH对应信号。
18rxclkcorcnt_out2I
19rxelecidle_out1I
 
20rxrst1IGT接收时钟
21rxclk1IGT接收时钟复位,高有效
22rx_data32I接收数据,接GTH对应信号。
23rx_charisk4I接收数据模式,接GTH对应信号。

应用部分信号

序号信号名位宽I/O信号说明
1linkup1OSATA盘连接成功。高为连接。
 
2sataCmd_tvalid     1ISata命令有效,高电平有效,有效后需保持到tready有效。
3sataCmd_tready     1OSata命令执行完毕,高电平有效。
4sataCmd_sectorAddr48ISata命令的扇区基地址。
5sataCmd_sectorNum  16ISata命令的扇区数量。
6sataCmd_type       3ISata命令的模式:sataCmd_type[1]:为高,读硬盘sataCmd_type[2]:为高,写硬盘
7sataCmd_status     1OSata命令的执行情况,tready有效时有效。1:出错;0:成功。
 
8sataRd_tvalid      1O读硬盘时,数据返回通路。
9sataRd_tready      1I
10sataRd_tdata       32O
11sataRd_tlast       1O
 
12sataWr_tvalid      1I写硬盘时,数据通路。
13sataWr_tready      1O
14sataWr_tdata       32I
15sataWr_tlast       1I

测试工程

6.1 测试工程

该测试工程使用VIO产生对盘的读写。

6.2 测试工程使用方法

  1. 下载bit
  2. 设置读写硬盘的基地址、每次读写的扇区数、读写方式、循环读写多少次,并将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指示单次命令控制器完成。
  3. 点击cmdStart执行读写操作。

工程仿真

直接执行 Run Simulation。

如需案例更改,则修改顶层文件sataTb.v内容,如在initial块中添加readDisk(48’h0, 16’h0010)。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部