常见嵌入式存储器学习


1. FPGA内部存储器

1.1 RAM

RAM即随机存取存储器(Random Acccess Memory),数据不是线性依次存储,可以自由指定地址进行数据读写。RAM掉电数据丢失,速度比ROM快,常作为临时的数据存储器件,辅助操作系统或者程序交换数据。读写方便,可以同时进行读写数据,由其发展出了SRAM和DRAM。

SRAM即静态随机存取存储器(Static Random Access Memory),静态表示只要器件保持通电,其内部数据就不会丢失。由于SDRAM内部采用触发器保存数据,所以不是破坏性读出数据,读取后不需要复写。运行速度相比DRAM快,适合用作高速缓存。结构较为复杂,存储容量在KB及MB量级,常用作CPU的缓存空间。
SDRAM内部构造:
在这里插入图片描述

DRAM即动态随机存取存储器(Dynamic Random Access Memory),存储的数据需要周期性的刷新才能长时间保存。由于DRAM内部采用电容器存储数据,电容器容易因电荷泄露导致数据丢失,所以需要消耗更多的电力用于反复刷新数据。其破坏性的数据读取导致读出数据后需要重新写入。但由于其使用的晶体管较少,可以大量集成,适合用于主存储器,存储容量在GB量级。

DRAM内部构造:
在这里插入图片描述

SDRAM即同步动态随机存取存储器(Synchronous Dynamic Random Access Memory),是有一个同步接口的DRAM,相比只有异步接口的DRAM,其操作模式更加复杂。在内存工作的时候需要同步时钟完成数据和指令的发送。从此衍生出了SDR、DDR、DDR1、DDR2、DDR3、DDR4。

1.2 ROM

ROM即只读存储器(Read-Only Memory),以非破坏性读出工作,但不能写入数据,数据掉电也不会丢失,是非易失存储器(NVM: Non-Volatile Memory)。常规ROM种类为MASK ROM(掩膜只读存储器),通过掩膜工艺,制作中完成数据写入。现有的部分种类的ROM也可以实现写入数据,但由于历史问题名字没有发生更改。ROM常用作电脑启动软件BIOS(Basic Input Output System)。

PROM即可编程只读存储器PROM(Programmable Read-Only Memory),常指OTPROM即一次可编程存储器(One Time Programmable Read-Only Memory)。典型产品采用熔丝技术,熔丝熔断即为0,即eFuse OTP NVM,电子显微镜下可以破解数据。还有一种反熔丝装置,与保险丝功能相反,默认不导通状态,加以大电压的时候,转换为永久导通路径,为Anti-fuse OTP NVM,电子显微镜下不能区分编程位,无法破解。也有采用肖特基二极管,利用其永久击穿的特性完成写数据,过程不可逆。PROM内部数据不是在制造过程中写入的,是制造完成后依靠专用的编程器写入。由于其成本及写入速度比普通ROM慢,所以一般只适用于ROM量产前验证和加密密钥等方面。

EPROM即可擦除可编程ROM(Erasable Programmable ROM),可以重复擦除和写入,由于需要紫外线照射擦除,所以其芯片上有明显的开窗。需要专用的编程器,程序写入完成后一般使用不透明贴纸将窗口封住。

EPROM:
在这里插入图片描述

EEPROM即电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)。可以用电信号直接擦除写入,不需要借助其他设备完成,摆脱了专用编程器件的束缚。具有双电压特性,即写入和读出的电压不同,所以常应用在BIOS中,可以通过电压的设置防止木马病毒的入侵。

FLASH即快闪存储器(Flash Memory),是EEPROM的改进产品,使用上和其很类似,相较于EEPROM只能按位擦除,FLASH可以实现按块擦除。FLASH容量比EEPROM大,常为512K~8M bits,适合用来存放程序代码,目前取代了EEPROM应用在BIOS上及单片机内部的程序存储。其基于浮栅晶体管单元构成,根据内部晶体管排布可以分为NOR型和NAND型。

NAND flash:晶体管串联在一起,电路简单,地址和数据总线共用,所以能够更大容量集成。以页为单位写入,以块为单位擦除。主要应用在SSD固态硬盘、U盘、存储卡等器件上。在不同型号的产品下,其页、块、扇区的字节大小数不固定。
NOR flash:晶体管并联在一起,每一位都可寻址,地址和数据总线分开,以字节为单位写入,以扇区为单位擦除。其独立的地址线和数据线决定其容量较小,所以更像内存,常常用在手机中。

浮栅晶体管:
在这里插入图片描述

2. 外部存储器

FPGA通过SPI通信操作FLASH,对FLASH进行空间分配,使其同时作为FPGA配置文件和数据的存储空间。以W25Q128BV型为例,存储空间为128Mbits,可编程页有365536页,一页256字节。擦除时可按照16页(1 sector)、128页(8 sector)、256页(16 sector)及正片擦除的格式。

/WP(IO2)为写保护输入、DI为数据输入(MOSI)、DO为数据输出(MISO)、/HOLD or /RESET为保持或者复位输入,CLK接入SPI同步时钟。

