DCI

When you study the physical frame structure of LTE, you may be impressed by flexibility (meaning complexity in other way) of all the possible ways of resource allocation. It was combination of Time Domain, Frequency Domain and the modulation scheme. Especially in frequency domain, you have so many resource blocks you can use (100 Resource Blocks in case of 20 Mhz Bandwidth) and if you think of all the possible permutation of these variables, the number will be very huge. Then you would have this question (At least I had this question).. How can the other party (the recieving side) can figure out exactly where in the slot and in which modulation scheme that the sender (transmitter) transmit the data(subframe)? I just captured the physical signal but how can I (the reciever) decode this signal. This is where the term called 'DCI(Downlink Control Indicator)' comes in.

It is DCI which carries those detailed information like "which resource block carries your data ?" and "what kind of demodulation scheme you have to use to decode data ?" and some other additional information. It means you (the reciever) first have to decode DCI and based on the information you got from the DCI you can decode the real data. It means without DCI, decoding the data delivered to you is impossible. Not only in LTE, but also in most of wireless communication the reciever requires special information structure like DCI. For example, in WCDMA R99, Slot format and TFCI carries those information and in HSDPA HS-SCCH carried those information and in HSUPA E-TFCI carries it.

In terms of protocol implementation with respect to carrying these information, R99 seems to be the most complicated one. You had to define all the possible combination of resource allocation in the form of TFCS (a kind of look-up table for TFCI) and you have to convey those information through L3 message (e.g, Radio Bearer Setup message and RRC Connection Setup message) and the transmitter also have to configure itself according to the table. A lot of error meaning headache came from the mismatches between the TFCS information you configured in L3 message and the configuration the transmitter applied to itself (transmitter's lower layer configuration). It has been too much headache to me. HSDPA relieved the headache a lot since it carries these information directly on HS-SCCH and this job is done by MAC layer. The resource allocation information carried by HS-SCCH is called 'TFRI'. So I don't have to care much about L3 message.. but still I need to jump around the multiple different 3GPP document to define any meaningful TFRIs. And other complication was that even in HSDPA we still using R99 DPCH for power control and signaling purpose, so I cannot completely remove the headache of handling TFCS.Now in LTE, this information is carried by DCI as I explained above and we only have to care about just a couple of parameters like Number of RBs, the starting point of RBs and the modulation scheme and I don't have to care anything about configuring these things in RRC messages. This is a kind of blessing to me.

As one example showing how/when DCI is used, refer to "Uplink Data Transmission Scheduling - Persistent Scheduling"

DCI carries the following information :

i) UL resource allocation (persistent and non-persistent)

ii) Descriptions about DL data transmitted to the UE.

L1 signaling is done by DCI and Up to 8 DCIs can be configured in the PDCCH. These DCIs can have 6 formats : 1 format for UL scheduling, 2 formats for Non-MIMO DL scheduling, 1 format for MIMO DL Scheduling and 2 formats for UL power control.

DCI has various formats for the information sent to define resource allocations. The DCI formats defined in LTE are as follows.

  • Format 0 : UL Grant. (Resource Allocation for PUSCH and TPC command for UL Power Control)
  • Format 1 : Transmission of PDSCH for SIMO operation
  • Format 1 A : Resource Allocation for SIMO DL PDSCH and UL Power Control
  • Format 1 B : Transmission control information of MIMO Rank 1 based compact resource assignment
  • Format 1 C : Very compact type of resource allocation for PDSCH
  • Format 1 D : Same as format 1B with additional information of power offset
  • Format 2 : DL MIMO Closed Loop and UL Power Control
  • Format 1A : DL MIMO Open Loop and UL Power Control
  • Format 3 : UL Power Control Only (for multiple UEs)
  • Format 3A : UL Power Control Only (for multiple UEs)

L1 signaling is done by DCI and Up to 8 DCIs can be configured in the PDCCH. These DCIs can have 6 formats : 1 format for UL scheduling, 2 formats for Non-MIMO DL scheduling, 1 format for MIMO DL Scheduling and 2 formats for UL power control.

DCI has various formats for the information sent to define resource allocations. The resource allocation information

