基于FPGA的简易电压表设计

2018-09-11 16:52:29 来源: FPGA入门到精通
标签:

传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成。这种电压表的设计简单、精确度高,但是由于采用了ASIC器件使得它欠缺灵活性,其系统功能固定,难以更新扩展。而应用FPGA设计的电压表,采用FPGA芯片控制通用A/D转换器,可使速度、灵活性大大优于通用数字电压表。、

 

本文采用STEP-MAX10M08核心板和STEP Base Board V3.0底板来完成简易电压表设计,我们将设计拆分成三个功能模块实现:

 

ADC081S101_driver: 驱动SPI接口ADC芯片实现模拟电压信号采集。

bin_to_bcd:将二进制数据转换成BCD码的方法。

Segment_led:通过驱动独立式数码管将电压数据显示出来。

 

Top-Down层次设计

 

模块结构设计

 

1. ADC介绍

模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。

 

模拟系统与数字系统结合模型

 

并行ADC和串行ADC模型

 

上图两个都是8位ADC模型,分辨率为 2的8次方等于256,即将Vref分成256份,能够分辨的模拟步进为Vref / 256,量化数据N = 256 * Vin / Vref 。

 

并行ADC与数字电路接口包含一根clk和8根data管脚,clk为芯片时钟管脚,data为芯片数据管脚,每个clk周期从data管脚采集8bit的数据,完成一次模数转换,所以clk频率等于采样率。

 

串行ADC(以ADC081S101为例)与数字电路接口为三根线(cs,clk,din),兼容三线SPI总线,cs为芯片使能管脚,clk为芯片时钟管脚,din为芯片数据管脚,当ADC芯片使能时每个clk周期从din采集1bit的数据,但是根据ADC081S101的时序,需要16个clk完成一次采样,所以clk频率至少等于采样率的16倍。

 

2. ADC模块电路连接

本设计所采用的STEP Base Board V3.0底板上的ADC模块电路,其电路图如下:

 

ADC模块电路

 

FPGA直接连接ADC081S101芯片的控制端,ADC有6个管脚,3脚Vin为VCC和Vref功能复用,即Vin = VCC = Vref。ADC前端是运放电路LMV721,运放模块为电压跟随电路,再往前端是一个跳冒排针,用来选择ADC采样信号的来源,当短路帽将1、2脚短路时,ADC采集电位计电压,当短路帽将2、3脚短路时,ADC采射频端子或P4排针信号。本设计我们是采集旋转编码器的电压,所以需要用短路帽将1、2脚短路。

 

3. ADC模块驱动设计

ADC081S101串行通信时序如下图:

 

 

注:

1. SCLK空闲时为高电平,CPOL = 1,上升沿(第二个边沿)采样,CPHA = 1,如果例化通用SPI核完成设计,需要采用SPI的第四种工作模式。

 

2. CS信号拉低有效,经过16个时钟完成一次ADC转换并采样,采样回来的数据前3位无效,接下来为DB7~DB0(有效数据),再接下来为无效数据。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
几款小而美的FPGA学习板
几款小而美的FPGA学习板

任何一种开发板,我都对小个头的感兴趣,因为越是小个头的其实越强大,从中也越能够体会出原设计者的用心和技术含量。

Lattice FPGA的集成化开发环境Diamond的安装配置

为什么要使用Lattice的FPGA?因为真的好用,用过的人都说好!

从概念到FPGA逻辑实现的设计流程
从概念到FPGA逻辑实现的设计流程

今天再啰嗦点玄学 - fpga的设计流程,因为“流程”我们学习任何一门技术都必须事先清楚的重要信息。

FPGA是什么?里面有什么?能做什么?
FPGA是什么?里面有什么?能做什么?

今天在群里有工程师问我,怎么才叫学会了FPGA,怎么才叫学好了FPGA?我相信有很多朋友有类似的问题,因为在多数人的潜意识里,FPGA是非常高深莫测的技术,能够玩转FPGA的都是大神级的人物。

FPGA到底是啥?
FPGA到底是啥?

今天在群里有工程师问我,怎么才叫学会了FPGA,怎么才叫学好了FPGA?我相信有很多朋友有类似的问题,因为在多数人的潜意识里,FPGA是非常高深莫测的技术,能够玩转FPGA的都是大神级的人物。

更多资讯
简单几步让你看懂单片机时序图

操作时序永远是使用任何一片IC芯片的最主要的内容,看懂时序图,再操控这个芯片就非常容易了。而提取芯片器件手册上有用的信息是使用芯片的最基本步骤。

如何实现SoC全生命周期的监测?

SoC的设计越来越复杂,上市时间、软硬件集成、系统级验证、系统性能、异构、网络安全/功能安全等都是设计人员需要考虑的因素。流片前,设计师能通过仿真软件进行验证,但是流片过程中很多意想不到的结果,需要在流片后仍能被准确的检测出来。

如何将单片机的波特率作为形参的函数

不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。

代码分享教你如何使用msp430单片机延时函数

今天看示例程序中出现了__delay_cycles()这个函数,在查找msp430x54x.h这个头文件的时候,发现这个头文件中没有该函数的声明,原来这个函数已经在IAR这个编译器中集成,这里总结一下__delay_cycles();这个函数的具体用法

如何控制51单片机液晶实现计时器的功能?

要想实现人机交互,显示装置是不可缺少的。前面讲到了如何利用单片机控制数码管的显示,这篇文章主要关于如何控制液晶显示,并在此基础上加上定时器的功能,把原来已用数码管显示的定时器搬到液晶屏上来。

Moore8直播课堂