SRAM

为满足客户对更大更快的 SRAM 的普遍需求,Microchip Technology(微芯科技公司)扩展了旗下串行SRAM产品线,容量最高可达4 Mb,并将串行外设接口/串行四通道输入/输出接口(SPI/SQI™)的速度提高到143 MHz。新产品线包括提供2 Mb和4 Mb两种不同容量的器件,旨在为传统的并行SRAM产品提供成本更低的替代方案,并在SRAM存储器中包含可选的电池备份切换电路,以便在断电时保留数据。

1.jpg

并行RAM需要大型封装和至少26-35个单片机(MCU)I/O接口,而Microchip串行SRAM器件采用成本较低的8引脚封装,并采用高速SPI/SQI通信总线,只需要4-6 个MCU I/O 引脚即可轻松集成。这减少了对更昂贵、高引脚数MCU的需求,有助于最大限度地减少整个电路板的尺寸。

2 Mb和4 Mb串行SRAM 器件解决了串行SRAM最常见的缺点——并行比串行存储器快,通过可选的四通道SPI(每个时钟周期 4 位),将总线速度提高到143 MHz,大大缩小了串行和并行解决方案之间的速度差距。 

Microchip存储器产品业务部总监Jeff Leasure表示:“对于需要比MCU板载RAM更多的RAM但又希望降低成本和减小电路板总尺寸的工程师来说,串行SRAM是一种很受欢迎的解决方案。Microchip的2 Mb和4 Mb串行SRAM器件旨在以简便且具有成本效益的替代方案取代昂贵的并行 SRAM。” 

这些小尺寸、低功耗、高性能串行SRAM器件具有无限的耐用性和零写入时间,是涉及连续数据传输、缓冲、数据记录、计量以及其他数学和数据密集型功能的应用的绝佳选择。这些器件的容量从64 Kb到4 Mb不等,支持 SPI、SDI 和 SQI 总线模式。请访问Microchip存储器产品页面,了解公司的所有存储器产品。 

供货与定价

2 Mb和4 Mb串行SRAM器件单价为1.60 美元,10,000片起购。如需了解更多信息或购买,请联系Microchip销售代表、全球授权分销商或访问Microchip采购和客户服务网站 www.microchipdirect.com

来源:Microchip微芯

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 10

01、问题的描述

某客户使用 STM32G071 芯片从 standby 模式下唤醒,想要 SRAM 的数据在退出 standby模式后得以保持。根据手册的描述,配置了相应的比特位,但是发现数据仍然保持不了。

02、问题的复现

根据客户的描述,以及 STM32G071 的最新版参考手册 RM0444 发现,在 standby 模式下,可以通过设置 PWR_CR3 的 RRS 比特位去控制 SRAM 的保持能力,相应的 API 接口函数为HAL_PWREx_EnableSRAMRetention()、HAL_PWREx_DisableSRAMRetention() ;

1.png

基于例程

......\STM32Cube\Repository\STM32Cube_FW_G0_V1.6.1\Projects\NUCLEOG071RB\Examples\PWR\PWR_STANDBY\EWARM 

以及相应的 NUCLEO-G071 开发板,修改部分代码,根据 LED4 的闪烁频率去判断从 Standby 模式退出后,SARM 里面的数据是否能够保持住。

2.png

03、问题的排查

基于上述的配置,简单的测试了一下,发现即使 HAL_PWREx_EnableSRAMRetention() 使能了,但是测试代码中的 sram_magic_word 的值没有保持住,显示的是 LED4 的闪烁频率为1s。

究竟是什么原因导致了数据没有保持住呢,再次查看参考手册,确定了只要使能 PWR_CR3的 RRS 比特位即能保持住,对比了 PWR_CR3 的 RRS 比特位的说明,在 standby 模式下,SRAM 的数据可以保持,但是当退出 standby 模式呢?

3.png

由于测试的是从 standby 模式退出,standby 模式退出后会进行 reset,该复位导致了 SRAM的数据被覆盖或丢失?通过查阅资料,发现是编译器的配置导致的。以 IAR 为例,查看其默认的脚本文件 icf;

4.png

也就是说,在程序执行的时候,会将 readwrite 的数据进行自动的初始化,而具有.noint 性质的块则不初始化,所以这儿还需要将 SRAM 里面要保持的数据放置在.noinit 的 section 中。

