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

发布者:月光男孩最新更新时间:2011-05-27 来源: 现代电子技术关键字:Avalon  SoPC  SD卡  读写控制器  FPGA 手机看文章 扫描二维码
随时随地手机看文章

  0 引言

  当前,人们对大数据量的高速存取需求越来越高。SD卡作为新一代数据存储设备,具有大容量,高速度的特点,很好地满足了市场的具体需求,被广泛用于便携式消费类电子设备,例如手机,数码相机、PDA和各种多媒体播放器等。在工业控制领域,同样有大量数据需要采集,存储,分析。而传统用MCU的GPIO模拟SD卡的时序实现读/写调试复杂、读/写速度慢,已经不能符合大多数应用的需求。利用FPGA自身高速并行的特点,开发一种SD卡读写控制器的IP核,不但可以提高性能,而且可以简单实现IP复用,大大提高开发效率,降低成本,具有极大的应用前景。

  可编程的片上系统(System on Programmable Chip,SoPC)最先由Altera公司提出,它将尽可能大而完整的电子系统,主要包括NiosⅡ嵌入式处理器、各种硬件接口、数字信号处理系统、普通数字电路逻辑在单一FPGA芯片中实现。SoPC系统中的各个外设通过Avalon总线相连,可简单实现IP复用,因此,系统在开发周期、体积、功耗、功能、产品升级维护等多方面实现最优化,逐渐成为电子产品设计的趋势。

  1 Avalon总线简介

  Avalon总线是Altera公司专门为SoPC系统指定的一套总线标准,它定义了主从端口对之间通信的信号类型和时序关系。在结构上不同于传统的共享式总线:它在需要连接的每一个主从端口对之间都有点到点的连接,不同的主从端口对之间可以同时进行通信,所以大大提高了系统的性能。Altera一直在致力于为Avalon总线添加一些极其有用高级特性,简化系统设计的同时提高系统的性能。Avalon总线标准也在不断的升级完善,现在已经包含Avalon-MM接口规范和Aval-on-ST接口规范。

  在Avalon总线接口的设计中,SoPC Builder提供了直观的图形用户界面,设计人员可以很方便地添加自定义外设,SoPC Builder将自定义外设和其他组件组合起来,生成对这些组件进行例化的单个系统模块,并且自动生成内部总线逻辑,按照设计人员的要求将这些外设与NiosⅡ处理器连接起来,并自动完成外设和存储器的地址映射、中断控制和总线控制等工作。本文主要阐述了SD卡读/写控制器的AvaIon-MM总线接口和SD卡读/写控制逻辑的设计,以圾NiosⅡIDE中读/写控制程序的编写。

  2 SD卡的一般读/写过程

  SD卡有两种读/写访问模式:SD模式和SPI模式,其中SD模式又分为1 b和4 b两种。由于DE2开发平台硬件上的原因,该设计采用的是1 b的SD模式实现SD卡的读/写。SD卡在上电初期,卡主控通过检测引脚1(DAT3)的电平来决定使用SD模式还是SPI模式。

  SD总线上命令和数据的传输从一个起始位开始,以停止位终止。每个时钟周期传输一个命令或数据位。控制器通过CMD信号线发送命令到SD卡,用于对SD卡进行相应的操作,SD卡接收到命令后,会发送相对应的响应给控制器,这些响应中包含了SD卡的一些基本信息和状态信息等。SD卡初始化完成后,进入数据传输阶段,则可以进行读/写操作。为了避免命令,数据和响应传输的错误,SD规范中采用了CRC技术,在传输命令和响应时,需要进行CRC7效验,而在传输数据时,则需要进行CRC16效验。该控制器主要采用SD的CLK,CMD,DAT0三根信号线完成SD卡的读/写。

  3 SD卡读写控制器总体工作过程

  该控制器采用Verilog HDL语言编写,在SD卡就绪后,NiosⅡ处理器先向Avalon-MM Slave端口设置相关寄存器。状态控制逻辑根据寄存器中的相关位发送命令到读/写控制逻辑,再由读/写控制逻辑发送相应的命令到SD卡。命令在时钟信号CLK的上升沿经过CRC7校验后通过CMD信号线串行写入SD卡。SD规范中定义了很多命令,但这里仅用到了常用的10个命令就实现了读/写控制的功能,命令都要按一定格式顺序发送到SD卡,命令编号占6 b,每个命令必须填充开始标志,命令的参数以及CRC7校验数据以及结束标志,发送1个完整的命令需要写入48b。

  SD卡在接收到命令后,会根据写入的命令执行相应的操作,并发送相应的Response给控制器,其中Re-sponse也分为几种,包含长响应和短响应,Response中的数据包含了卡的一些基本信息以及命令的执行情况等。控制器根据返回的状态的信息决定下一步操作,即发送下一个命令。控制器内部总体结构如图1所示。

