基于CPLD的数据采集与显示接口电路仿真设计
C=‘1’,ALE=START=OE=LOCK=‘0’;
S1态:通道锁存状态。ALE=‘1’,START=OE=LOCK=‘0’:
S2态:启动A/D转换状态。ALE=‘1’,START=‘1’,OE=LOCK=‘0’;
S3态:A/D转换等待状态,ALE=START=‘0’,OE=LOCK=‘0’;
IF EOC=‘0’保持当前状态不变,继续等待A/D转换,ELSE转换结束,进入下一状态;
S4态:数据输出允许状态,A/D转换完毕,开启数据输出允许信号,ALE=‘0’,START’0’,OE=‘1’,LOCK=‘0’;
S5态:数据锁存状态,开启数据锁存信号,将转换结果送锁存器锁存,ALE=‘0’,START=‘0’,OE=‘1’,LOCK=‘0’;
S6态:延时状态,为了保证数据可靠锁存,延时一个时钟状态周期;ALE=‘0’,START=‘0’,OE=‘1’,LOCK=‘1’;
其他状态:返回到初始状态,ALE=START=OE=LOCK=‘0’。
1.3.2 ADC0809状态机程序设计
ADC0809为单极性输入,8位转换精度逐次逼进式A/D转换器。其采样速度为每次转换约100μs。在转换开始前由地址锁存允许信号ALE将3位地址锁入锁存器中以确定转换信号通道。EOC为转换结束状态信号,由低电平转为高电平时指示转换结束,此时可读入转换好的8位数据。EOC在低电平时指示正在进行转换。START为转换启动信号,上升沿启动。OE为数据输出允许高电平有效。CLK为ADC转换时钟输入端口500 kHz左右。为了达到A/D器件的最高转换速度,A/D转换控制器必须包含监测EOC信号的逻辑,一旦EOC从低电平变为高电平即可将OE置为高电平,然后传送或显示已转换好的数据[D0..D7]。状态机由三个进程组成ADC,AD_STATE和DATA_LOCK。ADC是此状态机的主控组合逻辑进程,确定状态的转换方式和反馈控制信号的输出工作过程中首先监测系统复位信号RST,当其为高电平时使此进程复位至初始态ST0。启动A/D转换信号START在状态ST3搜索转换状态信号EOC由0变1时即在状态ST4开启输出。使能信号OE在下一状态使LOCK产生一个上跳沿从而在此时启动进程DATA_LOCK将由0809转换好的8位数据锁进锁存器ADC_DATA。根据时序电路图通过状态机设计程序完成与CPLD/FPGA芯片的连接。图3为状态机程序仿真结果。
1.4 BCD码转换与显示电路设计
当ADC0809的基准电压(Vref)为5.12 V时,最小电压准位是5.12/28=0.2 V。分析模拟输入电压与输出电压的对应关系可知,当ADC0809的D[7..0]收到的数据信号为10000110(即86H)时,则高4位1000为2.56 V,而低4位0110为0.12 V,所以最后的电压输出结果是2.68 V。为了方便后续的电压数据显示,在此将输出电压表示成12位的BCD码形式。将高4位数据D(7..4)转换为对应的高12位BCD码H(11..0);将低4位数据D(3..0)转换为对应的低12位BCD码L(11..0)。在程序中首先用VHDL语言描述一个新的进程Process(regl),然后采用case…when…语句,生成并行结构的电路。
将生成的高12位BCD码与低12位的BCD码相加,得到12位的BCD码,该结果即为所求的BCD码结果。如上述的256 V的BCD码是0010 0101 0110,0.12 V的BCD码是0000 0001 0010,所以相加的结果是0010 0110 1000,即为2.68 V。因此在电路中必须设计一个12位的BCD码加法程序,实现由8位二进制转换为12位BCD码硬件电路。在程序设计中应当注意的是BCD码相加时,由最低4位加起,且每4位相加的结果超过1001时,应加0110调整。该段程序的描述是通过一个进程Process(HB,LB,CEN)来实现。其中HB表示生成的高12位BCD码,LB表示生成的低12位BCD码,CEN表示系统提供的时钟信号。在时钟上升沿时刻进行BCD码相加,并判断结果是否超过1001,判断程序采用if…then…语句,实现条件判断电路。按照图4完成BCD码程序转换设计。将以上两段程序进行组合,最终获得由VHDL语言描述的BCD码转换程序。
1.5 A/D转换与BCD码合成系统电路
将A/D转换电路与BCD码转换电路组成统一系统,通过硬件编程语言VHDL中的进程语句将编制成功的A/D转换电路描述语句和BCD码转换电路描述语句组合成一个整体程序,通过QuartusⅡ软件生成系统图,如图5所示。
A/D转换结果由3位十进制数表示,每位十进制数由4位BCD码表示,总共有12位BCD码输出。将电路输出BCDOUT(11..0)分成BCDOUT(11..
- 基于CPLD的激光驱动电源的设计(08-26)
- 在CPLD基础上的电器定时开关控制系统设计(03-29)
- 基于DSP与CPLD设计智能变电站电网的IED(02-25)
- 基于ADSP-TS101S的多芯片数字信号处理系统的实现方案(02-11)
- 51单片机+CPLD让系统更高效(10-25)
- 基于CPLD的线阵CCD数据采集系统的开发(04-14)