04、问题的解决

知道原因之后,相应的措施也就明朗了,修改 icf 文件如下:

5.png

并将想要保持的 SRAM 中的数据前面加关键字__no_init :

6.png

再次下载程序,发现 LED4 的闪烁频率跟随 RRS 比特位值的不同而不同,符合预期。另外在实现的过程中,需要说明两点的是: 

1、修改 icf 后,可以通过 map 文件查看,应如下文所示,如果发现“P2”mismatch 之类的提示,检查下该 section 中的变量,如上面提到的 sram_magic_word,可能被编译器优化了,在map 中也搜索不到该名称,则可以在实际的代码中使用该变量进行一些运算或判断,然后重新编译即可解决。

7.png

2、当调试器连着 IAR 调试界面运行的时候,无论 RRS 的值设置为 0 或 1,G071 从standby 模式下退出后,SRAM 中的内容均可以保持,如果需要验证 RRS 的值的影响,则建议断开调试器,让程序 free-running ,可以通过比如 LED 的闪烁频率去判断结果。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 21


1.jpg

本期开发笔记由费神编写主要会为大家介绍HPM6000系列的各类片上SRAM并结合Segger Embedded Studio的linker文件介绍,提供了如何使用这些SRAM的建议,赶快来了解吧~

简介

在HPM6000系列微控制器上,集成了大容量的SRAM,可供用户存放代码,数据等,满足各类应用的需要。其中片上SRAM有多种分类,包括RISC-V CPU的指令和数据本地存储器ILM,DLM,通用内存AXI SRAM,AHB SRAM等,还包括AHB SRAM,APB SRAM等。这些SRAM的最高访问频率不同,数据保持的条件也不同,恰当地使用他们,可以极大的提升用户应用的效率。

片上SRAM介绍

HPM6000系列高性能MCU均集成了大容量片上SRAM,总结如下:

2.pngHPM6000系列片上SRAM总结

2.1 RISC-V CPU的本地存储器ILM和DLM

HPM6000系列高性能微控制器的RISC-V CPU都包含有指令和本地存储器,分别称为ILM(Instruction Local Memory,指令本地存储器)和DLM(Data Local Memory,数据本地存储器)。如下图所示,RISC-V CPU的ILM和DLM各自对应了内存映射表(Memory Map)中的2块地址映射区域。

3.png

HPM6700系列ILM/DLM示意图

ILM的映射有:

ILM,以HPM6700系列为例,容量256 KB,地址范围为0x00000000 ~ 0x0003FFFF。该地址区域只有RISC-V CPU可以通过自身的ILM接口访问,RISC-V CPU从ILM取指时,可以实现零等待周期,即ILM的访问时钟频率,与RISC-V CPU主频一致,并且RISC-V CPU的一级高速指令缓存I-Cache-L1对ILM无效。

CPUx_ILM_SLV,以HPM6700系列的CPU0 ILM为例,容量256 KB,地址范围为0x01000000 ~ 0x0103FFFF。该地址区域也称为ILM0镜像,该地址区域可以供总线上所有的主设备访问,如DMA等,包括RISC-V CPU自身,也可以通过CPUx_ILM_SLV访问ILM。如图所示,CPUx_ILM_SLV是AXI系统总线的从接口,其访问时钟频率与总线时钟频率一致。RISC-V CPU访问CPUx_ILM_SLV时,一级高速指令缓存I-Cache-L1是有效的。

DLM的映射有:

DLM,以HPM6700系列为例,容量256 KB,地址范围为0x00080000 ~ 0x000BFFFF。该地址区域只有RISC-V CPU可以通过自身的DLM接口访问,RISC-V CPU从DLM读写数据时,可以实现零等待周期,即DLM的访问时钟频率,与RISC-V CPU主频一致,并且RISC-V CPU的一级高速指令缓存D-Cache-L1对DLM无效。

CPUx_DLM_SLV,以HPM6700系列的CPU0 DLM为例,容量256 KB,地址范围为0x01040000 ~ 0x0107FFFF。该地址区域也称为ILM0镜像,该地址区域可以供总线上所有的主设备访问,如DMA等,包括RISC-V CPU自身,也可以通过CPUx_DLM_SLV访问ILM。如图所示,CPUx_DLM_SLV是AXI系统总线的从接口,其访问时钟频率于总线时钟频率一致。RISC-V CPU访问CPUx_DM_SLV时,一级高速指令缓存D-Cache-L1是有效的。

