电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

用Verilog做的SD卡控制器(有详细的注释)

用Verilog做的SD卡控制器(有详细的注释)_第1页
1/7
用Verilog做的SD卡控制器(有详细的注释)_第2页
2/7
用Verilog做的SD卡控制器(有详细的注释)_第3页
3/7
用Verilog做的SD卡控制器----SD卡--II 2011-12-02 15:53 //------------------------------------------------------ //SD命令CMD发送控制 //1. 发送8个时钟脉冲 // 2. SD卡片选 CS拉低,即片选有效 // 3. 连续发送6个字节命令 // 4. 接收 1个字节响应数据 // 5. SD卡片选 CS拉高,即关闭 SD卡 /*发送总共 6个字节命令格式: 0 -- start bit 1 -- host bit5-0 -- command bit31-0 -- argument bit6-0 -- CRC7 1 -- end bit */ //------------------------------------------------------ //发送sd命令状态机控制 reg[5:0] cmd;//发送命令寄存器 reg[31:0] arg;//发送参数寄存器 reg[7:0] crc;//发送CRC校验码 reg spi_cs_nr;//SPI从设备使能信号,由主设备控制 reg spi_tx_enr;//SPI数据发送使能信号,高有效 reg spi_rx_enr;//SPI数据接收使能信号,高有效 reg[7:0] spi_tx_dbr;//SPI数据发送寄存器 reg[7:0] spi_rx_dbr;//SPI数据接收寄存器 reg[3:0] nclk_cnt;//74+CLK发送周期计数器 reg[7:0] wait_cnt8;//命令操作间隔等待计数器 reg[9:0] cnt512;//读取512B计数器 reg[7:0] retry_rep;//重复读取respone计数器 reg[7:0] retry_cmd;//重复当前命令计数器 assign spi_cs_n = spi_cs_nr; assign spi_tx_en = spi_tx_enr; assign spi_rx_en = spi_rx_enr; assign spi_tx_db = spi_tx_dbr; assign sd_dout = spi_rx_dbr; //每接收一个字节数据,该位置高一个时钟周期,共 512B assign sd_fifowr = (spi_rx_rdy & ~spi_rx_enr & (cmd_cstate == CMD_RD) & (cnt512 < 10'd513)); wire cmd_clk = (sdinit_cstate == SDINIT_CLK);//进入上电初始化时的 74+CLK产生状态标志位 wire cmd_en = ((sdinit_cstate == SDINIT_CMD0) | (sdinit_cstate == SDINIT_CMD55) | (sdinit_cstate == SDINIT_ACMD41)//(sdinit_cstate == SDINIT_CMD1) | (sdinit_cstate == SDINIT_CMD16));//命令发送使能标志位,高有效 wire cmd_rdboot_en = (sdinit_cstate == SD_RD_BPB) | (sdinit_cstate == SD_RD_PT);//读取SD启动区使能信号,高有效 wire cmd_rdy = ((cmd_nstate == CMD_CLKE) & spi_tx_rdy & spi_tx_enr);//命令发送完成标志位,高有效 reg[3:0] cmd_cstate;//发送命令当前状态寄存器 reg[3:0] c...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

用Verilog做的SD卡控制器(有详细的注释)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部