预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实训七A/D和D/A接口电路及程序设计 一、实训目的 1.掌握FPGA对一种A/D芯片的控制方法和设计 2.掌握FPGA对一种D/A芯片的控制方法和设计 二、实训器材 1.EDA实验箱1台 2.微型计算机1台 3.MAX+PLUSII10.2软件1套 4.下载电缆1条 三、实训原理 (一).DAC0832接口电路设计 DAC0832是采用CMOS/Si-Cr工艺实现的8位D/A转换器。该芯片包含8位输入寄存器、8位DAC寄存器、8位D/A转换器。DAC0832中有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器,可以工作在双缓冲方式下。 FPGA与DAC0832接口电路原理图 1.FPGA与DAC0832接口电路设计 FPGA_IO1~8向DAC0832的数据输入口(DI0~DI7)输送数据。 FPGA_IO9提供DAC0832数据锁存允许控制信号ILE,高电平有效。 FPGA_IO10提供DAC0832控制信号(CS:片选信号;Xfer:数据传输控制信号;WR1、WR2:DAC寄存器写选通信号),低电平有效。 Iout1、Iout2、Rfb与运算放大器LM324完成电流/电压的转换(DAC0832属电流输出型)。 2.DAC0832输出控制时序图 根据DAC0832输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。DAC0832是8位的D/A转换器,转换周期为1μs。锯齿波形数据可以由256个点构成,每个点的数据长度为8位。又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到的锯齿波的频率为762.9Hz。 DAC0832输出控制时序图 (二)ADC0809接口电路设计 ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的精度是8位,转换时间约为100µs,含锁存控制的8路开关,输出有三态缓冲控制,单5V电源供电。 FPGA与ADC0809接口电路设计 FPGA_IO1~8接收ADC08098位数数据; FPGA_IO9接收ADC0809转换结束信号EOC; FPGA_IO10~12为ADC0809提供8路模拟信号开关的3位地址选通信号(ADD-A~C); FPGA_IO13为ADC0809提供地址锁存控制信号ALE:高电平时把三个地址信号送入地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道; FPGA_IO14为ADC0809提供输出允许控制信号ENABLE:电平由低变高时,打开输出锁存器,将转换结果的数字量送到数据总线上; FPGA_IO15为ADC0809提供启动控制信号START:一个正脉冲过后A/D开始转换; FPGA_IO16为ADC0809提供时钟信号信号CLOCK; IN0~IN7:8路模拟信号输入端口; Vref+和Vref-:参考电压输入端口; ADC0809的工作时序图 ADC0809的工作时序图 START是转换启动信号,一个正脉冲过后A/D开始转换;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号锁存信号。当模拟量送至某一输入端(如IN-0或IN-1)等,由3位地址信号选择,而地址信号由ALE锁存。 EOC是转换情况状态信号,当启动转换约100μs后,EOC产生一个负脉冲,以示转换结束。在EOC的上升沿后,且输出使能信号ENABLE为高电平,则控制打开三态缓冲器,把转换好的8位数据送至数据总线。至此ADC0809的一次转换结束 2.ADC0809采样控制状态图 四、设计程序(参考程序) --文件名:DAC0832.VHD --功能:产生频率为762.9Hz的锯齿波。 libraryieee; useieee.std_logic_1164.all; useieee.std_logic_unsigned.all; useieee.std_logic_arith.all; entityDAC0832is port(clk:instd_logic;--系统时钟 rst:instd_logic;--复位信号 ile:outstd_logic;--数据锁存允许信号 cont:outstd_logic;--控制信号(WR1、WR2、CS、Xfer) data_out:outstd_logic_vector(7downto0));--波形数据输出 endDAC0832; architecturebehavofDAC0832is signalq:integerrange0to63;--计数器 signaldata:s