热度 38
2016-6-30 21:33
3847 次阅读|
0 个评论
接上一篇。 这一篇介绍FPGA驱动单个AD7980的开发过程,驱动多个AD7980的级联模式可以查阅后面的帖子。单个AD7980的驱动时序图如下: 1、确定SCLK频率的上限。上图中SCK的周期为Tsck,查数据手册得知在3.3V为12nS,对应频率的上限为80多M。为了方便开发,直接将FPGA开发板上的48M时钟,经过PLL直接输出C0为10M,周期为100nS,远大于12nS; 2、SDI引脚直接接FPGA引脚,置高电平1。 3、确定状态机为三个状态,分别是AD7980_IDLE、AD7980_CONVERSION和AD7980_AQUISITION。这三个状态分别对应上图中的第3个波形,3个状态的命名也是按照上图来命名的。AD7980_IDLE状态,芯片处于等待状态;AD7980_CONVERSION状态,需要使能AD7980_CNV=1,启动ADC转换;AD7980_AQUISITION状态,使能AD7980_CNV=1,同时输出确定的16个时钟信号AD7980_SCK,同时在AD7980_SCK下降沿将AD7980_SDO串行输出采集进来。 4、3个状态的转换如下: parameter AD7980_IDLE =3'b001; parameter AD7980_CONVERSION =3'b010; parameter AD7980_AQUISITION =3'b100; case(nstate) AD7980_IDLE: 输出控制; if (AD7980_EN) nstate= AD7980_CONVERSION; else nstate= AD7980_IDLE; end AD7980_CONVERSION: begin 输出控制; conversion_count=conversion_count + 1'b1; if(conversion_count==4'd10) nstate= AD7980_AQUISITION; else nstate= AD7980_CONVERSION; end AD7980_AQUISITION: begin 输出控制; if(aqusition_count==7'd0) begin AD7980_SCK=1'b0; end else if (aqusition_count==7'd33) nstate= AD7980_IDLE; else 输出控制; SIGNALTAP II捕获的波形如下: 正在更新,,,,, 淘宝店铺:http://liangziusb.taobao.com 良子.2016年 承接USB开发工程 QQ:1345482533