有“记忆”的FPGA可编程电阻系统设计

2014-10-09 09:58 来源:电子信息网 作者:娣雾儿

软件设计及部分仿真结果

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

键盘扫描模块:

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

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

LED显示模块:

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

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

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

仿真结果:

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

电阻3

图3

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

总结

通过利用FPGA实现可编程电阻设计,且将周围其他数字逻辑电路也集成到该芯片中。系统特殊性得到改善,抗干扰性、控制精度都得到了一定提高,调试问题也变得简单。此外,该系统还将驱动电路、编解码电路等硬件通过VHDL语言在FPGA芯片中实现,相比模拟电路和单片机的实现方法,真正减少元器件使用,体积更小,针对不同的场合,修改起来更加灵活方便。

< 1 2 3 
FPGA 电阻

相关阅读

暂无数据

一周热门