存储器

近年来随着物联网、车用电子及智慧家居等需求兴起,电源管理与微控制器(MCU)等晶片用量逐步攀升,已经排挤其他部分8吋芯片产能的投片量,根据TrendForce光电研究(WitsView)最新观察指出,晶圆代工厂相继提高8吋厂IC代工费用。

2017年12英寸硅晶圆供不应求且价格逐季调涨,随着第三季旺季需求上升,加上8吋晶圆代工短期难再大幅扩产,整体产能仍然吃紧。2018年8吋硅晶圆价格将再次上涨。

涨价浪潮对中国厂商的伤害

由于上游产能紧张及原材料价格上涨,被动元器件的涨价更是超过预期。进入2018年,电容,电阻等被动元器件价格一路走高。据相关渠道获悉,国巨,风华高科均对电阻多次提价。其中,国巨对中大尺寸后膜芯片电阻级排阻提价30%以上,风华高科对片式电阻提价10%-20%左右。在采访中,多位业内人士对记者表示,电容、电阻等被动元器件涨价将持续,涨价趋势可能将持续到年底。

另一方面,DRAM和NANDFlash的价格从2017年就开始不断上涨,随即引起内存条和固态硬盘等产品的价格大幅上涨,一年内内存条的价格增幅一度达到300%。光是两条内存装机成本就要比一年前至少增加800-1000元,SSD硬盘的价格也翻倍。

外界原本预期DRAM上游厂商会在2018年一季度下调价格,但三星、海力士已拒绝了降价的可能,三星2018年的DRAM颗粒合约价将上涨3-5%,海力士也跟进表态称将涨价5%,理由是DRAM颗粒依然供不应求。

存储器/处理器/阻容暴涨背后,谁将引领国产MCU未来?

据了解,发改委已就存储芯片涨价的问题约谈三星,或将调查可能存在的公司价格操纵行为。发改委价监局官员徐新宇称,过去18个月芯片价格大幅上涨,发改委对此保持警惕,“我们已经注意到价格飙升状况,将更加关注该行业未来可能因‘价格操纵’引起的问题。”徐新宇表示,可能有多家公司协同行动,尽量推高芯片价格,谋求获利最大化。

谁将引领国产MCU未来?

在业界关注被动元器件和存储芯片价格是否会出现松动的时候,MCU等芯片涨价潮又来袭。2017年第四季度以来,全球不少MCU厂商产品交期都从4个月延长至6个月,日本MCU厂商更是拉长至9个月。从2018年上季度半导体情报数据来看,去年至今全球电子产品制造业都异常兴旺,连日本都出现多年不见的正增长,这带动芯片等电子元器件的销量。在硅晶圆产能满载、汽车电子及物联网需求的持续爆发下,MCU在2018年供应短缺局面或难以有效缓解。

存储器/处理器/阻容暴涨背后,谁将引领国产MCU未来?

近期,欧洲半导体巨头NXP公司对其代理商又发出了涨价通知。通知称,将从2018年第一季度开始对NXP旗下MCU(微控制器)、数字化网络、汽车微控制器等主要产品上调价格。涨价幅度在5%-10%不等,这标志着半导体巨头打响了2018年MUC芯片涨价的第一枪。因此导致市场上MCU供应出现短缺,芯片报价因而持续大幅走扬。市场分析人士指出,另一家欧洲半导体巨擘─ST(意法半导体),后续有可能跟进NXP调涨MCU报价脚步,增强全球MCU市场涨价热潮更大动能。
存储器/处理器/阻容暴涨背后,谁将引领国产MCU未来?

中国MCU市场增长率高于全球,并稳步增长。2017年中国MCU市场规模为400亿元左右,较去年增长7%,占全球市场的30%;中国MCU自2010年以来保持稳定增长,预计2020年,年均增长可达6.5%。从营业收入看,我国MCU应用的最大市场是消费电子,其次是计算机外设和汽车电子市场。汽车电子MCU增长迅速,预计2015-2020年年均增速达13%。从MCU位数看,8位和32位将以互补性的组合占据MCU领域。

芯片价格一路上涨,需求旺盛是重要原因。此外全球6成的家电产能都在中国。国内消费电子市场无论在规模还是在质量上都在不断崛起,以美的、格力为代表的家电企业,以及以华为、OPPO、VIVO为代表的手机厂商已进入全球市场前列。广阔的市场空间和本土消费电子企业的崛起为本土消费电子MCU企业提供了优越的成长环境,加上国家政策支持IC国产化的背景下,国内MCU企业将迎来高速成长。

作为国内本土MCU厂商代表中颖,HK(航顺芯片),GD(北京兆易),NUC(新唐)是否能在这一波涨价潮中脱颖而出,抢占更多的市场做好准备?另一方面,国内厂商能否最大化接受本土MCU的进入,达成本土MCU战略合作共识,减小国外MCU对国内厂商的涨价冲击呢?这也是国内厂商需要思考的问题。MCU市场的增长已经势不可挡,预估中国MCU市场将于2020年持续成长达414亿元人民币。

存储器/处理器/阻容暴涨背后,谁将引领国产MCU未来?

