Fountain code coding method and communication device
By adopting a two-stage encoding method during the fountain coding process, the first stage selects data blocks in the preset order, and the second stage selects data blocks according to the selection probability, solving the problem of uneven selection of data blocks in the prior art, achieving the balance of encoding redundancy and reducing transmission delay, and improving fault tolerance performance.
Patent Information
- Application Number
- CN202510579291.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-05-07
- Publication Date
- 2025-06-06
- Estimated Expiration
- 2045-05-07
AI Technical Summary
During the existing fountain coding process, due to the uncontrollable probability distribution of data block selection, the selection of data blocks is uneven, causing problems such as imbalance in encoding redundancy, increased transmission delay and reduced fault tolerance performance, especially when network congestion or channel quality fluctuations.
A fountain code encoding method is proposed, and the equalization selection of data blocks is achieved through the two-stage encoding process. The first stage selects all data blocks in the preset order, performs encoding, and covers all data blocks. The second stage is to select data blocks according to the selection probability of each data block, perform encoding, and adjust the selection probability of each data block to achieve dynamic equalization.
It realizes the balanced selection of each data block during the fountain coding process, improves the utilization rate of the data blocks, balances the encoding redundancy, reduces transmission delay, and improves fault tolerance, especially in dynamic network environments, which have stronger adaptability and stability.
Smart Images

