• 基于FPGA的AD0832


    基于FPGA的AD0832

    芯片特点

    ADC0832 具有以下特点:

    • 8 位分辨率;
    • 双通道 A/D 转换;
    • 输入输出电平与 TTL/CMOS 相兼容;
    • 5V 电源供电时输入电压在 0~5V 之间;
    • 工作频率为 250KHZ,转换时间为 32μS;
    • 一般功耗仅为 15mW;
    • 8P、14P—DIP(双列直插) 、PICC 多种封装;
    • 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C;

    芯片引脚

    芯片接口说明

    • CS_ 片选使能,低电平芯片使能。
    • CH0 模拟输入通道 0,或作为 IN+/-使用。
    • CH1 模拟输入通道 1,或作为 IN+/-使用。
    • GND 芯片参考 0 电位(地) 。
    • DI 数据信号输入,选择通道控制。
    • DO 数据信号输出,转换数据输出。
    • CLK 芯片时钟输入。
    • Vcc/REF 电源输入及参考电压输入(复用)

    芯片通道选择

    当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的 数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。 在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能,其功能项:

    • 当2位数据为"1""0"时,只对CH0进行单通道转换;
    • 当2位数据为"1""1"时,只对CH1进行单通道转;
    • 当2位数据为"0""0"时,将CH0作为正输入端IN+,CH1作为负入端IN-进行输入;
    • 当2位数据为"0""1"时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入;

     

    本设计采用第一种工作模式,代码设置如下图所示:

     

    芯片时序

    当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,

    • 在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号;
    • 在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能;
    • 在第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据,直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成;
    • 也正是从此位开始输出下一个相反字节的数据,即从第11个脉冲的下沉输出DATD0,随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次 A/D 转换的结束;
    • 最后将CS置高电平,禁用芯片,直接将转换后的数据进行处理就可以了。

    注意:通常ADC0832在输出以最高位(MSB)开头的数据流后,会以最低位(LSB)开头重输出一遍(前面的数据流)。

    因此,编程时要发两轮脉冲,第一次取数据,第二次若不要从低到高的数据,也必须要发一轮8 个脉冲将0832中寄存器的数据移出。

    芯片驱动

        本设计采用状态机进行设计:

    顶层接口

    顶层原理图

    顶层代码接口

    数码管显示原理

    位选信号

    本设计采用共阳数码管,即位选低电平有效,需要使用3位数码管显示3位的学号,所以需要位宽为3bit的位选信号,并且将位选信号设置为低电平;

    段选信号

    本设计采用共阳数码管,数码管的段选信号为8bit,数码管的段选对应实物图如下:

    一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成,; 因为发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种: +5V(即为共阳极数码管)、接地(即为共阴极数码管),其中共阳极每个段均有0导通,而共阴极则1导通发光,所以共阳极数码管和共阴极数码管显然是不同的,段选码表如下图所示:

        由于采集ADC0832的数据位8bit二进制数据,而数码管显示位3位数码管,所以在进行BCD转换之前需要先提取出8bit数据的个、十、百这三个位,然后再进行BCD码转换。

    编译报告

        本设计使用的逻辑单元数量为373个,只占用到所选器件EP2C5T144C6所有逻辑单元总数的8%。

    仿真图

    学号012

        图中红色箭头所指的信号done_out为高电平,表示采集ADC0832的8位数据已经完成,data_out信号输出采集结果为12,同时,可以读出进行提取个位、十位、百位的二进制数,然后进行转换为数码管显示需要的BCD码,通过仿真结果图可以看出:

    个位对应的十六进制数为:A4-----------数码管显示字型:2

    十位对应的十六进制数为:F9-----------数码管显示字型:1

    百位对应的十六进制数为:C0-----------数码管显示字型:0

    根据段选码表如下图所示:

    学号013

    图中红色箭头所指的信号done_out为高电平,表示采集ADC0832的8位数据已经完成,data_out信号输出采集结果为13,同时,可以读出进行提取个位、十位、百位的二进制数,然后进行转换为数码管显示需要的BCD码,通过仿真结果图可以看出:

    个位对应的十六进制数为:B0-----------数码管显示字型:3

    十位对应的十六进制数为:F9-----------数码管显示字型:1

    百位对应的十六进制数为:C0-----------数码管显示字型:0

    根据段选码表如下图所示:

    学号021

    图中红色箭头所指的信号done_out为高电平,表示采集ADC0832的8位数据已经完成,data_out信号输出采集结果为21,同时,可以读出进行提取个位、十位、百位的二进制数,然后进行转换为数码管显示需要的BCD码,通过仿真结果图可以看出:

    个位对应的十六进制数为:F9-----------数码管显示字型:1

    十位对应的十六进制数为:A4-----------数码管显示字型:2

    百位对应的十六进制数为:C0-----------数码管显示字型:0

    根据段选码表如下图所示:

    学号026

    图中红色箭头所指的信号done_out为高电平,表示采集ADC0832的8位数据已经完成,data_out信号输出采集结果为26,同时,可以读出进行提取个位、十位、百位的二进制数,然后进行转换为数码管显示需要的BCD码,通过仿真结果图可以看出:

    个位对应的十六进制数为:82-----------数码管显示字型:6

    十位对应的十六进制数为:A4-----------数码管显示字型:2

    百位对应的十六进制数为:C0-----------数码管显示字型:0

    根据段选码表如下图所示:

    配套FPGA开发板(含该设计的工程代码):https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-4676525296.4.6e8950ed57YPhv&id=17848039135

  • 相关阅读:
    GNU make查找makefile的顺序
    解决ssh登录过慢的问题
    大小端转换定义结构体的技巧
    git解决git apply时遇到trailing whitespace问题
    Qualcomm Atheros AR9485 无线网卡驱动问题
    tcpdump入门笔记
    Linux内核探索之路——关于书
    Ubuntu下最好用的词典Golden Dict设置支持有道
    ubuntu14.04完美安装并设置搜狗输入法
    ubuntu网络已禁用的解决方案
  • 原文地址:https://www.cnblogs.com/logic3/p/8469012.html
Copyright © 2020-2023  润新知