2.1.1 HPM6700系列

HPM6700系列微控制器上,指令/数据本地存储器的2块地址映射xLM和CPUx_xLM_SLV虽然地址不同,但访问的是同一块物理内存,RISC-V CPU可以通过xLM访问自身的指令/数据本地存储器,而其他总线主设备,比如DMA,需要通过CPUx_xLM_SLV来访问CPUx的指令/数据本地存储器。注意,RISC-V CPU本身,也可以通过CPUx_xLM_SLV访问自己的指令/数据本地存储器。

HPM6700系列支持双核RISC-V CPU,CPU从xLM地址映射总是访问到自身指令/数据本地存储器,而从CPUx_xLM_SLV可以访问到自身或者另一个CPU的指令/数据本地存储器。

以HPM6700系列RISC-V CPU0为例,从0x00000000和0x01000000读取到的,是CPU0指令本地存储器ILM0的首地址。从0x01180000读到的,是CPU1指令本地存储器ILM1的首地址。

以RISC-V CPU1为例,从0x00000000和0x01180000读取到的,是CPU1指令本地存储器ILM1的首地址。从0x01000000读到的,是CPU0指令本地存储器ILM0的首地址。

4.png

2.1.2 HPM6300系列 

HPM6300系列为单核RISC-V CPU,RISC-V CPU和其他总线主设备都可以通过xLM地址映射访问CPU的指令/数据本地存储器,其中RISC-V CPU仍然可以通过自身的xLM接口对xLM实现零等待周期访问,即xLM的读写时钟频率与CPU的时钟同频。而其他总线主设备,需要以AXI系统总线的时钟频率访问xLM。

同时,xLM的镜像,CPUx_xLM_SLV映射仍然有效,包括RISC-V CPU在内的所有总线主设备,访问CPUx_xLM_SLV与访问xLM效果相同,访问的是同一块物理内存。注意RISC-V CPU通过CPUx_xLM_SLV访问自身的xLM时,会和其他总线主设备一样,读写时钟频率与AXI系统总线时钟频率一致,不再支持零周期等待,但是CPU的高速一级缓存会生效。

比如,RISC-V CPU和DMA,从0x00000000读取到的,是CPU0指令本地存储器ILM0的首地址。从0x01000000读取到的,也是CPU0指令本地存储器ILM0的首地址。注意RISC-V CPU从0x01000000取值后,如果高速缓存打开,其数据会被存入缓存。

2.2 AXI总线SRAM

HPM6000系列高性能MCU支持通用的片上SRAM,称为AXI SRAM,可以用来存放数据或者代码。 

5.png

HPM6700系列AXI SRAM示意图

上图以HPM6700系列MCU为例,展示了AXI SRAM在系统中的位置。顾名思义,AXI SRAM连接到AXI系统总线的从接口,它的读写时钟频率就是AXI系统总线的时钟频率。所有的AXI系统总线主设备都可以访问AXI SRAM。

注意:系统内存映射表上,AXI SRAM的地址映射与RISC-V CPU的ILM/DLM镜像映射CPUx_xLM_SLV在地址上是连续的。因此可以把AXI SRAM和RISC-V CPU的本地存储器当作一块联系的大内存使用。详情请参考后文的SRAM使用建议。

2.3 AHB总线SRAM

HPM6000系列高性能MCU包含挂载在外设总线AHB的片上SRAM,称为AHB SRAM,如下图所示,AHB SRAM连接到AHB外设总线的从设备接口。

AHB SRAM的读写时钟频率为AHB外设总线的时钟频率。注意,包括RISC-V CPU在内的总线主设备需要通过AXI系统总线,来访问AHB外设总线下的各个外设寄存器。而外设总线AHB上的主设备,比如HDMA,可以直接通过AHB总线访问外设寄存器,以及AHB SRAM。因此AHB SRAM比其他类型的片上SRAM更适合用作寄存器和SRAM之间的数据搬运。基于同样的理由,HDMA也比XDMA更适合用作AHB SRAM和寄存器之间的数据搬运。

