第一部分CPLD器件及开发系统的使用
(2)LPM_RAM_DP的使用
由于LPM_RAM_DP的读写完全分开处理,因此在信号发生器、信号处理等领域获得广泛应用。下面就利用LPM_RAM_DP设计任意信号发生器的介绍作一些简单介绍。本例是利用计算机高级语言VB产生所需要的任意波形,并生成符合LPM_RAM_DP格式的“*.mif”文件,通过PC 机与单片机通信将数据送给CPLD的LPM_RAM_DP存储器。并通过单片机调节形成直接数字信号合成器(DDS)。单片机与PC的串行口通过MAX232相连,由于是标准电路,这里没有电路图。单片机与CPLD的连接电路如图5-18所示,inclk为LPM_RAM_DP数据的读取时钟,p0[7..0]为单片机的p0口,pc[7..0]为单片机的p0口通过74373锁存后得到的地址,wr与单片机的wr相连。
图5-18
单片机与LPM_RAM_DP的连接电路
单片机与PC通过CPLD连接电路如图5-19所示,pctxd是PC串口的发送端, pcrxd是PC机的数据接收端, dtxd单片机的数据发送端, drxd是单片机的数据接收端。Retk是外接开关,通过dreset接到单片机的复位端。通过调节读取时钟inclk即可调节输出信号的频率。
地址发生器addcont中的ahdl语言程序设计如下: subdesign addcont
163
第一部分CPLD器件及开发系统的使用
(inclk:input; add[7..0]:output; ) variable fp[3..0],f:dff; add[7..0]:dff; begin
(fp[],f).clk=inclk; if fp[]==6 then fp[]=0; f=!f; else
fp[]=fp[]+1; f=f; end if; add[].clk=f; add[]=add[]+1; end;
--da转换频率调节系数
图5-19 单片机与PC通信接口及地址锁存电路
单片机通信通信波特率与PC机的一致都为57600,由于PC机是多用途的波
164
第一部分CPLD器件及开发系统的使用
形生成器,单片机读取时只截取数据部分,将从PC机上读取的数据传送给CPLD的LPM_RAM_DP,CPLD通过地址发生器产生地址将LPM_RAM_DP数据送给D/A转换。程序设计如下:
ORG 0000H
SJMP MAIN ORG 0023H JB RB8 ,QU MOV A,SBUF MOVX @DPTR,A INC DPTR DJNZ R0,QU MOV R0,#00H MOV DPTR,#0000H CLR RI RETI
MOV TH1,#0FfH MOV TL1,#0FfH MOV SCON,#11010000B MOV PCON,#00H MOV DPTR,#0000H MOV R0,#00H SETB TR1 SETB ES SETB EA SJMP $ END
QU:
MAIN: MOV TMOD,#20H
由于PC机软件设计部分程序内容很多,这里不在详细介绍,只把波形生
成界面介绍如下:界面如图5-20,可以选择正弦拨、方波、三角波、锯齿波等,也可以选择自定义波形。在波形界面中鼠标左键点击图形上的某一点即可测量该点的电压和相位,电压归一化为0-5v。选择自定义波形,在图5-21的对话框输入所需的波形的函数,如sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7函数,点击“确定”后,计算机将进行计算形成BYTE类型数据(0-255),并在波形区域画出波形,如图5-22所示:
165
第一部分CPLD器件及开发系统的使用
图5-20 波形编辑界面
图5-21 自定义函数发生器
166
第一部分CPLD器件及开发系统的使用
图5-22 自定义函数波形
选择合适的通信口和波特率并点击发送数据后,即可以在示波器上观察信号
波形。
5.5 自定义参数化模块的方法
在文本编辑输入中可以PARAMETERS(参数1=默认值, 参数2=默认值,…. 参数n=默认值)进行自定义参数化模块的编辑; PARAMETERS(参数1=默认值, 参数2=默认值,…. 参数n=默认值)在文本中要放在subdesign关键字之前。如果在数组中使用参数n,且为n-1的方式,则n的默认值要大于或等于一。下面的程序演示了自定义参数化模块的方法。 PARAMETERS
(m=1,n=1,q=2); subdesign addx
(a[m-1..0],b[n-1..0]:input; s[q-1..0]
:output;
167