FPGA Verilog HDL实现AD转换,代码超详细!
扫描二维码
随时随地手机看文章
一直以来,AD转换都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来FPGA Verilog HDL实现AD转换的实例设计的相关介绍,详细内容请看下文。
一、AD转换原理
AD转换的基本原理包括取样定理、量化和编码、以及取样-保持电路。
1、取样定理:为了保证能从取样信号恢复原来的被取样信号,必须满足取样频率大于等于2倍的输入模拟信号的最高频率分量的频率。这是因为转换是在取样后的保持时间内完成的,所以转换结果所对应的模拟电压是每次取样结束时的值。
2、量化和编码:数字信号在时间上是离散的,数值的大小变化也是不连续的。A/D转换时,必须将取样电压表示为某个规定的最小单位的整倍数,这个过程称为量化。所取的最小数量单位是量化单位。数字信号的最低有效位(LSB)的1所表示的数量大小就等于量化单位。将量化的结果用代码(二进制等)表示出来称为编码。量化误差是量化过程中引入的误差。
3、取样-保持电路:在取样过程中,电容上的电压达到稳态值所需要的时间称为获取时间。保持阶段输出电压的下降率△V0/△T是衡量取样-保持电路的重要指标。
此外,AD转换器的工作过程还包括采样、保持、量化、编码、输出等几个环节。按照其变换原理可以分为逐次比较式、并行式A/D转换器、子区式A/D转换器、∑-∆AD转换器等。逐次比较式ADC采用了四舍五入的量化方式,其优点是转换原理直观、电路简单、成本低、转换精度较高,适用于高精度、中速以下的场合。并行式A/D转换器模拟信号同时输入到带锁存的比较器中,每个比较器的参考电压都比下一个的参考电压高出一个LSB所代表的电压值,输出结果送往译码逻辑处理,输出最终的二进制结果。子区式A/D转换器用第一片并行式A/D转换器数字化输出高四位,将这四位送至D/A转换器进行模数变换,输入的模拟信号与D/A的输出信号相减,差值送给第二片并行式A/D转换器。两片A/D转换器的输出合并在一起,构成了8位的A/D输出。∑-∆AD转换器是一种过采样量化器,利用过采样、噪声整形、数字滤波等手段来提高数字化性能,适用于通信信号对灵敏度、动态范围要求高的情况。
二、FPGA Verilog HDL系列实例—AD转换
(一)ADC0809
ADC0809 8通道8位a/d转换器,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。如图3.1所示。
图3.1 ADC0809的内部结构和引脚定义
下面我们将看看是如何根据它的时序图完成对芯片的驱动的。
图3.2 ADC0809时序图
(二)Verilog HDL实现
实现步骤请参照 【连载】 FPGA Verilog HDL 系列实例--------8-3编码器。这里就不再赘述。
设计文件输入Verilog HDL代码。
上面一长串代码,刚接触的人一看可能会头大,但要是仔细分析一下,就会很好理解了。本实现有三部分组成:
1.第44行~第59行:时钟分频,系统时钟为50MHZ,ADC0809的驱动频率不需要这么快,所以需要分频。一般在500KHZ左右,实例中用的是750KHz。
2.第67行~第128行:对ADC0809时序的实现。自己好好理解下哦。一次模数转换经过6个步骤完成。第3步和第4步需要查看EOC的状态来确定是否将模拟数据转换完毕。
3.第137行~第183行:将模拟数据转化到的数字数据输出到2个数码管上。图3.3是ADC0809的外部接口。
图3.3 ADC0809的外部接口
分配引脚:
clk接系统时钟,rst接复位信号,abc_in[2..0]接三个按键,seven_seg[15..0]接2个七段数码管,其余的是ADC0809上的型号,这是由硬件连线决定的,只要搞清楚它们是输入还是输出就行了。
以上所有内容便是小编此次为大家带来的所有介绍,如果你想了解更多有关它的内容,不妨在我们网站或者百度、google进行探索哦。