ac1380 3路任意波形发生板.docx

上传人:b****6 文档编号:6799107 上传时间:2023-01-10 格式:DOCX 页数:11 大小:22.49KB
下载 相关 举报
ac1380 3路任意波形发生板.docx_第1页
第1页 / 共11页
ac1380 3路任意波形发生板.docx_第2页
第2页 / 共11页
ac1380 3路任意波形发生板.docx_第3页
第3页 / 共11页
ac1380 3路任意波形发生板.docx_第4页
第4页 / 共11页
ac1380 3路任意波形发生板.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

ac1380 3路任意波形发生板.docx

《ac1380 3路任意波形发生板.docx》由会员分享,可在线阅读,更多相关《ac1380 3路任意波形发生板.docx(11页珍藏版)》请在冰豆网上搜索。

ac1380 3路任意波形发生板.docx

ac13803路任意波形发生板

AC13803路任意波形发生板

W&WLAB

©1999

AC1380简介

AC1380是一款3路12位并行波形发生板,可以产生单次或重复得任意波形,支持软件启动或外部触发启动。

性能:

●3路12位D/A转换器-DAC7545

●每路输出范围+5V--5V

●电压输出精度0.1%

●输出分辨率12位:

1LSB

●每路输出波形最长64K样点

●-5V到+5V建立时间10us

●输出波形点频最高1MHz

●单次波形和连续波形由程序控制

●板上时钟和外部时钟由程序控制

目录:

1.AC1380简介

2.AC1380拨码开关设置

3.AC1380的I/O地址及I/O功能说明

4.AC1380的编程及硬件说明

5.附录

二、AC1380拨码开关设置

S1:

I/O地址拨码开关

S1是AC1380的I/O地址选择的拨码开关,位于AC1380板的右下方。

AC1380占用4条地址线(A0-A3),I/O译码由A4-A9六位决定。

AC1380的地址空间为100H-3FFH。

S1的选择方法如下:

S1:

1

2

3

4

5

6

A4

A5

A6

A7

A8

A9

注意:

拨码器置ON为0,OFF为1。

AC1380的实际操作地址:

ADR=基地址(BASE)+偏移地址(OFFSET),BASE由S1选择,为100H-3FFH。

例:

欲选择ADR=300H,S1设置方式如下:

1

2

3

4

5

6

ON

ON

ON

ON

OFF

OFF

A4

A5

A6

A7

A8

A9

*此地址为出厂地址设置

 

三、AC1380的I/O地址及I/O功能说明

3-1:

AC1380的I/O地址分配

AC1380共占用4条地址线,共有个I/O地址,具体分配如下:

地址偏移

读操作(RD)

写操作(WR)

0H

写0通道数据

2H

写1通道数据

4H

写2通道数据

8H

读工作状态

启动

9H

重置

AH

写模式字

CH

读计数器0

置计数器0

DH

读计数器1

置计数器1

FH

设定计数器

 

详细操作说明:

0H写操作:

功能:

向AC1380写入通道0的输出数据

操作方式:

按字操作。

即一次向该口输出一个16位数据,低12位为通道0输出值,高4位为0。

具体使用见下一章编程

2H写操作:

功能:

向AC1380写入通道1的输出数据

操作方式:

按字操作。

即一次向该口输出一个16位数据,低12位为通道0输出值,高4位为0。

具体使用见下一章编程

4H写操作:

功能:

向AC1380写入通道2的输出数据

操作方式:

按字操作。

即一次向该口输出一个16位数据,低12位为通道0输出值,高4位为0。

具体使用见下一章编程

8H读操作:

功能:

状态查询,应用在单次波形发生场合

操作方式:

从该口读入一个8位数据D7-D0,D0有效

当D0=0时,单次波形输出完成

当D0=1时,板正在输出波形

9H写操作:

重置

功能:

停止输出波形,地址计数器归零

操作方式:

向该口输出任意值,一般输出0

AH写操作:

功能:

设定AC1380板的工作模式

操作方式:

向该口写入一个8位数据D7-D0(模式字)。

D0控制启动方式,D1控制输出方式,

D2-D7没有用

D0:

启动模式

当D0=0时,为软件启动

当D0=1时,为外触发启动

D1:

波形发生模式

当D1=0时,为循环输出

当D1=1时,为单次波形输出

CH写操作:

功能:

设置计数器0初始值以设定输出点频

操作方式:

分二次向该口送出二个8位数,先低8位后高8位,构成一个16位设定值

输出点频=4Mhz/计数器0设定值

DH写操作:

功能:

设置计数器1初始值以设定输出波形点数

操作方式:

分二次向该口送出二个8位数,前低后高构成一个16位设定值

输出波形点数=计数器1初始值

 

FH写操作:

功能:

设定计数器0和计数器1的工作模式,或对计数器0和计数器1进行锁存操作

操作方式:

分别向该口输出一个8位数,以便分别设定计数器0和计数器1的工作方式

在AC1380的使用中,计数器0和计数器1均工作在模式2,即频率发生器状态。

具体使用时,具体操作如下:

(1)向该口输出34H,设定计数器0工作模式为频率发生器,数值设定与读取为先低8位后高8位,构成一个16位数值

(2)向该口输出74H,设定计数器1工作模式为频率发生器,数值设定与读取为先低8位后高8位,构成一个16位数值

三、AC1380的编程及硬件

AC1380板是一款三路同步输出波形方式板。

硬件提供等点频、等长度、相同模式的支持。

 

具体操作时请按以下步骤使用:

(1)重置

(2)设定工作模式