The best way to understand this in very detail is to take one example of each of DCI bit string and decode manually based on 3GPP specification. But this section can be a good summary for quick reference. And the DCI decode examples at the end of this page would give you a good/detailed picture of DCI strutures.

Type 0 : A bitmap indicating the resource block groups(RBGs) that are allocated to the scheduled UE. (An RBG is a set of consecutive physical resource blocks(PRBs). This type has following informations

  • Flag for format 0/format1A differentiation
  • Hoping flag
  • Resource block assignment and hopping resource allocation
  • New data indicator
  • TPC command for scheduled PUSCH
  • Cyclic shift for DM RS
  • CQI request
  • Number of appended zeros to format 0

Type 1 : A bitmap indicating PRBs from a set of PRBs from a subset of resource block groups determined by the system bandwidth.

  • Resource allocation header (resource allocation type 0/type 1)
  • Resource block assignment
  • Modulation and coding scheme
  • HARQ process number
  • New data indicator
  • Redundancy version
  • TPC command for PUCCH

Type 2 : A set of contiguously allocated physical or virtual resource blocks. The allocations vary from a single PRB upto the maximum number of PRBs spanning the system bandwidth.

There are two major factors to determine a DCI format for a specific situation as follows :

i) RNTI Type

ii) Transmission Mode

This means that you cannot change only one of these parameters arbitrarily and you always have to think of the relationships among these when you change one of these parameters. Otherwise you will spend a long time for troubleshooting -:)

Those tables from 3GPP 36.213 shows the relationships between RNTI Type, Transmission Mode and DCI format. (You would notice that same information (same RNTI type) can have multiple candidates of DCI format. Then, the question is "How network determine which DCI format it has to use at a specific moment ?". In some case, you can find a clear criteria from following table, but some other case the selection criteria is not clear. For example, if you ask "Do I have to use DCI format 1A or 2A when I am using TM3, C-RNTI ?". You may say "Use DCI format 2A in MIMO configuration and use 1 A in non-MIMO configuration". But the answer would not be clear if you ask "What kind of DCI format (1A or 1C) for Paging message (P-RNTI) ?". At least table 7.1-2 does now show any different selection criteria and I haven't found anywhere else in the spec about this selection criteria. In this case, I just ask to several other people who is working on that specific area and trying to draw conclusion by a kind of 'vote'. For this specific case (DCI format for P-RNTI), I got the response saying "There is no clear criteria, it is just upto network on which one to pick".)

Yes, there is a relationship. You have to know which DCI format is required for which RRC message. Following tables from 3GPP 36.321 shows the relationship between RNTI and logical channel and you would know which RRC message is carried by which logical channel. So with two step induction, you will figure out the link between RRC message and it's corresponding DCI format.

For example, if you see the "Security Mode Command" message of section 6.2.2 of 36.331, it says

Signalling radio bearer: SRB1

RLC-SAP: AM

Logical channel: DCCH

Direction: UE to E-UTRAN

If you see the table, you would see this message is using C-RNTI. and you will figure out the possible candiates from table 7.1-5 of 36.213 and if you would have detailed information of the transmission mode, you can pinpoint out exactly which DCI format you have to use for this message for a specific case. Assuming TM mode in this case is TM1 and scheduling is dynamic scheduling, if you see Table 7.1-2 you will figure out that this is using C-RNTI. With this RNTI Type and TM mode, if you see table 7.1-5, this case use DCI Format 1 or DCI Format 1A.

It is a little complicated to describe this process here. (To be honest, I don't know how to explain this process in plain language). Please see 5.3.3.1 DCI formats of 36.212

You can figure out the Start of RB and N_RB (Number of allocated RB) from RIV value.

How can I calcuate Start_RB and N_RB from RIV. The simple calcuation is as follows :
i) N_RB = Floor(RIV/MAX_N_RB) + 1= Floor(1200/50) + 1 = 25, where MAX_N_RB = 50 in this case since this is 10 Mhz System BW.
ii) Start_RB = RIV mod MAX_N_RB = 1200 mod 50 = 0

This examples shows the case where PUSCH frequency hopping flag is on. Depending on the value for NUL-hop, the detailed hopping pattern is determined.