W25Q128BV的引脚封装:在这里插入图片描述

FPGA实现对DDR存储器的控制。DDR SDRAM采用时钟双边沿数据传输(Double Data Rate),使得带宽加倍。DDR存储器采用差分时钟工作,提高了抗干扰能力。同时在读写操作时,有同步得双向数据触发信号(DQS)。

利用FPGA实现对DDR2的控制。相比于DDR,DDR2的到带宽又提高了一倍,这是因为其每个设备上使用了两个DRAM核心。在控制方案的选取上,核心DDR2控制器采用Altera提供的IP核实现,辅助读取FIFO、写入FIFO及地址产生模块,完成数据的存储和读取。通过FIFO的状态指标。控制数据写入和读出DDR2,防止数据的溢出。

DDR3的工作电压从DDR2的1.8V降低到了1.5V,降低了功耗,同时其工作效率是DDR2的两倍,突发长度也由4bit改进为8bit。用户可以通过调用DDR3控制IP核,编写用户模块进行辅助数据的传递。设计采用200MHz的时钟,DDR3总线为64bit,预取8位能够达到1600MB/s。

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嵌入式开发需要掌握的技能包括:嵌入式系统的硬件知识、嵌入式软件开发嵌入式系统架构设计、嵌入式系统测试、嵌入式系统调试和优化等方面的知识。具体来说,需要掌握C/C++等编程语言,掌握嵌入式系统的操作系统、微处理器、外设等硬件知识,掌握常用嵌入式软件开发工具和开发流程,以及掌握常用的调试工具和方法等。此外,对于一些特定的嵌入式应用场景,还需要掌握相关领域的知识,例如汽车电子、智能家居、医疗器械等。 ### 回答2: 嵌入式开发是指开发嵌入式系统或嵌入式软件的过程。嵌入式系统是一种特殊的计算机系统,其硬件、软件和固件嵌入到特定的物理设备中,用于控制、监测或执行特定的功能。 要学习嵌入式开发,首先要掌握计算机体系结构和操作系统的基本原理。了解计算机的运作方式和基本组成部分,包括中央处理器、内存、输入输出设备等,可以帮助开发人员理解嵌入式系统的底层工作原理。 其次,学习编程语言和嵌入式软件开发工具是必不可少的。常用的编程语言包括C和C++,它们在嵌入式开发中广泛应用于编写设备驱动程序、控制算法和应用程序。此外,掌握嵌入式软件开发工具如编译器、调试器和仿真器等,可以帮助开发人员进行程序调试和性能优化。 另外,了解电子电路和电子设计是嵌入式开发的关键。了解电子元器件如传感器、执行器和通信接口等的工作原理,以及设计和布线电路的技术,可以帮助开发人员进行硬件和软件的集成工作。 最后,深入学习嵌入式系统的特定领域知识也是必要的。不同领域的嵌入式系统有不同的要求和应用场景,比如汽车电子、医疗设备、智能家居等。对于特定领域的了解,可以帮助开发人员理解和满足客户的需求。 总之,嵌入式开发需要学习计算机体系结构、操作系统、编程语言、嵌入式软件开发工具、电子电路和特定领域知识等多个方面的知识。只有全面掌握这些知识,才能够进行高效和可靠的嵌入式开发工作。 ### 回答3: 嵌入式开发是一种专门针对嵌入式系统进行软件与硬件开发的技术领域。想要从事嵌入式开发工作,需要学习以下几个方面的知识: 1.硬件基础知识:嵌入式开发涉及到与硬件紧密配合的软件开发,因此需要了解基本的电路和电子设备原理,了解数字和模拟电路以及各种传感器、执行器的工作原理。 2.嵌入式系统架构:了解嵌入式系统的结构和组成部分,熟悉各种微控制器和单片机的特性和功能,掌握嵌入式开发所需的处理器架构、总线结构、存储器管理等方面的知识。 3.编程语言:熟练掌握至少一种常用嵌入式开发编程语言,如C、C++或汇编语言等,了解这些语言在嵌入式开发中的应用场景和编程技巧。 4.嵌入式操作系统:了解常见嵌入式操作系统,如嵌入式Linux、RTOS等,掌握其原理和使用方法,能够进行系统配置、任务调度和驱动开发等操作系统相关的工作。 5.通信协议:掌握嵌入式系统与外部设备之间的通信协议,如UART、SPI、I2C、CAN等,能够进行通信接口的配置和驱动开发。 6.调试与测试:了解常用嵌入式调试和测试工具,掌握使用示波器、逻辑分析仪等硬件设备进行系统调试和性能优化。 7.项目实践:通过实际项目的开发实践,能够综合运用上述知识,独立完成嵌入式系统的设计、开发和调试,并具备解决实际问题的能力。 总之,嵌入式开发需要通过学习硬件基础、系统架构、编程语言、操作系统、通信协议等各方面的知识,并通过项目实践不断提升自己的技能和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值