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

2010-7-14 20:36 3037 13 13 分类: FPGA/CPLD

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


 


 


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


 

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条