zoukankan      html  css  js  c++  java
  • CDMA 通信模拟(基于Android平台)

          最近通信课作业要在Android上模拟出支持105信道同时通信的CDMA系统。我负责CDMA核心编解码部分,好久没用java,真的生疏了-_-! 作业还要写文档,所以趁热先弄些图出来:

    image

    CDMA编码过程(限定用java搞的,没法)

    cdma_decode

    CDMA解码过程

    • 关键实现代码
    /*!
    UserKey类的编码方法
    \return byte[] 编码后的字节序列(4字节,末尾4位未使用)
    */
    public byte[] encode() {
        byte[] result = new byte[4];                    ///< 4 × 8 = 32bit > 28bit    
        final int mask = 15;                            ///< 0x0000000F
            
        for(int i = 0; i < size/* key length */; ++i) {
            if(i % 2 == 0)
                result[i / 2] |= (mask & key[i]) << 4;  ///  写入byte高位
            else
                result[i / 2] |= (mask & key[i]);       ///  写入byte低位
        }
            
        return result;
    }
     
    /*!
    UserKey类的解码方法
    \param byte[] 多用户混合编码1个位的字节序列
    \return int 本key与混合编码字节序列点乘后的和
    */
    public int decode(final byte[] main) {
        int result = 0;
            
        for(int i = 0; i < size/* key length */; ++i) {
            int decoded;
                
            if(i % 2 == 0)
                /* 解析byte高位到decoded,有符号位移 */
                decoded = ((main[i / 2] & 0xF0) << 24) >> 28;
            else
                /* 解析byte低位到decoded,有符号位移 */
                decoded = ((main[i / 2] & 0xF) << 28) >> 28;
                    
            result += decoded * key[i];                 ///  点乘相加
        }
            
        return result;
    }
    • 技术难点

    1、同时支持105信道通信

          本实验选用的是7位的用户码,共7个,理论上只CDMA的话仅能支持7个信道。所以要在CDMA基础上加入TDMA,其中TDMA需要一帧分为15时隙,这样15×7=105信道。

    2、同时进行105信道混合编码

          我们如果支持105信道,其中需要同时把105个用户的数据进行混合编码。更细节的,同时把105用户的数据的第1位混合成15个长度为4byte的字节序。0-6信道使用CDMA把各自(各选用1个用户码)数据的第1位的编码进行混合,成为1个4byte,占用1个TDMA帧的第1个时隙;依次类推7-13信道使用CDMA混合编码第1位后占用第2个时隙。

    3、从105信道中解码

          依次使用key对相应时隙的字节流进行全解码,每解码一遍,解出1个信道的所有数据。

    4、数据对齐

          本CDMA编解码恒定提供105信道,没有空信道。因此对于实验用字符串数据,可以在短数据编码完毕后(此时至少存在1个信道,其数据仍未编码完毕),恒定使用位0编码。这样在解出字符串数据后,简单的使用trim操作即可还原原始字符串。

  • 相关阅读:
    ggplot2 上篇
    R笔记1
    读书笔记 第2章 数据挖掘概述
    读书笔记 数据化营销
    [LeetCode] 172. 阶乘后的零
    [LeetCode] 171. Excel表列序号
    [LeetCode] 169. 求众数
    知乎使用selenium反爬虫的解决方案
    [LeetCode] 168. Excel表列名称
    [LeetCode] 167. 两数之和 II
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2032165.html
Copyright © 2011-2022 走看看