Figure CN120110607A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of communications, and in particular to a fountain code encoding method and a communication device. Background Art
[0002] In the encoding process of the fountain code in the prior art, the transmitter randomly selects multiple data blocks, performs an XOR operation, and generates a coded packet. Due to the uncontrollability of the probability distribution of randomly selected data blocks, the data block selection is uneven. For example, some data blocks are frequently selected, while other data blocks are selected less frequently. This situation is particularly obvious when the network is congested or the channel quality fluctuates, which can easily lead to problems such as imbalanced coding redundancy, increased transmission delay, and decreased fault tolerance. Summary of the invention
[0003] The embodiments of the present application provide a fountain code encoding method and a communication device, which are used to achieve balanced selection of data blocks for encoding during the fountain code encoding process.
[0004] To achieve the above objectives, the embodiments of the present application adopt the following technical solutions: In a first aspect, a fountain code encoding method is provided, comprising: obtaining k data blocks according to original data to be encoded; randomly generating a first degree value d1, selecting d1 data blocks from the k data blocks according to a preset order to perform encoding, generating a first encoding packet, sending the first encoding packet, repeating this step until each data block is selected at least N times, N is an integer greater than or equal to 1, and the degree value represents the number of data blocks required to encode and generate one encoding packet; randomly generating a second degree value d2, selecting d2 data blocks from the k data blocks according to the selection probability of each data block to perform encoding, generating a second encoding packet, sending the second encoding packet, and repeating this step until a termination condition is met, and the selection probability of each data block is determined by the number of times each data block has been selected.
[0005] The fountain code encoding method provided in the embodiment of the present application includes two stages in the encoding process of the fountain code. In the first stage, all data blocks are selected in a preset order and encoding is performed, which can cover all data blocks. In the second stage, data is selected according to the selection probability of each data block and encoding is performed. The selection probability of each data block can be adjusted according to the number of times each data block has been selected, so as to achieve dynamic balance of the selection probability of each data block. It is achieved that each data block is evenly selected to perform encoding during the encoding process of the fountain code.
[0006] In a possible implementation, the smaller the number of times a data block has been selected, the greater the probability of the data block being selected, and the greater the number of times a data block has been selected, the smaller the probability of the data block being selected. In other words, the smaller the number of times a data block has been selected, the greater the probability of it being selected again later, and the greater the number of times a data block has been selected, the smaller the probability of it being selected again later, thereby achieving a dynamic balance of the selection probabilities of each data block.
[0007] In a possible implementation, the selection probability of the i-th data block is equal to: ; is the number of times the i-th data block has been selected, 1≤i≤k, i is an integer. The significance of this formula is that the selection probability of a data block is not only basically inversely proportional to the number of times the data block has been selected, but also integrates the selection probabilities of all data blocks, thereby achieving a dynamic balance of the selection probabilities of each data block.
[0008] In a possible implementation, the termination condition is satisfied, including: the total number of coded packets is greater than or equal to the total number threshold. When the total number of coded packets is greater than or equal to the total number threshold, the first device stops generating and sending new second coded packets to avoid generating too many redundant coded packets and occupying too much bandwidth.
[0009] In one possible implementation, the total number threshold is equal to: , is a parameter greater than or equal to 0. That is to say, if the total number of coding packets is too small, some data blocks will be selected too many times and some data blocks will be selected too few times, and the selection probability of data blocks will be unbalanced. The total number of coding packets must reach at least the number of data blocks k, so that there are enough coding packets to achieve a balance in the selection probability of data blocks.
[0010] In a possible implementation, the termination condition is satisfied when the difference between the maximum selection probability and the minimum selection probability among the k data blocks is less than a probability threshold. At this point, the selection probabilities of all the k data blocks are close in value, and the selection probabilities are balanced.
[0011] In a possible implementation, it also includes: if the first degree value d1 is greater than the number a of the remaining unselected data blocks, then select d1-a data blocks with equal probability from the k data blocks, perform encoding on the a unselected data blocks and the d1-a data blocks selected with equal probability, generate a first encoding packet, and send the first encoding packet. If the first degree value (i.e., the number of data blocks required for encoding) d1 is greater than the number a of the remaining unselected (i.e., unencoded) data blocks in this round of traversal, it means that the number of remaining unencoded data blocks in this round of traversal is too small to be encoded to generate a first encoding packet, then the first device selects d1-a data blocks with equal probability from the k data blocks (i.e., the selection probability of each data block is 1 / k), so as to gather a+(d1-a)=d1 data blocks for encoding, and encodes these d1 data blocks to generate a first encoding packet.
[0012] In a possible implementation, it also includes: if the first degree value d1 is greater than the number a of the remaining unselected data blocks, then d1-a data blocks are selected with medium probability from the remaining ka selected data blocks, a unselected data blocks and d1-a data blocks selected with equal probability are encoded, a first encoding packet is generated, and the first encoding packet is sent. The first device selects d1-a data blocks with medium probability from k data blocks. Although d1 data blocks can be collected, some of the k data blocks have been selected (i.e., encoded) and some have not been selected (i.e., not encoded), so there may be a situation where the unselected data blocks are selected again. If an XOR operation is performed with the unselected data blocks again, it is equivalent to performing an XOR operation on the same data block. The operation result (i.e., the obtained encoding packet) is always 0, and the second device will not be able to decode the encoding packet. The first device selects d1-a data blocks with medium probability from the remaining ka selected data blocks. There will be no situation where the unselected data blocks are selected again. If an XOR operation is performed on the unselected data blocks again, the XOR operation will not be performed on the same data block. The operation result (that is, the obtained coding packet) will not always be 0, and the second device can decode the coding packet.
[0013] In a second aspect, a communication device is provided, which includes a processing module and a communication module. The processing module is used to obtain k data blocks according to the original data to be encoded; randomly generate a first degree value d1, select d1 data blocks from the k data blocks according to a preset order to perform encoding, generate a first encoding packet, and the communication module is used to send the first encoding packet, and repeat this step until each data block is selected at least N times, N is an integer greater than or equal to 1, and the degree value represents the number of data blocks required for encoding to generate a coding packet; the processing module is used to randomly generate a second degree value d2, select d2 data blocks from the k data blocks according to the selection probability of each data block to perform encoding, generate a second encoding packet, and the communication module is used to send the second encoding packet, and repeat this step until the termination condition is met, and the selection probability of each data block is determined by the number of times each data block has been selected.
[0014] The second aspect is the implementation on the device side corresponding to the first aspect. The explanation, supplement and description of the beneficial effects of the first aspect are also applicable to the second aspect and will not be repeated here.
[0015] In a third aspect, a communication device is provided, comprising a processor. The processor is coupled to a memory and can be used to execute instructions or data in the memory to implement the method in any possible implementation of the first aspect. Optionally, the communication device also includes a memory. Optionally, the communication device also includes a communication interface, and the processor is coupled to the communication interface.
[0016] In one implementation, the communication interface may be a transceiver, or an input / output interface.
[0017] In another implementation, the communication device is a chip configured in the first device. When the communication device is a chip configured in the first device, the communication interface may be an input / output interface.
[0018] In a fourth aspect, a processor is provided, comprising: an input circuit, an output circuit and a processing circuit. The processing circuit is used to receive a signal through the input circuit and transmit a signal through the output circuit, so that the processor executes the method in any possible implementation of any of the above aspects.
[0019] In the specific implementation process, the processor can be one or more chips, the input circuit can be an input pin, the output circuit can be an output pin, and the processing circuit can be a transistor, a gate circuit, a trigger, and various logic circuits. The input signal received by the input circuit can be, for example, but not limited to, received and input by a receiver, and the signal output by the output circuit can be, for example, but not limited to, output to a transmitter and transmitted by the transmitter, and the input circuit and the output circuit can be the same circuit, which is used as an input circuit and an output circuit at different times. The embodiments of the present application do not limit the specific implementation methods of the processor and various circuits.
[0020] In a fifth aspect, a communication device is provided, comprising a processor and a memory. The processor is used to read instructions stored in the memory, and can receive signals through a receiver and transmit signals through a transmitter to execute the method in any possible implementation of any of the above aspects.
[0021] Optionally, the number of the processors is one or more, and the number of the memories is one or more.
[0022] In a sixth aspect, a computer program product is provided, the computer program product comprising: a computer program (also referred to as code, or instruction), which, when executed, enables a computer to execute a method in any possible implementation of any of the above aspects.
[0023] In a seventh aspect, a computer-readable storage medium is provided, which stores a computer program (also referred to as code or instruction) which, when executed on a computer, enables the computer to execute a method in any possible implementation of any of the above aspects.
[0024] In an eighth aspect, an embodiment of the present application provides a chip system, which includes one or more processors for calling and executing instructions stored in a memory from a memory, so that the method in any possible implementation of each of the above aspects or each aspect is executed. The chip system can be composed of a chip, or it can include a chip and other discrete devices.
[0025] Among them, the chip system may include an input circuit or interface for sending information or data, and an output circuit or interface for receiving information or data.
[0026] In a ninth aspect, a communication system is provided, including the aforementioned first device and second device. Optionally, the communication system may further include other devices that communicate with the first device and / or the second device.
[0027] The technical effects of the third to ninth aspects refer to the technical effects of the first aspect and any of its embodiments, and will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0028] Figure 1 A schematic diagram of the architecture of a wireless communication system provided in an embodiment of the present application; Figure 2 A schematic diagram of the structure of a terminal device and a network device provided in an embodiment of the present application; Figure 3 A schematic diagram of encoding and decoding of a fountain code provided in an embodiment of the present application; Figure 4 A schematic diagram of encoding and decoding of another fountain code provided in an embodiment of the present application; Figure 5 A schematic diagram of a flow chart of a fountain code encoding method provided in an embodiment of the present application; Figure 6 A schematic diagram of encoding a fountain code provided in an embodiment of the present application; Figure 7 A schematic diagram of encoding of another fountain code provided in an embodiment of the present application; Figure 8 A schematic diagram of packet loss rate comparison under different code lengths provided in an embodiment of the present application; Fig. 9 A schematic diagram of encoding time comparison under different code lengths provided in an embodiment of the present application; Fig.10 A schematic diagram of the structure of a communication device provided in an embodiment of the present application; Fig.11 A schematic diagram of the structure of another communication device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0029] The technical solutions in the embodiments of the present application will be described below in conjunction with the accompanying drawings.
[0030] First, some concepts involved in this application are described.
[0031] The terms "first", "second", etc. involved in the embodiments of the present application are only used to distinguish features of the same type and cannot be understood as indicating relative importance, quantity, order, etc.
[0032] The terms "exemplary" or "for example" and the like in the embodiments of the present application are used to indicate examples, illustrations or descriptions. Any embodiment or design described as "exemplary" or "for example" in the present application should not be interpreted as being more preferred or more advantageous than other embodiments or designs. Specifically, the use of the terms "exemplary" or "for example" is intended to present the related concepts in a specific way.
[0033] The technical solution provided in this application can be applied to various communication systems, such as: long term evolution (LTE) system, LTE frequency division duplex (FDD) system, LTE time division duplex (TDD), sidelink communication system, universal mobile telecommunication system (UMTS), worldwide interoperability for microwave access (WiMAX) communication system, non-terrestrial network (NTN) communication system, fifth generation (5G) mobile communication system, new radio access technology (NR), future communication system, 5G Advanced communication system. Among them, the 5G mobile communication system may include non-standalone (NSA) and / or standalone (SA). The technical solution provided in this application can also be applied to future communication systems. This application does not limit this. The terms “system” and “network” in the embodiments of the present application are often used interchangeably, and the described technology can be used for the systems and radio technologies mentioned above as well as other systems and radio technologies.
[0034] Figure 1 The following is a schematic diagram of the architecture of a wireless communication system provided in an embodiment of the present application. The communication system 100 may include network devices, such as Figure 1 At least one network device 110 is shown. The communication system 100 may also include a terminal device, such as Figure 1 The communication system 100 may also include an ambient IoT device, such as Figure 1 The environmental Internet of Things device 130 shown. The network device 110, the terminal device 120, and the environmental Internet of Things device 130 can communicate with each other via a wireless link.
[0035] Figure 1 The exemplary embodiment shows a network device 110, a terminal device 120 and an environmental Internet of Things device 130. Optionally, the communication system 100 may also include a plurality of network devices 110, a plurality of terminal devices 120 and a plurality of environmental Internet of Things devices 130.
[0036] The network device in this application may be an access network device, a core network device, or other network-side device. The access network device is sometimes also referred to as an access node. The access network device has a wireless transceiver function and is used to communicate with the terminal. The access network device includes, but is not limited to, a base station in the above-mentioned communication system, an evolved NodeB (eNodeB), a transmission reception point (TRP), a next generation NodeB (gNB) in a 5G mobile communication system, an access network device or a module of an access network device in an open access network (open RAN, ORAN) system, a satellite in an NTN communication system, a base station in a future mobile communication system, or an access node in a WiFi system. The access network device may also be a module or unit that can implement some functions of a base station. The access network device may be a macro base station, a micro base station or an indoor station, a relay node or a donor node, or a wireless controller in a cloud radio access network (CRAN) scenario. Optionally, the access network device may also be a server, a wearable device, or a vehicle-mounted device. For example, the access network device in the vehicle to everything (V2X) technology may be a road side unit (RSU). Multiple access network devices in a communication system may be base stations of the same type or different types. A base station may communicate with a terminal or communicate with the terminal through a relay station. A terminal may communicate with multiple base stations in different access technologies. The embodiments of the present application do not limit the specific technology and specific device form adopted by the access network device. In the present application, the access network device is referred to as a network device.
[0037] In the present application, the device for realizing the function of the network device may be a network device, or a device that can support the network device to realize the function, such as a processor, a circuit, a chip, or a chip system, etc. The device may be installed in the network device or connected to the network device for use. In the technical solution provided in the present application, the technical solution provided in the present application is described by taking the device for realizing the function of the network device as a network device as an example.
[0038] The terminal device or environmental IoT device in this application may be a wireless terminal device capable of receiving network device scheduling and indication information. A wireless terminal device may be a device that provides voice and / or data connectivity to a user, or a handheld device with wireless connection function, or other processing device connected to a wireless modem. For example, a terminal device or environmental IoT device may communicate with one or more core networks or the Internet via a radio access network (RAN). A terminal device or environmental IoT device may also be referred to as a terminal, user equipment (UE), mobile station, mobile terminal, etc. Terminal devices or environmental IoT devices may be widely used in various scenarios, such as device-to-device (D2D), vehicle to everything (V2X) communication, machine-type communication (MTC), Internet of Things (IoT), ultra-reliable low-latency communication (URLLC), virtual reality, augmented reality, industrial control, autonomous driving, telemedicine, smart grid, smart furniture, smart office, smart wear, smart transportation, smart city, or satellite communication, etc. The terminal may be a mobile phone, a tablet computer, a computer with wireless transceiver function, a wearable device, a vehicle, an aircraft (such as a drone, a helicopter, an airplane), a hot air balloon, a ship, a robot, a mechanical arm, or a smart home device, etc. The embodiments of the present application do not limit the form of the terminal device or the environmental IoT device.
[0039] In the present application, the device for realizing the function of a terminal device or an environmental Internet of Things device may be a terminal device or an environmental Internet of Things device, or may be a device that can support the terminal device or the environmental Internet of Things device to realize the function, such as a processor, circuit, chip, chip system, etc. The device may be installed in the terminal device or the environmental Internet of Things device, or connected to the terminal device or the environmental Internet of Things device for use. In the technical solution provided in the present application, the technical solution provided in the present application is described by taking the case where the device for realizing the function of a terminal device or an environmental Internet of Things device is a terminal device as an example.
[0040] The access network device, terminal device or environmental Internet of Things device can be fixed or movable. The access network device, terminal device or environmental Internet of Things device can be deployed on land, including indoors or outdoors, handheld or vehicle-mounted; it can also be deployed on the water surface; it can also be deployed on aircraft, balloons and artificial satellites in the air. The embodiments of the present application do not limit the application scenarios of the access network device, terminal device or environmental Internet of Things device. The access network device, terminal device or environmental Internet of Things device can be deployed in the same scenario or different scenarios. For example, the access network device, terminal device or environmental Internet of Things device are deployed on land at the same time; or, the access network device is deployed on land, and the terminal device or environmental Internet of Things device is deployed on the water surface, etc., and examples are not given one by one.
[0041] In actual applications, multiple network devices can collaborate to assist terminal devices or environmental IoT devices in achieving wireless access, and different network devices can respectively implement part of the functions of a base station. For example, a network device can be a central unit (CU), a distributed unit (DU), a CU-control plane (CP), a CU-user plane (UP), or a radio unit (RU). The CU and DU can be set separately, or can also be included in the same network element, such as a baseband unit (BBU). The RU can be included in a radio frequency device or radio frequency unit, such as a remote radio unit (RRU), an active antenna unit (AAU), or a remote radio head (RRH).
[0042] In different systems, CU (or CU-CP and CU-UP), DU or RU may also have different names, but those skilled in the art can understand their meanings. For example, in the ORAN system, CU may also be called O-CU (open CU), DU may also be called O-DU, CU-CP may also be called O-CU-CP, CU-UP may also be called O-CU-UP, and RU may also be called O-RU. Any unit in the CU (or CU-CP, CU-UP), DU and RU in this application may be implemented by a software module, a hardware module, or a combination of a software module and a hardware module. CU (or CU-CP and CU-UP), DU and RU can implement different protocol layer functions.
[0043] Figure 2A schematic diagram of a terminal device (or an environmental Internet of Things device) and a network device provided in an embodiment of the present application. The terminal device 120 (or an environmental Internet of Things device 130 ) includes a first processor 121 , a first memory 122 , and a first transceiver 123 .
[0044] The first processor 121 may include one or more processing units, for example, the first processor 121 may include a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a system on chip (SoC), a central processor unit (CPU), a network processor (NP), a microcontroller unit (MCU), a programmable logic device (PLD), an application processor (AP), a modem processor, a graphics processor (GPU), an image signal processor (ISP), a controller, a video codec, a digital signal processor (DSP), a baseband processor and / or a neural-network processing unit (NPU), etc. Different processing units may be independent devices or integrated in one or more processors.
[0045] The first memory 122 may be a volatile memory or a nonvolatile memory, or may include both volatile and nonvolatile memories. Among them, the nonvolatile memory may be a read-only memory (ROM), a programmable ROM (PROM), an erasable programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), or a flash memory. The volatile memory may be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct rambus RAM (DRRAM).
[0046] The first memory 122 may be independent and connected to the first processor 121 through a bus. The first memory 122 may also be integrated with the first processor 121. The first memory 122 is used to store application code for executing the solution of the present application, and the execution is controlled by the first processor 121. The first processor 121 is used to execute computer program instructions stored in the first memory 122, thereby executing various functional applications and data processing of the terminal device (or environmental Internet of Things device), such as implementing the perception method described in the embodiment of the present application.
[0047] The first processor 121 and the first transceiver 123 are connected via a bus. The first transceiver 123 may use any transceiver-like device for communicating with other devices or communication networks, such as Ethernet, radio access network (RAN), wireless local area network (WLAN), etc. The first transceiver 123 includes a transmitter Tx and a receiver Rx.
[0048] The network device 110 includes: a second processor 111, a second memory 112, and a second transceiver 113. The second processor 111 is used to execute computer program instructions stored in the second memory 112, so as to execute various functional applications and data processing of the network device 110, such as implementing the encoding method of the fountain code described in the embodiment of the present application. The function of the second processor 111 refers to the description of the first processor 121, the function of the second memory 112 refers to the description of the first memory 122, and the function of the second transceiver 113 refers to the description of the first transceiver 123, which will not be repeated here.
[0049] To facilitate understanding of the embodiments of the present application, the terms involved in the present application are first briefly explained. Optionally, the interpretation of some terms can also refer to the interpretation in the third generation partnership project (3rd generation partnership project, 3GPP) standard protocol. It should be understood that the technical terms in this application are only used as examples and not as limitations. For example, as technology evolves, technical terms will also change. In the case of the same technical meaning, other technical terms should also apply to this application.
[0050] Fountain codes: are rateless codes that are mainly used for efficient and reliable data transmission, especially for communication scenarios with high packet loss rates or difficult feedback, such as satellite communications and the Internet of Things. The sender generates coded packets based on data blocks infinitely like a fountain, and the receiver can successfully decode the data blocks as long as it receives a sufficient number of coded packets. Rateless codes refer to the fact that the coding rate (the ratio of the number of coded packets to the number of data blocks) is not fixed. In theory, an infinite number of coded packets can be generated, so it can resist continuous packet loss.
[0051] Fountain codes, with their non-fixed code rate and ability to resist sudden packet loss, have become a key technology for optimizing short code transmission in the fifth generation (5G) communications and future communication methods, especially for scenarios such as massive machine-type communications (mMTC), vehicle-to-everything (V2X), and real-time streaming. For example, in the mMTC scenario, the transmitter dynamically generates coded packets based on fountain codes to alleviate channel congestion, support efficient transmission of coded packets for massive low-power devices, significantly reduce retransmission power consumption and latency, and meet the large-scale connection requirements of smart cities and industrial Internet of Things. In V2X scenarios such as high-speed mobile environments (such as vehicle-to-vehicle communications), the ability to resist packet loss and fast decoding of short code transmission can be optimized. In real-time streaming scenarios such as augmented reality (AR), virtual reality (VR), and cloud games, the no-retransmission mechanism of fountain codes ensures low-latency and high-reliability transmission of the first frame data, reduces the first frame latency, and reduces video freezes.
[0052] Degree: The degree value indicates the number of data blocks required by the sender to generate a coded packet. For example, if the degree value d=1, the sender directly obtains a coded packet based on a data block. If the degree value > 1, the sender performs a merge (e.g., exclusive or (XOR)) operation on d data blocks to obtain a coded packet. By optimizing the distribution of degree values, it is ensured that redundant information can be efficiently merged during decoding.
[0053] Representative encoding methods of fountain codes include Luby transform codes (LT) and Raptor Codes. LT codes were first proposed by Luby, using ideal soliton distribution or robust soliton distribution to randomly generate degree values d. The advantages are simplicity and computational efficiency. The disadvantage is that when the number of data blocks k is small, decoding may require more redundant coding packets. Raptor codes are an improved version of LT codes, which improve decoding efficiency by introducing precoding, such as low-density parity-check codes (LDPC). The advantages are faster decoding and lower redundancy (close to the Shannon limit).
[0054] Soliton distribution: Soliton distribution is a core mathematical tool in fountain codes (especially LT codes), which is used to control the degree distribution of coded packets to ensure efficient and stable decoding. Its design is inspired by the soliton wave in physics, which is an isolated wave that can propagate without loss. By analogy, the decoding process should proceed smoothly like a soliton wave.
[0055] The core problem that soliton distribution needs to solve is: how to distribute the probability of the degree value d so that decoding can be started smoothly, that is, enough d=1 coding packets are needed; the decoding process is executed continuously to avoid decoding failure; and the number of redundant coding packets is minimized.
[0056] Ideal soliton distribution: Ideal soliton distribution is a probability distribution mainly used in fountain codes, especially LT codes, to optimize the encoding and decoding process. Its goal is to ensure that each coded packet can provide the maximum information gain during data recovery, thereby improving decoding efficiency. The definition of ideal soliton distribution is as follows: .
[0057] Where k is the number of data blocks to be encoded. d is the degree value. The probability of d=1 is the highest, that is, the number of coded packets with d=1 is the largest. The receiving end can directly decode a coded packet with d=1 to obtain a data block, thereby starting decoding. When d is greater than 1, as d increases, the probability of ideal soliton distribution decreases rapidly, avoiding too many coded packets with high values that cause decoding difficulties.
[0058] Robust soliton distribution (RSD): The ideal soliton distribution is optimal in theory, but in practice it is easy to cause decoding failure due to random fluctuations. Robust soliton distribution improves decoding stability by introducing a redundant parameter δ based on the ideal distribution, and has more practical applications. The definition of robust soliton distribution is as follows: .
[0059] in, , d represents the degree value, s represents the number of coded packets with a degree value of 1, and k represents the number of data blocks. Indicates the upper bound of the probability of decoding failure. Compared with the ideal soliton distribution, the robust soliton distribution increases the weight of the degree value d to 1 to ensure that the decoding start is more reliable; a spike is introduced to increase the probability at d=k / s to prevent decoding stagnation.
[0060] The encoding and decoding process of the fountain code in the prior art is as follows: The process of encoding performed by the sender: The sender divides the original data into k data blocks {x1, x2, …, xk} on average. A degree value d is randomly generated according to the soliton distribution (such as ideal soliton distribution or robust soliton distribution). If the degree value d=1, the sender randomly selects a data block from the k data blocks, generates a coded packet y and sends the coded packet y to the receiver. If the degree value d>1, the sender randomly selects d data blocks from the k data blocks to perform a merge (such as XOR) operation, generates a coded packet y, and sends the coded packet y. Similarly, every time the sender generates a degree value d, it will generate a coded packet y according to the degree value d, and finally can generate and send m coded packets y1, y2...ym, m≥k.
[0061] Decoding process at the receiving end: The receiving end receives n coded packets, n≤m. The receiving end uses the belief propagation (BP) method or Gaussian elimination method to gradually decode the n coded packets to obtain k data blocks, and performs splicing on the k data blocks according to the data block identifiers to obtain the original data. Specifically, the receiving end preferentially decodes the coded packets with a degree value of d=1, and can directly obtain a data block. Then, according to the self-invertibility of XOR, the decoded data block and the coded packet generated based on the data block are used to perform XOR operations to obtain other data blocks.
[0062] Figure 3 A schematic diagram of encoding and decoding of a fountain code provided in an embodiment of the present application. Figure 4 A schematic diagram of another fountain code encoding and decoding method provided in an embodiment of the present application. For example, Figure 3 and Figure 4As shown, the transmitter divides the original data into 4 (k=4) data blocks x1, x2, x3, and x4 on average. The transmitter randomly generates a degree value d=1 according to the soliton distribution, randomly selects a data block x1, generates a coded packet y1, and sends the coded packet y1. The transmitter randomly generates a degree value d=3 according to the soliton distribution, randomly selects 3 data blocks x1, x2, and x3 to perform a merge (e.g., XOR) operation, generates a coded packet y2, and sends the coded packet y2. The transmitter randomly generates a degree value d=2 according to the soliton distribution, randomly selects 2 data blocks x2 and x4 to perform a merge (e.g., XOR) operation, generates a coded packet y3, and sends the coded packet y3. Similarly, the transmitter randomly generates a degree value d=2 according to the soliton distribution, randomly selects 2 data blocks x3 and x4 to perform a merge (e.g., XOR) operation, generates a coded packet y8, and sends the coded packet y8. The sender generates and sends 8 coded packets y1-y8, that is, m=8. These coded packets may be lost during the channel transmission process, such as coded packets y2 and y8. The receiver receives 6 coded packets y1, y3...y7, that is, n=6. The receiver gradually decodes these coded packets to obtain 4 data blocks x1, x2, x3, x4.
[0063] Due to the uncontrollability of the probability distribution of random selection of data blocks at the sender, the data block selection is uneven, for example, some data blocks are frequently selected, while other data blocks are selected less frequently. This situation is particularly obvious when the network is congested or the channel quality fluctuates, which can easily lead to problems such as imbalanced coding redundancy, increased transmission delay, and decreased fault tolerance.
[0064] In view of this, the present application provides a fountain code encoding method, and the fountain code encoding process includes two stages. In the first stage, all data blocks are selected in a preset order and encoding is performed, which can cover all data blocks. In the second stage, data is selected according to the selection probability of each data block and encoding is performed. The selection probability of each data block can be adjusted according to the number of times each data block has been selected. The smaller the number of times a data block has been selected, the greater the selection probability of the data block, and the greater the number of times a data block has been selected, the smaller the selection probability of the data block, so that the selection probability of each data block is close.
[0065] The encoding method of the fountain code realizes the balanced selection of each data block for encoding during the encoding process of the fountain code, improves the utilization rate of the data block, balances the encoding redundancy, reduces the transmission delay and improves the fault tolerance performance, especially in a dynamic network environment, with stronger adaptability and stability. The encoding method of the fountain code does not require major modifications to the existing fountain code encoding standards and has good compatibility. The optimization for short code scenarios can significantly improve transmission efficiency and reduce latency, which meets the needs of future communications and the Internet of Things for low-latency and high-reliability transmission. In addition, as an optional forward error correction (FEC) mechanism, by adding redundant information, the receiving end can automatically detect and correct errors, thereby enhancing the short code transmission performance.
[0066] It should also be noted that the order of the two stages can be interchanged, for example, the first stage is executed first and then the second stage, or the second stage is executed first and then the first stage.
[0067] The scheme provided by the present application is described in detail below in conjunction with the corresponding flowchart. It can be understood that the schematic flowchart provided by the present application mainly uses different devices (for example, terminal devices, environmental Internet of Things devices, network devices) as examples of the execution subjects of the interactive schematic to illustrate the method, but the present application does not limit the execution subjects of the interactive schematic. For example, the device in the schematic flowchart (for example, a terminal device, an environmental Internet of Things device, a network device) may also be a chip, a chip system, or a processor that supports the device to implement the method, or may be a logic module or software that can implement all or part of the functions of the device.
[0068] Here, a unified explanation is given. In the interaction process of the embodiment of the present application, the message or signaling interaction involved can adopt the message or signaling in the standard, or it can be a newly introduced message or signaling, and the embodiment of the present application does not make specific limitations on this.
[0069] Figure 5 A schematic diagram of a flow chart of a fountain code encoding method provided in an embodiment of the present application. It can be understood that the terminal device involved in the fountain code encoding method can be Figure 1 The terminal device in the fountain code may also refer to a device in the terminal device (such as a processor, a chip, or a chip system). The network device involved in the fountain code encoding method may be Figure 1 The network device in the network device may also refer to a device in the network device (such as a processor, a chip, or a chip system, etc.). The environmental IoT device involved in the fountain code encoding method may be Figure 1 The term "environmental IoT device" may also refer to a device in an environmental IoT device (such as a processor, chip, or chip system). Figure 5As shown, the fountain code encoding method 500 includes the following steps S501-S503: S501. A first device obtains k data blocks according to original data to be encoded.
[0070] The first device may evenly divide the original data to be encoded (length H) into k data blocks of equal length. If the length H of the original data cannot be divided by k, blank data of length L (for example, all zeros) is added to the end of the original data so that H+L can be divided by k. At this time, the added blank data is located in the last data block.
[0071] S502, the first device randomly generates a first degree value d1, selects d1 data blocks from k data blocks according to a preset order to perform encoding, generates a first encoding packet, sends the first encoding packet to the second device, and repeats this step until each data block is selected at least N times, N is an integer greater than or equal to 1, and the degree value represents the number of data blocks required to encode and generate one encoding packet.
[0072] The first device is a transmitter of the original data to be encoded, and the second device is a receiver of the original data to be encoded. The first device is any one of a network device, a terminal device, or an environmental Internet of Things device, and the second device is any one of a network device, a terminal device, or an environmental Internet of Things device. For example, the first device is a network device, and the second device is a terminal device or an environmental Internet of Things device; or, the first device is a terminal device or an environmental Internet of Things device, and the second device is a network device; or, the first device is a terminal device, and the second device is an environmental Internet of Things device; or, the first device is an environmental Internet of Things device, and the second device is a terminal device; or, the first device and the second device are both terminal devices; or, the first device and the second device are both environmental Internet of Things devices; or, the first device and the second device are both network devices.
[0073] The first device may randomly generate a first degree value d1 using a soliton distribution (e.g., an ideal soliton distribution or a robust soliton distribution). If the first degree value d1=1, the first device selects a data block from the k data blocks in a preset order (e.g., an ascending or descending order of the data block identifier), generates a first code packet y, and sends the first code packet y to the second device. If the first degree value d1>1, the first device selects d1 data blocks from the k data blocks in the same preset order to perform a merge (e.g., XOR) operation, generates a first code packet y, and sends the first code packet y to the second device. Similarly, each time the first device generates a first degree value d1, it selects d1 data blocks from the k data blocks in a preset order, performs encoding once, generates a first code packet y, and sends the first code packet y to the second device. This is equivalent to traversing each data block in a preset order in each round until each data block is selected at least N times, that is, all k data blocks are traversed at least N rounds, and N is an integer greater than or equal to 1.
[0074] If the first degree value (i.e., the number of data blocks required for encoding) d1 is greater than the number a of the remaining unselected (i.e., unencoded) data blocks in this round of traversal, it means that the number of the remaining unencoded data blocks in this round of traversal is too small to be encoded to generate a first coding packet, then the first device selects d1-a data blocks with medium probability from the k data blocks (i.e., the selection probability of each data block is 1 / k), so as to gather a+(d1-a)=d1 data blocks for encoding, or selects d1-a data blocks with medium probability from the remaining ka selected (i.e., encoded) data blocks of the k data blocks (i.e., the selection probability of each data block is 1 / (ka)), so as to gather a+(d1-a)=d1 data blocks for encoding. That is, the a unselected data blocks and the d1-a data blocks selected with equal probability (a total of d1 data blocks) are encoded (e.g., a merge (e.g., XOR) operation is performed), a first coding packet y is generated, and the first coding packet y is sent to the second device.
[0075] It should be noted that the first device selects d1-a data blocks from the k data blocks with a medium probability. Although d1 data blocks can be collected, some of the k data blocks have been selected (i.e., encoded) and some have not been selected (i.e., not encoded). Therefore, it is possible that the unselected data blocks are selected again. If an XOR operation is performed with the unselected data blocks again, it is equivalent to performing an XOR operation on the same data blocks. The operation result (i.e., the obtained coded packet) is always 0, and the second device will not be able to decode the coded packet. However, the first device selects d1-a data blocks from the remaining ka selected data blocks with a medium probability. Therefore, the unselected data blocks will not be selected again. If an XOR operation is performed with the unselected data blocks again, the same data blocks will not be performed. The operation result (i.e., the obtained coded packet) will not be always 0, and the second device can decode the coded packet.
[0076] Figure 6 A schematic diagram of encoding a fountain code provided in an embodiment of the present application. Figure 6 As shown, taking N=1 as an example, the first device generates a first degree value d1=1, then selects d1=1 data block x1 from k=4 data blocks in ascending order of data block identifiers, performs encoding once, generates a first code packet y, and sends the first code packet y1 to the second device. Then, the first device generates a first degree value d1=2, then selects d1=2 data blocks x2 and x3 from k=4 data blocks in ascending order of data block identifiers, performs encoding once, generates a first code packet y, and sends the first code packet y2 to the second device. Then, the first device generates a first degree value d1=2, which is greater than the number a=1 of the remaining unselected data blocks (x4), then the first device selects d1-a=2-1=1 data block (for example, x2) with equal probability from the k=4 data blocks, performs encoding on the a=1 unselected data block and the d1-a=2-1=1 data block selected with equal probability, generates a first code packet y, and sends the first code packet y3 to the second device.
[0077] Whenever the first device traverses k data blocks once according to a preset order, each data block is selected at least once. Whenever the first device traverses k data blocks N times according to a preset order, each data block is selected at least N times. In addition, when N>1, the preset order of traversing k data blocks in two adjacent rounds may be different. For example, the first round of traversing k data blocks may be based on the selection probability of each data block, and the second round of traversing k data blocks may be based on the descending order of the data block identifiers, thereby avoiding random fluctuations that cause decoding failure of the second device.
[0078] The first device also records the number of times each data block has been selected C. For example, the number of times the i-th data block among k data blocks has been selected is , 1≤i≤k, i is an integer.
[0079] Step S502 corresponds to the first stage of fountain code encoding.
[0080] S503, the first device randomly generates a second degree value d2, selects d2 data blocks from k data blocks according to the selection probability of each data block to perform encoding, generates a second encoding packet, sends the second encoding packet to the second device, and repeats this step until the termination condition is met. The selection probability of each data block is determined by the number of times each data block has been selected.
[0081] The first device can randomly generate the second degree value d2 using an ideal soliton distribution or a robust soliton distribution. If the second degree value d2=1, the first device selects a data block from the k data blocks according to the selection probability of each data block, generates a second coded packet y, and sends the second coded packet y to the second device. If the second degree value d2>1, the first device selects d2 data blocks from the k data blocks according to the selection probability of each data block, performs a merge (such as an XOR) operation, generates a second coded packet y, and sends the second coded packet y to the second device. Similarly, each time the transmitting end generates a second degree value d2, it selects d2 data blocks from the k data blocks according to the selection probability of each data block, performs encoding once, generates a second coded packet y, and sends the second coded packet y to the second device. Until the termination condition is met.
[0082] The selection probability of each data block is determined by the number of times each data block has been selected. The smaller the number of times a data block has been selected, the greater the selection probability of the data block, and the greater the number of times a data block has been selected, the smaller the selection probability of the data block. In other words, the smaller the number of times a data block is selected, the greater the probability of being selected again in the future, and the greater the number of times a data block is selected, the smaller the probability of being selected again in the future, thereby achieving dynamic balance of the selection probability of each data block. After each encoding is completed, the first device adds 1 to the number of times the data block involved in the current encoding has been selected, and adjusts the selection probability of each data block according to the number of times each data block has been selected.
[0083] Exemplarily, the selection probability of the i-th data block is equal to: ; is the number of times the i-th data block has been selected, 1≤i≤k, and i is an integer. The significance of this formula is that the selection probability of a data block is not only basically inversely proportional to the number of times the data block has been selected, but also integrates the selection probabilities of all data blocks, thereby achieving a dynamic balance of the selection probabilities of each data block. The embodiment of the present application does not limit how to calculate the selection probability of the i-th data block.
[0084] In a possible implementation, satisfying the termination condition includes: the total number of coded packets is greater than or equal to a total number threshold. For example, the total number threshold is equal to: , is a parameter greater than or equal to 0, that is, if the total number of coded packets is too small, some data blocks will be selected too many times and some data blocks will be selected too few times, and the selection probability of the data blocks will be uneven. The total number of coded packets must reach at least the number of data blocks k, so that there are enough coded packets to achieve a balanced selection probability of the data blocks. When the total number of coded packets is greater than or equal to the total number threshold, the first device stops generating and sending new second coded packets to avoid generating too many redundant coded packets and occupying too much bandwidth.
[0085] In another possible implementation, the termination condition is satisfied when the difference between the maximum selection probability and the minimum selection probability among the k data blocks is less than a probability threshold (eg, 0.01). At this point, the selection probabilities of all the k data blocks are numerically close, and the selection probabilities are balanced.
[0086] It should be noted that these termination conditions can be combined. For example, when any termination condition is met, or when all termination conditions are met, the first device stops generating and sending new second coded packets.
[0087] Figure 7 A schematic diagram of another fountain code encoding provided in an embodiment of the present application. Figure 7 As shown, the first device generates a second degree value d2=1, then selects d2=1 data block x2 from k=4 data blocks according to the selection probability of each data block to perform one encoding, generates a second encoding package y, and sends the second encoding package y1 to the second device. Then, the first device generates a second degree value d2=2, then selects d2=2 data blocks x1 and x3 from k=4 data blocks according to the selection probability of each data block to perform one encoding, generates a second encoding package y, and sends the second encoding package y2 to the second device. Then, the first device generates a second degree value d2=2, then selects d2=2 data blocks x3 and x4 from k=4 data blocks according to the selection probability of each data block to perform one encoding, generates a second encoding package y, and sends the second encoding package y3 to the second device. Then, the first device generates a second degree value d2=3, then selects d2=3 data blocks x1, x2, and x4 from k=4 data blocks according to the selection probability of each data block to perform one encoding, generates a second encoding package y, and sends the second encoding package y4 to the second device.
[0088] Correspondingly, the second device receives multiple coded packets (including the first coded packet and the second coded packet). The second device can decode the multiple coded packets according to the decoding method of the prior art to obtain k data blocks, and perform splicing on the k data blocks according to the data block identifiers to obtain the original data. For example, the second device can use belief propagation or Gaussian elimination to decode the multiple coded packets to obtain k data blocks, and perform splicing on the k data blocks according to the data block identifiers to obtain the original data. Specifically, the second device preferentially decodes the coded packets whose degree value (the first degree value d1 or the second degree value d2) is 1, and can directly obtain a data block, and then according to the self-invertibility of XOR, perform XOR operation on the decoded data block and the coded packet generated based on the data block to obtain other data blocks.
[0089] Step S503 corresponds to the second stage of fountain code encoding.
[0090] Figure 8 A schematic diagram of packet loss rate comparison under different code lengths provided in an embodiment of the present application. The encoding method of the fountain code provided in an embodiment of the present application has a lower packet loss rate than the Reed-Solomon (RS) code and the traditional LT fountain code.
[0091] Fig. 9 A schematic diagram of coding time comparison under different code lengths provided in an embodiment of the present application. The coding time of the fountain code coding method provided in an embodiment of the present application is the same as the coding time of the traditional LT fountain code, and is much shorter than the coding time of the RS code.
[0092] The fountain code encoding method and communication device provided in the embodiment of the present application include two stages in the encoding process of the fountain code. In the first stage, all data blocks are selected in a preset order and encoding is performed. In the second stage, data is selected according to the selection probability of each data block and encoding is performed. The selection probability of each data block can be adjusted according to the number of times each data block has been selected to achieve dynamic balancing of the selection probability of each data block. In the encoding process of the fountain code, each data block is evenly selected for encoding.
[0093] like Fig.10 As shown, a communication device provided in an embodiment of the present application. The communication device 1000 may include a communication module 1010. The communication module 1010 may implement a corresponding communication function, which may be an internal communication function of the communication device 1000 or a communication function between the communication device 1000 and other devices. Optionally, the communication module 1010 may also be referred to as a communication interface or a transceiver module. Optionally, the communication device 1000 also includes a processing module 1020. The processing module 1020 may implement a corresponding processing function.
[0094] Optionally, the communication device 1000 further includes a storage module 1030, which can be used to store instructions and / or data; the processing module 1020 can read the instructions and / or data in the storage module 1030, so that the communication device 1000 implements the aforementioned method embodiment.
[0095] In a possible design, the communication device 1000 may correspond to the first device in the above method embodiment, or a component (such as a circuit, a chip or a chip system, etc.) configured in the first device. The communication device 1000 may be used to execute the steps or processes executed by the first device in any of the above method embodiments.
[0096] For example, the processing module 1020 is used to obtain k data blocks based on the original data to be encoded; randomly generate a first degree value d1, select d1 data blocks from the k data blocks in a preset order to perform encoding, and generate a first encoding packet, the communication module 1010 is used to send the first encoding packet, and repeat this step until each data block is selected at least N times, N is an integer greater than or equal to 1, and the degree value represents the number of data blocks required to encode and generate a coding packet; the processing module 1020 is used to randomly generate a second degree value d2, select d2 data blocks from the k data blocks according to the selection probability of each data block to perform encoding, and generate a second coding packet, the communication module 1010 is used to send the second coding packet, and repeat this step until the termination condition is met, and the selection probability of each data block is determined by the number of times each data block has been selected.
[0097] In an optional design, the smaller the number of times a data block has been selected, the greater the probability of the data block being selected, and the larger the number of times a data block has been selected, the smaller the probability of the data block being selected.
[0098] In an optional design, the selection probability of the i-th data block is equal to: ; is the number of times the i-th data block has been selected, 1≤i≤k, and i is an integer.
[0099] In an optional design, the termination condition is met, including: the total number of encoded packets is greater than or equal to a total number threshold.
[0100] In an alternative design, the population threshold is equal to: , A parameter greater than or equal to 0.
[0101] In an optional design, the termination condition is satisfied, including: among the k data blocks, the difference between the maximum selection probability and the minimum selection probability is less than a probability threshold.
[0102] In an optional design, the processing module 1020 is used to: if the first degree value d1 is greater than the number a of remaining unselected data blocks, then d1-a data blocks are selected with equal probability from the k data blocks, and encoding is performed on the a unselected data blocks and the d1-a data blocks selected with equal probability to generate a first encoding packet, and the communication module 1010 is used to send the first encoding packet.
[0103] In an optional design, the processing module 1020 is used to: if the first degree value d1 is greater than the number a of remaining unselected data blocks, then d1-a data blocks are selected with equal probability from the remaining ka selected data blocks, and encoding is performed on the a unselected data blocks and the d1-a data blocks selected with equal probability to generate a first coding packet, and the communication module 1010 is used to send the first coding packet.
[0104] Fig.11 A schematic diagram of the structure of another communication device provided in an embodiment of the present application. The communication device 1100 may be a chip, a chip system, or a processor, etc., for the first device to implement the above method. The communication device 1100 may be used to implement the method described in the above method embodiment, and the details may refer to the description in the above method embodiment.
[0105] like Fig.11 As shown, the communication device 1100 may include one or more processors 1110, which may also be referred to as a processing unit or a processing module, and may implement certain control functions. The processor 1110 may be a general-purpose processor or a dedicated processor, for example, a baseband processor or a central processing unit. The baseband processor may be used to process the communication protocol and communication data, and the central processing unit may be used to control the communication device 1100 (for example, a base station, a baseband chip, a user, a user chip), execute a software program, and process the data of the software program.
[0106] In an optional design, the processor 1110 may also store instructions and / or data, and the instructions and / or data may be executed by the processor 1110 so that the communication device 1100 executes the method described in the above method embodiment.
[0107] In another optional design, the communication device 1100 may include a communication interface 1120 for implementing the receiving and sending functions. For example, the communication interface 1120 may be a transceiver circuit, an interface, an interface circuit, or a transceiver. The transceiver circuit, interface, interface circuit, or transceiver for implementing the receiving and sending functions may be separate or integrated. The above-mentioned transceiver circuit, interface, interface circuit, or transceiver may be used for reading and writing code / data, or the above-mentioned transceiver circuit, interface, interface circuit, or transceiver may be used for transmitting or delivering signals.
[0108] Optionally, the communication device 1100 may include one or more memories 1130, on which instructions may be stored, and the instructions may be executed on the processor 1110, so that the communication device 1100 performs the method described in the above method embodiment. Optionally, data may also be stored in the memory 1130. Optionally, instructions and / or data may also be stored in the processor 1110. The processor 1110 and the memory 1130 may be provided separately or integrated together.
[0109] It should be understood that in a possible design, each step in the method embodiment provided by the present application can be completed by an integrated logic circuit of hardware in a processor or an instruction in the form of software. The steps of the method disclosed in conjunction with the embodiment of the present application can be directly embodied as a hardware processor for execution, or a combination of hardware and software modules in a processor for execution. The software module can be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, etc. The storage medium is located in a memory, and the processor reads the information in the memory and completes the steps of the above method in conjunction with its hardware. To avoid repetition, it is not described in detail here.
[0110] In one implementation, the communication device 1100 may correspond to the first device in the above method embodiment, and may be used to execute the various steps and / or processes executed by the first device in the above method embodiment. The processor 1110 may be used to execute instructions stored in the memory 1130, and when the processor 1110 executes the instructions stored in the memory, the processor 1110 is used to execute the various steps and / or processes of the above method embodiment corresponding to the first device.
[0111] It should be understood that the processor may be one or more chips. For example, the processor may be a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a system on chip (SoC), a central processor unit (CPU), a network processor (NP), a digital signal processor (DSP), a micro controller unit (MCU), a programmable logic device (PLD) or other integrated chips.
[0112] It can be understood that the memory in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct RAM bus RAM (DR RAM). It should be noted that the memory of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0113] According to the method provided in the embodiment of the present application, the present application further provides a processor, including: an input circuit, an output circuit and a processing circuit. The processing circuit is used to receive a signal through the input circuit and transmit a signal through the output circuit, so that the processor executes the method of the embodiment of the present application.
[0114] In the specific implementation process, the processor can be one or more chips, the input circuit can be an input pin, the output circuit can be an output pin, and the processing circuit can be a transistor, a gate circuit, a trigger, and various logic circuits. The input signal received by the input circuit can be, for example, but not limited to, received and input by a receiver, and the signal output by the output circuit can be, for example, but not limited to, output to a transmitter and transmitted by the transmitter, and the input circuit and the output circuit can be the same circuit, which is used as an input circuit and an output circuit at different times. The embodiments of the present application do not limit the specific implementation methods of the processor and various circuits.
[0115] According to the method provided in the embodiment of the present application, the present application also provides a chip system, which includes one or more processors for calling and running instructions stored in the memory from the memory, so that the method of the embodiment of the present application is executed. The chip system can be composed of a chip, or it can include a chip and other discrete devices.
[0116] Among them, the chip system may include an input circuit or interface for sending information or data, and an output circuit or interface for receiving information or data.
[0117] According to the method provided in the embodiment of the present application, the present application also provides a communication system, which includes the aforementioned first device and second device.
[0118] According to the method provided in the embodiments of the present application, the present application also provides a computer program product, which includes: computer program code, when the computer program code is run on a computer, the computer executes the various steps or processes executed by the first device in any of the aforementioned method embodiments.
[0119] According to the method provided in the embodiments of the present application, the present application also provides a computer-readable storage medium, which stores program code. When the program code runs on a computer, the computer executes the various steps or processes executed by the first device in any of the aforementioned method embodiments.
[0120] The computer-readable storage medium may be the volatile memory or the nonvolatile memory mentioned above, or may include both the volatile memory and the nonvolatile memory.
[0121] In the embodiments of the present application, each term and English abbreviation is provided for the convenience of description and shall not constitute any limitation to the present application. The present application does not exclude the possibility of defining other terms that can achieve the same or similar functions in existing or future protocols.
[0122] In the above embodiments, all or part of the embodiments may be implemented by software, hardware, firmware, or any combination thereof. When implemented by software, all or part of the embodiments may be implemented in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer instructions are loaded and executed on a computer, all or part of the processes or functions according to the embodiments of the present application are generated.
[0123] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.
[0124] It should be understood that in the various embodiments of the present application, the size of the serial number of each process does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.
[0125] In short, the above is only a preferred embodiment of the technical solution of this application, and is not intended to limit the protection scope of this application. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of this application should be included in the protection scope of this application.
Claims
1. A fountain code encoding method, characterized in that: Applied to a transmitter of raw data to be encoded, the method comprises: Obtain k data blocks according to the original data to be encoded; Randomly generate a first degree value d1, select d1 data blocks from the k data blocks in a preset order to perform encoding, generate a first encoding packet, send the first encoding packet, and repeat this step until each data block is selected at least N times, where N is an integer greater than or equal to 1, and the degree value represents the number of data blocks required to encode and generate one encoding packet; A second degree value d2 is randomly generated, d2 data blocks are selected from the k data blocks according to the selection probability of each data block for encoding, a second encoding packet is generated, and the second encoding packet is sent. This step is repeated until the termination condition is met, and the selection probability of each data block is determined by the number of times each data block has been selected.
2. The method according to claim 1, characterized in that The smaller the number of times the data block has been selected, the greater the probability of the data block being selected, and the larger the number of times the data block has been selected, the smaller the probability of the data block being selected.
3. The method according to claim 2, characterized in that The probability of selecting the i-th data block is equal to: ; is the number of times the i-th data block has been selected, 1≤i≤k, and i is an integer.
4. The method according to any one of claims 1 to 3, characterized in that: The termination condition is met, including: the total number of the coded packets is greater than or equal to a total number threshold.
5. The method according to claim 4, characterized in that The total threshold is equal to: , A parameter greater than or equal to 0.
6. The method according to any one of claims 1 to 3, characterized in that: The termination condition is satisfied, including: among the k data blocks, the difference between the maximum selection probability and the minimum selection probability is less than a probability threshold.
7. The method according to any one of claims 1 to 3, characterized in that: Also includes: If the first degree value d1 is greater than the number a of remaining unselected data blocks, d1-a data blocks are selected with equal probability from the k data blocks, encoding is performed on the a unselected data blocks and the d1-a data blocks selected with equal probability to generate the first coding packet, and the first coding packet is sent.
8. The method according to any one of claims 1 to 3, characterized in that: Also includes: If the first degree value d1 is greater than the number a of remaining unselected data blocks, d1-a data blocks are selected with equal probability from the remaining ka selected data blocks, encoding is performed on the a unselected data blocks and the d1-a data blocks selected with equal probability to generate the first coding packet, and the first coding packet is sent.
9. A communication device, characterized in that: The communication device comprises a processor and a memory, wherein the memory stores instructions, and when the processor executes the instructions, the communication device executes the method according to any one of claims 1 to 8.
10. A computer-readable storage medium having a computer program or instruction stored thereon, characterized in that: When the computer program or instruction is executed, the computer is caused to perform the method according to any one of claims 1 to 8.
Citation Information
Patent Citations
Network coding method based on fountain codes
CN101567755A
Degree distribution optimization method of short code length fountain code for high-speed wireless end-to-end transmission
CN115102667A
Regular variable node degree fountain coding method
CN116633483A