中国作为最大的芯片市场却没有话语权,国产化率低受制于人,MCU市场更是尤为明显。中颖号称国内8位MCU之王,站在有利的环境及正确的产业趋势下,在家电行业内十几年默默耕耘,九死一生。但中颖作为中国小家电MCU的龙头厂商,近年来营运表现优于其他同业。

然而在32位MCU市场近一年来,又出一匹黑马HK(航顺),短短一年时间的市场推广,大受客户选用,根据客户使用反馈,不仅产品性能稳定,功耗更低,宽电压设计,兼容性更是完美替代进口品牌。这也是继GD32位MCU之后的又一个国内32位MCU之新星。而GD在市场多年的沉淀和耕耘,在国内一直处于领先地位,也让很多国内厂商对本土MCU品牌接受度提高。但与进口品牌相比较,本土MCU仍是弱势群体。

存储器/处理器/阻容暴涨背后,谁将引领国产MCU未来?

不掌握芯片及其技术,本土企业终究被跨国巨头扼住咽喉。从近5年中国集成电路产业进出口数据来看,国内集成电路每年进口金额在1250-1650亿美元,有着极大的国产替代进口的空间,芯片国产化也将带来诸多的投资机会。中国本土MCU小微跃跃欲试,32位MCU厂商众多,但我们相信中颖,HK(航顺),GD(兆易)必将引领国产替代进口MCU的未来。

来源:慧聪电子网

围观 493

存储器的工作原理:

1、存储器构造

存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字

单片机存储器结构

单片机存储器结构

单片机里面都有这样的存储器,这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,每个小抽屉称之为一个“单元”。

有了这么一个构造,我们就能开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了。问题出来了,一个存储器有好多单元,线是并联的,在放入电荷的时候会将电荷放入所有的单元中,而释放电荷的时候会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这不是我们所希望的,因此要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就能自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不一样单元的控制线,就能向各单元写入不一样的数据了,同样,如果要某个单元中取数据,也只要打开对应的控制开关就行了。

2、存储器译码

那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种办法称这为译码,简单介绍一下:一根线能代表2种状态,2根线能代表4种状态,3根线能代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就能代表了。

3、存储器的选片及总线的概念

单片机存储器结构

至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果将某个别的单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?所以我们要让它们分离。办法当然很简单,当外面的线接到单片机的管脚进来后,不直接接到各单元去,中间再加一组开关就行了。平时我们让开关关闭着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。注意图4,读和写信号同时还接入到另一个存储器,但是由于片选端不一样,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。

从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以我们称之为数据总线,总线英文名为BUS,总即公交车道,谁都能走。而十六根地址线也是连在一起的,称之为地址总线。

半导体存储器的分类

按功能能分为只读和随机存取存储器两大类。

只读存储器的英文缩写为ROM(READ ONLY MEMORY),从字面上理解就是只能从里面读,不能写进去,它类似于我们的书本,发到我们手回之后,我们只能读里面的内容,不能随意更改书本上的内容。

随机存储器的英文缩写为RAM(Random Access Memory),即随时能改写,也能读出里面的数据,它类似于我们的黑板,我能随时写东西上去,也能用黑板擦擦掉重写。

解释一下几个常见的概念:

PROM,称之为可编程存储器。这就象我们的练习本,买来的时候是空白的,能写东西上去,可一旦写上去,就擦不掉了,所以它只能用写一次,要是写错了,就报销了。(现在已经被淘汰)

EPROM,称之为紫外线擦除的可编程只读存储器。它里面的内容写上去之后,如果觉得不满意,能用一种特殊的办法去掉后重写,这就是用紫外线照射,紫外线就象“消字灵”,能把字去掉,然后再重写。当然消的次数多了,也就不灵光了,所以这种芯片能擦除的次数也是有限的——几百次吧。(现在已经被淘汰)

EEPROM,也叫 E2PROM称之为电可擦可编程只读存储器,它和EEPROM类似,写上去的东西也能擦掉重写,但它要方便一些,不需要光照了,只要用电就能擦除或者重新改写数据,所以就方便许多,而且寿命也很长(几万到几十万次不等)。

FLASH,称之为闪速存储器,属于EEPROM的改进产品,它的最大特点是必须按块(Block)擦除(每个区块的大小不定,不同厂家的产品有不同的规格), 而EEPROM则可以一次只擦除一个字节(Byte)。FLASH现在常用于大容量存储,比如u盘。

来源:Love_Code

围观 446

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。
这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。

Cortex-M3支持4GB的存储空间,它的存储系统采用统一编址的方式; 程序存储器、数据存储器、寄存器被组织在4GB的线性地址空间内,以小端格式(little-endian)存放。由于Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。见图1:

STM32的存储器映射详解
图1 Cortex-M3的存储器映射

Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商(见图1)。这就导致了,使用该内核的芯片厂家必须按照这个进行各自芯片的存储器结构设计,如stm32。

STM32的存储器映射详解
图2 Cortex-M3与中密度stm32的存储器映射对比

