loading
有生意网 >采用FPGA的可编程电阻的设计结构分析
采用FPGA的可编程电阻的设计结构分析

采用FPGA的可编程电阻的设计结构分析

胡锡 发表于2016-03-25

现在市场上的各种电阻和电阻箱有不足之处不能满足一些研发场所的要求为了解决这一问题本文介绍一种基于FPGA的可直接输入阻值提供不同电阻的设计方法FPGA通过控制继电器的吸合从而确定与其并联的电阻的接入与否最后通过电阻的叠加得到不同阻值介绍了该设计的工作原理及软件设计思想并有部分仿真结果

这种设计使用8421编码原则和硬件描述语言减少了一些元器件的使用相比于市场上的产品其稳定性更高抗干扰性更强体积也更小同时它的操作更简便显示更直观

0 引言

电阻几乎是所有电路中必不可少的部分常见的也有很多不同阻值的电阻然而在一些电路中同一位置不同时刻还需要不同阻值在一些精度要求不高的场合可用滑动变阻器来实现但是我们不能确定其具体阻值随着技术的进一步发展为了满足教学研某些场合的需要阻值确定并可调的电阻箱应运而生电阻箱提供阻值的原理是通过电阻的串并联得到的不同阻值因而用到的电阻数量较多精度也不够高而且还需要对所需电阻的每一位数选择相应的档位比较麻烦也不够直观而在一些生产应用中如产品校验需同时提供几组不同电阻且要重复提供如做产品老化检测实验这就需要将该阻值记录下来而以前的电阻箱都不具备记忆功能不能满足要求

本文介绍了用FPGA来实现控制电阻的提供用软件的方式来设计硬件设计过程中可用有关软件进行各种仿真同时整个系统可集成在一个芯片上体积小功耗低可靠性高又因为其内部有存储单元所以能够满足上述的记忆功能

1 硬件电路

基于FPGA的可编程电阻系统的硬件系统如图1所示主要由以下几个功能模块组成

1.1 主控制器FPGA

FPGA本设计中选用的是CycloneII系列控制中心是整个设计的核心主要控制实现对系统的键盘输入进行处理并根据输入的信息转换成输出数据控制对应的继电器的吸合从而得到不同的阻值

以往可编程网络的主控制器有采用数字电路控制的也有采用单片机控制的本电路采用FPGA控制EPGA是近几年来出现并被广泛应用的大规模集成电路器件它的特点是直接面向用户具有极大的灵活性和通用性使用方便硬件测试和实现快捷开发效率高成本低上市时间短技术维护简单工作可靠性好等因而用来设计可编程电阻其灵活性更好

采用FPGA的可编程电阻的设计

目前市场上主要生产FPGA产品的公司有LatticeXilinxAltera在教学过程中一般使用Altera公司生产的FLEX系列和Cyclone系列较多鉴于产品的成本和通用性考虑本实验中采用CycloneII它是第二代低成本FPGA系列它所拥有的独特性能有NiosII嵌入式处理器支持嵌入式18*18数字信号处理乘法器中等容量的片内存储器(能够满足本设计的要求)中等速度的I/O引脚和存储器接口在性价比上更适合本设计所以在本设计中选用此系列

1.2 键盘输入电路

键盘输入电路主要实现输出电阻值大小的设定本设计中采用的4*4简易键盘输入即可满足要求可提供简单明了的数字键和功能键共16个键包括

数字输入键数字键0~9按下数字键输入一个数字就可在对应的数码管上显示

功能键电阻1电阻2本设计可以同时提供两组电阻可以选择电阻1也可以选择电阻2提供一组电阻也可以电阻1电阻2同时选择提供两组电阻

存储每输入完一个数字后按一下存储键以便能够将几个数据存储下来运行后将按数据存储的先后顺序及预置的时间工作循环提供数据

运行此键作为存储完数据后的启动键

停止停止提供电阻

复位可作为修改数据时用按此键后可以使以前存储的数据都清零然后重置一组数据

1.3 继电器电阻网络

电阻网络其原理图如图2所示从图中可以看出开关的闭合决定与其对应的电阻的接入与否本设计中采用8421编码原理控制提供各阻值

采用FPGA的可编程电阻的设计

本设计所供用的电阻要精确到0.1Ω所以此电阻网络所使用的电阻都是精密电阻这里我们以提供电阻阻值在1500Ω以内的电阻为例来说明此电阻网络采用串联的方式来实现8421编码方式只要控制相应的继电器将其对应的精密电阻短接就可以实现以1500Ω以内电阻为例只需16个电阻就可以满足要求通过控制继电器J1至J16的断开或闭合其对应的电阻就会接入或断开最后接入的电阻串联相加就得输出的电阻值

