集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 780|回复: 0

FPGA各存储器之间的关系

[复制链接]
zxopenhp_01 发表于 2015-10-21 16:23:29 | 显示全部楼层 |阅读模式
在FPGA开发板上都有几种不同的存储器,比如SDRAM,FLASH,EPCS,还有内部
onchip memory,这几种存储器间是如何通信或者构建一个系统
该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者
的学习。
首先看看在sopc builder中reset address
该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者
的学习。
首先看看在sopc builder中reset address和nios IDE中System Library中
的program memory(.text)、read-only data memory(.rodata)等
这几个地址的关系和作用
根据altera 的文档解释如下:
.text :代码执行区
.rodata:只读数据区,存放静态全局变量
.rwdata:可读写数据区,存放可读写变量和指针变量
.bss:未初始化变量区
.text-the actual executable code
.rodata-where read only data used in the execution of the code
.rwdata-where read/write variables and pointers are stored
heap-where dynamically allocated memory is located
stack-where function call parameters and other temporary data
SOPC builder 在Nios II more "cpu_0" setting 标签中的
reset address 决定了flash programmer 的下载存储器(一般是选EPCS controller 或者CFI
flash),并且决定了程序从此处开始启动。exception address 指定的是异常处理地址。当然,
程序在运行前所有的数据都是存放在flash(EPCS 或者CFI FLASH)中如果你设计的系统reset
address 与其它地址的设置不相同,比如reset address 和exceprion address,reset address
和IDE 中的program memory(.text)设成不同的存储器,那么系统从reset address 启动时
都会从flash 中把相关数据自动下载到相应的地址或者初始化相应地址。
通过上面的认识,我们就比较清楚了各存储器间可进行哪些搭配了,reset address 的选择
可选EPCS controllor 或者CFI flash;program memory(.text) 可选择onchip
memory,SDRAM,CFI flash 等。如果reset address 为EPCS 则在使用flash progrrammer
时程序是下载到EPCS 芯片中。如果reset address 选择CFI flash,则flash progrrammer
时程序是下载到CFI flash 芯片中。
需要注意的是这里有个特殊情况。例如在开发板上经常有这么一个简单的系统,CPU+
onchip memory+LED_PIO,reset address 选择onchip memory;感觉整个系统都没有用到
flash。而且onchip memory 在系统断电后数据就会消失,那么程序代码是存在哪,系统是
如何从onchip memory 启动听呢?先来看看onchip memory 模块的描述信息:在
onchip_memory.v 中有这么一段the_altsyncram.init_file = "onchip_memory.hex",很明显
onchip memory 的初始数据来自"onchip_memory.hex",而"onchip_memory.hex"是在Nios
IDE 的System Library 中存储器有选择onchip_memory( 至少有一项是选择
onchip_memory,如果都不选,就不会生成)时,在build 结束的时候生成的。于是当我们把
System Library 中存储器的选择都选择onchip_memory 时,在IDE 中build 结束后所有的
程序代码都生成在"onchip_memory.hex"中,再在QII 中全编译一次时,系统通过
onchip_memory.v 调用"onchip_memory.hex"从而把所有的程序代码以及配制信息都生成在
www.yg−stu.com
扬光电子工作室 www.yg-stu.com qq:115513875 email:xiaoding113@163.com
POF 和SOF 文件中,使用QII 的programmer 直接下载到EPCS 芯片或者FPGA 芯片内程序
都会立即执行。因为这里的特殊性就有很多网友询问了,reset address 选择onchip
memory,而IDE 中把代码区都选择SDRAM 调试的时候程序正常运行,再在QII 全编译后
下载POF 文件就运行不了呢?问题就是出在这了,在这里可以总结出一点,要让程序在
onchip memory 之外的存储器中运行,那么reset address 就必然选EPCS 或者CFI flash,
并且要通过flash programmer 把程序下载到flash 中。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-5 10:51 , Processed in 0.056230 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表