图2中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似(这是因为stm32本来就是按照cortex_m3内核来设计硬件的),不同的是,STM32加入了很多实际的东西,如:Flash、SRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32。STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB(如:0x20000000~0x40000000)。对STM32存储器知识的掌握,实际上就是对Flash和SRAM这两个区域知识的掌握。

不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。SRAM的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM中存储的数据就会丢失。

STM32的Flash,严格说,应该是Flash模块。三个分区的称呼与datasheet保持一致。该Flash模块包括:

Flash主存储区(Main memory)Flash:存放代码的地方,如图2中的FLASH区域:128KB(0x08000000~0x0801ffff)(不同容量的Flash终止地址不同);

Flash信息区(Information block),该区域又可以分为Option Bytes和System Memory区域;System Memory:STM32在出厂时,已经固化了一段程序在System memory(medium-density devices的地址为:0x1FFF_F000,大小为2KB)存储器中。这段程序就是一个固定好的,并且没法修改的Boot Loader(见编程手册PM0042这种描述)。Option Bytes:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现);该区域除了互联型所用型号地址都一样:(0x1fff_f000~0x1fff_f80f)图中终止地址有误:应为0x1fff_f80f,正好16个字节。

Flash存储接口寄存器区(Flash memory interface),用于片上外设。是图2中从0x40000000开始的PERIPHERALS区域。也称作外设存储器映射,对该区域操作,就是对相应的外设进行操作。

根据STM32的内存映射图,在代码区,0x00000000地址为启动区,上电以后,CPU从这个地址开始执行代码。0x08000000是用户FLASH的起始地址,0x20000000是SRAM的起始地址。

STM32的存储器映射详解

来源: rh0932

围观 524

将电源管理、非易失性自举存储器、以太网物理层和高速DDR存储器集成在一个小型单面电路板上,让设计更紧凑、更高效

设计用于运行Linux® 操作系统的工业级微处理器(MPU)系统是一件非常困难和复杂的事情。即便是该领域资深的开发人员也要花费大量时间来设计电路板布局以确保DDR存储器和以太网物理层(PHY)高速接口的信号完整性,同时还要满足电磁兼容性(EMC)标准的要求。为了让此类设计变得更加简单,Microchip Technology Inc. (美国微芯科技公司)开发了一种新的基于SAMA5D2 MPU的系统模块(SOM)。 这款ATSAMA5D27-SOM1里面包含了最近发布的ATSAMA5D27C-D1G-CU封装级系统(SiP),通过将电源管理、非易失性自举存储器、以太网物理层和高速DDR2存储器集成在一个小型单面电路板(PCB)上,从而大幅简化了系统的设计。欲了解更多信息,敬请访问 www.microchip.com/SAMA5D2SOM

SAMA5D2系列产品可以为各层次专业水平的设计者提供极为灵活的设计选择。例如,其中的SOM集成了多个外部器件并解决了围绕EMI、ESD和信号完整性的主要设计问题,从而加快开发时间。客户可以将SOM焊接到自己的电路板上然后进行生产,也可以将其与能够从网上免费获取的电路图、设计和Gerber文件以及完整的材料清单一起用作设计参考。此外,客户也可以根据自身的设计需求从SOM转换成SiP 或MPU。无论客户选择哪种器件,他们都可以享受Microchip按客户所需的持续供货政策,确保满足客户所需。

采用 Arm® Cortex®-A5微处理器的SAMA5D2 SiP可以安装在SOM PCB上或是单独提供,产品集成了1 Gb DDR2存储器,去除了PCB对高速存储器接口的限制,从而进一步简化设计。阻抗匹配在封装过程中即已完成,无需在开发过程中手动执行,因此系统可以在正常速度和低速运行时依旧保持正常工作。SAMA5D2 SIP有三种大小的DDR2存储器供选择(128 Mb、512 Mb和1 Gb),均针对裸机、实时操作系统(RTOS)和Linux实现进行了优化。

Microchip的客户在开发Linux应用程序时可以免费获得最广泛的设备驱动、中间件和用于嵌入式市场的应用层。所有Microchip用于SiP 和 SOM的 Linux开发代码都已经接入到Linux社区当中。这样客户就可以最低的软件开发程度将驱动连接的外部设备接入到SOM 和 SiP当中。

SAMA5D2系列产品具备业内最高的安全等级,并且满足PCI标准,为客户实现安全的设计提供了绝佳的平台。产品集成了Arm TrustZone® 、篡改检测、数据和程序安全储存、硬件加密引擎、安全启动等多种功能,客户可以与 Microchip的安全专家一同对自身的安全需求进行评估并落实适合自身设计的保护措施。SAMA5D2 SOM 还包含了 Microchip的 QSPI NOR闪存、一个电源管理集成电路(PMIC)、一个以太网物理层和带有介质访问控制(MAC)功能的串行EEPROM存储器,以满足扩展设计的需求。

Microchip MPU32业务部副总裁Alfredo Vadillo说道:“SOM可以大幅减少开发时间、软件编码和调试工作,让设计者们将精力放在系统的应用功能上,从而缩短上市时间。有了这款新的SOM,客户可以利用Microchip集最新技术于一身的单个模块来更快地将产品推向市场,而且还可以放心地得到来自我们的全方位支持和长期供货承诺。”

