您好,欢迎来到世旅网。
搜索
您的当前位置:首页AD9707高速DAC的内部寄存器配置

AD9707高速DAC的内部寄存器配置

来源:世旅网
| I AD9707高速DAC的内部寄存器配置 赵孔新。毕韬 (长春工业大学计算机科学与工程学院,长春130012) 摘要:由于高速DAC内部集成度的不断加大,DAC外围电路趋于简单化,用户可以根据自己的需求配置DAC内部寄存 器来选择DAC的工作模式。本文在介绍AD9707的工作原理和典型电路的基础上,着重阐述了通过ARM和FPGA两 种方式分别配置AD9707内部寄存器的方法,同时给出了两种配置方法基本操作的具体步骤和相应代码。 关键词:高速DAC;SPI;FPGA;驱动程序;’AD9707 中图分类号:TP212 文献标识码:A Internal Register Configuration of High—speed DAC Based on AD9707 Zhao Kongxin.Bi Tao (College of Computer Science&.Engineering,Changchun University of Technology,Changchun 130012,China) Abstract:With higher degree of internal integration of high speed DAC,the external circuit tends to be more simplified.Users can select the operating mode of DAC according to their own needs by configuration of the internal registers.After the introduction of AD9707’S working principle and typical circuit,the paper focuses on two ways to configure the AD9707 internal registers through ARM and FP— GA,and provides the steps and codes of the basic operations. Key words:high speed DAC;SPI;FPGA;driver;AD9707 引 言 随着通信、丁业仪器设备和便携式设备的发展,新 一1 AD9707测试 测试电路主要由Samsung公司微处理器S3C2410、 Altera公司CyclonelII系列FPGA EP3C25和ADI公司 代高速DAC逐渐朝高性能、低功耗、 片多功能集 成和输入输 高速化的方向发展。AD970X系列DAC 针对低功耗特性进行了优化,同时仍保持出色的动态 性能,适用于手持便携式仪器等需要有效合成宽带信 的AD9707组成。FPGA主要负责算法,ARM微处理 器主要负责控制字输入和LCD显示。测试时,分别使 用S3C2410的SPI接口和EP3C25模拟SPI接口,来配 置AD9707内部寄存器。测试的过程是,在FPGA中构 号的场合。AD9707精度高达14位,其采样率为 1 75 Msps,内部集成边沿触发式输入锁存器,1.0 V温 度补偿带隙基准电压源和白校准功能使之能提供真l4 位INI 与DNI 性能。AD9 707还具有共模电位移动能 力,当与其他模拟器件连接时无需电平移动电路,从而 简化了模拟电路的设计,并且减小了小型便携式设计 中的印制电路板面积。 建了一个DDS(数字直接频率合成器),通过修改控制 字来改变输出波形数据,经AD9707转换后检测输出 的波形。 如图1所示,AD9707的基本外围电路由低电压异或 门74VX86和运算放大器ADA4899组成。测试时可以通 过跳线J1选择AD9707的T作模式:高电平时为PIN模 由于DAC内部集成度越来越高,外同辅助电路越来 越少,通过外同引脚的设置很难把DAC所有的功能发挥 式;低电平时为SPI模式;出现高电平脉冲时复位内部寄 存器。图中AD9707的输入时钟选择差分时钟;输出选择 单端输出,正向输出端IOUTA与ADA4899的反相输入 端相连,反向输出端IOUTB接地;内部基准电压源RE— 出来。高速DAC内部一般集成内部寄存器,用户可以通 过修改DAC的内部寄存器,使DAC输入输出模式达到设 计要求。为了减少芯片引脚数量,内部寄存器一般是通过 串行接口来配置,比较常见的接口有SPI、I C和串行2一 FIO与ADA4899的同相输入端相连。ADA4899将 AD9707单端输出的电流变化转换为电压变化。外部使 wire等。AD9707使用的是SPI接口。 paper@mesnet.corn.cn(投稿专用) ll00DGND AGND l 0AUND DGND 呈豳 D伞 亍 AVDD33 警吕DB o;蚕蚕蚕蚕oo詈吕菪 蚕D莹 DB; 7.5kQx3 】B0 AVDDP5 T 4T74v C 1 —[二卜 H 0A一 DB1 DBOPIN/SPI/RESET ADA4899 —一 J10 厂SLEEP 1 x3 量BA3 B A B 2 D忤号—一 ( 卯 CC LL 0.1gF AGND士 % I'AGND!-  ̄ 。、25 AGND -- ̄100pF A6N-。A 广 l DDN5 10 0Q KK 一 DVDD33 AVDD33 自0 口 图1 AD9707的基本外围电路 0口 U 用内部基准电压源时,REFIO引脚需用一个0.1 F电容 00> 接地。74VX86与外部SPI接口相连,主要起电压 K F 图2是外部SPI端口与AD9707通信的时序图。 匹配整形作用。它的电压范围为1.2~3.6 V,支持 AD9707工作的1.8 V和3.3 V。 m阱 2 SPI模式TAD9707与外部CPU的通信 在AD9707测试之前,必须按照外围电路的设 计配置好AD9707的T作状态。AD9707有两种配 置模式可供选择:PIN模式和SPI模式。设备可以 通过PIN模式进行简单配置,也可以通过SPI模式进行高 图2最高有效位先写入的SPI通信时序 s。 。] 圃巫圈正圈 圊巫Ⅱ 整个通信周期分为指令阶段和数据传输阶段。第1 阶段是指令阶段,在前8个SCI K上升沿时将8位指令字 级配置。当用户使用白校准等高级功能时,必须使用SPI 模式配置AD9707内部寄存器。 SPI(Serial Peripheral Interface,串行外围设备接 口),主要应用在EEPROM、Flash、ADC/DAC上。SPI 节写到AD9707中。指令字节决定了通信中第2阶段的 数据传输模式,定义第2阶段的数据传输是读或写,以及 数据传输的字节数和传输数据第1个要修改的寄存器地 址。指令字节组成如下: MSB LSB 6 5 4 3 2 1 0 是一种高速的、全双工、同步的通信总线,在芯片的引 脚上只占用4根线,为PCB的布局节省了空间。正是 由于这种简单易用的特性,现在绝大多数芯片都集成 SPI通信协议。 SPI的通信原理很简单,它以主从方式T作。这种模 式通常有一个主设备和一个(或多个)从设备,需要4根线 (单向传输时3根也可以)。AD9707的SPI接口由SCI K R/W R/W决定指令写入后,数据传输是读取还是写入。 N1和NO决定数据传输的字节数。A4~A0决定数据传 输时被访问的寄存器地址,多字节传输时用它来定义起始 寄存器地址。 (串行时钟)、sD10(数据输入输出)和CSB(片选)3根信号 线组成。串行时钟SCI K用来同步数据,并从AD9707中 第2阶段是数据传输阶段,在此阶段外部SPI控制器 与AD9707开始传输数据。一次传输的数据量由指令阶 段来决定,可以传输1~4个字节的数据。每个字节最后 一运行内部状态机,最大频率是20 MHz。串行数据输入输 出SDIO作为双向的数据总线,用于发送或接收数据。片 选信号CSB低电平时启动通信周期,它允许多个设备在 位传输完成后,寄存器立刻改变。 当AD9707的17脚(PIN/spI/RESET)上有一个下 同一条通信线路上使用。当CSB为高电平时,SDIO引脚 为高阻抗状态。在整个通信周期内,CSB必须保持低 电平 。 降沿电平变化时,SPI端口的计数器将复位到指令周期的 初始状态。如果SPI端口正处于一个指令周期或数据传 输周期,寄存器中不会写入任何数据。 42 《平 机 嵌入式系髓l应冈》l匝日回国置霾嘲 adv@mesnet.tom.cn(广告专用) AD9707内部寄存器主要包括:寄存器SPI CTL,地址 lnt 1; 为OxO0,用于设置SPI通信的具体模式、软复位和内部参考 源等,按照测试电路要求设置为0x80;寄存器DATA,地址 为0x02,主要用于设置输出模式选择、数据上升沿锁存和 S16 a[2]一{0x0080,Ox0200};//地址0x00的数据为0x80, //地址0x02的数据为OxO0 for(i一0;i<2;i++)( SPIPortInit(0); //通过两次赋值 //SPI端口初始化 时钟输入模式选择等,按照测试电路要求设置为OxO;寄存 器CALMEM、MEMRDWR和TRIM等用于校准和静态寄 存器访问。测试时主要使用寄存器SPICTL和DATA。下 面围绕着这两个寄存器的配置介绍两种配置方式。 ~rSPPRE0—0x0; //设置波特率SCLK为20Mb/s rSPCONO一(O<<5)l(1<<4)l(1<<3)I(1<<2)I(O <<1)l(O<<O); //设置SPI端口为Polling模式,时钟使能,SPI为主控模式 rSPPIN0一(O<<2)I(1<<1)(O<<0); 3 通过SPl端口配置AD9707内部寄存器 3.1 使用ARM微处理器的SPl接口 ¥3C2410是Samsung公司推出的采用RISC结构的 //禁止多主控错误检测使能,主机输出后释放MOSI if(rSPSTAO&0x1){ //检查SP10的状态 16/32位ARM微处理器。它基于ARM920T内核,采用 五级流水线和哈佛结构,频率达到203 MHz,是高性能、 低功耗的硬宏单元。¥3C2410还包含下列部分:LCD控制 器(STN&TFT)、NAND Flash引导装入程序、系统管理 (片选逻辑和SDRAM控制器)、3通道UART、4通道 ) rSPTDAT0一a[i];i++; //发送数据,准备下一次发送 rSPCONO一(O<<5)I(O<<4)l(1<<3)l(1<<2)l(o <<1)l(O<<O); //设置SPI端口为Polling模式,禁止SCK,选择主控模式 } DMA、4通道PWM时钟、I/O口、RTC、8通道10位ADC 及触摸屏接口、I C总线接口、I。s总线接口、USB主口和 设备口和2通道SPI总线接口。 ¥3C2410具有2个SPI接口模块,每个模块分别具有 2个8位移位寄存器用来接收和发送数据。数据的接收 (串行移入)和发送(串行移出)是同时进行的,串行数据的 使用¥3C2410的SPI接口可以很方便地配置 AD9707,但是在测试电路板上¥3C2410离AD9707较远, 布线时比较复杂,不得不使用飞线。为了解决布线困难的 问题,采用FPGA模拟SPI接口配置AD9707内部寄 存器。 速率由相应的寄存器设定。其时序很简单,主要是在 CLK的控制下,2个双向移位寄存器进行数据交换。当一 个数据写入SPTDATn寄存器时,如果ENSCK和 SPCONn寄存器中的MSTR位被置位,则启动数据发 3.2使用FPGA模拟SPI接口 FPGA(Fie1d Programmable Gate Array)即现场可编 程门阵列。FPGA的使用非常灵活,同一片FPGA通过不 同的程序可以产生不同的电路功能。本文使用VHDL语 送 。SPI接口发送数据的流程如图3所示。 I sPI初始化 l I— /发送标志位\ \的状态=1 7/ ‘Y 言编写一个SPI控制器,来发送配置数据给AD9707。 当仅需要向AD9707中写入数据时,使用SPI时钟线 ● SCLK、SPI数据线SDIO和片选线CSB即可通信。根据 图2中的写入时序编写程序 ,具体代码如下: LIBRARY IEEE: USE IEEE.STDL0GIC1 1 64.ALI ; 『 设置波特率 t 向SPTDATn写入数据 ● l设置SPCONn来 } 配置SPI模块 ● 将nSS配置为高电平 ● USE IEEE.STDLOGICUNSIGNED.ALL; l设置作为nss的GPIo l 配置为低电平 进入下一次传输 ENTITY SPI IS GENERIC(DATA:STD LOGIC VECT0R(1 1 D0WNT0 0):=“110101101011”); 图3 SPI数据发送流程 一配置数据 PORT(SCLK:IN STD LOGIC; CSB,SDIO:OUT STDLOGIC); 使用¥3C241O的SPI端口0来配置AD9707内部寄 存器的主程序如下: void SpiMSpoll(void){ END SPI: ~ARCHITE( TtJRE BEHAVE OF SPI IS paper@mesnet.corn.cn(投稿专用) Micr。c。ntr。IIers&Embedded Systems 4 3 t l SIGNAL C()UNT:STD I ()GIC VECT()R(3 D0WNT0 0); SIGNAL REG:STD I ()GIC VECTOR(1 1 D()WNT()O); SIGNAL X:STD LOGIC; BEGIN 程序编译仿真后得到的时序图如图4所示。整个程 序综合之后仅占用4个逻辑单元,使用类属参数定义配置 数据,方便用户按照自己的设计随意修改。由于AD97O7 与FPGA直接相连,用FPGA直接配置AD9707在PCB 走线上方便很多,比较适合于我们的测试平台。通过在 PROCESS(SCLK,X) BEGIN ~产生片选信号CSB FPGA中构建的DDS发送波形数据,即可构成一个简易波 形发生器,产生一些常见的波形。 IF(COUNT- ̄”1111”)THEN C0UNTXIF(SCI K EVENT AND SCI K== 1 )THEN CSB SCLK SD10 <一C0UNT+ 1 ; <一 。。0:。 ELSE 【二()UNTX<一((丌HERS一>.1 ); <= l ; END IF: END IF: CSB<一X: END PR0CESS: PROCESS(SCLK) BEGIN 从SDIO串行发送配置数据 IF(SCI KEVENT AND SCLK一 1 )THEN IF(C0UNT一”000l”)THEN REG<一DATA ELSE REG(一REG(10 DOWNTO O)8L ’0:  END IF: END IF: END PR()CESS: SDIO<一REG(11); END BEHAVE: 一 图6手写代码与生成代码计算结果对比 5 结 论 生成代码在CodeWarrior编译后效率会降低,但随着程 序长度的增加,代码运行的主要执行时间将更多地消耗在逻 44 《年 机 嵌入式系饶应国》 adv@mesnet.conr.cn(广告专用) 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务