FPGA嵌入式处理器和IP核通过内部总线进行通信,现说明一下IP核分配地址的方法。

       为了保证处理器和每个IP核发生通信,需要分配IP的地址。例如microblaze软核地址线为32,那么它的寻址能力为2的32次方,这就是其地址空间的最大值。

    IP核挂接在总线上,其实可以看作是寄存器或者RAM。例如小uart IP核其实内部是4个32位的寄存器,共16个字节,所以分配地址只需要16字节即可,当然可以分配的很大,多余地址是无用的;如果添加opb_bram_if_cntlr , bram_block 两个IP核,控制器的地址是什么呢?就是片上ram的地址空间,其实这个RAM默认的是32位(XILINX EDK ),所以占用的存储空间也可以求出来了,这个地址不能很大,而且须根据器件而定,毕竟片上资源有限。

 

处理器和存储器(针对FPGA嵌入式处理器)

处理器处理数据,必然会和存储器有密切关系。常见的可以作为存储器的是:RAM ROM FLASH

 

        ROM和RAM指的都是 半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 
RAM有 两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓 冲。另一种称为动态RAM(Dynamic RAM/DRAM)(DE2开发板含有512k的sram),DRAM需 要进行周期性的刷新操作;DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很 多,计算机内存就是DRAM的。
DRAM分 为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM(DE2开发板含有8M的sdram)、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用 得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。
ROM也 有很多种,PROM是可编程的ROM,PROM和EPROM(DE2开发板EPCS16)(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这 种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格 很高,写入时间很长,写入很慢。

 FLASH存储器又称闪存,它结合了ROM和 RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是 这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入 式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。 
    目前Flash主要有两种NOR FlashNADN 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。

 

速度通信比较 片上ram>sram>ddram>sdram>flash,前两级可以作为处理器 的高速缓存。

 

缓存

 

缓存是CPU和内存之间的临 时存储器,CPU访问缓存速度比 访问内存速度快得多,因此,CPU会将一些经常访 问的数据放到缓存中,在下次读取数据的时候先在缓存中查找这些数据,如果找不到再到内存中去查找。将数据存放到缓冲中通常由一种算法来实现,这种算法通过计数等方法将不太经常用的数据从缓存中去除。
缓存分为一级缓存和二级缓存两种,有的较高端的CPU还有三级缓存。 一级缓存通常由静态存储器(SRAM)组成,二级缓 存通常由动态存储器(DRAM)组成,静态存 储器比动态存储器速度快,但是不易集成,成本高。普通的电脑中一级缓存的大小都差不多,性能的差异主要由二级缓存的大小决定的,二级缓存越大性能越好,速 度越快。一级缓存又分为指令存储器(ICache)和数据存储器DCache)两种,DCache主要用来存放数 据,而ICache主要用来存放执 行这些数据的指令。一级缓存的容量通常为4K-64K,二级缓存的容 量为128K-4M通常缓存设置越大,对硬盘的保护作用越大,但具体要根据你机子的配置来设置缓存大小。

在EDK中设置缓存的步骤如下,我选择DDR作为缓存存 储器,用其它类型的存储器作为缓存步骤类似
1双击mb设置ICacheDCache的存储地址(DDR地址)和存储地址的大小
2DDRMCH0MCH1连接到mbCache线上
3DDRICacheDCache选项选择打勾

 

The subaddresses’ auto
increment allows data to be written to or read from the starting
subaddress.

 


INCREMENT ISE_Vivado_Seth xilinxd 2016.05 22-dec-2016 uncounted \
A3C0A7B06338 VENDOR_STRING=License_Type:Bought HOSTID=ANY \
ISSUER=wahaha1357924680@126.com START=18-Sep-2012 TS_OK
PACKAGE ISE_Vivado_Seth xilinxd 2016.05 9B4667199B7D COMPONENTS="ISE \
ChipscopePro ChipscopePro_SIOTK ISim PlanAhead XPS SDK SysGen \
Vivado Rodin_Synthesis Rodin_Implementation AccelDSP HLS \
PartialReconfiguration Vivado_HLS Rodin_SystemBuilder \
AUTOESL_FLOW AUTOESL_CC AUTOESL_OPT AUTOESL_SC AUTOESL_XILINX \
Simulation Implementation Analyzer Synthesis HLS_Synthesis \
petalinux_arch_ppc petalinux_arch_microblaze \
petalinux_arch_zynq" OPTIONS=SUITE