因此,当使用HDMA用作通讯接口,如UART,SPI的数据收发时,推荐使用AHB SRAM作为数据的缓冲区。

6.png

HPM6700系列AHB SRAM和APB SRAM示意图

2.4 APB总线SRAM

HPM6000系列高性能MCU的部分型号支持APB SRAM。上图以HPM6700系列MCU为例,展示了APB SRAM在系统中的位置。

APB SRAM位于电源管理域,由VPMC引脚供电。当MCU处于低功耗模式时,有可能通过关闭系统电源域的电源,使得VDD_SOC掉电。此时,APB SRAM可以作为片上的备份SRAM,保存必要的数据。

注意,对于不支持APB SRAM的型号,可以使用电源管理域通用寄存器PGPR,保存一定的备份数据。

在电池模式(VBAT Only Mode)下,VPMC也掉电,HPM6000系列MCU仅VBAT保持供电。此时,电池备份域通用寄存器BGPR,可以用来保存一定的备份数据。

以上为本期分享内容,还有更多信息如 Segger Embedded Studio的linker文件说明,以及SRAM的使用说明和相应的linker文件修改方法,可点击文链接:https://www.hpmicro.com/resources/resources.html进行了解,感谢关注!

来源:先楫芯上人

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 118

1.引言

STM32 MCU 在 bootloader 模式下,可以通过多种可用外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器中,详细内容可参考应用笔记 AN2606《STM32 microcontroller system memory boot mode》。本文档主要介绍利用 STLINK-V3SET 调试/编程工具的 I2C 接口将程序下载到 SDRAM 中并执行的方法。

“通过

2.问题描述

问题源自客户的实际需求,希望通过 I2C 接口将程序下载到 SRAM 中执行,进行芯片功能性测试。

3.问题分析与定位

关于在 Bootloader 模式下的应用程序下载,有多篇 LAT 可参考。例如《如何使用STM32NUCLEO 板来测试串口 Bootloader》、《一种在 IAR 中实现通过 SRAM 应用程序跳转到bootloader 的方法》等。应用程序下载到 SRAM 中,也有 LAT 可参考,如《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法 》。通过调研,STLINK-V3SET 支持 I2C Bootloader 程序下载,可以实现在 bootloader 模式下的将应用程序下载到 SRAM 中。

4.问题解决

本文档以 NUCLEO-F401RE 开发板为例进行介绍。本文档介绍方法分为 3 个步骤,首先进行硬件配置与接线,使得 STM32F401RE 与 STLINK-V3SET 通过 I2C 相连,同时保证 STM32F401RE 复位后可进入 bootloader 模式;其次进行软件配置与编程,通过 IAR 可以将程序下载到 SRAM 中;最后通过 STM32CubeProgrammer 软件进行程序下载并运行。下边按三个步骤分别介绍。

4.1 硬件配置与接线

查看 AN2606 可知,通过 Boot0,Boot1 的硬件设置(Boot0 = 1,Boot1 = 0),可使 NUCLEO板上电复位后进入 bootloader 模式。STM32F401RE 的 I2C1, I2C2, I2C3 均支持 bootloader,这里选取 I2C1 接口实现在 bootloader 模式下的程序下载功能。

“通过

“通过

关于 STLINK-V3SET 与 SRM32F401RE 之间的 I2C 连接,STLINK-V3SET 模块上已提供 680 欧姆上拉电阻,已通过闭合 JP10 跳线激活。同时还需要通过 NUCLEO 板为 STLINK-V3SET 提供 3.3V 供电。参考 AN2606 中 I2C 接线方式,两者的引脚接线如下表所示:

“通过

最后,用一根 USB Type A 转 Micro B 的线连接 STLINK-V3SET 和 PC,同样通过调试线给STM32 NUCLEO-F401RE 供电。

4.2 通过 IAR 将程序下载到 SRAM 中

参考另一篇实战经验:《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法》,主要操作为以下 2 点。

(1)在工程的链接选项中选择 stm32f411xe_sram.icf 。

“通过

(2)设置一下中断向量表的位置 :

“通过

4.3 通过 STM32CubeProgrammer 将程序下载到 SRAM 中并运行

