说明:上图表示接收端整体的各个模块的流程图,包括两块SMT362。图中有标号从0到8说的是接收端的流程。其中0代表的是初始就要完成的事务或者是定时的事务。
我们从第一步开始,首先射频接收的数据要通过第一块SMT362上面的V4发送到接收到DSPA中,DSPA配置好EDMA传输,将每1ms的数据收下来,直接发给DSPB;DSP对接收到的数据进行同步,频偏补偿,FFT,信道估计等等处理后送回V4,进行下一步的MIMO DECODE处理;V4在完成了5ms的数据的DECODE之后会给出MIMO_DEC完成中断给第二块SMT362的V4,第二块SMT362会将均衡之后的数据发给DSPD;DSPD把接受的数据(星座数据)通过SRIO直接发给DSPC;DSPC通过解调,解映射,之后把数据送到V4进行TURBO DECODE;TURBO_DEC做完之后会给出完成中断给DSPD,DSPD接收完成的数据并通过EMAC模块发回上位机。
图中的点线框代表各个硬件模块。虚线0代表并不是运行步骤中的,是属于初始化的必不可少的一步。
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等。
2.程序中用到的EDMA是链式传输,并且巧妙运用EDMA传输完成中断
3.每个ms都要接收新的数据,并通过SRIO向DSPB发送
4.AGC调整是配合FPGA完成的,FPGA算出功率,DSP做功率调整
5.向DSPB发送数据的时候加入了发送结束标志位
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等
2.这里的同步搜索分为捕获和跟踪两个步骤
3.接收数据Buffer有100个半帧长,以便于同步的搜索
4.频偏补偿算出一根天线的频偏值补偿两根天线
5.在巧妙运用DMA的基础上实现两路并行FFT
6.信道估计使用的是LS,线性内插即可
7.信噪比是在频域的信噪比,因此应改为信干噪比
8.MIMO_DEC传输第一次,给出Frame_start,之后由FPGA连续触发27次(28个符号)
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等
2.这里需要的MCS主要是为了判断TURBO_DEC的码块长度以便传输
3.NDK初始化完成是EMAC传输的前提和必要
4.程序分为两个中断和一个任务,前提是MIMO_DEC的中断才能触发后面的行为
5.向DSPC发送数据的时候加入了发送结束标志位
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等
2.这里的MCS解调出来要初始化各种解调表,码块相关的参数,MPDU参数等重要参数,有很重要的作用,应该与前一模块得到的结果相同
3.此时的解映射表与发端的映射表相同
4.TURBO merge函数是8bit软信息到5bit软信息的转换。以便于FPGA解码。
5.TURBO_DEC传输第一次,之后由FPGA连续触发19次传输(20个码块)
说明:
上图表示发送端整体的各个模块的流程图。图中有标号从0到4说的是发送端的流程。其中0代表的是初始就要完成的事务或者是定时的事务。
我们从第一步开始,首先上位机通过EMAC模块将业务数据发到DSP,有三种不同的调制编码方式对应三种传输MPDU大小;之后DSPB做ENCODE事务,并将最后时域的数据发到DSPA;DSPA通过FPGA给出的定时中断将时域数据发到V4,之后便射频发送。
图中的点线框代表各个硬件模块。虚线0代表并不是运行步骤中的,是属于初始化的必不可少的一步。
需要注意的是ENCODE模块包含了发送端基带处理的所有的模块的集合。包括DMRS映射,信道编码(TURBO编码),交织,数字调制(QPSK,16QAM),预编码,子载波映射,IFFT等等。
图7 RF_TX
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等
2.程序中用到的EDMA是链式传输,并且巧妙运用EDMA传输完成中断
3.发端使用A/B BUFFER是为了将同时需要处理的缓冲区隔开以便并行处理而不互相冲突
说明:流程不再详细说明。需要注意一下几点:
1.DSP初始化包括DSP初始化,PLLC初始化,EMAC初始化,DDR2初始化,DAT模块初始化,GPIO初始化,SRIO初始化,EMIFA初始化等
2.Encode使用A/B BUFFER是为了将同时需要处理的缓冲区隔开以便并行处理而不互相冲突,比如接收上位机使用Buffer A,而做Encode使用Buffer B,这样就可以并行处理而不冲突
3.Encode使用到可以用测试数据或者上位机数据而不冲突的机制
4.NDK初始化完成是EMAC传输的前提和必要
5.单端口天线预编码由FPGA转到DSP里面实现
6.在巧妙运用DMA的基础上实现两路并行FFT
网友评论