0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > FPGA开发板中几种不同的存储器

FPGA开发板中几种不同的存储器

来源: elecfans
2021-03-25
类别:基础知识
eye 57
文章创建人 拍明

原标题:FPGA开发板中几种不同的存储器

  在FPGA开发板上都有几种不同的存储器,比如SDRAM,FLASH,EPCS,还有内部onchipmemory,这几种存储器间是如何通信或者构建一个系统该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者的学习。

1.png

  首先看看在sopcbuilder中resetaddress

  该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者的学习。

  首先看看在sopcbuilder中resetaddress和niosIDE中SystemLibrary中的programmemory(.text)、read-onlydatamemory(.rodata)等这几个地址的关系和作用根据altera的文档解释如下:

  .text:代码执行区

  .rodata:只读数据区,存放静态全局变量

  .rwdata:可读写数据区,存放可读写变量和指针变量

  .bss:未初始化变量区

  .text-theactualexecutablecode

  .rodata-wherereadonlydatausedintheexecutionofthecode

  .rwdata-whereread/writevariablesandpointersarestored

  heap-wheredynamicallyallocatedmemoryislocated

  stack-wherefunctioncallparametersandothertemporarydata

  SOPCbuilder在NiosIImore"cpu_0"setting标签中的

  resetaddress决定了flashprogrammer的下载存储器(一般是选EPCScontroller或者CFI

  flash),并且决定了程序从此处开始启动。exceptionaddress指定的是异常处理地址。当然,程序在运行前所有的数据都是存放在flash(EPCS或者CFIFLASH)中如果你设计的系统resetaddress与其它地址的设置不相同,比如resetaddress和exceprionaddress,resetaddress和IDE中的programmemory(.text)设成不同的存储器,那么系统从resetaddress启动时都会从flash中把相关数据自动下载到相应的地址或者初始化相应地址。通过上面的认识,我们就比较清楚了各存储器间可进行哪些搭配了,resetaddress的选择可选EPCScontrollor或者CFIflash;programmemory(.text)可选择onchipmemory,SDRAM,CFIflash等。如果resetaddress为EPCS则在使用flashprogrrammer时程序是下载到EPCS芯片中。如果resetaddress选择CFIflash,则flashprogrrammer时程序是下载到CFIflash芯片中。需要注意的是这里有个特殊情况。例如在开发板上经常有这么一个简单的系统,CPU+

  onchipmemory+LED_PIO,resetaddress选择onchipmemory;感觉整个系统都没有用到flash。而且onchipmemory在系统断电后数据就会消失,那么程序代码是存在哪,系统如何从onchipmemory启动听呢?先来看看onchipmemory模块的描述信息:在onchip_memory.v中有这么一段the_altsyncram.init_file="onchip_memory.hex",很明显onchipmemory的初始数据来自"onchip_memory.hex",而"onchip_memory.hex"是在NiosIDE的SystemLibrary中存储器有选择onchip_memory(至少有一项是选择onchip_memory,如果都不选,就不会生成)时,在build结束的时候生成的。于是当我们把SystemLibrary中存储器的选择都选择onchip_memory时,在IDE中build结束后所有的程序代码都生成在"onchip_memory.hex"中,再在QII中全编译一次时,系统通过onchip_memory.v调用"onchip_memory.hex"从而把所有的程序代码以及配制信息都生成在POF和SOF文件中,使用QII的programmer直接下载到EPCS芯片或者FPGA芯片内程序都会立即执行。因为这里的特殊性就有很多网友询问了,resetaddress选择onchipmemory,而IDE中把代码区都选择SDRAM调试的时候程序正常运行,再在QII全编译后下载POF文件就运行不了呢?问题就是出在这了,在这里可以总结出一点,要让程序在onchipmemory之外的存储器中运行,那么resetaddress就必然选EPCS或者CFIflash,并且要通过flashprogrammer把程序下载到flash中。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