由于 bootloader 使用了一部分 SRAM 程序,需要修改下地址避免冲突。参考另一篇实战经验:《一种在 IAR 中实现从在 SRAM 运行的应用程序跳转到 bootloader 的方法》,对于 SRAM 中 bootloader 区域,我们从关于 bootloader 的应用笔记可以看到以下信息 :

“通过

从红色部分我们可以看到 bootloader 使用了一部分内部 SRAM,因此我们需要在stm32f411xe_sram.icf 中修改代码运行的起始地址来避免与 Bootloader 运行时的冲突:

“通过

同时,需要修改下中断向量表的偏移量:

“通过

在应用中我们写入以下程序 ,每隔 1s 闪烁 LED 灯。

“通过

最后,通过 STM32CubeProgrammer 进行程序下载。打开 STM32CubeProgrammer(版本 2.6),在 Serial number 选择 STLINK-V3SET,相关配置如图所示。端口选择 I2C,波特率设为 400KHz,地址设为 0x39(地址为 7 位,例如 STM32F401RE I2C1 地址为 0b0111001x,则 I2C 设置的地址为 0b0111001,即 0x39,不同系列 MCU 地址可能不同,请查看 AN2606)。

“通过

点击 Connect 后,如果连接成功,如图所示。

“通过

点击 Erasing & Programming,加载 Hex 文件,勾选 Verify programming 和 Run after programming,如下图所示。点击 Start Programming,开始程序下载。程序下载成功后,可以看到 LED2 以 1Hz 频率闪烁,同时 STM32CubeProgrammer 断开连接。若要重新连接,需要按 NUCLEO 板上的复位键,使得 MCU 进入 bootloader 模式。

“通过

小结

利用 STLINK-V3SET,通过 STM32CubeProgrammer 软件的 I2C 接口下载程序生成的 HEX 文件后,我们可以看到程序下载到 SRAM 运行之后,LED 灯每隔 1s 闪烁 1 次,应用程序下载成功。

来源: STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 294

常见存储器概念:RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash。存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。

在单片机中,RAM主要是做运行时数据存储器,FLASH主要是程序存储器,EEPROM主要是用以在程序运行保存一些需要掉电不丢失的数据。

FLASH:单片机运行的程序存储的地方。

SRAM:存储单片机运行过程中产生的了临时数据。

EEPROM:视用户的需要而定,一般用来存储系统的一些参数,这些参数可能需要修改,也可能不会修改。

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。另外,一些变量,都是放到RAM里的,一些初始化数据比如液晶要显示的内容界面,都是放到FLASH区里的(也就是以前说的ROM区),EEPROM可用可不用,主要是存一些运行中的数据,掉电后且不丢失

RAM 又可分为SRAM(Static RAM/静态存储器)和DRAM(Dynamic RAM/动态存储器)。SRAM 是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。DRAM是利用MOS(金属氧化物半导体)电容存储电荷来储存信息,因此必须通过不停的给电容充电来维持信息,所以DRAM 的成本、集成度、功耗等明显优于SRAM。 SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

内存工作原理:内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的"动态",指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。

具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。

而通常人们所说的SDRAM 是DRAM 的一种,它是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输。在嵌入式系统中经常使用。

ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通过记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

Flash也是一种非易失性存储器(掉电不会丢失),它擦写方便,访问速度快,已大大取代了传统的EPROM的地位。由于它具有和ROM一样掉电不会丢失的特性,因此很多人称其为Flash ROM。FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储bootloader以及操作系统或者程序代码或者直接当硬盘使用(U 盘)。

目前Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一快的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba。

转自: http://www.cnblogs.com/yuandongtao1989/p/6674276.html

围观 641

作者: Avi Avanindra,Devardhi Mandya,Cypress

网络路由器带有用于性能监控、流量管理、网络追踪和网络安全的统计计数器。计数器用来记录数据包到达和离开的次数以及特定事件的次数,比如当网络出现坏包时。数据包的到达会使多个不同的统计计数器发生更新;但一台网络设备中的统计计数器的数量及其更新速度常常受到存储技术的限制。

