特权同学

SDHC控制器代码移植日记四(SD_DATA_SERIAL_HOST)

0
阅读(2623)

5. SD_DATA_SERIAL_HOST模块

5.1 接口连接图

图8

5.2 接口定义与说明

//系统信号

input sd_clk; //时钟信号

input rst; //复位信号

//与SD_FIFO_TX_FILLER模块接口

input [31:0] data_in; //FIFO输入的数据

output reg rd; //FIFO读使能

//与SD_FIFO_RX_FILLER模块接口

output reg [`SD_BUS_W-1:0] data_out; //输出数据到FIFO

output reg we; //FIFO写使能

//SD卡物理层DAT接口

output reg DAT_oe_o; //SD卡DAT总线数据方向控制

output reg[`SD_BUS_W-1:0] DAT_dat_o; //SD卡DAT总线数据输出

input [`SD_BUS_W-1:0] DAT_dat_i; //SD卡DAT总线数据输入

//连接到SD_CMD_SERIAL_HOST模块

input [1:0] start_dat; //启动数据传输:01--启动块读;10--启动块写;11--停止

//与SD_DATA_MASTER模块接口

input ack_transfer; //transm_complete的响应

output reg busy_n; //数据总线忙标志,低电平有效

output reg transm_complete; //传输完成标志位

output reg crc_ok; //CRC校验和OK

5.3 模块功能描述

该模块是FPGA与SD卡物理数据管脚的接口控制模块。外部接口由时钟信号clk和双向数据信号DAT组成。数据信号包括DAT_oe_o,DAT_dat_o和DAT_dat_i三个信号,输出前需要再做一些简单的处理。

该模块实现以下两个功能:

1、同步读、写数据请求;

2、为发送数据添加CRC-16校验和,并检查接收命令的CRC-16是否正确。

data_in信号来自Tx_FIFO,data_out是需要送往Rx_FIFO的数据。we和rd信号用于控制FIFO的读写。busy_n信号在该 模块状态机处于idle时置高,否则拉低表示处于忙状态。当一次传输(块读或块写操作)完成,该模块置位transm_complete,在此期间 crc_ok和busy_n信号保持不变,直到接收ack_transfer有效,然后拉低transm_complete。

5.4 状态机工作图

图9

Baidu
map