如通过键盘输入一个预置值如果输入的数值为545.7Ω输出的阻值大小就可以表示R=400+100+40+4+1+0.4+0.2+0.1即只需将这些电阻需要接入相应的继电器J1J2J3J5J7J11J13J15要断开其余的继电器则闭合对应的二进制代码则为0101010001010111B通过此列可以看出用16个电阻就可以实现1500Ω以内的精度可达到0.1Ω的任何电阻使用电阻数量小通过程序来控制电阻的接入体积更小同时维护起来也更加方便如果需要大于1500Ω的电阻同样可以根据此原理来增加电阻如8000400020001000等因为此设计中同时提供两个电阻因而还要16个同样的电阻原理同上根据不同场合如要提供三组或三组以上的电阻只需相应增加即可

1.4 输出显示电路

输出显示电路主要功能是实时显示对应的键盘输入电阻值的大小当前工作的步数和预置时间根据要求本实验采用数码管来显示其阻值即可能够满足要求为了显示以上数据每个阻值的显示至少需要九个数码管其中五位用来显示当前阻值的大小两位用来显示当前的工作步数两位用来显示数据的工作时间如果采用静态显示控制将会需要相当多的引脚端资源9×2×8=144个为了减少对FPGA引脚资源的使用本设计中采用扫描的方式来实现LED的动态显示

2 软件设计及部分仿真结果

本设计中主要控制程序都是通过FPGA的软件编程来实现软件设计大体可以分为三个大模块键盘扫描模块LED显示模块继电器电阻驱动电路模块

2.1 键盘扫描模块

键盘扫描模块主要用来检测外界输入的数据主要由分频器电路键盘扫描计数器电路键盘行和列按键检测电路按键抖动消除电路和键盘编码电路组成

因为本设计中外接频率为一般用6MHz的信号作为时钟信号但是键盘扫描不需要那么高的频率所以需要一个分频电路将其频率降低为1kHz键盘扫描计数器主要为键盘行和列按键检测电路和键盘编码电路服务键盘行和列按键检测电路用来检测键盘输入所在行列的位置按键抖动消除电路主要目的是为了避免按键时键盘产生的拉动效应使按键使能位产生不必要的抖动变化而造成重复统计按键次数的结果同时键盘位置的代号并不是键盘上的按键值所以要用键盘编码电路来传递真正的按键值

2.2 LED显示模块

LED显示模块采用动态显示方式这种实现方法是依次点亮各个LED数码管循环进行显示这种显示方式控制好数码管之间的延时相当重要根据人眼视觉暂留原理LED数码管每秒的导通16次以上人眼就无法分辩LED数码管短暂的不亮认为是一直点亮的但延时也不是越小越好因为LED数码管达到一定亮需要一定时间为了达到较好的效果本设计中延时取0.005s

2.3 继电器电阻驱动电路模块

继电器电阻驱动电路模块主要是FPGA根据键盘输入的电阻值判断相应的一些电阻是否要接入从而使电阻对应的继电器闭合或断开给予其对应的信号1或0即可

2.4 仿真结果

由上述理论可知电阻1的产生原理和电阻2的产生原理完全一样为了使仿真结果更加明了这里的仿真波形只用电阻1来验证其正确性其仿真波形如图3所示

采用FPGA的可编程电阻的设计

此图是仿真图中的一部分只选择了几个有代表性的信号显示出来加以说明从图中可以看出有时钟信号clk复位信号reset电阻1选择信号resistance1num11至num51显示的分别是电阻值的小数位个位十位百位千位step11和step21分别显示的是当前工作的步数的个位和十位其中time11和time21分别显示的是工作时间的个位和十位Bus9则是动态显示时的数据信号JIDIANQI则代表的是16个继电器的开关状态从上图中可以看出该电阻的小数位的段码为07H对应的二进制就是00000111其对应显示的数字是7即小数位为7同理可知其个位数为5十位数为4百位数为3千位数为1所以其阻值就为1345.7Ω从图中可以看出总线上是循环传递着时间步数和数值信息根据阻值其相应的继电器会闭合根据上述电阻网络原理J4J6J8J9J10J12J14闭合其余的继电器均断开即对应的二进制代码为0010101110101000B换算成十六进制即为2BA8从上图可以看出其验证结果是正确的

3 结束语

系统通过引进FPGA来实现电阻提供这一模块且将周围其他数字逻辑电路也集成至该芯片中这样既解决了系统的特殊性又增强了系统的抗干扰性提高了控制精度也简化了调试此外本系统还将驱动电路编解码电路等硬件通过VHDL语言在FPGA芯片中实现相比以前的模拟电路和单片机的实现方法使用的元器件更少体积也更小针对不同场合修改起来也更加方便具有很好的市场前景

内容声明:本文仅代表作者观点,不代表本网站立场。本站对作者上传的所有内容将尽可能审核来源及出处,但对内容不作任何保证或承诺。请读者仅作参考并自行核实其真实性及合法性。如您发现图文视频内容来源标注有误或侵犯了您的权益请告知,本站将及时予以修改或删除。未经作者许可,禁止转载。
还没有用户评论

推荐服务

评论
点赞
收藏
分享
举报
胡锡发表于2016-03-25