特权同学

SDHC控制器代码移植日记一(SD_CRC_7)

0
阅读(3743)

题记:opencores是个不可多得的开源好网站,虽然很多时候并不是download下来的代码就直接能用,但是能够多参考前人的努力成果,并且消化后转化为自己的东西能很大程度上加速工程项目的开发。从他人的代码里也能够学到很多设计的精髓,也很有助于自身水平的提高,并且这个提高是立竿见影的。特权同学最近在移植一个SDHC卡控制器,解读他人代码的过程是很痛苦的,但是从这几天解读的过程中感觉收获颇丰,能够在这个过程中提升自己,就凭这一点就足以让我鼓起勇气坚持下去。

         未来一段时间的博文里会慢慢的来分析这些代码,可能不会上传整理过的源码(大家可以到opencores下载源码),但是会从整体功能、接口时序等方面入手来分析这份代码。感兴趣的朋友可以从今天这篇最简单的SD_CRC_7模块解读开始,和特权同学一起进入SDHC控制器的代码移植之旅。

 

2.SD_CRC_7模块

2.1 功能原理图

 


图1

2.2 接口定义与说明:

     //系统信号,时钟和复位

input CLK;    //输入时钟信号

input RST;     //CRC7模块复位信号,高有效                      

     //功能实现信号              

input BITVAL;       //CRC7下一个输入bit

input Enable;        //CRC7校验功能使能信号

output reg [6:0] CRC;  //输出的校验结果

2.3 接口功能描述

         BITVAL为图2的data_in信号,CRC为图2的data_out信号。当Enable信号有效(高电平)后,每个时钟的上升沿锁存一次BITVAL数据,40个时钟周期后,Enable信号撤销(低电平),此时的CRC[6:0]值即40bit数据对应的CRC7校验值。