基于NXP+FPGA的大容量固态存储板实现方案

news2025/2/28 17:42:15
1 概述
近年来 ,大容量数据存储设备受到软硬件等发展的限制主
要还是采用机械硬盘叠加组合而用。机械硬盘以磁盘片作为载
体 ,采用机械马达 ,存在抗振性能低、低温性能差、噪声大等缺点。
固态硬盘是以半导体作为存储介质及控制载体 ,无机械装置 ,
具有抗震、宽温、无噪、可靠和节能等特点 ,在大型、复杂电
子设备中发挥着越来越显著的作用。大容量固态存储技术正引
起人们广泛的关注。
本文结合某项目的需要 ,采用由 ARM 与现场可编程门阵列
(FPGA)控制管理固态存储板的实现方法 ,实现单板(6U CPCI
标准板卡)容量不低于 4TB 固态存储板。
2 系统方案架构
针对不同的应用 ,以 ARM 为处理器 ,可以扩展 FPGA 来实
现不同容量的存储控制板 ,各种系统架构基本类似。现以本公
司某型号双 FPGA 控制技术实现 6U CPCI 标准板卡 ,其单板支
持最大 4TB 存储容量固态板加以说明。
该固态存储板由 128 片 NAND FLASH 组成(每片 32 GB),
每 32 片 NAND FLASH 为一组 ,总存储容量为 4 TB。其通过 2
片高性能 FPGA 和 1 片 ARM 处理器对 NAND FLASH 进行逻辑
控制 ,共有 4 条 64-bit 的 FLASH 总线。每 32 片 NAND FLASH
有一条 FLASH 总线驱动 ,读写速度可达 260 MB/S,单板可达到
1040 MB/s 总带宽。由于选择 GTP×4 高速串行总线方式 ,其可
满足 448 MByte/s 存储速度的项目需求。固态存储板内部组成框
图如图 1 所示。
3 ARM 处理器 ,FPGA 的选用及驱动算法实现
NXP 半导体是以 16 或 32 位的 ARM7TDMI-S CPU 内核来实
现 LPC2478 微控制器 ,其自带实时嵌入式跟踪与 JTAG 调试接
口。LPC2478 微控制器运行频率高达 72 MHz,Flash 程序存储器
有 512 KB,可实现应用编程(IAP)和系统编程(ISP)的功能。
LPC2478 能够执行 16 位 Thumb 指令及 32 位 ARM,可为技术人
员在程序级下就可选择性优化应用。其 98 KB 片内 SRAM 可由
RTC 供电存储数据,对于高性能 CPU 可通过 ARM 局部总线访问。
通过双 AHB 总线系统 ,可保证片内 Flash 程序的执行与同步以
太网 USB DMA、DMA 之间互不抢占。LPC2478 微控制器对于多
种用途的通信应用也十分适用 ,其具有丰富的串行接口及其它
的外设。
Virtex-5 系列作为第二代高级芯片组合模块(ASMBLTM)
列式架构 ,有 5 个截然不同的子系列(LX、LXT、SXT、TXT
及 FXT),是 FPGA 系列中选择最为丰富的系列。主要应用包括
具备高级串行连接功能的高性能逻辑、具备双密度高级串行连
接功能的高性能系统、具备高级串行连接功能的高性能信号处
理应用、具备高级串行连接功能的高性能嵌入式系统、其高性
能通用逻辑应用每个平台都拥有独特特性 ,以满足诸多高级逻
辑设计的需求。除最先进的高性能逻辑结构外 ,Vritex-5 FPGA
内置大量 IP 硬核系统级模块、可支持多达 330,000 个逻辑单
元及多达 17 个外部模拟输入通道、具有多速率 FIFO 支持逻辑、
也可以通过 JTAG TAP 或内部结构访问系统监控器。
本 例 固 态 存 储 板 中 的 同 样 为 Vritex-5 FPGA 芯 片 具 备
FLASH 控制器功能 ,在整个 FLASH 控制技术中融入了均衡管
理技术、实时坏块剔除技术、纠错技术等多项技术 ,对存储数
据的正确性、稳定性及安全性得到了保障。这几项 FLASH 控制
技术已在多个项目中稳定应用。产品实物正面图如图 2。
其中 ,均衡管理技术是采用
顺序循环管理算法 ,包含线性表
内含顺序表和链表 ,依据数据记
录设备对数据读写访问的方式 ,
在整个存储空间的 BLOCK 中均衡
的 进 行 ERASE、PROGRAM 操 作
方法 ,从而保证硬件的整体寿命。
实时坏块剔除技术是采用坏
块实时监测电路方法 ,在读写过
程 对 FLASH 的 BLOCK 状 态 进 行
实时监测 ,从而识别整个存储空
间的 BAD BLOCK,进行标识和替
换 ,有效的保证了对 BAD BLOCK
的实时剔除。
纠错技术是采用针对二进制
通道的 BCH 算法 ,具有严格的纠
错能力、构造简单、编码较其它
编码容易等特点 ,其中又采用了
硬件高速电路并行工作方式 ,从
而实现了高性能的 BCH 编码、解
码算法 ,保证 FLASH 数据的正确
性。
虽然以 NAND Flash 大容量存储器具有许多优点 ,但其有随
机产生不可避免的坏块可能 ,此时如不能很好解决该坏块问题 ,
将导致较高故障率。当在 FLASH 芯片出现硬件故障时 ,产品在
存储速度或存储数据容量上还要满足紧急、临时侦查任务的数
据存储实际使用要求时。这需要进一步提高存储板的容错能力 ,
在发生硬件故障时可以通过降额使用的方式 ,保证产品仍能继
续使用。降额设计包括硬件故障自动检测和降额处理两项功能。
硬件故障时降额处理原理框图如图 3 所示。
产品上电时 ,硬件故障自动检测功能会对存储板的所有
NAND FLASH 进行硬件状态检测 ,如果发现硬件故障 ,则向上
层报告硬件故障的区域。
为了保证存储板发生故障时仍能正常工作 ,上层的降额处
理功能在接收到硬件故障报告后 ,能有效的屏蔽故障区域对硬
件故障进行处理。

 

 

