AD9226 65M采样 模数转换

目录

AD9220_ReadTEST

AD9220_ReadModule

AD9226_TEST_tb

[自己再写个 260M的时钟,四分频来提供65M的时钟。](#自己再写个 260M的时钟,四分频来提供65M的时钟。)


用 vivado 写的

AD9226_ReadTEST
复制代码
module AD9226_ReadTEST(
input clk,
input rstn,

output clk_driver,	//模块时钟管脚
input [12:0]IO_data,	//模块数据管脚

output [11:0]ADC_Data,//12位ADC数据
output ADC_OTR			//信号过压标志位
);

wire areset, pll260m_lockedPIN;
wire pll_260M;
assign areset = ~rstn;

/*
锁相环:
用于产生240M时钟
*/



pll260m	U0_pll260m_inst (
	.clk_in1  ( clk ),
	.clk_out1 ( pll_260M ),
	.locked   ( pll260m_lockedPIN )
	);

/*
AD9226控制器:
将输入的260M时钟4分频(在AD9226_ReadModule.V中定义)后,用于驱动AD9226模块,并采集信号电压数据。
数据输入电压对应关系(受信号调理电路器件值公差影响,不同模块可能有微小差异):
信号(-10V)~(+10V):数据(0~4095)
*/
AD9226_ReadModule U1_AD9226_ReadModule(
.clk(pll_260M),
.rstn(rstn),

.clk_driver(clk_driver),
.IO_data(IO_data),

.ADC_Data({ADC_OTR, ADC_Data})
);

endmodule
AD9226_ReadModule
复制代码
module AD9226_ReadModule(
input clk,
input rstn,

output reg clk_driver,
input [12:0]IO_data,

output reg [12:0]ADC_Data
);

`define clkOutPeriod  4		//模块驱动时钟分频,clk_driver = clk/4 = 260M/4 = 65M
reg [31:0]clkCnt;
always @(posedge clk or negedge rstn)
	if(!rstn)
		clkCnt <= 32'd0;
	else if(clkCnt == (`clkOutPeriod-1)) begin
		clkCnt <= 32'd0;
	end
	else begin
		clkCnt <= clkCnt + 32'd1;
	end
	
always @(posedge clk or negedge rstn)
	if(!rstn) begin
		clk_driver <= 1'd0;
		ADC_Data <= 13'd0;
	end
	else if(clkCnt == `clkOutPeriod/2-1) begin
		clk_driver <= 1'd1;
		ADC_Data <= IO_data;
	end
	else if(clkCnt == `clkOutPeriod-1) begin
		clk_driver <= 1'd0;
		ADC_Data <= ADC_Data;
	end
	else begin
		clk_driver <= clk_driver;
		ADC_Data <= ADC_Data;
	end

endmodule
AD9226_TEST_tb
复制代码
`timescale 1ns/1ns

`define clock_period 20
module AD9226_TEST_tb;

reg Clock;
reg Rst_n;
//reg a,b,c;
wire clk_driver;
//wire [1:0]out;
reg [12:0]IO_data;
wire [12:0]ADC_Data;
	//block_nonblock block_nonblock0(Clock,Rst_n,a,b,c,out);
    
AD9226_ReadModule U0_AD9226_ReadModule(
    .clk(Clock),
    .rstn(Rst_n),
    .clk_driver(clk_driver),
    .IO_data(IO_data),
    .ADC_Data(ADC_Data)
);

initial Clock = 1;
always#(`clock_period/2) Clock = ~Clock;

initial begin
    Rst_n = 1'b0;
    IO_data <= 13'd0;
    #(`clock_period*200 + 1);
    Rst_n = 1'b1;
    #(`clock_period*200);		IO_data <= 13'd0;
    #(`clock_period*200);		IO_data <= 13'd1;
    #(`clock_period*200);		IO_data <= 13'd2;
    #(`clock_period*200);		IO_data <= 13'd3;
    #(`clock_period*200);		IO_data <= 13'd4;
    #(`clock_period*200);		IO_data <= 13'd5;
    #(`clock_period*200);		IO_data <= 13'd6;
    #(`clock_period*200);		IO_data <= 13'd7;
    #(`clock_period*200);
    $stop;	
end
	



endmodule
自己再写个 260M的时钟,四分频来提供65M的时钟。

OK 最终生成

相关推荐
Szime13 分钟前
高速 ADC 国产替代选型:通信、雷达、仪器仪表项目要看哪些参数?
单片机·嵌入式硬件·fpga开发
Szime1 小时前
国产高速ADC推荐与选型观察:从进口依赖到国产替代评估,深智微科技提供项目导入支持
科技·fpga开发
森旺电子10 小时前
Vivado使用心得
fpga开发
FPGA小徐10 小时前
AI 浪潮下,FPGA 如何实现自我重塑与行业变革
人工智能·fpga开发
FPGA小徐11 小时前
[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH
fpga开发
Szime12 小时前
AD9218 国产替代方向:双通道 10 位 105MSPS ADC 选型支持
单片机·嵌入式硬件·fpga开发·汽车
ALINX技术博客12 小时前
ALINX VD100+Simulink 快速实现 FPGA 图像处理 Sobel 边缘检测
图像处理·人工智能·fpga开发
FPGA小徐12 小时前
FPGA开发中的常用通信协议与通信接口区别与联系
fpga开发
Szime14 小时前
深智微40Gsps高速数据采集系统进入工程化阶段
科技·单片机·嵌入式硬件·fpga开发
2601_961845421 天前
2027考研数学大纲|数一数二数三
考研·fpga开发·ar·vr·mr·oneflow