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

在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)中如果你设计的系统resetaddress 与其它地址的设置不相同,比如reset address 和exceprion address,reset address和ide 中的program memory(.text)设成不同的存储器,那么系统从reset address 启动时都会从flash 中把相关数据自动下载到相应的地址或者初始化相应地址。通过上面的认识,我们就比较清楚了各存储器间可进行哪些搭配了,reset address 的选择可选epcs controllor 或者cfi flash;program memory(.text) 可选择onchipmemory,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是在nioside 的system library 中存储器有选择onchip_memory( 至少有一项是选择onchip_memory,如果都不选,就不会生成)时,在build 结束的时候生成的。于是当我们把system library 中存储器的选择都选择onchip_memory 时,在ide 中build 结束后所有的程序代码都生成在onchip_memory.hex中,再在qii 中全编译一次时,系统通过onchip_memory.v 调用onchip_memory.hex从而把所有的程序代码以及配制信息都生成在pof 和sof 文件中,使用qii 的programmer 直接下载到epcs 芯片或者fpga 芯片内程序都会立即执行。因为这里的特殊性就有很多网友询问了,reset address 选择onchipmemory,而ide 中把代码区都选择sdram 调试的时候程序正常运行,再在qii 全编译后下载pof 文件就运行不了呢?问题就是出在这了,在这里可以总结出一点,要让程序在onchip memory 之外的存储器中运行,那么reset address 就必然选epcs 或者cfi flash,并且要通过flash programmer 把程序下载到flash 中。


真菌毒素快速检测仪器的技术参数有哪些
韩国NF数字功放芯片的详细介绍
24家电机上市企业半年报分析!下半年机遇在哪?
采用多模设计无线充电兼顾效率与便利性
清华控股宣布,由于“一岗双责”原因,紫光集团董事长将不再担任清华控股董事
FPGA开发板中几种不同的存储器
lm358电流采样电路
负输出罗氏三举变换器的原理电路图
详解电梯系统涉及到的两种主机:异步主机与同步主机
全球最受欢迎5G手机iPhone 12持续热卖 苹果追加更多订单
PCB布线技巧去耦电容的摆放
海信与亚马逊达成合作 首次在4K智能电视上搭载Alexa
OpenHarmony HDF传感器模型框架介绍与传感器驱动开发指导
数字科技是世界互联网大会的重要板块之一
英特尔:从手握方向盘到丢掉方向盘 安全始终为先
创盈芯TK11\-A0__容纳了我想象中的所有东西
腾讯云和华为云的ingress路径匹配规则把我绕晕了
启玄科技完成数千万Pre-B融资
Ohos-MPChart组件功能描述
便携式气体检测仪一般都应用在哪些领域之中