4 开发工具使用与实现的调试过程
1)ARM 调试 :本例中与 NXP(LPC2478FET208)微处理
器使用的单片机开发环境为 Keil uVision4 界面如图 4 所示 ,对
已调试好的程序可通过 ARM 下载仿真器查看下载是否正确 ,并
且确认程序是否能正常加载运行。若出现异常现象 ,可以进行
相应排查处理及后期的低格处理。
2)FPGA 调试 :本例是以 Xilinx ISE Design Suite 13.3 为开
发环境 ,通过仿真器可对其硬件 FPGA 程序进行编译、调试及
下载、包括对其 FLASH 阵列焊接情况扫描 ,如果发现 FLASH
读 ID、STATUS 信号线有异常情况 ,可通过 FLASH 的 IO 值及
片选信号确定 FLASH 出错具体位置。图 5 为通过 ChipScope Pro
Analyzer 工具 ,扫描 FLASH 状态以便排除不良焊接及有坏道的
FLASH。
同样在调试前期工作完成后 ,再通过内部信号源模拟测试
记录、回放。既可判别整块固态存储板卡的数据的存储与读取
的正确性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用马哈鱼SQLFLow 1 分钟获取复杂 SQL 语句的血缘关系

数据血缘关系在企业的数据治理中是非常重要的一个环节,关于数据血缘在企业数据治理中的重要作用,可以参考这篇文章。SQL 语言在数据处理中被广泛使用,SQL 语句中包含了丰富的数据血缘关系,关于什么是 SQL 中的数据血缘&#xff0c…

死锁与活锁

1 死锁概述 死锁主要是由于资源使用不当引发的。OS中存在很多不同类型的软硬件资源,而可以引发死锁的资源 主要是需要互斥访问的、不可被抢占的资源,即临界资源。下面先来简单了解下资源的分类。 资源分类 按照资源是否可重复使用划分,可以分…

Spring ( 三 ) SpringIoC

3.SpringIoC Spring 核心 是 通过IoC 降低 项目中的类之间的耦合 IoC Inversion of Control 控制反转: 应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。 ​ 这样控制权就由应用转移到了外部容器,控制权的转移…

【Linux从入门到精通】一文带你理解进程概念

我们通过对上篇文章冯诺依曼体系结构对硬件进行讲解后, 本篇文章会对进程进行深入讲解。同时会讲解PCB(进程控制块)。希望本篇文章内容会对你有所帮助。 文章目录 一、再次理解操作系统 1、1 操作系统的作用 1、2 操作系统的管理 二、进程基本…

基于Kubernetes集群构建大中型企业CICD应用平台(5)--Integrate工具

5.1、jenkins介绍 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高&am…

Java Web开发:Spring Boot和Spring Cloud的应用和实践

一、介绍 Java Web开发是当今互联网时代中的一项重要技术,随着互联网的发展和应用场景的不断扩大,Java Web开发技术也得到了广泛的应用。而Spring Boot和Spring Cloud作为Java Web开发中最常用的技术之一,已经成为了很多开发者必备的技能。本…

使用Vue3和Typescript实现可复用的路由标签页和面包屑导航组件

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 一、为什么需要可复用的路由标签页和面包屑导航组件1.1 前端应用导航的问题1.2 解决问题的方法二、Vue3和Typescript基础知识回…

shell脚本中数组的运用以及排序算法

