外部挂载的高速 AD/DA 板卡的 A/D 部分将输入其中的模拟信号转换为数字量,将数字量传入 FPGA, FPGA 将传入的数字量通过计数转化为电压数值,通过数码管显示转化后的电压值,实现模拟信号的电压测量。
整体框图如图所示。
其中adc模块。
`timescale 1ns/1ns
module adc
(
input wire sys_clk , //时钟
input wire sys_rst_n , //复位信号,低电平有效
input wire [7:0] ad_data , //AD输入数据
output wire ad_clk , //AD驱动时钟,最大支持20Mhz时钟
output wire sign , //正负符号位
output wire [15:0] volt //数据转换后的电压值
);
//parameter define
parameter CNT_DATA_MAX = 11'd1024; //数据累加次数
//wire define
wire [27:0] data_p ; //根据中值计算出的正向电压AD分辨率
wire [27:0] data_n ; //根据中值计算出的负向电压AD分辨率
//reg define
reg median_en ; //中值使能
reg [10:0] cnt_median ; //中值数据累加计数器
reg [18:0] data_sum_m ; //1024次中值数据累加总和
reg [7:0] data_median ; //中值数据
reg [1:0] cnt_sys_clk ; //时钟分频计数器
reg clk_sample ; //采样数据时钟
reg [27:0] volt_reg ; //电压值寄存
//数据ad_data是在ad_sys_clk的上升沿更新
//所以在ad_sys_clk的下降沿采集数据是数据稳定的时刻
//FPGA内部一般使用上升沿锁存