Xilinx实现基于BlockRAM的高效移位寄存器
来源:互联网 发布:在淘宝上买steam游戏 编辑:程序博客网 时间:2024/06/05 06:50
Xilinx使用block ram(RAM_based shift register)实现图像行存储(Video Line Stroe)
-对应 altera 的 altshift_taps
详细可见:
http://www.altera.com.cn/literature/ug/ug_shift_register_ram_based.pdf
Xilinx 具体实现参考文档 Implementing and Testing Efficient Video Line Stores
http://www.xilinx.com/products/boards/s3estarter/files/s3esk_video_line_stores.pdf
整篇文档下半部分 详细介绍了基于block ram的数据移位寄存。
摘要几点中心思想:
1.在任何情况下,深度较深的以为寄存都强烈建议使用block ram。
思路如上图所示,但实现不推荐用这么多D触发器,也不推荐使用SRL16 之类的slice级别移位寄存器。
2.对于(例如图像处理)分多通道时,不用拘泥于单通道对应单block ram。
Block ram 是9bit 1920深度。输入格式为R10 G10 B10 ,如上图最大化利用位宽。
3.对于SDP 以及TDP 模式blockram应用的启发。
对于每一个port 在读写都是全双工的。当使用TDP模式时,相当于一个Block RAM可以实现2路同时读,2路同时写的quad port memory。
设定为read_first 模式时,(同时,EN=WE=1)可以产生如下时序:
如此可知,控制每个port的地址位进行递增,便可以实现一个tap(引用altera的概念)
此时的硬件结构如上图
此时的时序如上图
这边需要注意的是,假定一行16个像素,1 与 17 对应。每列的像素需要对齐。
如果地址为16进制,那么1与17会差一个时钟周期,所以地址必须是15进制。
结论,地址位 (行像素数-1)进制。
4.使用EN引脚来过渡图像fly-back(个人觉得可以理解为行消隐blanking)而非WE。
在遇到fly-back时 我们所需要的时序如下:
当使用WE引脚来做使能时,时序如下:
通过时序图对比直观反映了在使用WE引脚作为选通信号时,会过早的read出下一行第二个数据。
5.由于blockram的深度是相对固定的,必须评估ram的使用率。
在文档中详细介绍了各种位宽和深度。这边只列举一个对比启发增加使用率的思路。
1)当图像宽度为1024,位宽为18bit时,正好对应18位宽的block ram 级联成1024深度。
此时硬件结构如上,右边英文告诉你每8个bit会有1bit奇偶位,其实就是普通的1bit。
这个时候地址位控制为0到3FE(1022)使用了1023个地址位,最后一位地址永远用不到,正是为了前面提到过的每列数据对齐。
注意,这边的1022是计数器的最后一位,1023说明移位有1023个状态,1024是一行像素数,不要相互混淆。
这个时候,得出的结论是
2)当行像素数为768时,同样使用的是 1024深度的block ram。
此时,只会使用前面的767个地址,后面的地址就浪费了,所以要想办法再利用后面的257个地址。方法如下:
因为768 = 256 x 3 那么 后面的地址可以组成一个 256深度 x 3 的 6位宽移位寄存器。
硬件结构如上,下面说明的正是后面的存储空间的利用。
- Xilinx实现基于BlockRAM的高效移位寄存器
- Xilinx实现基于BlockRAM的高效移位寄存器
- Xilinx 移位寄存器 SRL16
- crc校验的实现(移位寄存器)
- 线性反馈移位寄存器的实现
- 基于Xilinx的Synthesize
- Xilinx FPGA中SRL(移位寄存器)资源
- 基于赛灵思(Xilinx) FPGA的DisplayPort设计与实现
- 4-1 Verilog 4位移位寄存器的设计与实现
- LFSR(线性反馈移位寄存器)的C++实现
- 移位寄存器的用法
- 移位寄存器
- 基于GPU实现的高效的并行数据结构
- 基于策略的一种高效内存池的实现
- 基于策略的一种高效内存池的实现
- 基于 Apache Mahout 实现高效的协同过滤推荐
- **基于 Apache Mahout 实现高效的协同过滤推荐电影**
- Verilog 编程实验(6)-4位移位寄存器的设计与实现
- MFC消息机制逆向追踪
- 用jquery动画实现的简单的图片轮播
- textview属性
- Python DeprecationWarning 类型错误
- DriverStudio工具包介绍
- Xilinx实现基于BlockRAM的高效移位寄存器
- State Threads 回调终结者
- jsp与servlet的联系
- EJB中的拦截器
- java mongodb 修改
- iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单
- 用jquery面向对象实现的简单的图片轮播,还能学习一下闭包哦
- LintCode -- 不同的路径 II
- 输入固定组的字符串