When the system band frequency is 1.4M, 3M, 5M, Type PUSCH hopping is decided by below method.

"NUL-hop" = 0 --- Type1

"NUL-hop" = 1 --- Type2

When the system band frequency is 10M, 15M, 20M, Type PUSCH hopping is decided by below method.

"NUL-hop" = 0 --- Type1

"NUL-hop" = 1 --- Type1

"NUL-hop" = 2 --- Type1

"NUL-hop" = 3 --- Type2

This example shows you a case with UL HARQ retransmission. If you see the MCS value, it says 31 which is set as RVidx 3 in Table 8.6.1-1 of 36.213.

### DCI标准的定义及其在IT领域的应用 #### 什么是DCIDCI(Data, Context, Interaction)是一种面向对象编程的设计模式,旨在通过分离数据、上下文和交互逻辑来提高代码的可读性和灵活性。它由Trygve Reenskaug提出,其核心理念是将系统的功能划分为三个主要组成部分: - **Data(数据)**:表示持久化的状态信息,通常对应于传统的类或结构体[^3]。 - **Context(上下文)**:负责协调角色之间的交互并封装特定场景下的业务逻辑。 - **Interaction(交互)**:描述对象之间如何协作完成某个具体任务。 这种划分使得开发者可以更清晰地表达程序的行为,而不会让行为被硬编码到具体的类中。 --- #### DCI的应用场景 DCI特别适用于复杂的企业级应用程序开发,尤其是在需要频繁变更需求的情况下。以下是几个典型应用场景: 1. **领域驱动设计(DDD)中的应用** 在《领域驱动战术设计实践》课程中提到,DCI模式能够很好地补充传统DDD方法论中的不足之处。例如,它可以用来解释实体、值对象以及领域服务之间的动态协作关系。这种方法不仅增强了模型的表现力,还使其实现更加贴近实际业务流程。 2. **微服务架构下服务间通信** 当构建基于微服务体系时,各个独立部署的服务可能需要共享某些通用的功能模块或者协议接口。利用DCI的思想可以帮助我们更好地管理这些跨边界的数据交换过程,并保持各组件间的松耦合特性[^4]。 3. **Web框架扩展能力提升** 对于现代Web应用而言,前端页面往往涉及大量异步操作及事件监听器绑定等工作。如果采用常规方式编写控制器层代码,则容易造成重复劳动甚至难以维护的局面。此时借助DCI原则重构相关逻辑单元即可有效缓解上述痛点问题。 --- #### 实际案例分析——Python实现简单的DCI示例 下面展示了一个使用 Python 编写的简单例子,演示了如何运用 DCI 方法创建两个角色 `Runner` 和 `Chaser` 并让他们在一个名为 “TagGame”的游戏情境里互动: ```python class Person: def __init__(self, name): self.name = name # 定义Role (角色) def runner(person): person.run = lambda: f"{person.name} runs away!" def chaser(person): person.chase = lambda target_name: f"{person.name} is chasing {target_name}" # 创建Context(上下文) class TagGame: def play(self, p1, p2): runner(p1) # 给p1赋予runner的角色特征 chaser(p2) # 给p2赋予chaser的角色特征 action1 = p1.run() action2 = p2.chase(p1.name) return "\n".join([action1, action2]) if __name__ == "__main__": alice = Person('Alice') bob = Person('Bob') game = TagGame() result = game.play(alice, bob) print(result) ``` 运行此脚本将会得到如下输出: ``` Alice runs away! Bob is chasing Alice ``` 该实例充分体现了DCI的核心价值所在 —— 将原本属于单个类内部的方法提取出来作为外部附加属性临时挂载给目标实例,从而实现了高度灵活的对象组合机制。 --- ### 总结 综上所述,DCI作为一种新兴软件工程理论正在逐渐受到越来越多的关注。尽管目前还没有形成统一的标准文档对其进行严格界定,但从现有资料来看,它的基本原理已经得到了广泛认可并且成功应用于多个项目实践中。未来随着更多研究者加入探索行列,相信这一概念会变得更加成熟和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值