shell脚本中数组的运用 一、数组的介绍1、概念2、定义方法3、数组包括的数据类型 二、关于数组的操作1、获取数组长度2、获取数组各个元素的下标3、获取数组列表或单个元素4、对数组切片输出5、对数组里的元素替换6、删除单个元素或数组7、数组追加元素8、向函数传入数组的值 三…

Learning C++ No.20 【红黑树实战】

引言: 北京时间:2023/5/12/20:30,今天周五,周五不摆烂从我做起,虽然刚睡醒,但是今天如果论学习时长,那可能是许久以来最长的一天,从早上6:40晨跑回来坐在凳子上,一坐久坐…

在 I/O 看未来 | 开发者集合!官方学习资源已更新,即 课 解锁新技能!

看完 Google I/O 2023 的精彩内容 你是否已跃跃欲试,准备充电学习? 马上跟随 Google 开发者在线课程 刷新知识储备和开发技能 将技术热爱落地为实践应用! "解码 Google I/O 洞见科技未来" 征文活动 也向身为技术爱好者的你发出召唤…

【Wi-Fi】802.11/802.11b/802.11g/802.11n/802.11a/802.11ac/802.11ax/802.11be

WiFi发展历史 IEEE 802.11 Protocol Release Date Frequency Band Bandwidth Max Throughput 802.11-1997 1997 2.4GHz 22MHz 2Mbps 802.11b 1999 2.4GHz 22MHz 11Mbps 802.11a 1999 5GHz 20MHz 54Mbps 802.11g 2003 2.4GHz 20MHz 54Mbps 802.11n (W…

Kubernetes❀实战入门

Kubernetes❀实战入门 4. 实战入门4.1 Namespace4.1.1 **查看**4.1.2 **创建**4.1.3 **删除**4.1.4 **配置方式** 4.2 Pod4.2.1 创建并运行4.2.2 查看pod信息4.2.3 访问Pod4.2.4 删除指定Pod4.2.5 配置操作 4.3 Label4.3.1 命令方式4.3.2 配置方式 4.4 Deployment4.4.1待操作。…

第二章 介绍Productions - 互操作性制作简介

文章目录 第二章 介绍Productions - 互操作性制作简介介绍Productions设置Production的消息流 第二章 介绍Productions - 互操作性制作简介 互操作性产品的目的是使能够连接系统,以便可以在它们之间转换和路由消息。要连接系统,需要开发、配置、部署和管…

( 位运算 ) 693. 交替位二进制数 ——【Leetcode每日一题】

❓693. 交替位二进制数 难度:简单 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n 5 输出:true 解释&#…

【FreeRTOS】——API函数任务创建与删除挂起与恢复

目录 前言: 一、任务创建与删除的API函数 二、任务挂起与恢复的API函数 总结: 前言: 博客笔记根据正点原子视频教程编辑,仅供学习交流使用! 一、任务创建与删除的API函数 任务的创建和删除的本质就是调用FreeRT…

小宁ChatGPT智能机器人上线,无需魔法注册即可使用!

​大家好,今天我要向大家介绍一款基于人工智能技术的聊天机器人——ChatGPT。ChatGPT可以与用户进行自然语言交互,回答用户的问题、提供服务、进行闲聊等,让聊天变得更有趣。 小宁ChatGPT是对接ChatGPT官方api,实现无需魔法无误差…

使用Visual Studio 2019 创建JNI式的动态库及在Java代码中的使用

文章目录 JNI简介JNI 数据类型与 Java 、C 类型对比JNI式动态库函数编码规则Visual Studio下的编码JNI式动态库在Java代码中的使用改进版通过javah命令自动生成.h文件 JNI简介 JNI (Java Native Interface) 是 Java 沟通 Native 语言(主要是C、C)的桥梁…

《花雕学AI》34:用13种Prompt玩转AI聊天机器人—揭秘ChatGPT模型

引言: 聊天机器人是一种能够通过自然语言进行交流的智能系统,它可以模仿人类的对话方式,提供各种信息、服务或娱乐。随着人工智能技术的发展,聊天机器人的应用越来越广泛,从电商、教育、医疗、旅游等领域,到…

Spring ( 四 ) 注解注入

3.2.注解方式 目前 主流的方式 是使用注解方式来实现IoC效果. 3.2.1.配置类 在 config包下增加 SpringConfig 配置类 Configuration 声明当前类为配置类, SpringIoC容器会根据配置类信息进行配置 ComponentScan() bean扫描路径 , SpringIoC容器只维护 声明的路径下的增加&q…

华为OD机试真题 Java 实现【最多提取子串数目】【2023Q1 100分】

一、题目描述 给定由[a-z] 26 个英文小写字母组成的字符串 A和 B,其中A中可能存在重复字母,B 中不会存在重复字母,现从字符串 A 中按规则挑选一些字母,可以组成字符串 B。 挑选规则如下: 同一个位置的字母只能被挑选一次&#…