axellaw

    1. 本帖最后由 axellaw 于 2017-3-6 00:38 编辑 如果CPLD的SPI用的是同步边沿检测的话,50M时钟实现18M的SPI通信是几乎不可能的,简单算一下就知道了 可靠的边沿检测需要两级寄存器来缓冲输入数据,也就是说,spi时钟到了CPLD中,被检测到后,至少也在2个时钟周期后了。 spi的工作模式是,主从机在相同的沿捕获和移出数据,比如时钟相位是0,则主机在上升沿捕获数据,在下降沿发送数据,从机也是这样,所以spi通信必须满足:从机在下降沿发送据后必须在下个上升沿之前到达主机,因为时钟是主机发出的,所以对主机没要求。 可以估算一下时序,主机在下降沿移出数据,布线延迟1.5cm就是1ns,算你3cm的布线2ns吧,到达cpld后,50M的主时钟,延迟2个时钟周期,就是40ns,加上CPLD的tco(从引脚进入信号)延迟,一般5ns是有的,这就47ns了,然后把数据打出寄存器,到达引脚,差不多8ns,这就55ns了,已经远远超过18M的半个时钟周期了,所以cpld在主机给出的时钟下降沿送出数据,是无论如何也无法在上升沿之前到达主机的 解决的办法只有: 1.提高cpld的工作时钟,降低边沿检测需要的时间 2.降低spi的发送速率,按照一般经验,cpld使用同步边沿检测实现spi从机,spi速度最好不要超过主时钟的1/5 3.cpld采用异步spi从机的设计,但异步电路设计需要小心的坑太多,自己看吧4.不使用标准的spi通信模式,即在上升沿捕获数据的同时,提前发送数据到主机,这样可以抢半个spi时钟周期的时间,但时序计算方式就不同了
    2. 放心,不会追究你的,如果大家都买不起下载线,那谁会去买芯片,所以盗版下载线用的越多,altera的芯片卖的越多,别人高兴还来不及呢:lol
    3. 只要你熟悉数字电路的结构和实际模式,学fpga很快的,相对于了解电路构成,verilog这种东西就是小菜一叠 更多的时间可能是花在软件的学习和使用上了,当然,如果不了解数字电路的结构设计,是很难入门的,要学好fpga,你必须在下手写代码前,脑子里要已经有电路的基本设计思路和结构
    4. 为什么要做同步设计 ? 2/4268 FPGA/CPLD 2017-03-05
      photoshopcs5 发表于 2016-12-31 11:45 同步设计是全部模块都用同一个时钟吗?
      可以不是同一个,做好跨时钟域同步就可以了 所谓的同步设计,指的是,同一个时钟域内的输入输出信号,都要同步在该时钟上,即信号必须在时钟采样后才能变化,信号的变化必须和时钟同步
    5. 白话 FPGA外设的时序约束 9/7947 FPGA/CPLD 2017-03-05
      说了,等于没说
    6. 唉,我也被这个问题折腾了一下午,软件都重装了好几遍 WTF,altera的软件工程师都该拉出去枪毙

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:6
  • 好友:--
  • 主题:--
  • 回复:6

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言