前一阵出差,然后又吹空调受凉休息了一阵子,耽误了不少时间。现在缓过劲来了,可以继续写作了。出差途中数小时路上无聊,就顺手打印了xapp463.pdf,即《using block ram in spartan-3 generation fpgas》,深感fpga配置的灵活与复杂性。在此把阅读此应用报告的心得分享一下,欢迎大家交流。
在赛灵思spartan-3、3e等系列的fpga中,其逻辑单元clb中一般含有不同数量的单端口ram(sram)或者双端口ram(dram),这里的“单”或者“双”是由我们开发人员定义的。一般情况下这种ram分布于(distributed)fpga的阵列结构中,所以被称为“分布式ram”,以便区别于fpga中的块ram(block ram);它们的详细区别大家可以看spartan3系列的用户手册(ug331.pdf, spartan-3 generation fpga user guide),其中对所有模块及其功能都有最全面的解释,包括各种复杂的时序分析。分布式ram在局部设计中可以方便地实现小的数据缓存区、fifo或者寄存器组等等。接下来我们讨论分布式ram的特征、功能以及如何使用xilinx的工具来调用分布式ram。
图1 分布式ram的示意
图1给出了spartan系列中分布式ram的一个结构框图示例,它们一般被包含在clb之中。clb中的每一个slicem函数发生器或者lut资源都可以被配置为16×1的同步ram,而slicel slice中的lut一般不含有分布式的ram。
通常情况下,分布式ram是同步写,异步读的;然而,在实际使用时,可以根据需求使用与lut关联的寄存器来实现同步读的功能。每一个16×1位的ram都可以进行级联以构成更大的ram,此时需要对逻辑资源进行仔细的优化设计以便尽可能满足时序要求。这些细节以后会结合我的一个实例进行分析。
spartan-3 fpga的clb支持最高达64位深x1位宽的ram。同时存在于一个slicem slice的两个lut可以结合起来构成双端口的16x1位的ram——其中的一个lut带有读/写端口,它可以同时写入两个16x1 的lut ram,而另一个只有读端口,一次只能单独的读取一块ram。。
分布式ram可以在许多高性能的应用中大显身手;这些应用一般要求相对较小的嵌入式的ram模块,例如fifo或者寄存器组。我们通常用到的ise套装中的core generat一般可以根据spartan-3的结构特征,自动产生优化的分布式ram,一般它产生的是带有同步或者异步fifo的ram。
物联网产业发展现状及瓶颈问题分析
替换型LED灯管方案设计
HDMI 1.3a协议采用iCoupler®隔离技术实现电气隔离
小米6怎么样,小米6良心之作,小米6国民手机
分享一个八音效发生器的电路图
3系列FPGA中使用LUT构建分布式RAM(1)
蔚来正在从进取的暖男到优等生的路上
和电磁波「朝夕箱处」
Android手机最快在2020年取代身份证和驾照
思迈特Smartbi零售数据分析平台介绍
基于ARM9的车载GPS定位终端设计
GGII推出《中国新能源汽车“车电分离”模式经济性分析报告》
安卓直屏Redmi K40手机值得买吗?
宏昌电子增发2.67亿股全资收购覆铜板企业
5G时代中高频器件技术面临更大挑战
85-015A-4R压力传感器的损坏及维修
湖北省的5G网络建设应用情况介绍
半自动刷片机
美国的车用电池成本是这样下降的
有害气体泄漏报警器制作,Hazardous gas alarm