如需了解详细信息,请联系Microchip销售代表或者全球授权分销商,或者访问Microchip网站。欲购买文中提及产品,可访问易于使用的microchipDIRECT在线商店或联系Microchip授权分销伙伴。

开发支持

SOM1-EK1开发板为SOM和SiP的开发设计提供了便捷的评估平台。免费的板级支持包(BSP)中包含了用于SOM上的MPU外设和集成电路的Linux核心和驱动程序。 此外还提供用于SOM的电路图和Gerber文件。

供货

• ATSAMA5D2 SiP有四种型号,以ATSAMA5D225C-D1M-CU开头的型号为196引脚BGA封装,10,000片起批量供应。
• ATSAMA5D27-SOM1目前可100件起批量供应。
• 还提供ATSAMA5D27-SOM1-EK1开发板。

围观 454

前言

STM32 提供了灵活多样的外扩存储器访问实现。本文中,介绍如何利用 QSPI (QuadSPI) 外扩串行
NOR Flash 存储器。首先对 QSPI 接口功能特性进行介绍,然后分别介绍硬件设计和软件开发。并基于 STM32CubeMX,提供访问 MICRON N25Q128A13EF840F 的实现参考。

一 实现环境

开发板:STM32F469G-DISCO
开发库:STM32CubeF4 v1.16.0
STM32CubeMX: v4.22.0
集成开发环境:IAR v7.70.1.11486

实现过程在 STM32F469I-DISCO 板上展开,利用板上已有的串行 NOR Flash 存储器(MICRON
N25Q128A13EF840F)。呈现整个开发涉及环节。在本文中,首先根据 QSPI 接口,介绍 QSPI 与外扩串行存储器硬件连接。

另外,Cube 软件包中包含 QSPI 实现例,在本文对库中实现的 QSPI 例不做讨论,读者也可参考这些 QSPI 例进行设计。本文围绕由 STM32CubeMX 生成的工程,介绍如何实现对外扩串行 NOR Flash 存储器的访问。

二 QSPI 介绍

在呈现 QSPI 访问外扩 Flash 的实现例前, 需要对 QSPI 有一定的了解,在此对 QSPI 进行简短的介绍。更多内容请参考AN4760。

QSPI(Quad-SPI)支持四线串行访问形式。同时,QSPI 支持传统 SPI 和 Dual-SPI 模式,Dual-SPI 模式支持两线串行访问。与 FMC/FSMC 比较,QSPI 支持更低成本、更小封装外部串行 Flash 存储器,更少的 IO 引脚占用,有效减少 PCB 面积,降低 PCB 设计复杂度。

QSPI 在不同系列 STM32 产品线的支持情况(仅部分罗列,未涵盖所有支持型号)。

利用 QuadSPI 外扩串行 NOR Flash 的实现

QSPI 接口提供了灵活可配置的 5 个阶段,如下图所示(仅用于理解阶段构成,时序图根据配置不同存在差异)。分别是命令阶段、地址阶段、复用字节阶段、Dummy 阶段和数据阶段。可以根据外扩 Flash 中命令时序对不同阶段进行配置。后续会以实例进行呈现。更多内容请参考 AN4760。
利用 QuadSPI 外扩串行 NOR Flash 的实现

QSPI 支持三种模式,分别是:

间接模式 - 所有操作通过 QSPI 寄存器实现,类似于传统 SPI,可以使用阻塞模式、中断模式或者 DMA 模式进行读写等访问。本文中提供的实现例为间接模式下的实现。

状态轮询模式 - 接口自动轮询指定寄存器,直到回读寄存器内容与指定条件匹配。可应用于状态检测,从而实现忙等待等效果。本文不对此模式进行实现介绍,应用实现可参考 Cube 软件包中 QSPI 例程。

存储器映射模式 - 外扩 Flash 被视为内部存储器,支持 AHB 主器件直接访问,CPU 能够直接运行位于 QSPI 存储器的执行代码。内部系统架构如下图所示(以 STM32F469/F479 为例)。本文不对此模式进行实现介绍,应用实现可参考 Cube软件包中 QSPI 例程 QSPI_ExecuteInPlace。

利用 QuadSPI 外扩串行 NOR Flash 的实现

三 QSPI 外扩串行 Flash 实现例

3.1 串行 Flash 介绍

以 MICRON N25Q128A13EF840F 为例,更多细节请参考存储器手册。N25Q128A13EF840F 引脚图、时序图和电气参数来源于 N25Q128A13 手册文档。

支持协议: SPI, Dual I/O(对应 Dual-SPI), Quad I/O(对应 Quad-SPI)
支持访问模式: 单线访问、双线访问、四线访问,得益于 QSPI 接口的灵活可配性,三种访问模式全部支持。
供电电压范围: 2.7 ~ 3.6V
最大时钟频率: 108MHz
存储空间: 128Mb (16MB)

器件引脚示意图如下所示。由两根电源引脚和六根 QSPI 信号线构成。

