问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 7 人浏览分享

开启左侧

第13章 SPI接口AD7606约束实例

[复制链接]
7 0
       一些低速高精度的ADC/DAC具有SPI接口,SPI的速率最高可到几百兆,另外由于接口少、硬件设计简单,通信时序容易实现,而被广泛应用于一些AD/DA数据采集场合。米联客DAQ7606数据采集卡使用的AD转换芯片为AD7606-8,AD7606-8是16位8通道同步采样模数数据采集系统,其数据采集的时序与SPI接口类似,只是将传输位宽扩展到了64,这里不深究其数据采集的时序。
image.jpg
       AD7606数据手册中的时序规范如下图所示。
image.jpg
image.jpg
       由于DAQ7606子卡上,AD7606的IO工作电压为3.3V,选择SCLK的时钟频率为16.67MHz,t19为数据到达相对与时钟上升沿的延时,值为23ns,t22为数据有效保持时间相对时钟上升沿的延时,值为7ns。为了便于理解,画出如下图所示的时序图,这里可以采用源同步单沿采样中心对齐的分析方法,忽略全部PCB的走线延时,即最小输入延时为7ns,最大输入延时为23ns。
image.jpg
约束如下:
create_generated_clock -name sclk -source [get_pins clk_7606_inst/clk_out1] -divide_by 6 [get_ports O_ad_sclk]
set_input_delay -clock [get_clocks sclk] -min 7.000 [get_ports {I_ad_out_a I_ad_out_b}]
set_input_delay -clock [get_clocks sclk] -max 23.000 [get_ports {I_ad_out_a I_ad_out_b}]
       布局布线后得到的时序报告如下图所示。
image.jpg
image.jpg
       接下来我们分析出现时序违例的原因并解决。
       FPGA输出的SCLK实际上是内部的100MHz时钟通过6分频产生的,而该100MHz时钟也是ADC发送给FPGA数据的采样时钟,在clk_en1有效时采样数据。FPGA内部模块的采样时序图如下图所示。
image.jpg
       工具在时序分析时,是按照下图所示进行分析的。
image.jpg
       这样分析实际上让建立时间约束的过紧了,需要通过多周期约束来放宽时序要求。约束如下:
set_multicycle_path -setup -end -from [get_clocks sclk] -to [get_clocks -of_objects [get_pins clk_7606_inst/inst/mmcm_adv_inst/CLKOUT0]] 3
set_multicycle_path -hold -end -from [get_clocks sclk] -to [get_clocks -of_objects [get_pins clk_7606_inst/inst/mmcm_adv_inst/CLKOUT0]] 2
       多周期约束后工具应该按照下图所示的方式进行分析。
image.jpg
       重新布局布线后得到的时序报告如下图所示,时序违例被消除。
image.jpg
       上板的效果如下图所示。
image.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

78

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版