IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> FPGA(6)电压测量(ADC) -> 正文阅读

[嵌入式]FPGA(6)电压测量(ADC)

module  adc8_5v(sys_clk,sys_rst,data8_in,data16_out,adc_clkout,sign,data_medium_out);

    input   wire    sys_clk,sys_rst;
    input   wire    [7:0]   data8_in;
output     [7:0]     data_medium_out;
    output  wire     adc_clkout;
    output  wire     [15:0]  data16_out;
    output  wire     sign;
    
    reg     [1:0]   cnt_sysclk;
    reg             adc_clkin;
    reg             adc_en;
    reg     [10:0]   cnt_medium;
    reg     [18:0]   adc_data_sum_medium;
    reg     [7:0]    adc_data_medium;
    reg     [27:0]      volt_reg;
    
    wire        [27:0]  data_PN_p;
    wire        [27:0]  data_PN_n;
parameter   cnt_medium_MAX=1024;
parameter   cnt_mediumBit_MAX=10;
    
    
assign  data_medium_out=data8_in;
//时钟4分频(频率为12.5MHz)(做为AD的驱动时钟)
always@(posedge sys_clk or negedge  sys_rst)
begin
    if(!sys_rst)
    begin
        adc_clkin<=1'b0;
        cnt_sysclk<=2'd0;
    end
    else    if(cnt_sysclk==2'd1)
        begin
            cnt_sysclk<=2'd0;
            adc_clkin<=~adc_clkin;
        end
    else
        begin
            cnt_sysclk<=cnt_sysclk+1'b1;
            adc_clkin<=adc_clkin;
        end
end
//用于产生前期默认的数据(使能采样)
always@(posedge adc_clkin or negedge  sys_rst)
begin
    if(!sys_rst)
        begin
            adc_en<=1'b0;
            cnt_medium<=11'd0;
        end
    else    if(cnt_medium==cnt_medium_MAX)
        begin
            adc_en<=1'b1;
            cnt_medium<=cnt_medium;
        end
    else
        begin
            adc_en<=adc_en;
            cnt_medium<=cnt_medium+1'b1;
        end
end
//用于收集多个接地的基础数据(这里为2^10)
always@(posedge adc_clkin or negedge  sys_rst)
begin
    if(!sys_rst)
        adc_data_sum_medium<=19'd0;
    else    if(cnt_medium==cnt_medium_MAX)
        adc_data_sum_medium<=adc_data_sum_medium;
    else
        adc_data_sum_medium<=adc_data_sum_medium+data8_in;
end
//取平均值
always@(posedge adc_clkin or negedge  sys_rst)
begin
    if(!sys_rst)
        adc_data_medium<=8'd0;
    else    if(cnt_medium==cnt_medium_MAX)
        adc_data_medium<=adc_data_sum_medium>>cnt_mediumBit_MAX;
    else
        adc_data_medium<=adc_data_medium;
end

//放大(2^13*1000倍)
assign  data_PN_p=(adc_en==1'b1)? 8192_0000/((255-adc_data_medium)*2):0;
assign  data_PN_n=(adc_en==1'b1)? 8192_0000/((adc_data_medium+1)*2):0;

//测量数据放大1000倍
always@(posedge adc_clkin or negedge  sys_rst)
begin
    if(!sys_rst)
        volt_reg<=28'd0;
    else    if(adc_en==1'b1)
        if((data8_in>(adc_data_medium-3))&&(data8_in<(adc_data_medium+3)))
            volt_reg<=28'd0;
    else    if(data8_in<adc_data_medium)
            volt_reg<=(data_PN_n*(adc_data_medium-data8_in))>>13;
    else    if(data8_in>adc_data_medium)
            volt_reg<=(data_PN_p*(data8_in-adc_data_medium))>>13;
    else
            volt_reg<=28'd0;
end

//数据在上升沿更新,所以adc驱动程序为下降沿采样数据
assign  adc_clkout=~adc_clkin;
assign  sign=(data8_in<adc_data_medium)? 1'b1:1'b0;


assign  data16_out=volt_reg;


endmodule

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:46:32  更:2022-02-26 11:47:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:43:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码