利用 QuadSPI 外扩串行 NOR Flash 的实现

下表为存储器 N25Q128A13xxx 命令(未列出全部命令)。通过下表可知,存储器提供了灵活的访问实现形式,而结合同样灵活可配的 QSPI 接口,能够实现存储器命令全支持。而本文仅为提供设计思路,呈现了部分命令在 QSPI 上的实现。

利用 QuadSPI 外扩串行 NOR Flash 的实现

3.2 硬件设计

涉及到的信号线少,硬件设计简单,只需直接将 QSPI 的六根信号线与存储器连接即可。考虑到可测性,可以增加串行电阻或者测试点。硬件电路图如下所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

QSPI 接口 PCB 设计遵循如下几点,更多硬件设计内容请参考 AN4488。

a. 线阻 50Ω ±10%
b. 最大线长 c. 避免在不同信号层走信号线
d. 时钟线至少离其他信号线 3 倍线宽距离
e. 数据信号线长差 ≤ 10mm
f. 避免时钟线采用蛇形走线,同时尽量减少数据线上过孔。

3.3 软件开发流程

利用 QuadSPI 外扩串行 NOR Flash 的实现

3.4 软件实现例

在环境搭建完成后,就可以利用 STM32CubeMX 根据硬件连接情况,进行 QSPI 配置,获取 IAR 工程。具体软件实现流程如下。

利用 QuadSPI 外扩串行 NOR Flash 的实现

a. 利用 STM32CubeMX 生成 IAR 工程
打开 STM32CubeMX  点击”New project”  在”Part Number Search’中输入 STM32F469NI  点击”MCUs Liast”中出现的 STM32F469NIHx  点击“Start Project”  此时,基于 STM32F469NIHx 的 STM32CubeMX 工程被打开。

如下,根据 STM32F469I-DISCO 板硬件连接情况(QSPI NCS, CLK, Q0, Q1, Q2, Q3 对应 PB6, PF10, PF8, PF9,PF7, PF6;外部高速晶振为 8MHz 无源晶振;调试接口采用 SWD 接口,其中 SWCLK, SWDIO 对应 PA14, PA13):选择” QuadSPI”为”Bank1 with Quad SPI Lines”(注:也可在开发过程中,先用 STM32CubeMX 查看 QSPI 接口对应的 IO 引脚,进行硬件开发) 。

注: 在如上选择后,右侧引脚图中 QSPI 对应的引脚会呈现绿色显示。需要根据电路图中所连接的 QSPI 引脚,进行复用引脚确认。例如,在默认情况下,QSPI IO0 对应到 PC9 引脚,而 STM32F469I-DISCO 板上的 QSPI IO0 与PF8 连接,并非 PC9。所以,需要在右侧引脚图中,按住 Ctrl 键,左键在 PC9 引脚按下,拖动至 PF8 处,松开左键和 Ctrl 键,实现 IO0 引脚的关联。

选择“High Speed Clock(HSE)”为“Crystal/Ceramic Resonator”。

选择”Debug”为”Serial Wire”

利用 QuadSPI 外扩串行 NOR Flash 的实现

时钟配置如下图所示。设置输入时钟频率为 8MHz  选择”HSE”做为 PLL 倍频时钟源  选择”PLLCLK”做为主频时钟源  设置 “HCLK”为 180MHz (FAHB 为 180MHz) 点击 Enter 键,自动生成对应主频的时钟参数(仅提供时钟配置参考,并不限制一定要设置 180MHz 主频)。

利用 QuadSPI 外扩串行 NOR Flash 的实现

QSPI 配置如下图。参数的配置需要与存储器参数匹配。

• FIFO Threshold(FIFO 阈值) 配置为 4,并不严格要求。
• Smaple shift 选择“Sample shifting half cycle”。延后半个时钟,获取数据线上数据。可以使用在由于线路设计,数据信号存在较大延迟的场景。

利用 QuadSPI 外扩串行 NOR Flash 的实现

使能 QSPI 中断。

利用 QuadSPI 外扩串行 NOR Flash 的实现

点击菜单栏”Project”  “Settings”  设置”Project Name” , “Project Location” 和 “Toolchain / IDE” 。其中“Toolchain/ IDE”设置为 EWARM 以便生成对应 IDE 的工程。其他选项保持默认。

点击菜单栏”Project”  “Generate Code”  等待 IAR 工程生成,出现”Code Generation”界面  点击”Open Project” 打开工程。

b. 完善工程。
由上述步骤获得的 IAR 工程中,包含了时钟配置及 QSPI 接口的初始化。对于外扩 Flash 的操作,还需要 添加外扩 Flash 支持的命令进行操作。N25Q128A13EF840F 支持的部分命令可参见本文 3.1 小结。

在这里出于简化考虑,仅提供了阻塞式读取 ID,擦除 Flash,块写和快读操作的实现。更多实现模式,可以参考Cube 软件包中提供的 QSPI 例程。

在 N25Q128A13EF840F 手册中提供了读 ID 命令时序,如下图所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

