用一个时钟在FPGA中计算直方图
直方图对数字数据的分析通常是一种有用的工具。不过,要从一个直方图获得可靠的结果,必须获得大量数据,通常是要10万到100万个点。如果需要分析一个ADC的数字输出,可以采用一片FPGA(图1)。
图中显示了直方图、RAM和脉冲发生器部分,用于捕捉和显示基于14 位数据计算出来的直方图。RAM块是FPGA的内置RAM,而直方图块是用于计算的VHDL(高级设计语言)代码。本应用的VHDL代码也可以从http://www.edn.com/file/25820-Compute_a_histogram_in_an_FPGA_with_one_clock_code.doc下载。
来自ADC的14 位并行数据Device_ Data[13..0]进入直方图块,并进入RAM的Rd_Addr输入端。RAM在其地址位置RAMDataOut[ 15..0]上提供数据。这个数据环回到直方图块,将其加1后送至一个16 位数据的输出端DataOut[15..0]。当WREN(写使能)端为逻辑电平1时,数据被写在管脚Wr_Addr[13..0]处的地址。这种方法与数据来自Device_Data[13..0]是相同的。
RAM从输入到输出有一个固定的延迟。即,当输入为Rd_Addr时,经过一个固定延迟后,数据出现在其输出端RAMDataOut。这个延迟随不同FPGA而改变。要注意这个延迟,使得有两个时钟的延迟到Device_Data,然后再计算直方图。RAM中的延迟应小于两个时钟周期;否则,就可能有数据丢失。这个约束限制了Device_Clk的最大频率。
Cntr_Value给出了用于计算直方图的输入数据数量。Pulse_Gen块产生一个脉冲,进入输入端Rst_Cntr,用于复位计数器。此时,直方图部分再次用Cntr_Value的下组输入数据计算直方图。Cntr_Value为15 位,但可以增加它,获得更多的直方图数据。
Sel_Data与Rst_RAM信号是重置在FPGA RAM中存储的数据。当Rst_RAM脚出现高信号时,直方图块的DataOut脚的所有位均为0。当直方图块的Sel_Data输入脚为高信号时,RAM_Wr_Addr的输出不是Device_Data,而是一个从0上升至16384的内部生成的斜波。直方图块不做计算,因为这样做会重置RAM的地址。
图1,直方图计算电路从一个FPGA的RAM块中获取数据。
当FPGA完成了直方图计算时,RAM就可以选择Sel_ Data为逻辑高,而将保持Rst_ RAM为逻辑低,从而读取直方图数据。RAM地址中的数据顺序地退出输出脚,并且可以将数据传输给一台PC。由于所有块都以一个单时钟Device_Clk工作,因此本设计很简单,有助于满足时序的约束。可以方便地修改本设计,从而获得16 位或12 位数据直方图。
用一个时钟在FPGA中计算直方图的更多相关文章
- 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv
题目: 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数. 定义 Gymnastics 类和 School 类,它们都是 ComputerAverag ...
- FPGA中的时序分析(四)
常用约束语句说明 关于Fmax 上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...
- FPGA中的除法运算及初识AXI总线
FPGA中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会.硬件逻辑实现的除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成.因此FPGA实现除法运算并不是一个&qu ...
- FPGA中IBERT核的应用(转)
https://wenku.baidu.com/view/50a12d8b9ec3d5bbfd0a74f7.html (必看) 摘要 IBERT即集成式比特误码率测试仪,是Xilinx专门用于具 ...
- FPGA中的时序分析(一)
谈及此部分,多多少少有一定的难度,笔者写下这篇文章,差不多是在学习FPGA一年之后的成果,尽管当时也是看过类似的文章,但是都没有引起笔者注意,笔者现在再对此知识进行梳理,也发现了有很多不少的收获.笔者 ...
- 【转】关于FPGA中建立时间和保持时间的探讨
时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...
- 【转载】FPGA 中的latch 锁存器
以下这篇文章讲述了锁存器的一些概念和注意事项.原文标题及链接: FPGA 中的latch 锁存器 - 快乐至永远上的博客 - 与非博客 - 与网 http://www.eefocus.com/liuy ...
- 低成本FPGA中实现动态相位调整
在FPGA中,动态相位调整(DPA)主要是实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正确接收的目的.ALTERA的高端FPGA,如STRATIX(r) 系列中自带有DPA电路,但低端的F ...
- FPGA中竞争冒险问题的研究
什么是竞争冒险? 1 引言 现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能. FPGA可以替代其他PLD或者各种中小规模数 ...
随机推荐
- Daily Scrum 11
今天我们小组开会内容分为以下部分: part 1: 针对学长的搜索算法进行优化,每人发表自己的看法; part 2:对积分系统.防滥用.搜索算法优化部分代码任务的讨论和分工: part 3:进行明日的 ...
- Python 服务器端表单验证插件
Python格式验证库 Cerberus 作者 MrStranger 关注 2016.08.02 14:44 字数 2140 阅读 79评论 0喜欢 1 Cerberus是一个验证Python对象.M ...
- 3dContactPointAnnotationTool开发日志(二二)
昨天是实现了显示GameObject子GameObject的选项卡功能,今天就是要让statusPanel可以控制它们的位置.旋转和缩放了. 没什么难的,对应选项卡绑定上对应的物体或子物体即可 ...
- MindManager2018 修改过期时间 配置文件路径
路径:C:\Users\likui\AppData\Roaming\MindManager\MindManager2018.ini 文件中记录了安装时间和最后一次启动时间. [MindManager] ...
- BZOJ 1191 超级英雄(二分图匹配)
把题目作为s集,锦囊作为t集.把每个题目和它可以用的锦囊连边,这样就构成了一个二分图,求出这个二分图最大匹配. 但是这个最大匹配有限制条件,就是对于每个可能的匹配集,如果s集的i点有匹配,那么i-1点 ...
- 【bzoj4540】[Hnoi2016]序列 单调栈+离线+扫描线+树状数组区间修改区间查询
题目描述 给出一个序列,多次询问一个区间的所有子区间最小值之和. 输入 输入文件的第一行包含两个整数n和q,分别代表序列长度和询问数.接下来一行,包含n个整数,以空格隔开,第i个整数为ai,即序列第i ...
- 【bzoj3672】[Noi2014]购票 斜率优化dp+CDQ分治+树的点分治
题目描述 给出一棵以1为根的带边权有根树,对于每个根节点以外的点$v$,如果它与其某个祖先$a$的距离$d$不超过$l_v$,则可以花费$p_vd+q_v$的代价从$v$到$a$.问从每个点到1花费 ...
- 【题解】51nod1327 棋盘游戏
那天和机房的同学们一起想了很久,然而并没有做出来……今天看了题解,的确比较巧妙,不过细细想来其实规律还是比较明显,在这里记录一下~ 当天自己做的时候,主要想到的是两点 : 1.按列dp 2.对行进行排 ...
- BZOJ1858:[SCOI2010]序列操作——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1858 lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于 ...
- BZOJ5301:[CQOI2018]异或序列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5301 https://www.luogu.org/problemnew/show/P4462 已知 ...