FPGA如何实现这个程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA如何实现这个程序?相关的知识,希望对你有一定的参考价值。

例:两个10位二进制数(有符号)表示-π到π设为a,b
若a-b<-π 则 a-b+2π
a-b>π 则 a-b-2π
其他 输出 a-b
这个程序如何实现,符号扩展位怎么办?多谢解答!

不知道我理解的对不对,

两个10位的2进制数a和b,如果他们的差a-b<-π ,那么输出是a-b+2π, 这个能加吗????数据类

型不匹配的。另外你用fpga来实现这个东西,做什么用呢???

最高位表示的是正负
参考技术A 符号扩展看你到底是用来计算还是用来输出,如果只是用来计算的话,直接用$signed()作强制转换就行了,如果是扩展位数,就自己写个宏判断首位,首位为1,加一堆1,符号为0,加一堆0。 参考技术B 需要知道你输入的数据类型

如何实现 高速串口ADC与FPGA连接?

8通道ADC AD9222的采样率50MHz,采样信号串行输出,数据时钟300MHz、数据率600bps,LVDS输出。在数据时钟的上升、下降沿采集数据线信号。因而,数据窗口只有约1.5ns(半个数据时钟周期),问题是:

1、ADC输出数字信号的PCB布线有哪些要求?
2、该ADC能否与FPGA直接相连?如不能,请给与FPGA连接建议
3、如果该ADC直接与FPGA相连,是否需要约束FPGA的布局布线?如何约束?

请提供解决方法和相关资料,谢谢!

呵呵。不知道你用的是什么FPGA。数据时钟速率挺高的。特意看了下这个9222的资料。觉得这个设计困难的地方就是IO这边了。

一一解答:
LVDS的差分信号在PCB方面的布线不仅需要等长,而且阻抗是有要求的。Altera和Xilinx的文档有这类example design

第二:就是ADC和FPGA的直接相连:Altera系列支持到支持600Mbps的器件有:cycloneIII,stratixII以上,还有最新的Arraia可以支持到LVDS 600+。Xilinx方面spartan3,vertix系列支持。

第三:FPGA方面。差分对是需要经过约束才可以使用的。无论是Xilinx还是Altera。首先是管脚。可以从Assignment或者UCF里面约束至对应管脚。pin planner里面以对应的图例会表明一对差分信号的输入口分别以p,n表示。第二是需要约束输入至第一个寄存器的延迟时间。这个参见下面的example。

数据窗口可能的确有点小。呵呵,这块AD好像用于医疗方面的,精度很高。
给出参考设计吧。

Altera:
http://www.altera.com.cn/search?site=china_spt_kdb&q=LVDS&btnG=%E6%90%9C%E7%B4%A2&entqr=0&output=xml_no_dtd&sort=date%3AD%3AL%3Ad1&ie=UTF-8&lr=lang_zh-CN&client=china_frontend&ud=1&oe=UTF-8&proxystylesheet=china_frontend
说明:里面有两个FAQ。里面包含了3篇PDF。
第一个FAQ讲的是Quartus里面高速接口的megafunction。闲了可以看看。有助了解全部的IO标准。
第二个FAQ里面是example design。cycloneIII和stratix系列。分别是两篇pdf。内部包括:PCB的走线要求。以及内部端口的使用。

Xilinx的:
第一个是PCB要求:
http://www.xilinx.com/support/documentation/application_notes/xapp230.pdf

不过xilinx的example design。。。我找了半天,只有结论性的。。。约束和参考设计由于太分散。。。所以找来找去没找到。
如果真是用xilinx的话。不行就找找当地的FAE吧。呵呵,实在没办法了。
参考技术A 你好,我现在也在做高速串行AD接FPGA的工程,不知道,能否参考下你的FPGA关于采集AD的代码。 参考技术B 已经发到你的邮箱请查收.

以上是关于FPGA如何实现这个程序?的主要内容,如果未能解决你的问题,请参考以下文章

FPGA中如何实现除法?

如何实现 高速串口ADC与FPGA连接?

在FPGA中,如何实现一个时钟信号的可控延时? (用高频50MHZ的时钟去延时一个22KHZ的信号)

ISE14.2如何将FPGA程序和microblaze的程序一起固化到flash里面去?

STM32读取FPGA中双口RAM里的数据,用DMA方式如何实现

基于FPGA的高速数据采集系统实现