管理统计计数器需要高性能的存储器才能满足多重的读—修改—写操作。本文将描述一种使用IP方法的独特统计计数器,这种计数器的一端可以连接网络处理器(NPU),另一端可以连接Xilinx公司的QDR-IV存储控制器。QDR-IV统计计数器IP是一种带有QDR-IV SRAM、为网络交流管理和其他计数器应用提供高效统计计数器的软IP。

1、QDR-IV SRAM概述

QDR-IV SRAM配备两个双向数据端口A和B,可以在一个时钟周期内完成两次数据写入或两次数据读取操作,或一次读写结合的操作。因此,这一特点带来了额外的灵活性,架构师可将之用于读/写并不一定平衡的应用中。每个端口在两个时钟沿均可进行数据传输(DDR(双倍数据速率)操作),工作模式为突发式,每个时钟周期的突发长度为两个字(每个字为X18或X36)。地址总线为通用型,其上升沿和下降沿能分别为端口A和端口B提供地址。部分制造商的QDR-IV SRAM还可支持嵌入式ECC(错误检查和纠正),可从根本上消除软错误,提高存储器陈列的可靠性。

QDR-IV SRAM分为两种:高性能 (HP) QDR-IV和超高性能 (XP) QDR-IV。HP设备的最大运行频率为667 MHz,而XP设备的最大运行频率为1066 MHz。QDR-IV XP能够通过将存储空间分成分成8个内存条来增加性能,用地址的3个最低有效位(LSB)表示。要求的存储方案是在同一周期内存取不同的内存条。从一个周期到另一周期,所有的内存条均可存取,系统设计师可通过规划系统架构来相应地分配记忆库地址,以充分发挥极速存储器的RTR性能。这样,开发人员可以在降低总系统成本的同时大幅提高性能。

2、统计计数器IP

QDR IV统计计数器是一种带有QDR-IV SRAM,并且为网络交流管理和其他计数器应用提供统计计数器的软IP。该IP采用支持系统管理存取端口的读—修改—写逻辑。该IP的一端可以连接网络处理单元(NPU),另一端可以连接 QDR-IV存储控制器。由于该统计计数器支持400Gbps及更快速率的线卡,因此性能仅受限于所使用的FPGA和QDR-IV设备。

3、统计计数器IP的运行

图1是使用QDR-IV和统计计数器IP的用例。典型的网络处理单元(NPU)以800M的每秒配对物更新速率发送统计(STATS)更新请求。每一项STATS请求包含在一个72位字中带有两个计数器(数据包和字节计数)的入口/出口包命令令牌。整个计数器缓存数据以1秒为间隔,更新到系统存储器中的终身计数器(通常为DRAM)。这一来自NPU的回读被称为处理器(PROCS)更新请求。PCIe接口用于传输计数器缓存数据以更新终身计数器。下图显示了STATS IP的设置和与Xilinx存储控制器、PCIe总线和NPU连接的QDR-IV存储器。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图1:带统计IP、NPU和存储器的完整基础架构

统计IP适用于HP和XP QDR-IV存储器。其运行模式通过位于IP设计顶层接口的单一参数控制。两个计数器(数据包和字节)的每个流地址为单72位字。一个144Mb QDR-IV SRAM支持四百万计数器。该设计所要求的IP接口数量与所使用的QDR-IV SRAM的数量相当。

正如模块图所示,NPU通过4x25Gbps链路将统计和处理请求推送到IP中。IP的运行频率为存储器存取频率的四分之一,并且使用四条被称为“通道”的平行数据路径以匹配存储器带宽。在存储接口HP和XP运行模式中,端口A作为读取端口,端口B作为写入端口。每项统计请求对保存在与该请求相关的独特存储位置中的计数器数据进行读—修改—写操作。

读写请求通过分阶段来延迟与QDR-IV存储器读取延迟以及存储控制器延迟的匹配。分阶段设计也作为本地缓存累积延迟过程中的服务更新请求。在HP模式中,没有统计/处理器更新地址限制通过四根通道中的任何一根。地址的发生可能是随机的,并且无需给每根通道分配特定类型的地址。但由于在XP模式中存储器的区块结构和限制与其相关,因此通道0和1被分配到保存入口流数据的奇数地址位置,通道2和3被分配到保存出口流数据的偶数地址位置。这一独特的安排可以预防可能在XP模式中发生的分块限制位置。
处理器发出的一秒钟回读请求常见于这两种运行模式。整个存储位置需要以一秒钟间隔回读,因此处理器不发出连续请求,并且以一秒钟间隔时间分布。该活动在每次通过处理器请求读取后复位存储器位置。

