基于AD7819的ad测试板设计(附原理图和源代码).docx
文本预览下载声明
使用芯片为AD7819,原理图如下:
制成PCB板子后,直插在黑金FPGA开发板AX309的J3引脚,与FPGA通信。FPGA的主程序如下:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 18:33:57 03/12/2017
// Design Name:
// Module Name: AD_ctrl
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module AD_ctrl(
input CLK,
input RSTn,
input BUSY,
input [7:0] DATAIN,
//input Start_sig,
output RD,
output CS,
output CONVST,
output reg[3:0] ctrl_state,
output Done_sig
);
reg Busy_r;
reg Done_sig_r; assign Done_sig = Done_sig_r;
reg CONVST_r; assign CONVST = CONVST_r;
reg CS_r; assign CS = CS_r;
reg RD_r; assign RD = RD_r;
//处于测试需要,选择了AD手册上的136k的采样频率。总的周期数为368,去除t_power_up和t_relinquish,t_relinquish可取322。
parameter t_power_up1 = 9d40; // (1.5μs对应的时钟数为75,由于使用mode2,所以选择了较小的40个周期。
//parameter t_convst_width = 8d35;
//parameter t_busy = 8d230;
parameter t_wait = 9d265; //t-wait=剩下的t_power_up+t_busy。前一个的值是35,后一个的值取了230.
parameter t_relinquish = 9d6; //100ns,算作6个吧。本来可以是想着取322的,从而使得周期与chipscope的采样周期相同,然而实测波形经FFT后却有很大谐波失真。因此等待时间设置为6个时钟周期。
//reg[3:0] ctrl_state;
reg[8:0] ctrl_clk_r;
reg[7:0] data_in_r;
reg[8:0] chip_clk_cnt;
reg chip_clk;
always @(posedge CLK or negedge RSTn) //处于测试需要,选择了AD手册上的136k的采样频率。
begin
if(!RSTn) begin chip_clk_cnt= 9d0; chip_clk = 0; end
else if(chip_clk_cnt == 184)
begin
chip_clk = 0;
chip_clk_cnt= chip_clk_cnt + 1;
end
else if(chip_clk_cnt == 368)
begin chip_clk = 1; chip_clk_cnt= 9d0; end
else
chip_clk_cnt= chip_clk_cnt + 1;
end
always @(posedge CLK or negedge RSTn)
if (!RSTn)
begin
CONVST_r = 1d0; //按照芯片收测,要先置零
CS_r = 1d1;
RD_r = 1d1;
ctrl_state = 4d0;
data_in_r = 8
显示全部