CN107273314A - 嵌入式多媒体芯片数据读取方法、设备及系统 - Google Patents
嵌入式多媒体芯片数据读取方法、设备及系统 Download PDFInfo
- Publication number
- CN107273314A CN107273314A CN201710375651.2A CN201710375651A CN107273314A CN 107273314 A CN107273314 A CN 107273314A CN 201710375651 A CN201710375651 A CN 201710375651A CN 107273314 A CN107273314 A CN 107273314A
- Authority
- CN
- China
- Prior art keywords
- data
- chip
- built
- multimedia
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3804—Memory card connected to a computer port directly or by means of a reader/writer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种嵌入式多媒体芯片数据读取方法、设备及系统,通过由FPGA构成的硬件FPGA读取器与待进行数据读取的嵌入式多媒体芯片连接,并通过电源系统为FPGA读取器和嵌入式多媒体芯片提供电源;然后通过FPGA读取器读取嵌入式多媒体芯片中的数据,并将读取的数据上传给数据传输芯片,进而通过数据传输芯片将数据上传到所述电子设备进行保存,完成嵌入式多媒体芯片中数据的读取。本发明通过硬件FPGA读取器读取嵌入式多媒体芯片中的数据,相对现有通过软件读取方式,不仅资源消耗小、方便移植,而且可以大大提升eMMC数据的读取速率,更利于嵌入式多媒体芯片的推广应用。
Description
技术领域
本发明涉及嵌入式多媒体芯片(embed Multi Media Card,eMMC)处理领域,尤其涉及一种嵌入式多媒体芯片数据读取方法、设备及系统。
背景技术
嵌入式多媒体芯片(embed Multi Media Card,eMMC)为多媒体卡(MultiMediaCard,MMC)协会所订立的内嵌式存储器标准格式。嵌入式多媒体芯片以其电路简单,成本低,开发容易越来越受到对存储容量有较高要求的电子产品的青睐。
由于嵌入式多媒体芯片数据的读取需要根据嵌入式多媒体芯片协议进行初始化,最佳时钟采样点调节等,当前对嵌入式多媒体芯片数据的读取都是采用软件来实现,但是通过软件从嵌入式多媒体芯片中读取数据速度和可扩展性都受到很大限制,尤其是在接口时钟达到100M以上时,通过软件读取数据的速度就很难达到要求,使其应用受到了较大的限制。
发明内容
本发明提供一种嵌入式多媒体芯片数据读取方法、设备及系统,以解决现有的通过软件读取嵌入式多媒体芯片中的数据读取速度慢,导致嵌入式多媒体芯片应用受限的问题。
为此,本发明实施例提供一种嵌入式多媒体芯片数据读取设备,包括FPGA读取器以及电源系统;
所述电源系统用于为所述FPGA读取器和待进行数据读取的嵌入式多媒体芯片提供电源;
所述FPGA读取器与所述嵌入式多媒体芯片连接,用于读取所述嵌入式多媒体芯片中的数据,并将读取的数据进行上传。
进一步地,所述FPGA读取器包括:时钟生成单元、芯片控制单元、芯片数据采集单元和数据上传单元;
所述时钟生成单元用于生成工作时钟发给所述芯片控制单元;
所述芯片控制单元用于基于所述工作时钟与所述嵌入式多媒体芯片进行交互对所述嵌入式多媒体芯片进行初始化;
所述芯片数据采集单元用于从所述嵌入式多媒体芯片中采集数据并进行缓存;
所述数据上传单元用于将所述芯片数据采集单元缓存的数据进行上传。
进一步地,所述芯片控制单元对所述嵌入式多媒体芯片进行初始化包括:
所述芯片控制单元对所述嵌入式多媒体芯片进行总线复位、总线宽度设置、传输模式设置,以及获取所述嵌入式多媒体芯片的供电需求、芯片识别信息和芯片容量;
所述芯片数据采集单元用于根据所述芯片控制单元获取的芯片识别信息从所述嵌入式多媒体芯片中采集相应的数据并进行缓存。
进一步地,所述电源系统包括控制器和能提供至少两个电压的电源管理器;
所述电源管理器与所述FPGA读取器和所述嵌入式多媒体芯片连接;
所述控制器用于接收所述芯片控制单元发送的供电需求,根据所述供电需求控制所述电源管理器提供与该供电需求匹配的电压为所述FPGA读取器和所述嵌入式多媒体芯片供电。
进一步地,所述芯片数据采集单元还用于对从所述嵌入式多媒体芯片采集的数据量进行统计,以及将当前统计的数据量与所述芯片控制单元获取的芯片容量进行比对以判断数据是否读取完毕。
进一步地,所述FPGA读取器还包括与所述芯片数据采集单元连接的数据校验单元;
所述芯片数据采集单元还用于将从所述嵌入式多媒体芯片中采集的数据进行缓存之前,将采集的数据发给所述数据校验单元;以及用于接收到缓存通知时将采集的所述数据进行缓存,接收到重新采集通知时重新从所述嵌入式多媒体芯片中采集相应的数据;
所述数据校验单元用于对接收到的数据进行校验,并在校验成功时发送缓存通知给所述芯片数据采集单元,否则,发送重新采集通知给所述芯片数据采集单元。
进一步地,所述FPGA读取器还包括与所述芯片数据采集单元连接的采集训练单元;
所述芯片控制单元还用于在所述芯片数据采集单元从所述嵌入式多媒体芯片中采集数据之前,向所述嵌入式多媒体芯片发送调谐指令;
所述芯片数据采集单元还用于接收所述嵌入式多媒体芯片根据所述调谐指令发送的调谐数据块;
所述采集训练单元用于根据接收到的调谐数据块进行时钟采样点的确定,并将确定的时钟采样点发给所述芯片数据采集单元,以供其在确定的时钟采样点进行数据采集。
进一步地,所述数据上传单元用于判断所述芯片数据采集单元缓存的数据满足上传条件时,将缓存的数据进行上传;以及用于在判断当前上传队列当前存满时,向所述芯片控制单元发送暂停传输指令;
所述芯片控制单元还用于根据所述暂停传输指令向所述嵌入式多媒体芯片发送传输停止指令,以暂时停止向所述芯片数据采集单元传输数据。
为了解决上述问题,本发明还提供了一种嵌入式多媒体芯片数据读取系统,包括FPGA读取器、电源系统、电子设备以及设置于该电子设备上的数据传输芯片;
所述电源系统用于为所述FPGA读取器和待进行数据读取的嵌入式多媒体芯片提供电源;
所述FPGA读取器与所述嵌入式多媒体芯片连接,用于读取所述嵌入式多媒体芯片中的数据,并将读取的数据进行上传给所述数据传输芯片;
所述数据传输芯片用于将所述数据上传到所述电子设备进行保存。
为了解决上述问题,本发明还提供了一种嵌入式多媒体芯片数据读取方法,通过FPGA读取器与待进行数据读取的嵌入式多媒体芯片连接,并通过电源系统为所述FPGA读取器和嵌入式多媒体芯片提供电源;
通过所述FPGA读取器读取所述嵌入式多媒体芯片中的数据,并将读取的数据上传给数据传输芯片;
通过所述数据传输芯片将所述数据上传到所述电子设备进行保存。
有益效果
本发明实施例提供的嵌入式多媒体芯片数据读取方法、设备及系统,通过由FPGA(Field-Programmable Gate Array,现场可编程门阵列)构成的硬件FPGA读取器与待进行数据读取的嵌入式多媒体芯片连接,并通过电源系统为FPGA读取器和嵌入式多媒体芯片提供电源;然后通过FPGA读取器读取嵌入式多媒体芯片中的数据,并将读取的数据上传给数据传输芯片,进而通过数据传输芯片将数据上传到所述电子设备进行保存,完成嵌入式多媒体芯片中数据的读取。本发明通过硬件FPGA读取器读取嵌入式多媒体芯片中的数据,相对现有通过软件读取方式,不仅资源消耗小、方便移植,而且可以大大提升eMMC数据的读取速率,更利于嵌入式多媒体芯片的推广应用。
附图说明
图1为本发明实施例一提供的嵌入式多媒体芯片数据读取设备结构示意图一;
图2为本发明实施例一提供的嵌入式多媒体芯片数据读取设备结构示意图二;
图3为本发明实施例一提供的嵌入式多媒体芯片数据读取设备结构示意图三;
图4为本发明实施例一提供的嵌入式多媒体芯片数据读取设备结构示意图四;
图5为本发明实施例二提供的嵌入式多媒体芯片数据读取系统结构示意图一;
图6为本发明实施例二提供的嵌入式多媒体芯片数据读取系统结构示意图二;
图7为本发明实施例二提供的FPGA芯片结构示意图;
图8为本发明实施例二提供的eMMC芯片初始化流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明中一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
本实施例提供了一种嵌入式多媒体芯片数据读取设备,参见图1所示,包括FPGA读取器1以及电源系统2;该嵌入式多媒体芯片数据读取设备用于读取嵌入式多媒体芯片3中的数据。其中,电源系统2同时与FPGA读取器1和读取嵌入式多媒体芯片3连接,用于为FPGA读取器1和待进行数据读取的嵌入式多媒体芯片3提供电源。FPGA读取器1与嵌入式多媒体芯片3连接,用于读取嵌入式多媒体芯片3中的数据,并将读取的数据进行上传,数据的上传可以上传给相应的电子设备(例如手机、IPAD、阅读器、播放器各种移动设备,也可以是各种PC、服务器等)。
请参见图2所示,本实施例中的FPGA读取器1包括:时钟生成单元11、芯片控制单元12、芯片数据采集单元13和数据上传单元14;
时钟生成单元11用于生成工作时钟发给芯片控制单元;本实施例中工作时钟的生成可以根据当前具体的嵌入式多媒体芯片3对应的协议生成,也可以根据具体实际需求灵活设定。时钟生成的具体方式则可以采用现有任意时钟生成方式。
芯片控制单元12用于基于时钟生成单元11生成的工作时钟与嵌入式多媒体芯片3进行交互对嵌入式多媒体芯片3进行初始化。本实施例中,芯片控制单元12对嵌入式多媒体芯片3进行初始化包括但不限于:
芯片控制单元12对嵌入式多媒体芯片3进行总线复位、总线宽度设置、传输模式设置,以及获取嵌入式多媒体芯片3的供电需求、芯片识别信息(包括但不限于芯片的芯片识别码CID)和芯片容量,还可以为取嵌入式多媒体芯片3分配相对地址,以及获取取嵌入式多媒体芯片3的特殊数据读取CSD等。
芯片数据采集单元13用于从嵌入式多媒体芯片3中采集数据并进行缓存;本实施例中的芯片数据采集单元13具体可以设置一个或多个缓存单元(一个缓存单元可以通过一个RAM(RamdomAccessMemory)实现)。本实施例中缓存单元的大小,个数的设置可以根据嵌入式多媒体芯片3的容量、数据存储格式或其他实际使用需求灵活设定。基于上述初始化,芯片数据采集单元13用于根据芯片控制单元12获取的芯片识别信息从嵌入式多媒体芯片3中采集相应的数据并进行缓存。
数据上传单元14用于将芯片数据采集单元13缓存的数据进行上传;本实施例中数据上传的方式也可以灵活设定,例如可以基于先入先出(First Input FirstOutput)队列方式进行上传。
请参见图3所示,本实施例中的电源系统2包括控制器21和能提供至少两个电压的电源管理器22;例如电源管理器22可以根据各种类型的嵌入式多媒体芯片3所对应的协议具体设置,例如其可以提供1.1~1.3V,1.7~1.95V,2.1~3.6V几种等级的电压电源。
电源管理器22与FPGA读取器1和嵌入式多媒体芯片3连接。
控制器21用于接收芯片控制单元12发送的供电需求,根据供电需求控制电源管理器22提供与该供电需求匹配的电压为FPGA读取器1和嵌入式多媒体芯片3供电。
芯片数据采集单元13还用于对从嵌入式多媒体芯片3采集的数据量进行统计,以及将当前统计的数据量与芯片控制单元12获取的芯片容量进行比对以判断数据是否读取完毕。例如假设芯片容量为100M,芯片数据采集单元13统计从嵌入式多媒体芯片3采集的数据之数据量已经为100M时,则表明已经从嵌入式多媒体芯片3中读取完数据。
本实施例中,为了提升数据读取的安全性,请参见图4所示,FPGA读取器1还包括与芯片数据采集单元13连接的数据校验单元15;
芯片数据采集单元13还用于将从嵌入式多媒体芯片中采集的数据进行缓存之前,将采集的数据发给数据校验单元15。
数据校验单元15用于对接收到的数据进行校验,并在校验成功时发送缓存通知给芯片数据采集单元13以通知其进行数据的缓存,否则,发送重新采集通知给芯片数据采集单元13以通知其进行数据的重新采集。
芯片数据采集单元13还用于在接收到缓存通知时将采集的数据进行缓存,以及用于接收到重新采集通知时重新从嵌入式多媒体芯片中采集相应的数据。
本实施例中,芯片数据采集单元13将采集的数据发给数据校验单元15时,其本地可不保存该数据,数据校验单元15检验该数据校验失败时,则可直接丢弃该数据。本实施例中的校验方式包括但不限于循环冗余校验(CyclicRedundancy Check,CRC)。
参见图4所示,本实施例为了获取到的最优的时钟采样点,本实施例中的FPGA读取器1还包括与芯片数据采集单元13连接的采集训练单元16;
芯片控制单元12还用于在芯片数据采集单元13从嵌入式多媒体芯片3中采集数据之前,向嵌入式多媒体芯片3发送调谐指令;
芯片数据采集单元13还用于接收嵌入式多媒体芯片3根据调谐指令发送的调谐数据块;
采集训练单元16用于根据接收到的调谐数据块进行时钟采样点的确定,并将确定的时钟采样点发给芯片数据采集单元13,以供其在确定的时钟采样点进行数据采集。
本实施例中,数据上传单元14用于判断芯片数据采集单元13缓存的数据满足上传条件时,将缓存的数据进行上传;以及用于在判断当前上传队列当前存满时,向芯片控制单元12发送暂停传输指令。本实施例中,上传条件可以是芯片数据采集单元13的一个缓存单元存满,此时就对该缓存单元中的数据进行上传。当当前上传队列由存满状态切换到未存满状态时,则可以向芯片控制单元12发送继续传输指令
芯片控制单元12还用于根据暂停传输指令向嵌入式多媒体芯片3发送传输停止指令,以暂时停止向芯片数据采集单元13传输数据,也即暂停数据的采集,并在接收到继续传输指令后,可以根据该继续传输指令向嵌入式多媒体芯片3发送传输继续指令,以继续向芯片数据采集单元13传输数据。
实施例二:
本实施例还提供了一种嵌入式多媒体芯片数据读取系统,参见图5所示,包括FPGA读取器51、电源系统52、电子设备53以及设置于该电子设备上的数据传输芯片531;
电源系统52用于为FPGA读取器51和待进行数据读取的嵌入式多媒体芯片提供电源;
FPGA读取器51与嵌入式多媒体芯片连接,用于读取嵌入式多媒体芯片中的数据,并将读取的数据进行上传给数据传输芯片531;
数据传输芯片531用于将数据上传到电子设备53进行保存。
基于上述嵌入式多媒体芯片数据读取系统,实现嵌入式多媒体芯片数据读取方法的过程包括:
通过FPGA读取器51与待进行数据读取的嵌入式多媒体芯片连接,并通过电源系统52为FPGA读取器51和嵌入式多媒体芯片提供电源;
通过FPGA读取器51读取嵌入式多媒体芯片中的数据,并将读取的数据上传给数据传输芯片531;
通过数据传输芯片531将数据上传到电子设备53进行保存。
为了便于理解,下面结合一种具体的FPGA芯片实现FPGA读取器的示例进行说明,该示例中的数据传输芯片采用USB3.0芯片,电子设备为PC。整个系统对eMMC进行数据读取的实质就是复制eMMC内部数据,整个系统对eMMC进行数据读取的实质就是复制eMMC内部数据,并将数据通过USB3.0接口将数据上传到PC端。
参见图6所示,该嵌入式多媒体芯片数据读取系统包括:
控制器MCU61,主要负责FPGA芯片的位流加载和电源控制,上电后先对FPGA芯片进行配置,待FPGA芯片正常工作后根据反馈信息进行电源电压控制。
电源管理器62,主要是为满足不同协议的嵌入式多媒体芯片eMMC 66内的数据读取,可在电压1.2V、1.8V和3.3V之间切换。FPGA芯片读取此时eMMC芯片可支持的协议,通过spi口通知MCU,由MCU决定当前电源电压。
FPGA芯片63采用PGT30G,主要负责嵌入式多媒体芯片eMMC 66接口协议的处理,包括上电初始化、eMMC数据读取、数据的CRC校验和数据发送到USB3.0芯片。
FPGA芯片63外接USB3.0芯片64,当USB3.0芯片64内部fifo不为满时可往USB3.0芯片64发送数据,发送时钟为100M。当USB3.0芯片64内部fifo为满时FPGA需等待,且中断嵌入式多媒体芯片eMMC 66内数据的传输,直到USB3.0芯片64的fifo不满时再恢复数据传输。
PC 65端可通过上位机软件读取USB3.0芯片64上传的数据,将数据以文件格式进行存储。
参见图7所示,FPGA芯片63实现主要包括6个单元:时钟生成单元Clk_gen633、芯片控制单元EMMC_control 631、采集训练单元Tuning 632、芯片数据采集单元EMMC_data634、数据校验单元CRC_verify 635、数据上传单元USB30_control 636。
上电初始化后,EMMC_control 631需要对根据协议对eMMC芯片进行初始化,初始化时EMMC_control 631与eMMC交互时钟为400K以下。一种实例中,eMMC芯片的基本命令如下:
CMD0
cmd0带参数0xF0F0F0F0,GO_PRE_IDLE_STATE是软件reset命令,使得设备进入pre_idle状态,cmd0带参数0xFFFFFFFA,该命令使得device进入bootoperation mode,device将主动发送数据到总线上,数据区域和大小由ECSD寄存器控制。
CMD1
CMD1如果设备不支持boot mode,或者BOOT_PARTITION_ENABLE位被清除,powerup后设备会立刻进入idle状态。在idle状态,除非收到CMD1,设备会忽略所有传输。对于EMMC4.2之前的版本,device在上电后会立刻进入idle状态。
CMD2
CMD2ALL_SEND_CID用来从device获取CID,R2用来用来返回device'sCID。
CMD3
CMD3SET_RELATIVE_ADDR用来给设置设备的relative deviceaddress(RCA),设备收到CMD3后,会立刻从identification mode进入Stand-byState,并且不会再响应任何identification。
CMD4
CMD4用来设置device的DSR(device stage register)寄存器
CMD5
CMD5SLEEP/AWAKE用来切换设备到Sleep state或者Standby state。设备在Sleepstate的电源消耗是最小的,在这个状态下设备仅响应RESET命令(CMD0参数为0x00000000或者0xF0F0F0F0)和SLEEP/AWAKE命令(CMD5),其他命令都会被忽略。
CMD6
CMD6SWITCH切换设备的操作模式或者修改EXT_CSD寄存器,SWITCH命令可以用来写EXT_CSD或者改变命令集。如果SWITCH命令用来改变命令集,那么Index和Value被忽略不会修改EXT_CSD;如果SWITCH用来写EXT_CSD寄存器,Cmd Set被忽略。
CMD6参数
[31:26]Set to 0
[25:24]Access,00切换command set;01设置Value中指定的位;10清除Value中指定的位;11写入Value指定的值。
[23:16]Index,EXT_CSD的索引值,index值为0~255,但是仅仅0~191为有效索引值。
[15:8]Value,
[7:3]Set to 0
[2:0]Cmd Set,要切换的command set
CMD7
CMD7SELECT/DESELECT_CARD
当设备处在Stand-by状态,CMD7把设备从Stand-by State切换到TransferState;也可以把设备从Transfer State切换回Stand-by State。
当设备处在Disconnect状态,CMD7把设备从Disconnect State切换到Programming State在以上两种情况下,使用当前的RCA会选择设备,任何其他RCA地址都会取消选择。使用RCA 0x0000表示取消选择。
CMD8
CMD8SEND_EXT_CSD
请求设备发送它的EXT_CSD寄存器,通过数据块的方式发送。
CMD9
CMD9SEND_CSD
参数指定设备的RCA[31:16]RCA
请求设备发送它的Device-specific data(CSD)到CMD line上。
CMD10
CMD10SEND_CID参数指定设备的RCA[31:16]RCA
请求设备发送它的Device identification(CID)到CMD line上
CMD12
CMD12STOP_TRANSMISSION参数指定设备的RCA[31:16]
所有的read commands:CMD17CMD18CMD21CMD30,都可以在任意时刻被CMD12打断。设备会返回到Transfer State
所有的write commands:CMD24CMD25CMD26CMD27,都可以被CMD12中止,但是要求在发送CMD7之前发送。
CMD13
CMD13SEND_STATUS参数[31:16]设备的RCA,[0]HPI flags。
请求设备发送它的状态寄存器,如果设置了HPI flag,那么设备会在一个定义良好的时间内中断。
CMD14
CMD14BUSTEST_R主机从设备端读取测试模式数据
CMD15
CMD15GO_INACTIVE_STAT参数[31:16]指定设备的RCA
设置设备状态为inactive
CMD19
CMD19BUSTEST_W Host发送总线测试模式数据到device
面向块的读命令
CMD16
CMD16SET_BLOCKLEN参数[31:0]block长度设置接下来所有block命令(读和写)的block尺寸。缺省的块长度在CSD中指定。
CMD17
CMD17READ_SINGLE_BLOCK参数[31:0]data block地址
读取参数指定地址的数据块,块长度是CMD16设置的(或者使用缺省blocksize)
CMD18
CMD18READ_MULTIPLE_BLOCK参数[31:0]data block的首地址
连续从设备读取数据块到host,直到被stop命令中断,或者已经达到请求的数据块数量
CMD21CMD21SEND_TUNING_BLOCK
HS200模式专用,用来优化HOST采样点,HOST发送CMD21命令,device发送tuning模式数据块。Host会在不同采样点采集数据,找到最佳采样点。
面向块的写命令
CMD23
CMD23SET_BLOCK_COUNT参数:
[30]'0'non-packed'1'packed
[24]forced programming,设置为1,强迫数据直接写入存储介质,而不是仅写入cache
[15:0]number of blocks,
定义读写块数目
CMD24
CMD24WRITE_BLOCK
参数[31:0]数据块地址
协议个数据块到设备中,尺寸由之前的CMD16SET_BLOCKLEN定义
CMD25
CMD25WRITE_MULTIPLE_BLOCK参数[31:0]数据块起始地址连续数据块,直到STOP_TRANSMISSION或者已经写完了请求的数据块。
CMD26
CMD26PROGRAM_CID写设备CID寄存器。这个命令只能烧写一次,正常情况下是制造商使用这个命令。
CMD27
CMD27PROGRAM_CSD更改CSD中的可编程位
CMD49
CMD49SET_TIME设置device的real time clock,device使用这个时钟做一些内部维护工作。
这个命令类似CMD24WRITE_BLOCK,会发送一个RTC information数据块。
面向块的写保护命令
CMD28
CMD28SET_WRITE_PROT参数[31:0]数据块地址
如果设备支持写保护功能,这个命令设置指定地址组的写保护位
CMD29
CMD29CLR_WRITE_PROT参数[31:0]数据块地址,如果设备提供了写保护功能,这个命令清除指定地址组的写保护位。
CMD30
CMD30SEND_WRITE_PROT参数[31:0]写保护数据地址
CLASS_6_CTRL=0x00:如果设备支持写保护功能,这个命令请求设备发送写保护位状态。
CLASS_6_CTRL=0x01:命令用来请求设备发送released组状态,0表示给定的组有效可访问,1表示给定组被released无法使用。
CMD31
CMD31SEND_WRITE_PROT_TYPE参数[31:0]写保护起始地址
CLASS_6_CTRL=0x00:请求设备发送不同写保护组的写保护类型,64个写保护位(代表32个写保护组),通过数据线传递。如果组的有效地址已经在有效范围之外,那么被填充为0。
CLASS_6_CTRL=0x01:
删除命令
CMD35
CMD35ERASE_GROUP_START
参数[31:0]对于=<2G的介质,表示32bits byte地址,对于>2GB介质,是32bitssector地址,会按照Erase group对齐。
该命令设置erase操作的首earse group地址。
CMD36
CMD36ERASE_GROUP_END参数[31:0]对于=<2G的介质,表示32bits byte地址,对于>2GB介质,是32bits sector地址,会按照Erase group对齐。
该命令设置erase操作的最后一个erase group地址。
CMD38
CMD38ERASE删除前面选择的所有earse block
IO模式命令
CMD39
CMD39FAST_IO
参数[31:16]RCA,[15:15]寄存器写标志,[14:8]寄存器地址,[7:0]寄存器值。
CMD40
CMD40GO_IRQ_STATE设置设备进入中断模式
基于上述示例,整个初始化处理流程图参见图8所示,包括:
S801:上电。
S802:判断是否触发,如是,转至S803;否则,返回重新判断。
S803:等待预设时间,例如1ms+74时钟。
S804:调用CMD0复位。
S805:调用CMD1判断电压是否符合,如是,转至S806;否则,转至S807。
S806:调用CMD2获取CID。
S807:切换电压后,转至S801。
S808:调用CMD3分配相对地址。
S809:调用CMD9获取CSD。
S810:调用CMD6设置总线宽度。
S811:调用CMD7进入tran状态。
S812:调用CMD8获取设备容量。
S813:调用CMD6切换HS400,HS400也是最高200M clock,但是是双通道,所以数据速率是200x 2=400。
S814:调用CMD18开始数据传输。
时钟生成单元Clk_gen 633负责时钟信号和复位信号的产生,片外50M的时钟输入到PLL,产生100M的时钟信号,计数产生低于400K的低速时钟,利用clkmux进行时钟切换,提供给eMMC_control 631模块用。时钟切换信号clk_sel由eMMC_control 631提供。时钟生成单元Clk_gen 633提供100M时钟给数据上传单元USB30_control 636使用。
eMMC_control 631负责协议的处理,在上电后对eMMC芯片进行初始化,包括总线复位、电压协商、设备CID获取、总线宽度设定和设备容量等。在数据传输过程中,如果CRC校验错误或USB3.0芯片内部fifo已满,则需要进行数据重传或传输中断,可由eMMC_control631发送传输停止命令到eMMC芯片。
采集训练单元Tuning 635,在eMMC初始化时,采集训练单元Tuning 635发送命令可以使eMMC芯片发送调谐数据块,通过对调谐数据块的对比来进行时钟采样点的调整。为获取最佳时钟采样点,FPGA芯片内部可以实例化一个可调节相位的PLL,在采集训练单元Tuning 635进行调谐数据块对比时,实时调节采样点位置。当所采样到的调谐数据块与协议规定一致时,将此时钟相位固定,以便后续采样数据。
芯片数据采集单元eMMC_data 634,在eMMC进入传输数据模式后,eMMC_data 634检测strobe信号线,当strobe信号线从低变成高时,表示数据开始传输。在时钟的上升沿和下降沿对数据进行采样,eMMC_data 634每次传输数据块长度为512B,eMMC_data 634将4个8bit数据组合为32bit然后存入RAM中。可以设RAM的容量为32*512,当写满一块RAM后,切换到另一块RAM中写数据。eMMC_data 634需要计算已经读取的数据数量,由于eMMC_control631已经获得设备的容量,当读取的数据已经到达设备容量时,表示读取完成。
数据校验单元CRC_verify 635,在读取eMMC内部数据时,CRC_verify 635对数据块实时进行CRC校验。若CRC模块计算所得到的CRC与读取的数据块自带的CRC一致时,便将数据块存入RAM中,等待发送到PC端;若CRC模块计算所得到的CRC与读取的数据块自带的CRC不一致时,则将数据块丢弃,且发送命令重新读取数据块。
数据上传单元USB30_control 636,在eMMC进入传输数据模式后,USB30_control636检测eMMC_data 634是否写满一块缓存单元RAM,若有,则开始读取RAM数据,并向外发送,发送数据宽度为32bit,时钟为100M。在写数据过程中监控flaga和flagb信号,判断USB30芯片fifo是否满,若满则需要停止发送数据,并向eMMC_control模块发出full信号。当读取完一块RAM后,USB30_control模块重新检测eMMC_data模块是否已经写满一块RAM,以此循环。
上述示例以eMMC协议5.0为例,如果需要提高数据读取速率,则需要将FPGA内部PLL进行重新配置,提高系统时钟;若兼顾eMMC 5.0以下协议或其他协议时,则只需对应修改相应状态机,并调整系统时钟即可。
本实施例的方案使用FPGA实现了eMMC5.0协议的数据读取方案,包含eMMC协议处理、数据读取、数据校验和数据上传。FPGA资源消耗LUT约2K、块RAM 5块,时序分析报告显示最高时钟频率超过140MHz;数据采用时钟双沿采样,可达200MBps;上板实测结果满足系统性能要求。且该设计通用灵活,充分利用了FPGA硬件资源,采用并行处理、流水线技术达到了性能与资源的最优化。
显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种嵌入式多媒体芯片数据读取设备,其特征在于,包括FPGA读取器以及电源系统;
所述电源系统用于为所述FPGA读取器和待进行数据读取的嵌入式多媒体芯片提供电源;
所述FPGA读取器与所述嵌入式多媒体芯片连接,用于读取所述嵌入式多媒体芯片中的数据,并将读取的数据进行上传。
2.如权利要求1所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述FPGA读取器包括:时钟生成单元、芯片控制单元、芯片数据采集单元和数据上传单元;
所述时钟生成单元用于生成工作时钟发给所述芯片控制单元;
所述芯片控制单元用于基于所述工作时钟与所述嵌入式多媒体芯片进行交互对所述嵌入式多媒体芯片进行初始化;
所述芯片数据采集单元用于从所述嵌入式多媒体芯片中采集数据并进行缓存;
所述数据上传单元用于将所述芯片数据采集单元缓存的数据进行上传。
3.如权利要求2所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述芯片控制单元对所述嵌入式多媒体芯片进行初始化包括:
所述芯片控制单元对所述嵌入式多媒体芯片进行总线复位、总线宽度设置、传输模式设置,以及获取所述嵌入式多媒体芯片的供电需求、芯片识别信息和芯片容量;
所述芯片数据采集单元用于根据所述芯片控制单元获取的芯片识别信息从所述嵌入式多媒体芯片中采集相应的数据并进行缓存。
4.如权利要求3所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述电源系统包括控制器和能提供至少两个电压的电源管理器;
所述电源管理器与所述FPGA读取器和所述嵌入式多媒体芯片连接;
所述控制器用于接收所述芯片控制单元发送的供电需求,根据所述供电需求控制所述电源管理器提供与该供电需求匹配的电压为所述FPGA读取器和所述嵌入式多媒体芯片供电。
5.如权利要求3所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述芯片数据采集单元还用于对从所述嵌入式多媒体芯片采集的数据量进行统计,以及将当前统计的数据量与所述芯片控制单元获取的芯片容量进行比对以判断数据是否读取完毕。
6.如权利要求2-5任一项所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述FPGA读取器还包括与所述芯片数据采集单元连接的数据校验单元;
所述芯片数据采集单元还用于将从所述嵌入式多媒体芯片中采集的数据进行缓存之前,将采集的数据发给所述数据校验单元;以及用于接收到缓存通知时将采集的所述数据进行缓存,接收到重新采集通知时重新从所述嵌入式多媒体芯片中采集相应的数据;
所述数据校验单元用于对接收到的数据进行校验,并在校验成功时发送缓存通知给所述芯片数据采集单元,否则,发送重新采集通知给所述芯片数据采集单元。
7.如权利要求2-5任一项所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述FPGA读取器还包括与所述芯片数据采集单元连接的采集训练单元;
所述芯片控制单元还用于在所述芯片数据采集单元从所述嵌入式多媒体芯片中采集数据之前,向所述嵌入式多媒体芯片发送调谐指令;
所述芯片数据采集单元还用于接收所述嵌入式多媒体芯片根据所述调谐指令发送的调谐数据块;
所述采集训练单元用于根据接收到的调谐数据块进行时钟采样点的确定,并将确定的时钟采样点发给所述芯片数据采集单元,以供其在确定的时钟采样点进行数据采集。
8.如权利要求2-5任一项所述的嵌入式多媒体芯片数据读取设备,其特征在于,所述数据上传单元用于判断所述芯片数据采集单元缓存的数据满足上传条件时,将缓存的数据进行上传;以及用于在判断当前上传队列当前存满时,向所述芯片控制单元发送暂停传输指令;
所述芯片控制单元还用于根据所述暂停传输指令向所述嵌入式多媒体芯片发送传输停止指令,以暂时停止向所述芯片数据采集单元传输数据。
9.一种嵌入式多媒体芯片数据读取系统,其特征在于,包括FPGA读取器、电源系统、电子设备以及设置于该电子设备上的数据传输芯片;
所述电源系统用于为所述FPGA读取器和待进行数据读取的嵌入式多媒体芯片提供电源;
所述FPGA读取器与所述嵌入式多媒体芯片连接,用于读取所述嵌入式多媒体芯片中的数据,并将读取的数据进行上传给所述数据传输芯片;
所述数据传输芯片用于将所述数据上传到所述电子设备进行保存。
10.一种嵌入式多媒体芯片数据读取方法,其特征在于,通过FPGA读取器与待进行数据读取的嵌入式多媒体芯片连接,并通过电源系统为所述FPGA读取器和嵌入式多媒体芯片提供电源;
通过所述FPGA读取器读取所述嵌入式多媒体芯片中的数据,并将读取的数据上传给数据传输芯片;
通过所述数据传输芯片将所述数据上传到所述电子设备进行保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710375651.2A CN107273314A (zh) | 2017-05-24 | 2017-05-24 | 嵌入式多媒体芯片数据读取方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710375651.2A CN107273314A (zh) | 2017-05-24 | 2017-05-24 | 嵌入式多媒体芯片数据读取方法、设备及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107273314A true CN107273314A (zh) | 2017-10-20 |
Family
ID=60064644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710375651.2A Pending CN107273314A (zh) | 2017-05-24 | 2017-05-24 | 嵌入式多媒体芯片数据读取方法、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273314A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766133A (zh) * | 2018-12-29 | 2019-05-17 | 合肥杰发科技有限公司 | 一种内置嵌入式单元的系统及其初始化方法 |
CN112673364A (zh) * | 2020-04-15 | 2021-04-16 | 深圳市大疆创新科技有限公司 | 数据传输方法、数据传输装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011238114A (ja) * | 2010-05-12 | 2011-11-24 | Sharp Corp | ハイブリッドドライブ装置 |
CN103280238A (zh) * | 2013-06-27 | 2013-09-04 | 山东量子科学技术研究院有限公司 | 基于FPGA的eMMC控制器及其工作方法 |
CN105868145A (zh) * | 2016-04-25 | 2016-08-17 | 北京中科海讯数字科技股份有限公司 | 一种多高速接口的高速串行总线存储装置 |
CN106409337A (zh) * | 2016-09-20 | 2017-02-15 | 北京润科通用技术有限公司 | eMMC的控制方法及基于FPGA的eMMC控制器 |
-
2017
- 2017-05-24 CN CN201710375651.2A patent/CN107273314A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011238114A (ja) * | 2010-05-12 | 2011-11-24 | Sharp Corp | ハイブリッドドライブ装置 |
CN103280238A (zh) * | 2013-06-27 | 2013-09-04 | 山东量子科学技术研究院有限公司 | 基于FPGA的eMMC控制器及其工作方法 |
CN105868145A (zh) * | 2016-04-25 | 2016-08-17 | 北京中科海讯数字科技股份有限公司 | 一种多高速接口的高速串行总线存储装置 |
CN106409337A (zh) * | 2016-09-20 | 2017-02-15 | 北京润科通用技术有限公司 | eMMC的控制方法及基于FPGA的eMMC控制器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766133A (zh) * | 2018-12-29 | 2019-05-17 | 合肥杰发科技有限公司 | 一种内置嵌入式单元的系统及其初始化方法 |
CN112673364A (zh) * | 2020-04-15 | 2021-04-16 | 深圳市大疆创新科技有限公司 | 数据传输方法、数据传输装置、电子设备和存储介质 |
WO2021207972A1 (zh) * | 2020-04-15 | 2021-10-21 | 深圳市大疆创新科技有限公司 | 数据传输方法、数据传输装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7624216B2 (en) | Host controller | |
CN101839974B (zh) | 一种双接口雷达数据记录仪 | |
US7222212B2 (en) | Virtual USB card reader with PCI express interface | |
US20070208900A1 (en) | Virtual ide storage device with pci express interface | |
US20060206639A1 (en) | [virtual ide card reader with pci express] | |
EP2310936A1 (en) | Storage system and method for managing a plurality of storage devices | |
CN104731746A (zh) | 设备控制器装置 | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
CN107273314A (zh) | 嵌入式多媒体芯片数据读取方法、设备及系统 | |
CN201732160U (zh) | 一种双接口雷达数据记录仪 | |
CN114780449B (zh) | 一种基于zynq芯片的数据存储及传输系统 | |
CN206411658U (zh) | 一种基于FPGA的NandFlash存储系统 | |
CN202584143U (zh) | 一种多接口只读读卡器 | |
CN104571942A (zh) | 数据存储系统和非信号分析方法 | |
CN103019988B (zh) | 电脑、嵌入式控制器及其方法 | |
JP2013030145A (ja) | メモリカードコントローラ、メモリカードアダプタおよびメモリカードドライブ | |
CN102567270A (zh) | 一种usb转i2c适配器 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
CN109710186A (zh) | 一种基于eMMC阵列的高速数据存储与传输系统 | |
CN206147601U (zh) | 一种高密度高速存储板卡 | |
CN105159613A (zh) | 一种emmc控制系统及其访问方法 | |
CN103995675A (zh) | 硬盘读写装置的控制方法及装置 | |
US20120124272A1 (en) | Flash memory apparatus | |
CN101853230B (zh) | 一种引脚数据传输方法 | |
CN110286855A (zh) | 一种多个tf卡自动拼盘的装置及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171020 |