2021年5月10日-14日

本周工作

1. FPGA开发部分

  • vivado基本开发流程已经弄清楚,包括新建工程,verilog代码编写,综合、执行、下载。
  • 仿真文件编写,需要电脑端产生模拟的输入信号给被仿真模块,并且调用被仿真的模块。
  • vivado仿真工具的使用,主要是如何看仿真输出的波形。

(1) 本周前完成了流水灯的verilog代码编写,并且成功在MA703-35T与Basys3上运行。MA703-35T仅采用例程,而Basys3从verilog代码到引脚约束文件均为自行编写,期间查找了Basys3的数据手册。
(2) 本周完成了Basys3上PWM输出程序的编写,并且完成该程序的仿真文件编写。首先编写verilog程序,在进行仿真,最后综合、执行、下载。仿真波形与实测一致。 S (3) 看了PWM程序的RTL原理图,发现原理图与个人分析不一致,个人分析无法输出上升沿,但是实测出现上升沿,遂放弃。
(4) 正在看verilog状态机编写。

  • 一句话总结FPGA开发:全是硬件!

2. 数据采集模块部分

  • 阅读了AD7606的数据手册。
  • AD7606的功能框图如下。
    Blockdiagram

(1) CLAMP:钳位,用于做输入保护,可以保护输入到±16.5V而不损坏输入部分。
(2) 1MΩ:固定输入电阻,不随采样频率而变化。
(3) Second-order LPF:二阶抗混叠滤波器。
(4) T/H:track and hold,跟踪保持。
(5) 8:1 Mux:8转1复用器,用于选择采样通道。
(6) 16-BIT SAR:16位逐次逼近型AD。
(7) Digital filter:数字滤波器,过采样使用。
(8) PARALLE/SERIAL INTERFACE:串并转换,用于输出输出部分。

  • AD7606的引脚图如下图所示。
    Top View
  • 其基本的信息如下。

(1) Vn - VnGND(n = 1 ~ 8):模拟输入引脚,AD7606为单端输入。
(2) AVcc,AGND:模拟电源引脚。
(3) REFCAPx,REFGND:参考电源使用引脚,需要在CAP引脚上外加电容。
(4) REF SELECT:参考源选择,选择内部参考源还是外部参考源。
(5) REFIN/REFOUT:参考源输入或者输出。
(6) OS0-2:过采样选择,目前用不到。
(7) PAR#/SER/BYTE SEL:选择输出输出模式,分别对应并行(16位),串行,并行字节输出。PAR#/SER/BYTE SEL = 0进入并行输出模式,PAR#/SER/BYTE SEL = 1且BYTE SEL = 0时为串行输出,PAR#/SER/BYTE SEL = 1且BYTE SEL = 1时为并行字节输出。
(8) STBY#:待机输入,低功耗模式下使用。
(9) RANGE:模拟输入范围选择,高电平对应±10V,低电平对应±5V。
(10) CONVST A/B:conversion start A/B,用于控制转换开始与结束。A组对应V1-4,B组对应V5-8。
(11) RESET:同步复位引脚,时钟上升沿复位。
(12) RD#/SCLK:串行输出下为输入时钟,并行数据输出下为读取控制输入,转换部分由内部时钟控制。
(13) CS#:片选信号。
(14) BUSY:输出繁忙,转换开始到转换结束保持高电平,变成低电平后表示可以转换结束。
(15) FRSTDATA:数字输出,用于指示合适可以读取V1通道的数据。
(16) Vdrive:数字电源输入。
(17) DB0 ~ DB6,DB9 ~ DB113:并行输出引脚。
(18) DB7/DoutA,DB8/DoutB:并行输出数据引脚,串行模式下为串行数据输出引脚。
(19) DB14/HBEN:并行数据输出引脚,并行字节模式下用于控制输出字节数据的方向,HBEN = 1时MSB在前,HBEN=0时LSB在前。 (20) DB15/BYTE SEL:并行输出数据引脚,并行字节模式选择引脚。PAR#/SER/BYTE SEL = 1且BYTE SEL =1时进入并且字节输出模式。

  • AD7606不具备采样控制寄存器,只需要用外部控制器给相应的引脚以高低电平即可,使用比较方便。但是其不具备采样序列设置,只能按照 V1 ~ V8顺序采样。

  • 目前准备使用并行输出模式,采样时序如下。 conversion

  • 目前打算采用等待转换结束后进行采样,但也可以采用一边转换一边读取的方式,手册上说这样既不会影响转换器性能,而且可以实现更高的转换速度,但是目前先将转换后读取搞定,在准备这种读取。

(1) CONVST x 从低跳变到高,表示转换开始。注意CONVST A与B间的上升沿时间误差最大不超过t5。
(2) CONVST高电平维持一段时间,最小时间位t3。tcycle为两次采样之间的时间。
(3) CONVST x上升沿后t1时间,BUSY跳变为高电平,表示转换开始。BUSY高电平维持时间为tconv,表示正在转换,转换结束后BUSY跳变为低,表示转换结束。
(4) 转换结束后CS#拉低,表示数据输出部分使能,可以开始数据读取。 BUSY下降沿与CS#下降沿时间差t4最小可以为0,表示可以一边转换,一边读取。
(5) 准备采样前可以先复位。RESET下降沿到CONVST x上升沿时间差最小要大于t7,防止CONVST x的无效操作。

  • AD7606的并行数据读取时序图如下。 DATA

(1) CS#首先拉低,表示数据输出部分使能,可以传输数据。
(2) CS#下降沿延时t8后,RD#拉低,表示可以传输数据。RD#置1后CS#置1,表示传输结束,其时间差为t9。t8、t9最小可以为0,手册中也给出了CS#与RD#可以用一个信号控制。
(3) 在CS#不有效时,DATA引脚处于三态模式,没有数据输出。CS#拉低后即使DATA有数据,也是无效数据,只有等RD#拉低后才会有有效数据。
(4) RD#需要维持一定的低电平脉宽t10,其最小脉宽时间为16ns,这个取决于数字电源Vdrive的大小。RD#高电平脉宽t11最小可以为15ns。
(5) RD#下降沿后t14时间数据保持稳定,从上一次数据更新为下一次数据,t14为数据访问时间,最小约16ns,也随Vdrive大小变化而变化。原有数据最多只能维持t15时间,即数据保持时间,最大6ns,之后数据将发生变化。
(6) FRSTDATA用于指示何时可以获取V1数据。CS#有效且RD#拉低后,延时时间t26后FRSTDATA出现上升沿,对外部指示可以读取V1数据。在RD#的第一个下降沿后FRSTDATA出现下降沿,回到低电平。CS#无效后FRSTDATA回到三态。

  1. 数据采集FPGA代码部分
  • 仅阅读了部分代码。发现采样控制并没有IP,是自己编写的程序。

下周工作

  1. 数据采集部分

(1) 继续阅读AD7606数据手册,进一步分析采样时序图,除了要看并行数据传输外,还需要看一下串行输出传输,因为目前高速、高吞吐率数据都是串行总线传输的。
(2) 阅读AD7606模块的原理图,弄清楚其硬件结构,主要是模块与FPGA板的接口以及接口对应信号。

  1. FPGA部分

(1) 继续看MA703-35T的AD7606采集例程,弄清楚例程是怎么写的,然后在例程的基础上自行编写采样控制代码。
(2) 编写FPGA与电脑端的通信协议代码,主要是UART或者SPI通讯协议,方便将AD7606采集到的数据发送到上位机进行 观察。


本文章使用limfx的vscode插件快速发布