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

FPGA开发之问题二

FPGA开发之问题二

11、问 :ISE 中的 PAD TO PAD CONSTRAINT 是否是包括输入输出的 pad 时延之和再加上输入输出之间的组合逻辑的时延?还是只是输入输出之间的组合逻辑的时延?
答 :Xilinx PAD-to-PAD contraint 的确涉及到输入输出 PAD 时延 . 这从布局后时序报告中可以看出。
12、问 :写了一个 vhdl 的小程序 , 可是在 processes of soure 里的 implement design 里只有 translate,fit, 却没有 map ,place&route. 这是为什么呢 ? 请大侠们帮忙答疑解惑 ! 原来用的上 xc9500xl 系列 的 xc9572xl,结果怎么都没有 place&route. 后来换成 virtex2 系列的 xc2v80 就出现 了 , 这是什么原因 ?
答 :cpld 是没有 place&route,是 fit。
13、问:SpartanIII 芯片采用 master serial 方式配置时,是不是也需要通过下载电缆把数据下载到配置 ROM中?那么下载电缆应该如何连接?是采用 JTAG 方式吗?那 M2,M1,M0 应该设成什么?
答 : serial 串行。只需用到 d0。其他 d1-d7 可用于 user io。速度慢,不过一般选这个,Parallel 并行。需要用到 d0-d7. 速度快,如果 jtag 链有多于一个 FPGA,则第一个用 master,其他用 slave。如果只有一个就用 master。每个 FPGA 可以通过 m0,m1,m2 进行设置。配置 FPGA 或 prom 的时候都会用到 jtag。
一般调试的时候只需配置 FPGA 就可以了。实际使用时需要先配置 prom,这样每次加电时 FPGA 会自动从 prom 中加载配置文件。当然配置模式需要设对。
jtag 信号需要
tms - jtag 模式
tdi -输入
tdo -输出
tck - jtag 时钟
gnd -地
vcc -给 jtag 线缆供电。我用的是 2。5v 供电。不过也有 3.3v 供电的,需加串行电阻吧!配 spartan3 的时候 jtag 线缆很是个问题。最好选择 cable IV。
用 cableIII 的话可能会有问题,看你运气了,呵呵。
14、问 :PROM 中的配置数据是如何输入进去的呢?也是通过下载电缆吗?是不是先要把 M2,M1,M0 设成JTAG 模式,通过下载电缆把数据下载到 PROM 中,然后再把 M2,M1,M0 设成 Master Serial 模式,这样每次启动时配置 PROM 就可以自动加载数据了?
答 :jtag tdi---> tdi FPGA tdo---> tdi prom tdo--->jtag tdo.
在做原理图的时候 jtag 链需要将 FPGA 和 prom 链起来。这样 impact 就可以找到在 jtag 链上的 2 个设备。( 现在假设只有一个 fpag 和 prom)接下来你可以选择只用 bit 文件配置 FPGA,或者,事先用 impact 将 bit 文件生成一个 prom 配置的mcs 文件 ( 这里可以根据 serial 或者 Parallel 方式生成不同的 prom 文件 ),再用这个 mcs 文件配置prom。一般情况下设成 Master Serial 就可以了。在用 jtag 配置的时候这个模式好像没什么关系。现在我的 prom 还没焊上去呢。呵呵,所以不好说。你觉得不保险,就把 m0,m2 做成跳线。

