基于CPLD/FPGA的A/D转换控制器的设计 | |
作者:江小平,刘文杰 时间:2006-12-03 来源:edi | |
摘要:介绍了用CPLD/FPGA芯片代替单片机来控制A/D器件采样工作的设计方法。整个设计用VHDL语言描述,在MAX+PLUSⅡ下进行软件编程实现正确的A/D器件的工作时序,并将采样数据从二进制转化成BCD码,用LED显示出转化结果。 关键词:CPLD;A/D转换;VHDL语言;MAX+PLUSⅡ 0 引言 对A/D器件进行采样控制,传统的方法多数是用单片机或CPU来完成的。虽然编程简单,控制灵活,但缺点是控制周期长,速度慢。而CPLD(Complex Programmable Logic Device)/FPGA(Field Programmable Gate Array)最明显的特点是高集成度、高速度和高可靠性。因此用CPLD/FPGA来对A/D器件进行控制则不存在上述问题。 1 系统设计原理 本设计用CPLD芯片EPM7128SLC84-15来对ADC0809进行采样控制,并对数据进行处理,将结果用LED显示出来。图1是基于CPLD的A/D转换控制器设计原理图。 图中CPLD芯片EPM7128SLC84-15作为ADC0809的控制器,产生ADC0809的工作时序信号,包括:START转换启动信号,ALE模拟选择地址的锁存信号。EPM7128SLC84-15在ADC0809工作过程中不断读入转换结束信号EOC来判断ADC0809是否转换结束。当EOC产生一个负脉冲,表示一次转换结束,在EOC的上升沿EPM7128SLC84-15将OE置成低电平,则ADC0809打开三态缓冲器将转换好的8位二进制数输入到EPM7128SLC84-15。 EPM7128SLC84-15接受到8位二进制数后,将其转化成三组BCD码分别送到三个BCD-7段码译码器CD4511,最终由三个LED显示转换结果。 图1 控制原理图 2 CPLD软件设计部分 本设计使用MAX+PLUSⅡ软件平台,用VHDL硬件描述语言进行软件编程。程序共分三个部分:ADC0809工作状态模块,二进制到BCD码转换模块,时钟信号分频模块。 ADC0809工作状态模块:采用双进程有限状态机的方法来实现。其状态图如图2所示。设计ST0~ST7八个工作状态。ST0:初始化。ST1:产生ALE的上升沿将模拟通道IN1的地址锁存。ST2:产生START信号上升沿,开始A/D转换。ST3:START信号延时一个脉冲。ST4:A/D转换中,等待。ST5:转换结束,开启输出允许信号OE。ST6:OE延时一个脉冲。ST7:开启数据锁存信号LOCK,输出数据。 图2 双进程有限状态图 二进制数到BCD码转换模块:本设计模拟量输入范围为0~+5V,用8位二进制数表示其精度为0.019。由二进制数转化到十进制数的计算方法为 (B727+B626+B525+B424+B323+B222+B12+B0)*0.019 =(B727+B626+B525+B424)*0.019+(B323+B222+B12+B0)*0.019 因此可将8位二进制数分成高4位和低4位,分别算出电压值并写出对应的三位BCD码列成表格,再通过查表来进行三位BCD码的相加,最终得到三组BCD码分别对应高、中、低三位输出显示,见表1。 表1 时钟分频模块:本设计时钟采用10MHz有源晶振输入到EPM7128SLC84-15,经过编程分频成500KHz提供给ADC0809。将10MHZ分频成500KHz,比例为20∶1,即10MHz有源晶振产生20个脉冲输出一个脉冲。 3 系统仿真及验证 本设计在MAX+PLUSⅡ软件下编译后进行时序仿真,其结果如图3所示。当转换数据为07H时输出三组BCD码分别为0000,0001,0100即显示0.14。最后将程序下载到硬件电路板上验证通过。 图3 时序纺真图 4 结束语 由于CPLD的高速度和高可靠性,本设计可用于超高速应用领域和实时监控方面,而且不会存在复位不可靠和程序跑飞等问题。 |
标签: CPLD A/D转换 VHDL语言 MAX+PLUSⅡ |
文章评论(0条评论)
登录后参与讨论