FAGA+ADS1118+异步FIFO+串口源程序芯片解密
- 文件名 : ADS1118_module.v
- //-- 作者 : 芯片解密
- //-- 描述 : ADS1118模/数转换芯片驱动时序
- //-- 修订历史 : 芯片解密
- //---------------------------------------------------------------------------
- `define SCLK_TIME 11'd2000 //0.025M=25khz, 40us,40 / (1 / 50M) = 2000
- `define SCLK_TIME_HALF 10'd1000 //40us / 2 = 20us 10 / 2 = 1000
- module ADS1118_module(CLK_50M,RST,CS,DIN,DOUT,SCLK,fifo_wclk,ADC_result);
- /*parameter ADS_config_AIN0=16'h458A; //ADS1118配置数据(模拟通道0)0100_0101_1000_1010
- parameter ADS_config_AIN1=16'h558A; //ADS1118配置数据(模拟通道1)0101_0101_1000_1010
- parameter ADS_config_AIN2=16'h658A; //ADS1118配置数据(模拟通道2)0110_0101_1000_1010
- parameter ADS_config_AIN3=16'h758A; //ADS1118配置数据(模拟通道3)0111_0101_1000_1010*/
- /*parameter ADS_config_AIN0=16'h448A; //ADS1118配置数据(模拟通道0)0100_0100_1000_1010
- parameter ADS_config_AIN1=16'h548A; //ADS1118配置数据(模拟通道1)0101_0100_1000_1010
- parameter ADS_config_AIN2=16'h648A; //ADS1118配置数据(模拟通道2)0110_0100_1000_1010
- parameter ADS_config_AIN3=16'h748A; //ADS1118配置数据(模拟通道3)0111_0100_1000_1010*/
- parameter ADS_config_AIN0=16'hC2E3; //ADS1118配置数据(模拟通道0)1100_0010_1110_0011
- parameter ADS_config_AIN1=16'hC2E3; //ADS1118配置数据(模拟通道1)0101_0100_1000_1010
- parameter ADS_config_AIN2=16'hE2E3; //ADS1118配置数据(模拟通道2)1110_0010_1110_0011
- parameter ADS_config_AIN3=16'hE2E3; //ADS1118配置数据(模拟通道3)0111_0100_1000_1010
- //---------------------------------------------------------------------------
- //-- 外部端口声明
- //---------------------------------------------------------------------------
- input CLK_50M,RST;
- input DOUT; //The result of ADC
- output CS; //The signal of starting converting
- output DIN; //The signal of serial input
- output SCLK; //The clock siganl of ADC chip
- output fifo_wclk; //The write clk of fifo module
- output [ 7:0]ADC_result; //The 8bit data of ADC
- //---------------------------------------------------------------------------
- //-- 内部端口声明
- //---------------------------------------------------------------------------
- wire DIN; //AD串行数据输入
- reg DIN_N; //DIN的下一个状态
- reg CS; //AD片选信号
- reg CS_N; //CS的下一个状态
- reg SCLK; //AD时钟,最大不超过4MHz,最小为35.71Hz,这里设置为2.5MHz
- reg SCLK_N; //SCLK的下一个状态
- reg [ 2:0] fsm_cs; //状态机的当前状态
- reg [ 2:0] fsm_ns; //状态机的下一个状态
- reg [ 11:0] time_cnt; //用于记录一个时钟所用时间的定时器
- reg [ 11:0] time_cnt_n; //time_cnt的下一个状态
- reg [ 4:0] bit_cnt; //用来记录时钟周期个数的计数器
- reg [ 4:0] bit_cnt_n; //bit_cnt的下一个状态
- reg [ 1:0] flag; //用来标记四个通道采样的顺序
- reg [ 1:0] flag_n; //flag的下一个状态
- reg [15:0] ADC_DATA; //用来保存稳定的16bit AD数据
- reg [15:0] ADC_DATA_n; //ADC_DATA的下一个状态
- reg [15:0] ad_data_reg; //用于保存数据的移位寄存器
- reg [15:0] ad_data_reg_n; //ad_data_reg的下一个状态
- reg [15:0] ADS_config_data; //ADS1118配置寄存器
- reg wfifo_clk_n1; //fifo_wclk_n的下一个状态
- reg wfifo_clk_n2; //fifo_wclk_n的下一个状态
- reg [15:0] wfifo_clk_cnt; //用于计数ADC_DATA的脉宽
- reg [15:0] wfifo_clk_cnt_n; //wfifo_clk_cnt的下一个状态
- reg data_flag; //16bit ADC数据拆分为8bit的标志
- //1:发送低8位
- //0:发送高八位
- reg [ 7:0] ADC_result; //拆分ADS芯片16bit的采样结果(便于串口传输)
- //---------------------------------------------------------------------------

芯片解密