15、问 :现在的 vhdl 语言编程很多是行为模式,请问如何估算程序会消耗的最大资源问题?考虑编程的资源消耗有些什么具体的方程式和经验?逻辑行为描述是否资源消耗很大,如何优化?
答 : 大部分是先选择同一系列较大的芯片来设计,综合后看报告,然后再根据实际情况移植。对于一个设计,消耗的资源不要超过 80%。还有就是一些 IP Core 生产向导的最后一步也会提示你消耗多少资源。
16、问 :FPGA 每次上电时,要从 PROM 中读取配置信息,那么一定需要时钟,该时钟是从哪里来的呢?FPGA 是否存在一个时钟振荡器来提供这一时钟?
答:master 的 FPGA 的 cclk 脚在上电的时候会自动产生配置时钟,这个时钟应该是内部 rc 电路产生的 ( 个人猜测 ),如果是由外部晶振产生的话,那没有晶体的系统 ( 比如差分接受数据 ) 不就用不了 FPGA 了?数据手册中有写 : Master Slave 主串 方式下 FPGA 自己产生时钟。不需要外接 RC。
17、问 :当 ise 调用 ip 核时,用 synplify 是不是不能综合 ip 核啊?只能用 xst?
答 :对于 IP 的综合,因为是加密,所以综合器都是认为是黑盒子。 对于综合器而言,它只用知道端口定义和名称就行了。所以,你在第三方综合工具,不能看到底层的结构,综合器没有对此综合。在下一步适配和布线,软件才将 IP 解析为硬件源语,形成硬件结构。在 Matlab 中使用 VHDL 或 Verilog 也是同样的。实际中, 我们关心的只是输入什么样的值,就能产生什么样的结果。 也是一种知识产权的保护措施。在赛灵思设备中,能够直接调用第三方工具。而在 Altera 设备中,需要在第三方工具中,生成网表文
件 edf 再到 Quartus 中进行适配布线。设计流程是这样的。
18、问 :我做的 ddr sdram 控制器 , 在软件仿真阶段完全正常 , 但是到了 FPGA 验证的时候出现了很奇怪的现象 :我的 FPGA 用了 4 片 DDR 并行工作 ( 就是当作一片 DDR 一样的发指令 ) 现在遇到的问题是发现在 active 后 , 连着 3 个 write, 然后一个 write with aotoprecharge,burstlength=4, 然后再读出来 ,发现其中有 3 片的数据在读写之后是一致的,然而,另外的一片的这 16 个数没有写进去。该现象与频率无关。然后在紧接着的地址上继续写 , 读,所有的数据都是正确的。我怀疑 initial 没有做好 , 加了
好多 refresh,precharte, 结果都一样,我很奇怪,为什么 3 个片子上的数据都是正确的,只有一个片子的前几位是错误的。有可能是 initial 没有做好?还是什么原因 , 各位大侠有没有遇到这种情况?我用开发板上提供的仿真程序 , 发现没有这种错误 , 对比 p&r 后的报告 , 我的程序和开发板上的时间参数差不多 ( 基本一致 )。暂时就能总结这么些现象 , 请各位大侠们指教一下,就是帮我猜猜也好,谢谢!
答:DDR SDRAM 的设计很关键的是物理层读数据如何捕获的问题。远远不止是 RTL coding 的问题。要做 DEBUG 首先要了解你的器件型号,时钟频率和 DDR SDRAM 器件型号。要关心所有的细节。DDR SDRAM 器件有工作频率下限,你的设计不会频率太低吧。
如果你的设计DDR SDRAM 频率不高,建议不用自己做了,用 XIILINX 网上公开的参考设计就可以了。至少可以参考 MIG 工具生成的代码,和你自己的代码进行对照,用于参考。上这个网页。然后注册并下载 Memory Interface Generator (MIG) 工具,有个中文网站也提供资料 ,不过不知道版本是不是最新的。另外,有一个叫做 MPMC 的 High Performance Multi Port Memory Controller (XAPP535) 可以直接拿过来用,连多端口访问仲裁器都带有了。

如果怀疑是实际调试问题而非一般代码设计问题,建议 review 芯片的复位初始化过程,注意写模式寄存器之前需要足够的等待时间。可以从 micron 网站下载一个 芯片模型,例如 ,做一个完整的 RTL 仿真,或者利用 MIG 生成的 TESTBENCH,把你自己的代码替换进去做前仿真。
19、问 :ADC 的采样速率为 250MHz, 希望用 FPGA 实现如下算法 i=arctan[(Si+1+Si)/(Si+1-Si)],Si 和 Si+1 为相邻的两个采样点 .计算得到 N 个 Pi 的值后再累加 .
请问如果需要的数据点数为 100 点 , 可以在 1uS 内算出来吗 ? 如果可以 , 用哪个片子比较合适呢 ? 采用什么样的设计比较合适呢 ? 请高手指点 .
答 :1,如果是 ADC,Si 和 Si+1 为相邻的两个采样点 . 数字信号只能取“0”或“1”,有 4 种可能的情况,
可以用用查表法。
         2,楼主是不是要处理模拟信号,应该不是 1 中所描绘的那样。关注多少位的 ADC 啊,可以用 IPcore中的 cordic 模块,直接求。另外对于这个速度来说,可以选择 VII 以上的芯片,速度可以用 -7 或更高的,
只是建议 :
       1、赛灵思的 IPcore 中的 cordic 模块可以处理三角函数,开根号等,另外有专门的除法模块可以使用,先算除法,然后用 cordic 就可以了。
       2、对于 250M 的速度,个人觉得- 7 的速度可以了,当然,V4 中有更高速度等级的。如果你的后续处理要有 FIR 之类的操作,V4 中有号称可以处理 400M 速率的 FIR 滤波器。不过布线的时候要很注意,
接口设计可能有些困难。

20、问 :分频应该是个很简单的问题。但是我有些疑问,假如我的时钟是 2MHz,需要 8Kbps 的数据源,那么它们之间的分频是不是 211/23=256 次分频。定义一个 c(7 downto 0) 的计数器就可以了。但是 2MHz的时钟不是 2048KHz,而是 2000KHz?
答:一般来说,所说的时钟的 K,M 等应该跟数学上的概念一样,而对于计算机来说,仅在表示容量的概念上,K 才是 1024。
返回列表