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 工具生成的代码,和你自己的代码进行对照,用于参考。上这个网页http://www.xilinx.com/products/d ... ce/xaw_dram_ddr.htm。然后注册并下载 Memory Interface Generator (MIG) 工具,有个中文网站也提供资料 http://www.21ic.com/news/n4748c89.aspx,不过不知道版本是不是最新的。另外,有一个叫做 MPMC 的 High Performance Multi Port Memory Controller (XAPP535) 可以直接拿过来用,连多端口访问仲裁器都带有了。
http://www.xilinx.com/gsrd/
http://www.xilinx.com/bvdocs/appnotes/xapp535.pdf   
如果怀疑是实际调试问题而非一般代码设计问题,建议 review 芯片的复位初始化过程,注意写模式寄存器之前需要足够的等待时间。可以从 micron 网站下载一个 芯片模型,例如 http://download.micron.com/downl ... ddr2/512Mb_ddr2.zip,做一个完整的 RTL 仿真,或者利用 MIG 生成的 TESTBENCH,把你自己的代码替换进去做前仿真。
19、问 :ADC 的采样速率为 250MHz, 希望用 FPGA 实现如下算法 :Pi=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。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,使用FPGA进行开发需要掌握一定的方法和流程。下面是一些常用的FPGA开发方法: 1. 硬件描述语言(HDL):FPGA开发通常使用硬件描述语言,如VHDL(VHSIC Hardware Description Language)或Verilog来描述硬件电路。这些语言允许开发人员通过编写代码来定义电路的功能和行为。 2. 开发工具:针对不同的FPGA品牌和型号,有各种不同的开发工具可供选择,如Xilinx的Vivado、Altera的Quartus等。这些工具提供了设计、仿真、综合、布局和生成比特流等功能,可以辅助完成FPGA开发。 3. 仿真与验证:在将设计加载到FPGA之前,通常需要进行仿真和验证,以确保设计满足预期的功能和性能。仿真可以通过模拟设计行为来验证其正确性,而验证则可以通过测试设计在不同情况下的响应来验证其鲁棒性。 4. 综合与布局:综合是将HDL代码转换为门级网表的过程,而布局则是将门级网表映射到FPGA芯片上的物理布局。这些步骤都是由开发工具自动完成的,开发人员可以通过调整综合和布局参数来优化设计的性能和资源利用率。 5. 生成比特流:一旦设计经过综合和布局,并通过验证,就可以生成比特流文件(bitstream)。比特流文件是将设计加载到FPGA上的二进制文件,通常通过JTAG(Joint Test Action Group)接口将其传输到FPGA芯片中。 6. 调试和优化:一旦设计加载到FPGA上,开发人员可以使用调试工具和逻辑分析仪等设备来调试和优化设计。这些工具可以帮助开发人员分析电路的行为、定位问题并进行性能优化。 以上是一些常用的FPGA开发方法,当然还有更多的技术和工具可以用于FPGA开发。掌握这些方法将有助于您更好地进行FPGA开发和实现各种应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值