由时序图可知,读 ID 时序构成: 命令阶段 + 数据阶段。命令阶段和数据阶段线宽都为 1,读 ID 命令码为 0x9E 或者0x9F,ID 数据长度为 17 字节。

在 N25Q128A13EF840F 手册中提供了写使能命令时序,如下图所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

由时序图可知,块擦除时序仅有命令阶段。命令阶段线宽为 1,写使能命令码为 0x06。(注:这里仅呈现了单线命令模式的实现。除此之外,STM32 QSPI 接口和外扩存储器支持双线、四线模式)。

在 N25Q128A13EF840F 手册中提供了扇区擦除命令时序,如下图所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

由时序图可知,扇区擦除时序构成:命令阶段+地址阶段。命令阶段和地址阶段线宽为 1,扇区擦除命令码为 0xD8。

其中地址为 24-bit,任一位于需要进行擦除操作的扇区范围内地址都有效。在此简单选择扇区 0 进行擦除,选择地址为 0。(注:这里仅呈现了单线命令模式的实现。除此之外,STM32 QSPI 接口和外扩存储器支持双线、四线模式)。

在 N25Q128A13EF840F 手册中提供了四线快速写命令时序,如下图所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

由时序图可知,四线快速写命令时序构成:命令阶段+地址阶段+数据阶段。命令阶段和地址阶段线宽为 1,数据阶段线宽为 4,四线快速写命令码为 0x32。其中地址为 24-bit,对应写入起始地址。(注:这里仅呈现了单线命令模式的实现。除此之外,STM32 QSPI 接口和外扩存储器支持双线、四线模式)。

在 N25Q128A13EF840F 手册中提供了四线快速读命令时序,如下图所示。

利用 QuadSPI 外扩串行 NOR Flash 的实现

由时序图可知,四线快速读命令时序构成:命令阶段+地址阶段+数据阶段。命令阶段和地址阶段线宽为 1,数据阶段线宽为 4,四线快速读命令码为 0x6B。其中地址为 24-bit,对应写入起始地址。四线快速读命令默认 Dummy cycles 为 8。(注:这里仅呈现了单线命令模式的实现。除此之外,STM32 QSPI 接口和外扩存储器支持双线、四线模式)。

在 main.c \ main 函数中,增加代码如下。

 … //系统、时钟、IO 和 QSPI 初始化
 /* USER CODE BEGIN 2 */
 QSPI_CommandTypeDef sCommand;
 static uint8_t Buf_ID[17] = {0};
 static uint8_t TxBuf[0x10] = "Ext Flash", RxBuf[0x10] = {0};

 sCommand.DdrMode = QSPI_DDR_MODE_DISABLE; //DDR 模式失能
 sCommand.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY; //DDR 模式下,数据延迟输出
 sCommand.SIOOMode = QSPI_SIOO_INST_EVERY_CMD; //每次发送都包含命令阶段

 /***** 读 ID 操作 *****/
 sCommand.Instruction = 0x9F; //READ ID 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_NONE; //地址线宽。无地址阶段
 sCommand.DataMode = QSPI_DATA_1_LINE; //数据线宽
 sCommand.NbData = 17; //读取数据长度。ID 长度为 17 字节
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 0; //无 Dummy 阶段
 //配置命令(在有数据阶段时,命令在后续发送/接收 API 调用时发送)
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }
 //执行 QSPI 接收
 if (HAL_QSPI_Receive(&hqspi, Buf_ID,5000) != HAL_OK)
 {
 Error_Handler();
 }
 HAL_Delay(1); //延时 1ms. 单位为 SysTick 定时中断周期

 /***** 写使能操作(需要在块擦除之前,使外扩存储器处于写使能状态) *****/
 sCommand.Instruction = 0x06; //写使能 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_NONE; //地址线宽。无地址阶段
 sCommand.DataMode = QSPI_DATA_NONE; //数据线宽。无数据阶段
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 0; //无 Dummy 阶段
 //配置发送命令
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }

 /***** 块擦除操作 *****/
 sCommand.Instruction = 0xD8; //扇区擦除 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_1_LINE; //地址线宽。无地址阶段
 sCommand.AddressSize = QSPI_ADDRESS_24_BITS; //地址长度
 sCommand.Address = 0; //位于所需擦除扇区内的任一地址。
 sCommand.DataMode = QSPI_DATA_NONE; //数据线宽。无数据阶段
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 0; //无 Dummy 阶段
 //配置发送命令
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }
 HAL_Delay(3000); //延时 3s. 单位为 SysTick 定时中断周期

 /***** 写使能操作(需要在块擦除之前,使外扩存储器处于写使能状态) *****/
 sCommand.Instruction = 0x06; //写使能 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_NONE; //地址线宽。无地址阶段
 sCommand.DataMode = QSPI_DATA_NONE; //数据线宽。无数据阶段
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 0; //无 Dummy 阶段
 //配置发送命令
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }

 /***** 四线快速写操作 *****/
 sCommand.Instruction = 0x32; //四线快速写 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_1_LINE; //地址线宽
 sCommand.AddressSize = QSPI_ADDRESS_24_BITS; //地址长度
 sCommand.Address = 0; //写入起始地址
 sCommand.DataMode = QSPI_DATA_4_LINES; //数据线宽
 sCommand.NbData = 10; //写入数据长度
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 0; //无 Dummy 阶段
 //配置命令(在有数据阶段时,命令在后续发送/接收 API 调用时发送)
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }
 //执行 QSPI 接收
 if (HAL_QSPI_Transmit(&hqspi, TxBuf ,5000) != HAL_OK)
 {
 Error_Handler();
 }
 HAL_Delay(5); //延时 5ms. 单位为 SysTick 定时中断周期

 /***** 四线快速读操作 *****/
 sCommand.Instruction = 0x6B; //四线快速读 命令码
 sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //命令线宽
 sCommand.AddressMode = QSPI_ADDRESS_1_LINE; //地址线宽
 sCommand.AddressSize = QSPI_ADDRESS_24_BITS; //地址长度
 sCommand.Address = 0; //起始地址
 sCommand.DataMode = QSPI_DATA_4_LINES; //数据线宽
 sCommand.NbData = 10; //读取数据长度
 sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无复用字节阶段
 sCommand.DummyCycles = 8; //Dummy 阶段。N25Q128A13EF840F