控制器内部总体结构

  控制器上电后自动进行初始化,将SD卡的状态保存到状态寄存器中,在进行读/写前,应先读取SD卡的状态信息,在SD卡进入了读/写就绪状态后,即可向Avalon-MM Slave端口写入读/写控制命令,具体包括要读/写的扇区号,读出数据或写入数据的存放地址。控制器在收到开始读/写命令后,开始读/写指定的扇区,控制器一次性读/写512 B,产生一个读/写完成的中断,即可以开始读/写下一个扇区。进行读操作时,控制器将从SD卡读出的数据通过AvaIon-MM Master端口写入所指定的地址处。进行写操作时,控制器通过Avalon-MM Master端口将指定内存地址处的数据写入SD卡。控制器整个读/写过程无需CPU干预,由Master端口主动完成,CPU仅需写入相关控制命令,大大提高了CPU的利用率。[page]

  4 Avalon-MM接口设计

  为了实现数据在Avalon总线上的传输,必须实现Avalon总线相关信号和时序逻辑,主要包括数据、地址、读/写控制、中断、时钟复位等信号。

  Avalon-MM Master端口主要用来将读/写控制逻辑部分读到的数据写入内存,或者将内存中的数据写入读/写控制逻辑,其接口信号如表1所示。

接口信号

  Avalon-MM SIave端口主要用来接收相关控制命令,即通过这个端口实现控制器内部寄存器的访问,其接口信号如表2所示。

接口信号

  该控制器内部有6个寄存器,也可以根据需要实现更多,通过软件设置相关寄存器即可进行读/写SD卡的操作,寄存器功能描述如表3所示。[page]

  5 系统硬件设计

  为了验证SD卡读写控制器,在DE2开发平台上搭建了最基本的硬件系统,主要包括:NiosⅡ处理器,PLL锁相环,片上RAM,JTAG UART和自定义的SD卡读写控制器。NiosⅡ作为系统主控制器,PLL用来产生SD卡读/写所需的时钟信号,片上RAM用来存储代码和数据,JTAG UART主要用来调试,打印数据到控制台验证写入的数据和读出的数据是否相同。

  硬件系统的建立主要利用Altera公司QuartusⅡ开发工具以及其集成的SoPC Builder完成的,关键在于如何用SoPC Builder将SD卡读写控制器添加到元件列表中。在SoPC Builder提供的图形化的界面下,添加控制器Verilog源程序后,设置控制器中各信号在Avalon-MM总线中的信号类型等,图2即为添加好的SD卡读写控制器。

添加好的SD卡读写控制器

  图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Ⅱ逻辑分析仪捕捉到的波形。

用SignalTap

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

  6 结语

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

关键字:Avalon  SoPC  SD卡  读写控制器  FPGA 引用地址:基于Avalon总线的SD卡读写控制器的设计

上一篇:基于Cyclone III FPGA的DDR2接口设计分析
下一篇:基于CPLD/FPGA的半整数分频器的设计实例

推荐阅读最新更新时间:2024-05-02 21:24

机器视觉在FPGA厂商的可拓展性应用
目前在工业机器人和服务机器人上用量最多的是MCU。随着工业领域每一步自动化升级,机器人所需的运算效能也同步增长,各种高效能要求,人机协同应用以及各类即时运算都要求机器人除了提供精准的电机控制外还能兼顾灵活性和拓展性。 显然,FPGA厂商是不会任由MCU靠着电机控制的红利大刀阔斧收割机器人市场的。目前工业机器人有多轴化和协同化的发展趋势,这种灵活性和拓展性要求都是为了机器人能够执行多种精密复杂的拟人动作。在这种发展趋势下工业机器人的电机及轴数都必须增加,当其中一个轴旋转到特定角度时,与其同处一个连动系统的轴也须旋转至相应的正确角度,这样的要求下,不同系统之间的搭配协调也变得格外重要。 FPGA可以应用在分散控制的小节点上,也可以
[嵌入式]
WTB网络HDLC在FPGA中的实现
1 引言 TCN(Train Communication Network)总体结构是由WTB(绞线式列车总线)和MVB(多功能车辆总线)组成,符合IEC61375-1标准。本文主要围绕WTB链路控制的帧格式进行研究。鉴于IEC61375-1标准中规定的WTB帧数据格式与IS03309中定义的HDLC(High Level Data Link Control)格式一致,基带Manchester-Biphase-L技术编解码器现则围绕HDLC展开。 随着深亚微米工艺技术的发展,FPGA(FieldProgrammable Gate Array)的规模越来越大,其单片逻辑门数已超过上百万门。同时还具有开发周期短、成本低、可实时在线检
[嵌入式]
基于MicroBlaze软核的FPGA片上系统设计
摘要:分析软处理器MicroBlaze的体系结构,给出MicroBlaze内核在软件无线电系统中的应用,实现SOPC(可编程系统芯片)。 关键词:FPGA IP Core SOPC MicroBlaze CoreConnect 软处理器 软件无线电 Xilinx公司的MicroBlaze 32位软处理器核是支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150MHz时钟下,可提供125 D-MIPS的性能,非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。 1 MicroBlaze的体系结构 MicroBlaze 是基于Xilinx公司FPGA的微处理器IP核,和其它外设IP核
[应用]
基于FPGA的Viterbi译码器设计及实现
  卷积码是广泛应用于卫星通信、无线通信等各种通信系统的信道编码方式。Viterbi算法是一种最大似然译码算法。在码的约束度较小时,它比其它概率译码算法效率更高、速度更快,译码器的硬件结构比较简单。随着可编程逻辑技术的不断发展,其高密度、低功耗、使用灵活、设计快速、成本低廉、现场可编程和反复可编程等特性,使FPGA逐步成为Viterbi译码器设计的最佳方法。项目目的是用FPGA实现一个Viterbi译码器。   一、译码器功能分析   译码器是一种具有“翻译”功能的逻辑电路,这种电路能将输入二进制代码的各种状态,按照其原意翻译成对应的输出信号。Viterbi译码器是以Viterbi算法为基础设计的一种译码器,译码器主要由五部分组成