(3)设定计数器0的工作方式和输出点频

(4)设定计数器1的工作方式和输出点数

(5)设定每点输出值

从第一点组起连续付值,每一点组包含三路数据,第0通道必须在最后付值

例如现输出点数为每通道100点。

设定方式如下。

输出个数n=0

PP:

输出第2通道第n点数值

输出第1通道第n点数值

输出第0通道第n点数值

n=n+1

判别n=?

100

否跳到PP:

是完成设定

(6)启动

编程举例:

以下程序以MSC语言做说明

AC1380板的基地址为AC1380_base

(一)重置:

outp(AC1380_base+0x9,0);

(二)设定工作模式:

启动方式Trsl=0:

软件启动,=1外触发启动

输出方式Rmode=0:

循环输出,=1单次波形

工作模式Mode=(Trsl&1)+(Rmode*2&2)

outp(AC1380_base+0xA,Mode);

(三)设定计数器0的工作方式和输出点频

//设置计数器0工作方式

outp(AC1380_base+FH,0x34);

//设置输出点频,点频为Dotf赫兹

data0=4000000/Dotf;

datal=data0&0xff;

datah=(data0-datal)/256;

outp(AC1380_base+CH,datal);

outp(AC1380_base+CH,datah);

(四)设定计数器1的工作方式和输出点数

//设置计数器1工作方式

outp(AC1380_base+FH,0x74);

//设置输出点频,点数为Length

data1=Length;

datal=data0&0xff;

datah=(data0-datal)/256;

outp(AC1380_base+DH,datal);

outp(AC1380_base+DH,datah);

(五)设定每点输出值

intdata0[Length];//通道0输出值

intdata1[Length];//通道1输出值

intdata2[Length];//通道2输出值

//输出值付值

...

//向AC1380板送输出值

for(i=0;i

{

outpw(data2[i]);//如不用,可省略

outpw(data1[i]);//如不用,可省略

outpw(data0[i]);//通道0必须放在最后

}

(六)启动

outp(AC1380_base+0x8,0);

//如果软件启动,则输出开始

//如果外触发,等待触发信号

程序举例:

现需产生三路波形:

通道0为方波,通道1为正弦波,通道2为三角波

输出点频为100Khz,每个波形有1000点,软件启动,连续波形。

#include

intdata0[1000];//第0通道波形数组

intdata1[1000];//第1通道波形数组

intdata2[1000];//第2通道波形数组

intAC1380_base;//AC1380的基地址

main()

{

inti,j,k;

floataa,bb,cc;

inttemp1,temp2;

unsignedintlength;

unsignedinttimer;

inttrsl,rmode;

intgap=1000;

//设定AC1380的基地址为0x300

AC1380_base=0x300;

//给第0通道波形数组付值

for(k=0;k

{

data0[k]=sin(2*3.1416926/(float)gap*(float)k)*2047.0+2048.0;

}

//给第1通道波形数组付值

for(k=0;k<(gap/2);k++)

{

data1[k]=0;

data1[k+gap/2]=0xfff;

}

//给第2通道波形数组付值

for(k=0;k<(gap/2);k++)

{

data2[k]=k/gap*4095;

data2[k+gap/2]=4095-data2[k];

}

//设定输出波形点长

length=gap;

//设定波形触发方式

//trsl=0softwaretostart;D=1trigtostart

trsl=0;

//设定波形输出模式

//rmode=0cycle;=1single

rmode=0;

//设定输出点频

//settimer

timer=40;//10us

//初始化AC1380板

ac1380_ini(timer,length,trsl,rmode);

//向AC1380板送输出波形数值

ac1380_mem(data0,data1,data2,(unsignedint)length);

//启动输出

outp(0x308,0);

}

//向AC1380板送输出波形数值子程序

ac1380_mem(int*da_data0,int*da_data1,int*da_data2,unsignedintlength)

{

unsignedinti,j,k;

//重置,数据存储器地址规零

outp(AC1380_base+9,0);

for(i=0;i<=length+1;i++)

{

outpw(AC1380_base+4,da_data2[i]);//送第2通道第i点数据

outpw(AC1380_base+2,da_data1[i]);//送第1通道第i点数据

outpw(AC1380_base,da_data0[i]);//送第0通道第i点数据

}

}

//AC1380初始化子程序

ac1380_ini(unsignedinttimer,unsignedintlength,inttrsl,intrmode)

{

intdatal,datah,i;

intmode;

//重置

outp(AC1380_base+9,0);

//设定计数器0工作模式

outp(AC1380_base+0xf,0x34);

//初始化计数器0

datah=timer>>8;

datal=timer&0xff;

outp(AC1380_base+0xc,datal);

outp(AC1380_base+0xc,datah);

//设定输出波形点长

//设定计数器1工作模式

outp(AC1380_base+0xf,0x74);

//设定计数器1初始化值

datah=length>>8;

datal=length&0xff;

outp(AC1380_base+0xd,datal);

outp(AC1380_base+0xd,datah);

//设定AC1380板工作模式

mode=trsl+rmode*2;

mode=mode&0x03;

outp(AC1380_base+0xa,mode);

//重置

outp(AC1380_base+9,0);

}

 

五、附录

AC1380板接口定义:

AC1380板接口为DB25芯D型接口,插座上标记有插座引脚的号码。

141516171819202122232425

12345678910111213

1脚:

第0通道输出

2脚:

第1通道输出

3脚:

第2通道输出

14、15、16脚:

模拟输出地线

12脚:

外触发输入

13脚:

外触发输入地

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1