新闻中心

EEPW首页>EDA/PCB>设计应用> 基于Avalon总线的SD卡读写控制器的设计

基于Avalon总线的SD卡读写控制器的设计

作者: 时间:2011-04-11 来源:网络 收藏

5 系统硬件设计
为了验证,在DE2开发平台上搭建了最基本的硬件系统,主要包括:NiosⅡ处理器,PLL锁相环,片上RAM,JTAG UART和自定义的。NiosⅡ作为系统主,PLL用来产生SD卡读/写所需的时钟信号,片上RAM用来存储代码和数据,JTAG UART主要用来调试,打印数据到控制台验证写入的数据和读出的数据是否相同。
硬件系统的建立主要利用Altera公司QuartusⅡ开发工具以及其集成的SoPC Builder完成的,关键在于如何用SoPC Builder将控制器添加到元件列表中。在SoPC Builder提供的图形化的界面下,添加控制器Verilog源程序后,设置控制器中各信号在-MM中的信号类型等,图2即为添加好的SD卡读写控制器。

本文引用地址://m.amcfsurvey.com/article/191242.htm


图2中,各引脚的描述如下:
base_clock:控制器输入时钟,该设计采用PLL产生的25MHz时钟信号;
clk_to_SD:SD卡时钟信号输入;
cmd_SD:SD卡命令,响应输入/输出信号;
data_SD:SD卡数据信号。
根据SD控制器的寄存器映射,在Nios IDE中编写C程序控制SD卡控制器进行读/写操作,下面代码为写SD卡的一段程序,读SD卡的的过程与其类似。

读/写完一个扇区后,控制器会产生一个中断,此时即可进行下一次读/写操作。由于SD卡读/写有比较复杂的时序要求,命令、响应众多,在设计的初期,采用Modelsim做了各方面的功能仿真,功能仿真完成后采用QuartusⅡ自带的SignalTapⅡ逻辑分析仪来测试
分析内部逻辑的工作状态,SignalTapⅡ使用简单方便,更重要的是可以实时观测内部信号变化,而且可以设置触发条件,大大提高了开发的效率。图3是用SignalTapⅡ逻辑分析仪捕捉到的波形。


图3中,status_reg为状态寄存器,00000900表明卡已处于就绪状态,control_reg为控制寄存器,00000001H表明已经开始了一次对扇区0的写传输,mread的上升沿即开始了Master端口的读传输,这里的读指的是将内存中buf数组中的数据读入控制器,再由控制器写入SD卡中,waitrequest为等待信号,高电平时无法进行数据传输,waitrequest无效后可以很明显地看到000000DFH由Master端口读入控制器,再由读写控制逻辑写入SD卡。

6 结语
该设计采用SoPC技术实现了SD卡读写控制器,通过NiosⅡ处理器控制实现了SD卡读/写。由于该控制器根据接口规范进行开发,可以很方便以IP核的形式集成到其他SoPC系统中,简单实现SD卡的读/写,大大降低了开发成本和难度。本文所设计的SD卡读写控制器还有一大优点就是具有Master端口,可以自主完成数据的读/写,无需CPU的干预,另外采用了中断,降低了响应延时,提高了读/写速率。该设计满足了大部分数据存储需求,适用于工业监测控制,一般消费类电子产品等。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