[嵌入式]
基于<font color='red'>FPGA</font>的Viterbi译码器设计及实现
基于FPGA的存储测试系统的设计
  0 引言   动态测试技术是以捕捉和处理各种动态信息为目的的一门综合技术,它在当代科学技术中地位十分重要,在航天航空、仪器仪表、交通运输、军事、医疗等研究中均应用广泛。常用的测试方法有遥测与存储测试,与无线电遥测仪相比,存储测试仪结构更为简单、无需发送 天线 、体积小、功耗低。存储测试技术是对被测对象没有影响或影响在允许范围的条件下,在被测体内放置微型数据采集存储测试仪,现场实时完成信号的快速采集和存储,事后回收,由 计算机 处理和再现测试信息同时保证测试仪器完好的一种动态测试技术。由于存储测试对测试结果影响较小,测试数据准确可靠,已经渐渐成为测试动态参数的重要手段。   1 系统整体设计   测试信号通过 传感器
[测试测量]
基于<font color='red'>FPGA</font>的存储测试系统的设计
莱迪思全新MachX03D FPGA 搭配硬件可信根极大提升安全性
莱迪思半导体公司(NASDAQ:LSCC),低功耗可编程器件的领先供应商,今日宣布推出MachXO3D FPGA,用于在各类应用中保障系统安全。不安全的系统会导致数据和设计盗窃、产品克隆和过度构建以及设备篡改或劫持等问题。OEM可以使用MachXO3D轻松实现可靠、全面、灵活的基于硬件的安全机制,保障所有系统固件的安全。MachXO3D可以在系统生命周期的各个阶段(从生产到系统报废),组件固件遭到未经授权的访问时,对其保护、检测和恢复。 组件的固件已逐渐成为网络攻击最为常见的目标。2018年,超过30亿各类系统的芯片由于固件安全问题,面临数据窃取等威胁。不安全的固件还会因为设备劫持(DDoS攻击)、设备篡改或破坏等隐患,让OE
[嵌入式]
基于单片机的FPGA并行配置方法
摘要:讨论了基于SRAM技术的可编程逻辑器件FPGA的编程方式,并以ALTERA公司FLEX10K系列器件为例,提出了一种利用单片机AT89C52对FPGA进行在线PPA(被动并行异步)配置的实用方法。实践表明,用单片机对FPGA进行并行配置,具有配置时间短、准确率高、易于实现等优点,该方法可以广泛地应用于不同领域。 关键词:单片机 PPA FPGA 配置 在当今变化的市场环境中,产品是否便于现场升级、是否便于灵活使用,已成为产品能否进入市场的关键因素。在这种背景下,Altera公司的基于SRAM LUT结构的FPGA器件得到了广泛的应用。这类器件的配置数据存储在SRAM中。由于SRAM的掉电易失性,系统每次上电时,必须重新
[应用]
OpenCV答题卡识别模拟-测评米尔ARM+FPGA异构开发板
前言 米尔基于ARM+FPGA异构开发板的SDK发布说明 米尔基于ARM+FPGA异构开发板,根据下图文件内容可以知道myir-image-full系统支持的功能,其支持OpenCV,也就不用在格外安装相关驱动包等,省了很多事情。 02. 米尔基于ARM+FPGA异构开发板软件评估指南 本文介绍了Python的基本操作,在文档中10.1开发语言支持。 03.米尔基于ARM+FPGA开发板历程路径 /usr/share/OpenCV/samples//usr/share/opencv4/samples/python/ 文件目录中有一些python程序。 04.米尔基于ARM+FPGA开
[嵌入式]
OpenCV答题卡识别模拟-测评米尔ARM+<font color='red'>FPGA</font>异构开发板
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved