首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在Spartan-6系列FPGA中使用块RAM的心得(1)---‘连载――我与FPGA活动’

在Spartan-6系列FPGA中使用块RAM的心得(1)---‘连载――我与FPGA活动’

Xilinx公司提供了大量的存储器资源,包括了内嵌的块存储器、分布式存储器以及16位的移位寄存器。利用这些资源可以生成深度、位宽可配置的RAM、 ROM、FIFO以及移位寄存器等存储逻辑。其中,块存储器是硬件存储器,不占用任何逻辑资源,其余两类都是Xilinx专有的存储结构,由FPGA芯片的查找表和触发器资源构建的,每个查找表可构成16*1位的分布式存储器或移位寄存器。一般来讲,块存储器是宝贵的资源,通常用于大数据量的应用场合,而其余两类用于小数据量环境。(主要参考《FPGA开发实用教程》一书)。最近使用块RAM解决了以前遗留的数据存储问题,所以在此把设计期间的心得分享一下。
          首先要提一下为何使用块RAM资源。在大功率交流控制算法中,我使用了SHEPWM这样的PWM方法,其中涉及到了大量的曲线拟合操作:是4阶的多项式拟合,最终产生的拟合系数有896个。这些系数是范围大概从-100000到100000之间的浮点有符号数,为了保证足够的精度,将所有的系数都乘了10000倍的系数变为整数,之后其位宽达到了惊人的44位!
          在写程序时,一开始就想省事,直接把这些系数定义为reg类型的,即
           reg[43:0] cof1[27:0],这样的形式。
          经过综合软件的综合之后,所有的系数都被综合之后存到了LUT中,结果最终LUT的占用率达到276%,造成了设计根本无法实现(http://xilinx.eetrend.com/blog/662)。大家在遇到此类问题时一般使用什么样的思路来解决呢?
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表