Dummy cycles 默认为 15
 //配置命令(在有数据阶段时,命令在后续发送/接收 API 调用时发送)
 if (HAL_QSPI_Command(&hqspi, &sCommand, 5000) != HAL_OK)
 {
 Error_Handler();
 }
 //执行 QSPI 接收
 if (HAL_QSPI_Receive(&hqspi, RxBuf,5000) != HAL_OK)
 {
 Error_Handler();
 }
 /* USER CODE END 2 */

四 小结

STM32 的 QuadSPI 接口灵活可配,对于命令阶段、地址阶段、复用字节阶段、Dummy 阶段和数据阶段都可以进行配置。基于这种灵活性,能够实现市面上 SPI、Dual IO、Quad IO 的串行 Flash 支持。但出于简化考虑,QSPI 支持的中断访问及DMA 访问等更多功能没有在本文进行介绍,更多实现可以参考 ST 提供的 Cube 软件包中的 QSPI 例程。另外,不同厂家的串行 Flash 命令及操作实现略有差异,具体以采用的 Flash 文档描述为准。

相关文档
AN4760 Quad-SPI (QSPI) interface on STM32 microcontrollers
AN4488 Getting started with STM32F4xxxx MCU hardware development
RM0386 STM32F469xx and STM32F479xx advanced ARM®-based 32-bit MCUs

相关工具&链接
STM32CubeMX http://www.st.com/content/st_com/en/products/development-tools/software-...
STM32CubeF4 http://www.st.com/content/st_com/en/products/embedded-software/mcus-embe...

来源: ST

围观 2544

存储器价格持续上涨的问题比许多人想像的更复杂...

根据市场分析师表示,动态随机存取存储器(DRAM)和NAND的价格正居高不下,而且预计还会更进一步攀升。许多人认为目前的存储器市场情况只是暂时的供需不均衡。或者,他们预期当3D NAND快闪存储器(flash)的制造趋于成熟后,就能解决目前的市场情况。然而,以DRAM的市况而言,没人能知道DRAM供应何时会改善。

从需求面来观察,虽然一些细分市场正在成长,但并未出现杀手级的应用或是特别繁荣的细分市场。因此,问题应该就出在供应面。

据美光(Micron)表示,2017年DRAM供给位元预计成长15-20%,可说是近20年来最低的位元成长率(bit growth)。较低的位元成长率,主要源于DRAM微缩限制。市场上有好一段时间都没有任何有关DRAM微缩的消息了。当供给位元成长低于45%时,这就是一个卖方的市场了。因此,DRAM的寡头垄断、低位元成长率,以及制造扩张迟缓,导致长期的供应吃紧。最终,可能只是DRAM的价格持续增加,而供应面却不会有任何改善。

NAND市场竞争激烈。基于3D NAND将大幅提高生产力的市场预期,所有的NAND厂商都投入了数十亿美元于3D NAND制造。因此,供应过剩预计将持续一段时间。然而,这种期待只是一种假象。3D NAND的制造比先前所想像的要困难得多。目前,几家NAND供应商都得使劲地推出3D NAND。


许多分析师预计,大约在2018年底,当64层和96层3D NAND快闪存储器的制造趋于成熟时,市场供应吃紧的情况将会缓解。因此,明年将会有足够的NAND供应吗?如图所示,平面NAND的横向微缩(即摩尔定律)以2的N次幂方式呈指数级增加位元单元。相对地,3D NAND的单元层数(即垂直微缩)则线性增加位元单元。目前,根据摩尔定律,平面NAND符合位元单元的指数级需求成长。然而,平面NAND面对微缩限制,3D NAND仅以线性位元成长率,将难以达到市场的需求。

64层3D NAND最终将达到与平面NAND平价。对于双倍和四倍的存储器容量,3D NAND应该分别有128层和256层。考虑到长期累积的产量损失、制造困难和低晶圆产出效率,超过64层的存储器容量扩展对于3D NAND来说是一大挑战。如果3D NAND在第1层达到与平面NAND平价,那么垂直扩展记体容量就会更容易多了。

