发 帖  
原厂入驻New
[问答] 请问如何在FPGA上创建任何波形?
46 xilinx FPGA
分享
嘿伙计们,我需要使用FPGA输出到我们设计的芯片
我们需要输出三角波或正弦波等波形。
FPGA需要有6个输出,我只选择分辨率为6,因此每个时钟周期我们得到一个完整的样本。
有IP可以做到这一点,还是我唯一的机会在BRAM中存储000000到111111并读出6行的每一位?
这也是5.6Gb / s。
0
2020-8-26 09:02:05   评论 分享淘帖 邀请回答

相关问题

7个回答
嘿@ tylerheaton16,
需要有6个输出,我只选择分辨率为6,所以每个时钟周期我们得到一个完整的样本
不确定你的意思,因为解决方案和期限通常是无关的。
无论如何,你想要的是某种形式的直接数字合成(DDS),你在每个时钟周期基本上产生一个任意波形的值,以这种方式合成整个波形。
这可以通过几种方式完成......
如果波形相当简单,则具有逻辑功能
使用ROM表,每个时钟只包含一个值一个周期
使用基于表格的合成器计算表格位置
使用快速DSP算法生成输出值
有很多IP和工具可用于这个非常常见的任务,例如DDS编译器。
希望这可以帮助,
赫伯特
--------------是的,我这样做是为了好玩!
DDS编译器看起来很有希望 - 我将不得不看一看。
我的意思是6位是如果我有6条输出线进入我的芯片,那么我希望每一行的每个时钟周期取6位中的1位,这意味着在一个时钟周期内我读出一个
样品。
我只是说明了这一点,因为它使设计比12位分辨率更简单,并且需要2个时钟周期来捕获一个样本。
2020-8-26 09:32:13 评论

举报

另外,我需要以5.6Gb / s的速率输出,每行输出1位,5.6Ghz。
DDS编译器可以生成这些查找表,然后我在5.6Ghz读出它们吗?
2020-8-26 09:39:16 评论

举报

嘿@ tylerheaton16,
我对6位的意思是,如果我有6条输出线进入我的芯片,那么我希望每条线的每个时钟周期取6位中的1位,这意味着在一个时钟周期内我读出一个样本
现在很清楚了。
下一次,更容易说,你有一个6位宽的并行连接,你想在每个时钟周期输出6位样本:)
最好,
赫伯特
--------------是的,我这样做是为了好玩!
另外,我需要以5.6Gb / s的速率输出,每行输出1位,5.6Ghz。
DDS编译器可以生成这些查找表,然后我在5.6Ghz读出它们吗?
不 - 甚至不接近。
您基本上是想要生成5.6GHz的6位并行输出接口。
由于您需要并行接口,因此必须使用并行I / O(而不是高速串行I / O)。
并行I / O的最大速度取决于很多因素(I / O标准,驱动强度,电路板布线和电容......),但即使在绝对最佳条件下,最大速度也在2.4Gbps左右(
对于像DDR4-SDRAM这样的接口。
这只是FPGA的物理限制(对于非DDRx-SRAM应用来说速度要慢得多)。
即使在这些速度下(2.4Gbps,只能在速度较快的快速部件中获得),目前还不清楚你会用它做什么。
要以这种速度捕获并行接口,您需要大量的花哨东西(各种形式的动态校准,就像DDR4-SDRAM所做的那样)。
简单地期望6个数据位彼此“足够接近”以形成相关字是不可行的。
至于DDS本身,“正常”的不能在接近该频率的任何地方工作--500 + MHz是FPGA内部逻辑的绝对限制(实际限制相当慢)。
但是,您可以设计使用并行性来执行此操作的体系结构 - 例如,具有8个不同的DDS块,其中1/8的“周期”彼此异相,然后将其输出馈送到驱动输出数据的OSERDES
(要求输出运行在几百MHz DDR以上)。
Avrum
2020-8-26 10:15:18 评论

举报

@ tylerheaton16,
我一直在我的博客上处理一些正弦波生成主题。
今天上午的主题讨论了如何通过CORDIC算法创建正弦波,尽管在此之前我还演示了两种更简单的基于表的方法。
您可能会发现这个适合您的项目。
2020-8-26 10:34:29 评论

举报

嗨@ tylerheaton16,
您期望的带宽只能通过GTrancievers获得。
虽然我们已经实现了类似的设计,输出数据@ 500MHz(ddr),即1Ghz,lvds 1.8标准。
对于波形样本,我们采用了一个阵列,并为序列化因子4配置了“Selectio ip”。
建议不要在fpga面料中布置高速时钟,因此seriliazation是最好的选择。
2020-8-26 10:48:38 评论

举报

只有小组成员才能发言,加入小组>>

106个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表