4、统计IP架构

图2中的STATS_IP架构模块图标出了三个子部件:每条通道的同地址比较管道(SACOMP)区块、请求-复用-解复用(REQ_MXDMX_CHn)区块以及每条QDR IV应用通道1个的4个A-B通道配对计数器逻辑(ABCH_CTRL_CHn)区块实例。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图2:统计IP架构

SACOMP模块图包含两个管道阶段,其中一个用于通过比较将同一时钟周期上的所有四条通道进行压缩(SACOMP_ChN-to-All),另一个用于对单一通道上的同一地址进行双向(突发2)比较(SACOMP_B2BChN)。当两条或更多条通道在指定的时间实例中为同一地址时,优先性最高的通道积累地址相同的通道上出现的数据,而所有其他优先性较低、地址相同的通道都将失效。这确保了单一统计请求覆盖所有地址相同的通道,从而预防出现任何数据一致性问题。比较和积累算法对所有可能的情况进行快速评估。此外,在单根通道上,如果有同一存储位置的双向统计更新请求,则最新请求失效,其数据通过之前发生的请求积累。这样能够确保任何同一地址位置的双向存取不会在QDR-IV存储设备定义的读取延迟中发生。

图2所示的请求-复用– 解复用(RQMXDMXChn)区块接收对应通道数的处理器更新请求和统计更新请求。由于处理器更新请求的间隔时间固定,因此RQMXDMXchN选择对应下一个时钟服务的处理器请求,并且通过“请求就绪”回压信号停止统计请求。在开始处理每个一秒更新请求后,RQMXDMXchN停止配置时钟数(默认为10)的处理器请求通道以确保不会提供连续的一秒更新请求服务。停止信号发送至NPU,确保在回压信号失效前不会产生新的请求。该机制能够在不堵塞这一设计的情况下处理统计和处理器请求。

在最终阶段,A-B通道配对计数器逻辑(ABCH_CTRLn)对每项统计请求实施实际的读—修改—写机制,同时确保对每一项处理器请求进行最新读取。该阶段包含读取-延时管道逻辑、控制复用、读写管道和QDR-IV控制器接口逻辑。读写延时管道考虑了内存和控制器延迟。来自邻近通道和同一通道控制复用的反馈机制杜绝所有数据一致性问题发生的可能性。管道中的请求流发起统计和处理器更新。控制复用(CTRL_MUX)区块区分处理器和统计请求,从而使当前数据能够作为处理器读取数据转发或者推送到控制器接口区块以便进行进一步处理。控制器接口区块将实际的读写请求转换为端口A和端口B上的控制器特定命令。

5、QDR-IV接口运行和应用通道映射

统计流四通道和一秒(处理器)更新四通道接口作为应用通道。QDR IV控制器采用带有为QDR IV端口A和端口B定义的专用四通道端口界面的4:1/1:4通道复用/解复用功能。QDR-IV控制器以固定顺序对通道进行复用和解复用,应用端和以4X时钟频率运行的QDR IV设备端之间的顺序为ch0、ch1、ch2和ch3。图3为所假设的QDR-IV控制器顺序和建议的QDR IV HP统计计数器解决方案和QDR IV XP统计计数器解决方案应用通道映射。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图3 QDR-IV接口4:1/1:4 复用/解复用和应用通道映射

在QDR-IV HP统计计数器中,端口A和端口B 的请求独立于地址并按照Ch0-Ch1-Ch2-Ch3顺序的排列。这是因为HP模式无区块要求,并且端口A和端口B上的请求可能包含同一位置的地址。但在QDR-IV XP统计计数器中,端口A和端口B的请求是以奇数-偶数-奇数-偶数为顺序的排列的,这样端口A和端口B在同一时钟周期中就不会出现两个属于同一区块的地址。

基于 QDR-IV SRAM的QDR IV 统计计数器IP为网络流量管理和其他计数器的应用提供了高效的统计计数方案。了解更多关于QDR-IV SRAM的相关信息,敬请访问:http://www.cypress.com/search/all/QDR-iv

围观 237
订阅 RSS - SRAM