如同所讨论的,存储器价格较高不再只是因为供需失衡。从现在开始,我们很难看到存储器价格降下来,因为存储器价格如此之高,主要源于存储器元件的微缩限制。很讽刺地,存储器供应商却以这种存储器微缩的限制来赚大钱。从2017年上半年的前五大半导体供应商排名来看,其中有三家就是存储器供应商。例如,海力士(SK Hynix)和Micro极其仰赖于DRAM,因为这两家公司的营收分别有75%和65%都来自DRAM市场。


目前,买家掌控了存储器价格,并将存储器产品视为商品。如今正是存储器供应商的黄金时代,高昂的存储器价格将成为买家的负担。没错,由于存储器微缩的限制,存储器将成为卖方市场。我们如何找到可解决高存储器价格的解决方案呢?在2016和2017年,如ITRS和IRDS等技术开发蓝图强烈建议为连续的电晶体微缩采用全包覆式(GAA)电晶体与单片3D (M3D) IC,从而降低制造成本。因此,客户应该主动寻求利用‘GAA + M3D’的超低成本存储器元件。否则,客户将会为存储器元件付出更多的费用,而如此高的存储器价格也将会为大部份电子装置和系统带来问题。

来源: EEFOCUS

围观 358

据Semi Engineering网站报导,GlobalFoundries、三星(Samsung)、台积电(TSMC)和联电(UMC)计划在2017年稍晚开始提供ST-MRAM或STT-MRAM,取代NOR Flash,此举代表市场的巨大转变,因为到目前为止,只有Everspin已经为各种应用提供MRAM,例如电池供电的SRAM替代品、读写缓存(Write Cache)等。

STT-MRAM的下一个大好机会就是嵌入式存储器IP市场,NOR Flash是传统嵌入式存储器,随着制程从40nm进展到28nm,NOR Flash已经出现各种各样的问题,因此,这些代工厂的支持可以将STT-MRAM转变为先进节点的替代技术。

GlobalFoundries嵌入式存储器副总裁Dave Eggleston表示,嵌入式快闪存储器将继续作为资料保存技术主流,特别是汽车和安全应用领域,嵌入式快闪存储器将会有很长的使用寿命,但没有扩展空间,当达到28nm制程以上时,嵌入式快闪存储器实际上会成为昂贵的选择。

因此,业界需要一个新的解决方案,STT-MRAM恰好为2xnm及以上的嵌入式存储器应用做好准备。先作为补充技术,进一步替代嵌入式DRAM和SRAM,也是MRAM的巨大机会,将为处理器添加持久性功能。

无论如何,MRAM可能会因为几个因素,成为一个大市场或利基解决方案,包括多个供应商和一系列的应用推动STT-MRAM发展,此外,主要代工厂投入STT-MRAM也可能会推动规模经济化,降低技术成本。

但仍有一些挑战,不是所有晶圆代工客户都需要22nm以上的芯片,此外,STT-MRAM是一种相对较新的技术,客户可能需要花点时间整合,各种制造上的挑战也必须解决。不过,4大代工厂都决定为嵌入式客户投入开发作业,三星有自己的IP,其他代工厂正在与各种合作伙伴合作。

除了Everspin和代工厂之外,英特尔(Intel)、美光(Micron)和东芝与SK海力士都投入MRAM研发,同时,几家新创公司如Avalanche、Crocus、Spin Transfer Technologies都正在开发。对大多数企业而言,生产MRAM说起来比做容易,因为MRAM涉及开发新材料、集成方案和设备,与传统存储器相比,生产流程也不同。

在晶圆厂的进展中,STT-MRAM目前有2个用例,第一个是替换嵌入式快闪存储器,另一个是嵌入式SRAM,业界一致认为,STT-MRAM是一个很好的嵌入式解决方案。多年来,业界一直在探索STT-MRAM的发展,目标是取代DRAM,现在还在努力探索中。

而STT-MRAM仍然需要证明它可以在汽车的高温下满足可靠性和资料储存规格。在微控制器(MCU)市场的嵌入式存储器需求也在增温,如NOR Flash用于代码储存和其他功能。MCU制程从40nm进展到28nm,NOR Flash也是,然而,在2xnm节点,NOR Flash开始遭受写入速度慢和耐久性问题,且因为需要更多光罩步骤使成本更高。

超过28nm以后,NOR Flash就难以扩展,所以人们正在寻找替代品,但是用新的存储器类型替换NOR Flash不是一项简单的任务,新型存储器类型的成长关键要求是性能、可靠性、密度和成本。

现在,STT-MRAM似乎已经在2xnm节点的嵌入式市场准备就绪,其他存储器类型仍然停留在研发阶段。报导指出,随着产业正在开发STT-MRAM,同时也专注准备MRAM研发,包括SOT-MRAM磁存储器,将作为基于SRAM技术的缓存替代品。

来源: Digitimes

围观 364

页面

订阅 RSS - 存储器