OAI LTE代码解读.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OAI LTE代码解读

1随机接入 1.1接收preamble void rx_prach 调用这个函数在上行PRACH信道上接收preamble。最多能检测到64个,输出为检测到的每个preamble的能量和延时。 接着找了能量最大的那个preamble,发起随机接入。 void initiate_ra_proc 在这个函数里置标志位: RA_template[i].RA_active=TRUE; RA_template[i].generate_rar=1; RA_template[i].generate_Msg4=0; RA_template[i].wait_ack_Msg4=0; 1.2发送RAR phy_procedures_eNB_TX 里调用 mac_xface-eNB_dlsch_ulsch_scheduler 再调用 void schedule_RA 在这个函数里会根据RA_active和generate_rar标志分配资源 if (RA_template[i].RA_active == TRUE) if (RA_template[i].generate_rar == 1) { nprb[CC_id]= nprb[CC_id] + 3; nCCE[CC_id] = nCCE[CC_id] + 4; RA_template[i].Msg3_subframe=Msg3_subframe; } mac_xface-eNB_dlsch_ulsch_scheduler 接着调用 fill_DLSCH_dci 这个函数里判断 if (RA_template-generate_rar == 1) 后给eNB-common_channels[CC_id].RA_template[i] -RA_alloc_pdu1赋值。 然后调用add_common_dci 将eNB-common_channels[CC_id].RA_template[i] -RA_alloc_pdu1 复制到eNB-common_channels[CC_id].DCI_pdu。 并将ra_flag 置1 接着在 phy_procedures_eNB_TX 这个函数里查到ra_flag 为1 后 else if (DCI_pdu-dci_alloc[i].ra_flag == 1) 调用 generate_eNB_dlsch_params_from_dci 将根据DCI里的信息计算出的dlsch的参数放到phy_vars_eNB-dlsch_eNB_ra,并将phy_vars_eNB-dlsch_eNB_ra-active置1。 接着接着在 phy_procedures_eNB_TX 判断if (phy_vars_eNB-dlsch_eNB_ra-active == 1) 在这个函数里填充RAR。 crnti = mac_xface-fill_rar 在fill_rar里清除generate_rar标志。 eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[i].generate_rar = 0; 根据RAR算出接收MSG3的参数和子帧位置。并置位Msg3_active。 generate_eNB_ulsch_params_from_rar phy_vars_eNB-ulsch_eNB[(uint32_t)UE_id]-Msg3_active = 1; get_Msg3_alloc(phy_vars_eNB-lte_frame_parms, subframe, phy_vars_eNB-proc[sched_subframe].frame_tx, phy_vars_eNB-ulsch_eNB[(uint32_t)UE_id]-Msg3_frame, phy_vars_eNB-ulsch_eNB[(uint32_t)UE_id]-Msg3_subframe); 接着物理层处理RAR并清除active标志。 dlsch_encoding dlsch_scrambling dlsch_modulation phy_vars_eNB-dlsch_eNB_ra-active = 0; 1.3接收MSG3 phy_procedures_eNB_RX 里调用 process_Msg3 这个函数里看Msg3_active是否为1,并且检查是否到了接收Msg3的子帧。 if ((phy_vars_eNB-ulsch_eNB[(uint32_t)UE_id]-Msg3_active == 1) (p

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档