实 验 报 告
学生姓名: 学 号: 指导教师: 邮 箱:
一、 实验名称:软件无线电实验平台基本通信实验 二、 实验目的:
1. 了解软件无线电实验平台基本模块:ARM模块、FPGA模块、DSP模块、
BASEBAND AD\\DA模块及RF模块的功能及其工作原理;
2. 熟悉CCS、ISE软件平台;能够熟练地对DSP及FPGA程序进行调试; 3. 掌握TMS320C6713的HPI接口;通过发送HPI中断给ARM,熟悉ARM
与DSP的通信方式;
4. 掌握AD9201,AD9761的工作原理以及工作时序图;编写FPGA控制
AD、DA的VHDL程序;
三、 实验原理:
1. 软件无线电实验平台组成及工作原理
高级软件无线电综合实验系统平台由6个模块组成,分别如下:ARM模块、FPGA模块、MCU模块、DSP模块、BASEBAND AD\\DA模块、RF模块。
各模块功能如下:
ARM(S3C2410)模块其上的操作系统为WINCE5.0,提供用户交互界面。应用程序与FPGA的交互通过SPI接口驱动实现,应用程序与DSP(C6713)的交互通过HPI接口驱动实现;
DSP(C6713)模块主要实现基带信号的调制与解调。其与ARM的接口为HPI;与FPGA的接口是MCBSP;
FPGA(XC3S400)主要实现外部模拟信号的AD采样,以及数字与模拟转
1
换的DA控制,与RF模块联合实现CC2420的功能。其与DSP的接口为MCBSP,与MCU(C8051F120)是通过SPI以及MCU的P1、P3口实现交互;
MCU模块主要实现对RF发射功率,发射、接收信道等一些工作参数配置。其与FPGA的交互是通过SPI以及P1、P3口实现的;
BASE BAND AD\\DA模块主要实现数模转换的功能;
RF模块主要实现将基带信号转化为射频信号,然后发射出去。其与FPGA的通信是通过RF自定义接口实现的。
各模块间的通信以及接口示意如图1所示:
AD/DA数据总线DSP(C6713)SPIMCU(8051F120)P1&P3FPGAXC3S400控制SPIRF接口ARM(S3C2410)TFT LCD4.3'EARPHONERS232RS232RS232RJ45USBARM JTAGFPGA JTAGHPIDSP JTAGRFMCU JTAGMCBSPBASE BANDAD\\DA 图1 软件无线电实验平台模块结构
2. DSP与ARM通信原理
DSP与ARM通过HPI接口协同工作,实现通信。ARM主要提供用户交互的界面,用户可以在程序界面中输入传输的数据,ARM将用户输入的数据通过HPI口发送给DSP,并且通知DSP开始工作。DSP在接收到ARM发送的开始工作命令后,从固定的地址获取ARM传送的数据长度以及数据存放地址,然后到相应地址读取数据,将读取到的数据进行搬移,搬移完毕后发送HINT中断给ARM通知DSP数据操作已经完成。ARM接收到DSP发送的HINT中断后从DSP相应位置读取DSP搬移后的数据,重新在应用程序界面中显示。工作原理简易
2
框图如图2所示:
置FLAG=1启动DSP数据用户输入数据ARM发送HINT中断数据BLOCK2BLOCK1搬移DSP显示处理后数据
图 2 DSP和ARM工作原理框图
HPI接口简介
HPI口是并行接口, HOST可以通过HPI口直接访问DSP的存储空间。HOST作为HPI接口的主控,访问非常便捷。
HOST与DSP可以通过内部或者外部存储器交换信息。并且HOST端可以直接访问内存映射的外设。HPI与DSP的CPU连接是通过DMA或者EDMA实现的。HOST以及DSP都可以访问HPI控制寄存器HPIC。通过外部数据以及接口控制信号HOST端可以访问HPI地址寄存器HPIA,HPI数据寄存器HPID。CXX系列DSP端CPU也可以访问HPIA。
TMS320C6713的HPI硬件接口如图3 所示:
图 3 DSP HPI 接口示意图
3
其时序图如图4:
图4 HPI 时序图
DSP程序示例
DSP与ARM通信完成如下内容:
1. 在数据输入界面中输入数据按ENTER后,ARM将用户输入的数据长度一通过HPI口写在DSP的SDRAM的0X20008地址中;把用户输入数据所存储的地址放在0x10000的地址单元中;把数据写在0X20004(存储在0X1000)开始的位置。置位FLAG=1通知DSP用户已经输入数据。
2. DSP在检测到0x20000存储的数据为1后,首先从0X20008获取用户输入的数据长度;然后从0X1000获得用户输入的数据存储在何位置。在得到位置与长度信息后,DSP程序将数据拷贝到0x80000000为开始的位置。完成数据搬移后,DSP发送HINT中断,通知ARM,数据处理已经完成。 如上功能的DSP示例程序如下:
while(1)
{
flag=*((int *)(0x20000)); if(flag==1) {
temp=(*((int *)0x20004)); pData=(int *)temp;
iCountData=*((int *)0x20008);
4
pMovedData=(int*)0x80000000; (*pMovedData++)=iCountData; for (i=1;i<=iCountData;i++) { }
HPI_setHint(1);
(*pMovedData++)=(*pData++);
} }
3. FPGA控制AD、DA实验
本实验根据数模转换器芯片AD9201,AD9761的工作时序,首先对输入的模拟信号用进行采样,然后将采样值直接通过DA发送出去。
AD9201简介
AD9201最高采样率为20MSPS,分辨率为10bit,是双通道CMOS电平的模数转换器。在需要2路ADC匹配(例如通信中的I、Q两路信号)的应用中,AD9201性能优越。20MHz的采样率、输入带宽大,使AD9201能应用在扩频与窄带信道。
AD9201时序图
图5 AD9201时序图
注:SELECT为AD9201内部的异步二选一管脚。在CLOCK的上升沿,对输入的两路信号进行同步采样,然后经过SELECT选择输出数据的通路。
5
AD9761简介
AD9761是采样率20M、10 bit高速双通道数模转换器。宽带通信中经常需要处理同相和正交(I、Q)两路数据,AD9761的双通道可提供两路信号输出。
AD9761时序图
图6 AD9761时序图
注:SELECT异步选择输入,当为高时将DA的数据锁存到I路,当为低时锁存到Q路。
FPGA控制AD、DA程序示例
由于外部晶振频率为48MHz,而AD采样率最高20MHz,DA速率为20MHz,因此程序中首先利用DCM对晶振输出的频率进行3分频,即16MHz,DCM输出的频率作为AD9201以及AD9761的时钟。关键程序代码段如下:
AD控制部分代码
signal iq_sel_int : std_logic; signal temp_q begin
adc_cs <= '0'; adc_clk <= iq_sel_int; adc_select <= not iq_sel_int; process(rst,ext_adclk) begin
if rst = '0' then
temp_q <= (others => '0'); adc_i <= (others => '0');
: std_logic_vector(9 downto 0);
adc_q <= (others => '0');
6
iq_sel_int <= '0';
elsif ext_adclk'event and ext_adclk = '1' then iq_sel_int <= not iq_sel_int;
if iq_sel_int = '0' then
temp_q <= adc_din;
else adc_i <= adc_din; adc_q <= temp_q;
end if;
end if;
end process;
DA控制代码
signal da_select_int:std_logic; begin
da_rst<=not rst; da_clk<=not ext_daclk; da_write<=not ext_daclk; da_select<=da_select_int; process(ext_daclk)
variable cnt:integer range 0 to 1;
begin
if rising_edge(ext_daclk)then
if rst='0' then else
da_select_int<=not da_select_int; if da_select_int='0'then else
da_out<=qd; da_out<=id; da_select_int<='0';
end if;
end if;
end if;
7
end process;
四、 实验内容
(1)DSP与ARM的通信实验; (2)FPGA控制AD、DA实验。
五、 实验步骤
1.
DSP与ARM的通信实现
(1) DSP与ARM的通信演示实验
A. 运行ARM端程序RADIO.EXE,选择扩展实验的DSP和ARM通信实验,
按下“确认”进入该实验界面; B. 连接好DSP仿真器;
C. 打开CCS,打开工程文件ARM_DSP_hpi.pjt。
D. 选择Project->Rebuild All,编译完成后选择File->LoadProgram找到
ARM_DSP_hpi.out选择打开,通过JTAG下载DSP程序; E. 运行DSP程序Debug->Run;
F. 在界面数据输入框内输入0-20个数据,按Enter,此时在ARM端接收界
面会显示经过DSP处理的数据;
输入数据: 1234567876321000 显示数据: 1234567876321000 注:DSP端程序在输出BUFFER的数据格式必须为第一个INT为数据长度,并且数据长度不能大于40(否则数据在ARM端不能全部显示)。 (2) DSP与ARM的通信实验实现
A. 打开主程序文件main.c;
B. 修改原程序中 (*p MovedData++) = (*pData++);为(*pMovedData++) =
(*pData++) +1;
C. 在CCS中编译运行程序,重新在数据输入界面输入数据按ENTER;
8
D. 在ARM端应用程序界面的右边数据显示栏观察结果,记录实验现象(左
边数据加1):
输入数据: 1234567876321000 显示数据: 234567A987632111
(3) DSP与ARM的通信扩展实验
通过修改SETHINT在程序中的位置来修改DSP端何时发送HPI中断给HOST端。
内容:实现10000个循环延时后发送中断。 修改代码如下:
for(j=0;j<10000;j++) { }
HPI_setHint(1); */
/*send hint interrupt to host to request to service
修改完成后在CCS中编译运行程序,在ARM应用程序界面中重新输入数据按ENTER。观察:ARM应用程序右边数据接收窗口,记录观察结果(数据更新速率应当降低):
输入数据: 1234567876321000 显示数据: 234567A987632111
2.
FPGA控制AD、DA实验
(1)FPGA控制AD、DA过程演示实验
A. 编译AD_DA_LOOP工程,编译完后将bit文件下载到FPGA中; B. 连接信号发生器到平台的RXI,对信号发生器进行设置产生500KHZ的正弦信号,然后发送;
9
C. 在ARM端应用程序界面进入->扩展实验->FPGA扩展实验->FPGA控制AD/DA实验,按ENTER然后用示波器观测平台的TXI、TXQ发出的波形。
(2)改变DA控制程序,使DA的I路输出单频正弦波。 variable cnt:integer range 0 to 1;
begin
if rising_edge(ext_daclk)then
if rst='0' then
da_select_int<='0';
else
da_select_int<=not da_select_int; if da_select_int='0'then
da_out<=qd;
else
10
da_out<=id;
end if;
end if;
end if;
end process;
end Behavioral;
六、 分析和思考:
简述DSP的McBSP工作原理。
McBSP包括一个数据通道和一个控制通道,通过7个引脚与外部设备连接。数据发送引脚DX负责数据的发送,数据接收引脚DR负责数据的接收,发送时钟引脚CLKX,接收时钟引脚CLKR,发送帧同步引脚FSX和接收帧同步引脚FSR提供串行时钟和控制信号。
七、 实验器材(设备、元器件):
计算机、软件无线电实验箱、信号发生器、示波器、DSP仿真器、FPGA仿真器、+5V电源
八、 所需主要元器件及耗材
连接线、计算机串口连接线
九、 对本实验过程及方法、手段的改进建议:
无
报告评分:
指导教师签字:
11
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务