Decoding method, apparatus, device, and storage medium

By dividing the raw Polar code data into groups and decoding them in parallel, and using multiple updated decoding units, the problems of decoding latency and resource waste in Polar code are solved, achieving efficient utilization of decoding resources and improving decoding efficiency.

CN112994706BActive Publication Date: 2025-12-30SANECHIPS TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN201911212695.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-12-02
Publication Date
2025-12-30
Estimated Expiration
2039-12-02

AI Technical Summary

Technical Problem

In fifth-generation mobile communication networks, the decoding latency and resource consumption of Polar codes increase with the decoding length, and common decoding algorithms lead to resource waste and inefficiency.

Method used

By dividing the original data into groups and decoding them in parallel, and using the first and second decoding units to update the grouped data multiple times, the decoded data is finally merged to reach the decoding length, thus realizing the reconstruction of the decoding resources.

Benefits of technology

While maintaining a relatively constant latency, the utilization rate and efficiency of decoding resources were improved, and resource waste was reduced.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112994706B_ABST
    Figure CN112994706B_ABST
Patent Text Reader

Abstract

The application provides a decoding method, device and equipment and a storage medium. The method comprises the following steps: decoding original data grouped in parallel through a first decoding unit to obtain grouped decoding data; decoding the grouped decoding data through a second decoding unit to obtain decoding data; if the sum of the lengths of the decoding data is an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the first decoding unit and the second decoding unit; if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the second decoding unit, obtaining decoding data again, and repeating the process until the sum of the lengths of the decoding data is equal to the decoding length, and the grouped decoding data is taken as the decoding result of the original data. Through the grouping decoding of the original data, the reconstruction of decoding resources is realized without changing the delay.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of wireless communication, in particular to a decoding method, device, equipment and storage medium. BACKGROUND

[0002] For polar codes used in the fifth generation mobile communication network (5th generation mobile networks, 5G), the common decoding algorithm is the successive cancellation (Successive Cancellation, SC) decoding algorithm and various improved algorithms based on the SC decoding algorithm. If a complete decoding needs to calculate N0 points, the common decoding algorithm calculates the decoding result of n points each time, and the next time is calculated based on the decoding result of the n points. Since the decoding length N0 of the 5G polar code is often long, using the common decoding algorithm will significantly increase the decoding delay and resource occupation. SUMMARY

[0003] The present application provides a decoding method, device, system and storage medium, which reconstructs the decoding resources by grouping and decoding the original data.

[0004] The present application provides a decoding method, which comprises:

[0005] The grouped original data is decoded in parallel through the first decoding unit to obtain grouped decoding data;

[0006] The merged grouped decoding data is decoded through the second decoding unit to obtain decoding data;

[0007] If the sum of the lengths of the decoding data is an integer multiple of the upper limit of the decoding times of the second decoding unit, the first decoding unit and the second decoding unit are updated, if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the decoding times of the second decoding unit, the second decoding unit is updated, and the decoding data is obtained again until the sum of the lengths of the decoding data is equal to the decoding length, and the merged decoding data is taken as the decoding result of the original data.

[0008] The present application provides a decoding device, which comprises:

[0009] The first decoding module is configured to decode the grouped original data in parallel through the first decoding unit to obtain grouped decoding data;

[0010] The second decoding module is configured to decode the merged grouped decoding data through the second decoding unit to obtain decoding data;

[0011] The circulating module is configured to update the first decoding unit and the second decoding unit if the sum of lengths of the decoding data is an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, update the second decoding unit if the sum of lengths of the decoding data is not an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, obtain decoding data again until the sum of lengths of the decoding data is equal to the decoding length, and merge the decoding data as a decoding result of the original data.

[0012] An apparatus is provided in an embodiment of the present application, and the apparatus includes:

[0013] one or more processors;

[0014] a storage device configured to store one or more programs,

[0015] When the one or more programs are executed by the one or more processors, the one or more processors implement the decoding method in the embodiments of the present application.

[0016] An embodiment of the present application provides a storage medium, the storage medium stores a computer program, and the computer program is executed by a processor to implement the decoding method in the embodiments of the present application.

[0017] The decoding method, the apparatus, the device and the storage medium provided in the embodiments of the present application can realize reconstruction of decoding resources by grouping original data, decoding the grouped original data in parallel through a first decoding unit to obtain grouped decoding data, decoding the merged grouped decoding data through a second decoding unit to obtain decoding data, repeatedly updating the first decoding unit and the second decoding unit or updating the second decoding unit to obtain new decoding data before the sum of lengths of the decoding data is equal to a decoding length, and finally obtaining a decoding result of the original data, thereby realizing reconstruction of decoding resources while keeping the delay basically unchanged. BRIEF DESCRIPTION OF DRAWINGS

[0018] Figure 1 FIG. 1 is a flowchart of a decoding method according to an embodiment of the present application;

[0019] Figure 2 FIG. 2 is a schematic diagram of a decoding calculation process according to an embodiment of the present application;

[0020] Figure 3 FIG. 3 is a schematic diagram of a decoding calculation process according to an embodiment of the present application;

[0021] Figure 4 FIG. 4 is a schematic diagram of a decoding calculation process according to an embodiment of the present application;

[0022] Figure 5 FIG. 5 is another flowchart of a decoding method according to an embodiment of the present application;

[0023] Figure 6A coding structure diagram of a coding length of an embodiment of the present application;

[0024] Figure 7 A coding structure diagram of another coding length of an embodiment of the present application;

[0025] Figure 8 A coding structure diagram of another coding length of an embodiment of the present application;

[0026] Figure 9 A coding structure diagram of another coding length of an embodiment of the present application;

[0027] Figure 10 A coding structure diagram of another coding length of an embodiment of the present application;

[0028] Figure 11 A structure diagram of a coding device of an embodiment of the present application;

[0029] Figure 12 A structure diagram of a coding device of an embodiment of the present application;

[0030] Figure 13 A structure diagram of a network device provided by the present application. DETAILED DESCRIPTION

[0031] In order to make the purpose, technical solutions and advantages of the present application clearer, the embodiments of the present application will be described in detail below with reference to the drawings. It should be noted that the embodiments in the present application and the features in the embodiments can be combined with each other as long as they do not conflict.

[0032] Figure 1 A flow diagram of a coding method of an embodiment of the present application, which can be applied to the case of coding polar code data. The method can be executed by a coding device provided by the present application, which is realized by software and / or hardware and integrated in a device providing coding service. As shown in the figure, the method comprises: Figure 1

[0033] Step 110, parallel coding of the grouped original data through the first coding units to obtain grouped coding data.

[0034] Wherein, the original data is polar code data to be coded, the first coding units are used to code the original data, and the number of the first coding units is determined by the number of data included in the original data. When there are multiple first coding units, the original data needs to be evenly grouped to obtain grouped original data corresponding to each first coding unit. By parallel inputting each grouped original data into the corresponding first coding unit, the grouped coding data output by each first coding unit can be obtained. ​

[0035] In one example, before the grouped original data is decoded in parallel by the first decoding unit to obtain the grouped decoded data, it can further include: obtaining a decoding length corresponding to the original data; determining the first decoding unit and the second decoding unit corresponding to the decoding length according to a preset decoding resource allocation table.

[0036] It should be noted that, since the amount of data contained in the original data is different, the decoding resources required to complete the complete decoding process are also different, therefore, before decoding, the decoding length corresponding to the original data, that is, the number of data included in the original data, needs to be obtained first, and then the decoding length is queried according to the preset decoding resource allocation table to determine which first decoding unit and second decoding unit are required for the original data to complete the decoding. Among them, the preset decoding resource allocation table includes the first decoding unit and the second decoding unit corresponding to each decoding length.

[0037] In one specific implementation, if the decoding length of the original data is 1024, by querying the preset decoding resource allocation table, it can be known that when the decoding length is 1024, the first decoding unit includes the first-32 smallest decoding units, and the second decoding unit includes the 33rd smallest decoding unit. Among them, each smallest decoding unit can independently complete the decoding process of code length 32.

[0038] In one example, before the grouped original data is decoded in parallel by the first decoding unit to obtain the grouped decoded data, it can further include: determining the second number corresponding to each first decoding unit according to the decoding length; for each first decoding unit, second number of original to-be-decoded data is extracted from every third number of original to-be-decoded data in the original data in turn, and the extracted to-be-decoded data is sequentially merged as the grouped original data corresponding to the first decoding unit.

[0039] Among them, the third number can be set to 32, and the second number is equal to the third number / first decoding unit number.

[0040] In one implementation, since there are multiple first decoding units corresponding to the original data, in order to realize decoding of the original decoding data by multiple first decoding units, the original data needs to be grouped. For example, for original data with a decoding length of 1024, there are 32 first decoding units corresponding to the original data, and therefore the original decoding data needs to be evenly divided into 32 groups. Specifically, the original data can be divided into multiple original data blocks, each of which includes 32 data, for example, original data blocks of original data with a decoding length of 1024 include i0-i31, i32-i63…i992-i1023, and then one piece of data to be decoded is extracted from each original data block in turn and merged according to the extraction order, so that a group of data is obtained, for example, i0, i32, i64…i992, and the above process is repeated 32 times to divide the original data into 32 groups.

[0041] Step 120, decoding the merged grouped decoding data by a second decoding unit to obtain decoded data.

[0042] It should be noted that the grouped decoding data output by the first decoding unit is the input data of the second decoding unit, and after the grouped decoding data output by each first decoding unit is sequentially merged, the second decoding unit is input for decoding, so that one piece of decoded data is obtained.

[0043] In one example, after obtaining the decoded data, the decoded data can be further stored in a register group.

[0044] It should be noted that the decoded data currently stored in the register can be used to calculate new decoded data to obtain the decoding result of the original data.

[0045] In one example, after storing the decoded data in the register group, the computing sub-unit in the first decoding unit or the second decoding unit can be switched if the sum of the lengths of the decoded data stored in the register group meets a preset computing sub-unit switching rule.

[0046] It should be noted that the first decoding unit and the second decoding unit each include multiple computing sub-units, for example, a first computing sub-unit, a second computing sub-unit, a fourth computing sub-unit, an eighth computing sub-unit, and a sixteenth computing sub-unit, but each computing sub-unit in the second decoding unit is used, and the first decoding unit can use part of the computing sub-units according to the decoding length. For example, when the decoding length is 512, the second, fourth, eighth, and sixteenth computing sub-units in the first decoding unit are available, and the first computing sub-unit is not used.

[0047] It should be noted that switching the calculation subunit is essentially switching the input data of the calculation subunit. After switching the calculation subunit in the first decoding unit or the second decoding unit according to the preset calculation subunit switching rule, new decoding data can be calculated.

[0048] In one example, the preset calculation subunit switching rule includes: the Mth calculation subunit in the first decoding unit is switched when the sum of the lengths of the decoding data is an integer multiple of the first decoding unit number * 2 * M; the Nth calculation subunit in the second decoding unit is switched when the sum of the lengths of the decoding data is an integer multiple of 2 * N; wherein the Mth calculation subunit includes M basic calculators, and the Nth calculation subunit includes N basic calculators.

[0049] In one specific implementation, if the decoding length is 512, the 1st, 2nd, 4th, 8th, and 16th calculation subunits in the second decoding unit are switched when the sum of the lengths of the decoding data stored in the register group is equal to an integer multiple of 2, 4, 8, 16, and 32, respectively. The 2nd, 4th, and 8th calculation subunits in the first decoding unit are switched when the sum of the lengths of the decoding data stored in the register group is equal to an integer multiple of 64, 128, and 256, respectively. Among them, the 16th calculation subunit in the first decoding unit does not need to be switched, and the 1st calculation subunit is not used.

[0050] For example, if the decoding data stored in the register group is u0 and u1, the 1st calculation subunit of the second decoding unit as shown in Figure 2 may be switched to the 1st calculation subunit as shown in Figure 3 to continue calculating the decoding data u2 and u3. If the decoding data stored in the register group is u0-u3, the 1st and 2nd calculation subunits of the second decoding unit as shown in Figure 3 may continue to be switched to the 1st and 2nd calculation subunits as shown in Figure 4 . Among them, Figure 3 the 1st calculation subunit and Figure 2 the 1st calculation subunit of the same calculation subunit actually have different input data.

[0051] Step 130, if the sum of the lengths of the decoding data is an integer multiple of the upper limit of the decoding times of the second decoding unit, update the first decoding unit and the second decoding unit, if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the decoding times of the second decoding unit, update the second decoding unit, and obtain the decoding data again until the sum of the lengths of the decoding data is equal to the decoding length, and combine the decoding data as the decoding result of the original data.

[0052] It should be noted that since the second decoding unit outputs only one decoding data each time, after obtaining one decoding data, it is necessary to determine whether the complete decoding of the original data is completed, that is, whether the sum of the lengths of the decoding data obtained so far is equal to the decoding length, if less, the decoding resource is updated, and the subsequent decoding data is calculated, until the sum of the lengths of the decoding data is equal to the decoding length, and the current decoding data is combined as the decoding result of the original data.

[0053] In one example, if the sum of the lengths of the decoding data is an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, the first decoding unit and the second decoding unit are updated, and if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, the second decoding unit is updated, and the decoding data is obtained again until the sum of the lengths of the decoding data is equal to the decoding length, which can include: if the sum of the lengths of the decoding data stored in the register group is an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, the first decoding unit and the second decoding unit are updated, and if the sum of the lengths of the decoding data stored in the register group is not an integer multiple of the upper limit of the number of times of decoding of the second decoding unit, the second decoding unit is updated, and the decoding data is obtained again until the sum of the lengths of the decoding data stored in the register group is equal to the decoding length.

[0054] Wherein, updating the decoding unit is actually updating the calculation sub-unit in the decoding unit.

[0055] In one specific implementation, if the upper limit of the number of times of decoding of the second decoding unit is 32, and the decoding data stored in the register group is u0, that is, the sum of the lengths of the decoding data is 1, then the first calculation sub-unit in the second decoding unit needs to be updated according to u0 to obtain decoding data u1 according to the updated first calculation sub-unit, and after obtaining u1, the sum of the lengths of the decoding data is 2, and the second calculation sub-unit in the second decoding unit can be updated according to the decoding data u0 and u1; if the decoding data stored in the register group is u0-u31, that is, the sum of the lengths of the decoding data is 32, then the calculation sub-units in the first decoding unit and the second decoding unit need to be updated according to the decoding data u0-u31.

[0056] The decoding method, device, equipment and storage medium provided by the embodiments of the present application, by grouping the original data, decoding the grouped original data in parallel through the first decoding unit to obtain grouped decoding data, then decoding the combined grouped decoding data through the second decoding unit to obtain decoding data, before the sum of the lengths of the decoding data is equal to the decoding length, repeatedly updating the first decoding unit and the second decoding unit, or updating the second decoding unit to obtain new decoding data, and finally obtaining the decoding result of the original data, in the case that the delay is basically unchanged, the reconstruction of the decoding resource is realized.

[0057] Figure 5 This is another flowchart illustrating the decoding method according to an embodiment of this application. The method may include:

[0058] Step 210: Generate a preset decoding resource allocation table.

[0059] In one example, it may include: presetting a preset number of decoding lengths; determining the number of parallel decoding paths corresponding to each decoding length; for each decoding length, selecting a first number of second decoding units from a fixed number of minimum decoding units, and a first decoding unit that matches each of the second decoding units respectively; generating a preset decoding resource allocation table based on the numbers of each second decoding unit and each first decoding unit corresponding to each decoding length; wherein, the first number is equal to the number of parallel decoding paths corresponding to the current decoding length.

[0060] It should be noted that the preset number of decoding lengths can include lengths of 2. n For the six decoding lengths (n∈Z, 5≤n≤10), with limited decoding resources, i.e. a fixed number of minimum decoding units, the decoding resources required for decoding the original data of each decoding length are different. Therefore, in order to improve the utilization rate and efficiency of decoding resources and reduce the waste of decoding resources, we can use the limited decoding resources to perform multi-path parallel decoding of the original data to be decoded as much as possible.

[0061] In a specific implementation, the decoding structure with the smallest decoding length can be used as the smallest decoding unit, and decoding structures of various other decoding lengths can be implemented by combining the smallest decoding unit. Figure 6 The diagram shows a decoding structure with a decoding length of 32 according to an embodiment of this application, which is the smallest decoding unit in this embodiment; as shown Figure 7 The diagram shows another decoding structure with a decoding length of 1024 according to an embodiment of this application. This decoding structure is then processed as follows... Figure 8 The decomposition shown shows that the decoding structure with a decoding length of 1024 is equivalent to 33 minimum decoding units. Figure 9 The diagram shows another decoding structure with a decoding length of 512 according to an embodiment of this application. This decoding structure is then subjected to the following... Figure 10 The decomposition shown demonstrates that a decoding structure with a decoding length of 512 is equivalent to the tap results of 1 minimum decoding unit and 16 minimum decoding units; similarly, decoding structures of various lengths can be constructed using minimum decoding units. Here, the decoding structure represents the combination of decoding resources when decoding the original data.

[0062] In a specific implementation, by decomposing the decoding structure, it can be seen that the minimum number of decoding units C for each decoding length is C = decoding length / 32 + 1. That is, the minimum number of decoding units C required to decode the original data of various decoding lengths is shown in Table 1.

[0063] Table 1

[0064]

[0065] As shown in Table 1, decoding with a length of 1024 requires at least 33 minimum decoding units. If the total number of minimum decoding units is 33, then decoding with a length of 512 will have 16 minimum decoding units of idle decoding resources. In fact, adding one more minimum decoding unit can achieve parallel computation of two 512-channel decoding. Although this will correspondingly leave one minimum decoding unit of idle resources for decoding with a length of 1024, the utilization rate of decoding resources is still greatly improved. Since adding too many minimum decoding units will lead to complex interconnection relationships between minimum decoding units and increase processing latency, based on experience, when the total number of minimum decoding units is 33-40, the number of wasted minimum decoding units for each decoding length is calculated, and the results are shown in Table 2.

[0066] Table 2

[0067]

[0068] As can be seen from Table 2, selecting 36 minimum decoding units minimizes decoding resource waste when decoding raw data of various decoding lengths. Therefore, this embodiment uses 36 minimum decoding units.

[0069] In one example, for each decoding length, the number of parallel decoding paths that can be supported by the 36 minimum decoding units is determined by referring to Table 1, which is the quotient of 36 and the number of minimum decoding units C in Table 1. Then, for each decoding path, a second decoding unit and C-1 first decoding units are selected from the 36 minimum decoding units. Then, a preset decoding resource allocation table is generated according to the number of each second decoding unit and the number of each first decoding unit corresponding to each decoding length.

[0070] Step 220: Obtain the original data and the corresponding decoding length, and determine the first and second decoding units for each decoding path corresponding to the decoding length according to the preset decoding resource allocation table.

[0071] It should be noted that multiple unrelated raw data with the same decoding length can be obtained simultaneously. By querying the preset decoding resource allocation table, the number of parallel decoding paths corresponding to the decoding length can be determined, which is the maximum number of decodings of that length that can be performed simultaneously, as well as the first and second decoding units of each path. This allows multiple raw data to be decoded simultaneously, making full use of decoding resources and improving the utilization rate and decoding efficiency of decoding resources.

[0072] For example, assuming that three raw data with a decoding length of 256 are acquired at the same time, by querying the preset decoding resource allocation table, the maximum number of parallel decoding paths corresponding to a decoding length of 256 is determined to be 4. That is, it can support a maximum of 4 decoding paths with a decoding length of 256 at the same time. Therefore, the three acquired raw data can be decoded at the same time.

[0073] It should be noted that this application only supports multi-channel parallel decoding with the same decoding length, and does not support parallel decoding of multiple raw data with different decoding lengths at the same time.

[0074] Step 230: Perform parallel decoding on multiple original data using the first and second decoding units of the multi-channel decoding to obtain the decoding results of the multiple original data.

[0075] It should be noted that before parallel decoding of multiple raw data sets, the raw data needs to be divided into multiple groups based on the number of first decoding units in each decoding path, resulting in multiple groups of raw data that each group matches a specific first decoding unit. The specific grouping process for the raw data in each decoding path is as follows: Figure 1 The grouping process in step 110 is roughly the same, and will not be described in detail here.

[0076] In one example, for one-way decoding, decoding the grouped original data can include: decoding the grouped original data in parallel through a first decoding unit to obtain grouped decoded data; decoding the merged grouped decoded data through a second decoding unit to obtain decoded data; if the sum of the lengths of the decoded data is an integer multiple of the upper limit of the decoding count of the second decoding unit, then the first and second decoding units are updated; if the sum of the lengths of the decoded data is not an integer multiple of the upper limit of the decoding count of the second decoding unit, then the second decoding unit is updated, and decoded data is obtained again, until the sum of the lengths of the decoded data equals the decoding length, and the decoded data is merged as the decoding result of the original data.

[0077] It should be noted that, Figure 5 Step 230 shown Figure 1 Steps 110 to 130 are largely the same, so they will not be described again in this embodiment.

[0078] This application embodiment establishes a preset decoding resource allocation table in advance. After obtaining the decoding length corresponding to the original data, the first decoding unit and the second decoding unit of each decoding path corresponding to the decoding length can be determined by querying the preset decoding resource allocation table. This enables the reconstruction of existing decoding resources while keeping the delay basically unchanged, realizing multi-path parallel decoding and improving the utilization rate and decoding efficiency of decoding resources.

[0079] Figure 11 This is a schematic diagram of the decoding device according to an embodiment of this application, as shown below. Figure 11 As shown, the device includes:

[0080] The first decoding module 310 is used to decode the grouped original data in parallel through the first decoding unit to obtain the grouped decoded data;

[0081] The second decoding module 320 is used to decode the merged block decoding data through the second decoding unit to obtain the decoded data;

[0082] The loop module 330 is used to update the first and second decoding units if the sum of the lengths of the decoded data is an integer multiple of the upper limit of the decoding count of the second decoding unit, and update the second decoding unit if the sum of the lengths of the decoded data is not an integer multiple of the upper limit of the decoding count of the second decoding unit, and obtain the decoded data again, until the sum of the lengths of the decoded data is equal to the decoding length, and then merge the decoded data as the decoding result of the original data.

[0083] The decoding device provided in this embodiment is used to implement the decoding method of this application. The implementation principle and technical effect of the decoding device provided in this embodiment are similar to those of the decoding method of this application, and will not be repeated here.

[0084] In one example, the first decoding module 310 is further configured to: obtain the decoding length corresponding to the original data before decoding the grouped original data in parallel through the first decoding unit to obtain the grouped decoded data; and determine the first decoding unit and the second decoding unit corresponding to the decoding length according to a preset decoding resource allocation table.

[0085] In one example, the system further includes: a table-building module, used to pre-set a preset number of decoding lengths before determining the first and second decoding units corresponding to the decoding lengths according to a preset decoding resource allocation table; determine the number of parallel decoding paths corresponding to each decoding length; for each decoding length, select a first number of second decoding units from a fixed number of minimum decoding units, and a first decoding unit that matches each second decoding unit respectively; generate a preset decoding resource allocation table according to the numbers of each second decoding unit and each first decoding unit corresponding to each decoding length; wherein the first number is equal to the number of parallel decoding paths corresponding to the current decoding length.

[0086] In one example, it also includes: a grouping module, used to determine the second quantity corresponding to each first decoding unit according to the decoding length before decoding the grouped original data in parallel through the first decoding unit to obtain the grouped decoded data; for each first decoding unit, the second quantity of original data to be decoded is extracted from the original data every third quantity of original data to be decoded, and the extracted data to be decoded is merged sequentially as the grouped original data corresponding to the first decoding unit.

[0087] In one example, the second decoding module 320 is further configured to: store the decoded data into a register group after obtaining the decoded data; the loop module 330 is specifically configured to: update the first decoding unit and the second decoding unit if the sum of the lengths of the decoded data stored in the register group is an integer multiple of the upper limit of the decoding count of the second decoding unit; update the second decoding unit and obtain the decoded data again if the sum of the lengths of the decoded data stored in the register group is not an integer multiple of the upper limit of the decoding count of the second decoding unit, until the sum of the lengths of the decoded data stored in the register group is equal to the decoding length.

[0088] In one example, it also includes a switching module, which, after storing the decoded data into the register group, switches the computational subunit in the first decoding unit or the second decoding unit if the sum of the lengths of the decoded data stored in the register group meets the preset computational subunit switching rules.

[0089] In one example, the preset switching rules for computational subunits include: the Mth computational subunit in the first decoding unit switches when the sum of the lengths of the decoded data is an integer multiple of the number of first decoding units * 2 * M; the Nth computational subunit in the second decoding unit switches when the sum of the lengths of the decoded data is an integer multiple of 2 * N; wherein the Mth computational subunit includes M basic calculators and the Nth computational subunit includes N basic calculators.

[0090] Figure 12 This is a schematic diagram of the internal structure of the decoding device according to an embodiment of this application. The internal structure of the device includes:

[0091] Task scheduling unit (encode ctrl): used to obtain the decoding length corresponding to the original data, and to obtain the parameters required for each smallest decoding unit based on the decoding length;

[0092] Minimum decoding units (encode32_x): These are 36 units in total, each capable of independently performing a 32-bit decoding process. Each minimum decoding unit contains a processing core controller, a set of computational subunits FG (FG1, FG2, FG4, FG8, and FG16) capable of independently performing a 32-bit decoding process, and an input / output selection unit. For this device, minimum decoding units 1 through 24 do not require input selection, and minimum decoding units 33 through 36 do not require output selection.

[0093] Processing core controller (32-encode ctrl): Used to control the update enable of each computing sub-unit FG and the selection enable of the input / output selection unit according to the parameters issued by the task scheduling module;

[0094] The t-th computational subunit FGt is used to complete t complete FG computations in parallel.

[0095] Register set: Used to store the calculated decoded data u.

[0096] In a specific implementation, depending on the various decoding lengths, the overall workflow of this device is as follows:

[0097] For a decoding length of 1024:

[0098] 1) Figure 12 In the code, encode32_0~31 and encode32_32 are connected together for one-way decoding. Among them, encode32_32 is the second decoding unit, encode32_0~31 is the first decoding unit, and encode32_33~35 does not participate in decoding.

[0099] 2) Divide a raw data (LLR) into 32 groups according to the rule of extracting 1 data every 32 data, and use them as input data for the first decoding unit encode32_0 to 31 respectively.

[0100] 3) The first computational subunit FG1 of each first decoding unit outputs one block of decoded data, and the 32 blocks of decoded data are combined into the decoding input of the second decoding unit encode32_32. Each time the second decoding unit is decoded, it obtains one decoded data (u value).

[0101] 4) For each piece of decoded data calculated, update the 32x36 register group. If the sum of the lengths of the decoded data stored in the register group is an integer multiple of 32, then use the decoded data in the register group to update the state of the calculation subunit FG inside the first and second decoding units. If the sum of the lengths of the decoded data stored in the register group is not an integer multiple of 32, then use the decoded data in the register group to update the state of the calculation subunit FG inside the second decoding unit for the calculation of the next piece of decoded data.

[0102] In the second decoding unit, FG1, FG2, FG4, FG8, and FG16 switch when 2, 4, 8, 16, and 32 decoded data are decoded, respectively. In the first decoding unit, FG1, FG2, FG4, and FG8 switch when 64, 128, 256, and 512 decoded data are decoded, respectively. FG16 does not switch states.

[0103] 5) After updating the values ​​of FG and the register group 1024 times, complete the decoding of 1024 decoding lengths and output the 1024 decoded data stored in the register group as the decoding result of the original data.

[0104] For a decoding length of 512:

[0105] 1) Figure 12 In this decoding unit, encode32_0~15 and encode32_32 are connected together for one decoding path, while encode32_16~31 and encode32_33 are connected together for another decoding path. These two decoding paths are processed in parallel. encode32_34~35 are not involved in the decoding. Specifically, encode32_32~33 constitute the second decoding unit, and encode32_0~31 constitute the first decoding unit.

[0106] 2) According to the rule of extracting 2 data every 32 data, the two unrelated raw data (LLR) are each divided into 16 groups, which are used as the input data for the first decoding unit encode32_0~15 and encode32_16~31 respectively.

[0107] 3) The second computational subunit FG2 of each first decoding unit outputs two block decoding data. The 16 block decoding data from encode32_0 to 15 are merged into the decoding input of the second decoding unit encode32_32. Each decoding of encode32_32 yields one decoded data (u value). The 16 block decoding data from encode32_16 to 31 are merged into the decoding input of the second decoding unit encode32_33. Each decoding of encode32_33 yields one decoded data (u value).

[0108] 4) For each piece of decoded data calculated, the corresponding part of the 32x36 register set is updated. If the sum of the lengths of the decoded data stored in the register set is a multiple of 32, the state of the computation subunit FG inside the first and second decoding units is updated using the decoded data stored in that part of the register set. If the sum of the lengths of the decoded data stored in the register set is not a multiple of 32, the state of the computation subunit FG inside the second decoding unit is updated using the decoded data stored in that part of the register set, for use in calculating the next piece of decoded data. The 32x36 register set is divided into two parts, used for the two decoding calculations respectively.

[0109] In the second decoding unit, FG1, FG2, FG4, FG8, and FG16 switch when 2, 4, 8, 16, and 32 decoded data are decoded, respectively. In the first decoding unit, FG2, FG4, and FG8 switch when 64, 128, and 256 decoded data are decoded, respectively. FG16 does not switch states, and FG1 is not used.

[0110] 5) After updating the values ​​of FG and the register group 512 times, complete the decoding of 512 decoding lengths, and output the two sets of decoded data stored in the register group as the two-way decoding results of the original data.

[0111] For a decoding length of 256:

[0112] 1) Figure 12 The encode32_0~31 and encode32_32~35 units are connected together for parallel 4-way decoding. Among them, encode32_32~35 is the second decoding unit, and encode32_0~31 is the first decoding unit.

[0113] 2) Following the rule of extracting 4 data points every 32 data points, the 4 mutually unrelated raw data (LLR) are each divided into 8 groups, which are used as input data for the 4-way first decoding units encode32_0~7, encode32_8~15, encode32_16~23 and encode32_24~31 respectively.

[0114] 3) The fourth computational subunit FG4 of each first decoding unit outputs 4 block decoding data, and merges the 8 blocks of decoding data from each decoding path into the decoding input of the corresponding second decoding unit. Each time the second decoding unit decodes, it obtains one decoding data (u value).

[0115] 4) For each piece of decoded data calculated, the corresponding part of the 32x36 register group is updated. If the sum of the lengths of the decoded data stored in the register group is a multiple of 32, the state of the computation subunit FG inside the first and second decoding units is updated using the decoded data stored in that part of the register group. If the sum of the lengths of the decoded data stored in the register group is not a multiple of 32, the state of the computation subunit FG inside the second decoding unit is updated using the decoded data stored in that part of the register group, for use in calculating the next piece of decoded data. The 32x36 register group is divided into four parts, each used for one of the four decoding operations.

[0116] In the second decoding unit, FG1, FG2, FG4, FG8, and FG16 switch when 2, 4, 8, 16, and 32 decoded data are decoded, respectively. In the first decoding unit, FG4 and FG8 switch when 64 and 128 decoded data are decoded, respectively. FG16 does not switch states, and FG1 and FG2 are not used.

[0117] 5) After updating the values ​​of FG and the register group 256 times, complete the decoding of 256 decoding lengths and output the 4 sets of decoded data stored in the register group as the 4-way decoding results of the original data.

[0118] For a decoding length of 128:

[0119] 1) Figure 12 The code encode32_0~27 and encode32_28~35 (encode32_31 does not participate in decoding) are connected together for 7-way parallel decoding. Among them, encode32_28~35 is the second decoding unit, and encode32_0~27 is the first decoding unit.

[0120] 2) According to the rule of extracting 8 data points every 32 data points, the 7 mutually unrelated raw data (LLR) are divided into 4 groups, which are used as the input data of the first decoding unit of the 7 channels.

[0121] 3) The 8th computational subunit FG8 of each first decoding unit outputs 8 block decoding data, and merges the 4 blocks of decoding data from each decoding path into the decoding input of the corresponding second decoding unit. Each time the second decoding unit decodes, it obtains one decoding data (u value).

[0122] 4) For each piece of decoded data calculated, the corresponding part of the 32x36 register group is updated. If the sum of the lengths of the decoded data stored in the register group is a multiple of 32, the state of the computation subunit FG inside the first and second decoding units is updated using the decoded data stored in that part of the register group. If the sum of the lengths of the decoded data stored in the register group is not a multiple of 32, the state of the computation subunit FG inside the second decoding unit is updated using the decoded data stored in that part of the register group, for use in the calculation of the next piece of decoded data. The 32x36 register group is divided into 7 parts, each used for one of the 7 decoding calculations.

[0123] In the second decoding unit, FG1, FG2, FG4, FG8, and FG16 switch when 2, 4, 8, 16, and 32 decoded data are decoded, respectively. In the first decoding unit, FG8 switches when 64 decoded data are decoded, FG16 does not switch states, and FG1, FG2, and FG4 are not used.

[0124] 5) After updating the values ​​of FG and the register group 128 times, complete the decoding of 128 decoding lengths and output the 7 sets of decoded data stored in the register group as the 7-way decoding results of the original data.

[0125] For a decoding length of 64:

[0126] 1) Figure 12 The encode32_0~23 and encode32_24~35 units are connected together for 12-way parallel decoding. Among them, encode32_24~35 is the second decoding unit, and encode32_0~23 is the first decoding unit.

[0127] 2) According to the rule of extracting 16 data points every 32 data points, the 12 unrelated raw data (LLR) are divided into 2 groups, which are used as the input data of the first decoding unit of the 12 channels respectively.

[0128] 3) The 16th computation subunit FG16 of each first decoding unit outputs 16 block decoding data, and merges the two blocks of decoding data from each decoding path into the decoding input of the corresponding second decoding unit. Each time the second decoding unit decodes, it obtains one decoding data (u value).

[0129] 4) For each piece of decoded data calculated, the corresponding part of the 32x36 register group is updated. If the sum of the lengths of the decoded data stored in the register group is a multiple of 32, the state of the computation subunit FG inside the first and second decoding units is updated using the decoded data stored in that part of the register group. If the sum of the lengths of the decoded data stored in the register group is not a multiple of 32, the state of the computation subunit FG inside the second decoding unit is updated using the decoded data stored in that part of the register group, for use in the calculation of the next piece of decoded data. The 32x36 register group is divided into 12 parts, each used for one of the 12 decoding calculations.

[0130] In the second decoding unit, FG1, FG2, FG4, FG8, and FG16 switch when 2, 4, 8, 16, and 32 decoded data are decoded, respectively. In the first decoding unit, FG8 switches when 64 decoded data are decoded, FG16 does not switch states, and FG1, FG2, and FG4 are not used.

[0131] 5) After updating the values ​​of FG and the register group 64 times, the decoding of 64 decoding lengths is completed, and the 12 sets of decoded data stored in the register group are output as 12-way decoding results of the original data.

[0132] For a decoding length of 32:

[0133] 1) Figure 13 Each of the encode32_0 to 35 channels is decoded individually to complete the 36-channel decoding process.

[0134] 2) Use the 36 independent raw data (LLR) as input data for the 36 minimum decoding units encode32_0 to 35 respectively, and each second decoding unit obtains a decoded data (u value).

[0135] 3) For each decoded data value calculated, the corresponding part of the 32x36 register group is updated. At the same time, the state of the computation subunit FG inside the corresponding smallest decoding unit is updated using the decoded data of that part of the register group, so as to be used for the calculation of the next decoded data. The 32x36 register group is divided into 36 parts, each used for 36 decoding calculations.

[0136] Among them, FG1, FG2, FG4 and FG8 in the smallest decoding unit switch when 2, 4, 8 and 16 decoded data are decoded, respectively, while FG16 does not switch states.

[0137] 4) After updating the values ​​of FG and the register group 32 times, complete the decoding of 32 decoding lengths and output the 36 sets of decoded data stored in the register group as the 36-way decoded results of the original data.

[0138] This application embodiment can utilize a minimum decoding unit of 32 to construct decoding units with other decoding length values. The configuration process is simple, and the circuit structure is easy to implement. For different performance requirements, only the number of minimum decoding units needs to be increased. For single-channel decoding processing, the delay in this application embodiment remains basically unchanged, but existing decoding resources can be used to perform multi-channel decoding processes in parallel, greatly improving decoding efficiency and resource utilization, and increasing economic benefits.

[0139] Figure 13 This is a schematic diagram of the network device provided in this application. The device provided in this application includes: one or more processors 41 and a storage device 42; the processors 41 of the device may be one or more. Figure 13 Taking a processor 41 as an example; storage device 42 is used to store one or more programs; one or more programs are executed by one or more processors 41, so that one or more processors 41 implement the decoding method as described in the embodiments of the present invention.

[0140] The processor 41 and storage device 42 in the device can be connected via a bus or other means. ​ Taking the example of a connection between China and Israel via a bus.

[0141] Storage device 42, as a computer-readable storage medium, can be configured to store software programs, computer-executable programs, and modules, such as program instructions / modules corresponding to the decoding method in the embodiments of this application. Storage device 42 may include a program storage area and a data storage area, wherein the program storage area may store the operating system and at least one application program required for a function; the data storage area may store data created based on the use of the device, etc. Furthermore, storage device 42 may include high-speed random access memory and may also include non-volatile memory, such as at least one disk storage device, flash memory device, or other non-volatile solid-state storage device. In some instances, storage device 42 may further include memory remotely located relative to processor 41, and these remote memories can be connected to the device via a network. Examples of such networks include, but are not limited to, the Internet, corporate intranets, local area networks, mobile communication networks, and combinations thereof.

[0142] This application provides a storage medium on which a computer program is stored, which, when executed by a processor, implements any of the decoding methods in the embodiments of this application.

[0143] The decoding method includes: decoding the grouped original data in parallel through a first decoding unit to obtain grouped decoded data; decoding the merged grouped decoded data through a second decoding unit to obtain decoded data; if the sum of the lengths of the decoded data is an integer multiple of the upper limit of the decoding times of the second decoding unit, then the first and second decoding units are updated; if the sum of the lengths of the decoded data is not an integer multiple of the upper limit of the decoding times of the second decoding unit, then the second decoding unit is updated, and decoded data is obtained again, until the sum of the lengths of the decoded data equals the decoding length, and the decoded data is merged as the decoding result of the original data.

[0144] The above are merely exemplary embodiments of this application and are not intended to limit the scope of protection of this application.

[0145] Generally, the various embodiments of this application can be implemented in hardware or dedicated circuitry, software, logic, or any combination thereof. For example, some aspects can be implemented in hardware, while others can be implemented in firmware or software that can be executed by a controller, microprocessor, or other computing device, although this application is not limited thereto.

[0146] Embodiments of this application can be implemented by executing computer program instructions through the data processor of a mobile device, for example, in a processor entity, or through hardware, or through a combination of software and hardware. The computer program instructions can be assembly instructions, Instruction Set Architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, or source code or object code written in any combination of one or more programming languages.

[0147] Any block diagram of logical flow in the accompanying drawings of this application may represent program steps, or may represent interconnected logic circuits, modules, and functions, or may represent a combination of program steps and logic circuits, modules, and functions. The computer program may be stored on memory. Memory may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as, but not limited to, read-only memory (ROM), random access memory (RAM), optical storage devices and systems (Digital Video Disc (DVD) or Compact Disk (CD)), etc. Computer-readable media may include non-transitory storage media. The data processor may be of any type suitable to the local technical environment, such as, but not limited to, general-purpose computers, special-purpose computers, microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and processors based on multi-core processor architectures.

[0148] A detailed description of exemplary embodiments of this application has been provided above through exemplary and non-limiting examples. However, various modifications and adjustments to the above embodiments will be apparent to those skilled in the art when considered in conjunction with the accompanying drawings and claims, without departing from the scope of the invention. Therefore, the proper scope of the invention will be determined by the claims.

Claims

1. A decoding method, comprising: The method comprises: decoding the grouped original data in parallel through a first decoding unit to obtain grouped decoding data; decoding the merged grouped decoding data through a second decoding unit to obtain decoding data; if the sum of the lengths of the decoding data is an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the first decoding unit and the second decoding unit, and if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the second decoding unit, obtaining decoding data again until the sum of the lengths of the decoding data is equal to the decoding length, and merging the decoding data as the decoding result of the original data; before decoding the grouped original data in parallel through the first decoding unit to obtain the grouped decoding data, the method further comprises: obtaining a decoding length corresponding to the original data; determining the first decoding unit and the second decoding unit corresponding to the decoding length according to a preset decoding resource allocation table; before determining the first decoding unit and the second decoding unit corresponding to the decoding length according to the preset decoding resource allocation table, the method further comprises: pre-setting a preset number of decoding lengths; determining the number of parallel decoding paths corresponding to each decoding length; for each decoding length, selecting a first number of second decoding units from a fixed number of minimum decoding units, and a first decoding unit matched with each second decoding unit; generating a preset decoding resource allocation table according to the number of each second decoding unit corresponding to each decoding length and the number of each first decoding unit; wherein the first number is equal to the number of parallel decoding paths corresponding to the current decoding length.

2. The method of claim 1, wherein, before decoding the grouped original data in parallel through the first decoding unit to obtain the grouped decoding data, the method further comprises: determining a second number corresponding to each first decoding unit according to the decoding length; for each first decoding unit, extracting second number of original to-be-decoded data from original data every third number of original to-be-decoded data in sequence, and sequentially merging the extracted to-be-decoded data as the grouped original data corresponding to the first decoding unit.

3. The method of claim 1, wherein after obtaining the decoding data, the method further comprises: storing the decoding data in a register group; if the sum of the lengths of the decoding data is an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the first decoding unit and the second decoding unit, and if the sum of the lengths of the decoding data is not an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the second decoding unit, obtaining decoding data again until the sum of the lengths of the decoding data is equal to the decoding length, comprising: if the sum of the lengths of the decoding data stored in the register group is an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the first decoding unit and the second decoding unit, and if the sum of the lengths of the decoding data stored in the register group is not an integer multiple of the upper limit of the number of decoding times of the second decoding unit, updating the second decoding unit, obtaining decoding data again until the sum of the lengths of the decoding data stored in the register group is equal to the decoding length.

4. The method of claim 3, wherein, After storing the coded data into the register group, further comprising: If the sum of the lengths of the coded data stored in the register group meets preset computation subunit switching rules, switching the computation subunits in the first coding unit or the second coding unit.

5. The method of claim 4, wherein, The preset computation subunit switching rules include: The Mth computation subunit in the first coding unit switches when the sum of the lengths of the coded data is an integer multiple of the first coding unit number*2*M; The Nth computation subunit in the second coding unit switches when the sum of the lengths of the coded data is an integer multiple of 2*N; The Mth computation subunit includes M basic calculators, and the Nth computation subunit includes N basic calculators.

6. A decoding device, comprising: The method comprises: A first coding module is configured to code the grouped original data in parallel through the first coding unit to obtain grouped coded data; A second coding module is configured to code the merged grouped coded data through the second coding unit to obtain coded data; A loop module is configured to update the first coding unit and the second coding unit if the sum of the lengths of the coded data is an integer multiple of the upper limit of the coding times of the second coding unit, update the second coding unit if the sum of the lengths of the coded data is not an integer multiple of the upper limit of the coding times of the second coding unit, obtain coded data again, and merge the coded data as the coding result of the original data until the sum of the lengths of the coded data is equal to the coding length. The first coding module is further configured to: Before coding the grouped original data in parallel through the first coding unit to obtain grouped coded data, obtain a coding length corresponding to the original data; Determine the first coding unit and the second coding unit corresponding to the coding length according to a preset coding resource allocation table; A table building module is configured to: Before determining the first coding unit and the second coding unit corresponding to the coding length according to the preset coding resource allocation table, preset a preset number of coding lengths; Determine the number of parallel coding paths corresponding to each coding length; For each coding length, select a first number of second coding units from a fixed number of minimum coding units, and a first coding unit matched with each second coding unit; Generate a preset coding resource allocation table according to the numbers of the second coding units corresponding to each coding length and the numbers of the first coding units; The first number is equal to the number of parallel coding paths corresponding to the current coding length.

7. An apparatus, comprising: The device comprises: One or more processors; A storage device configured to store one or more programs, When the one or more programs are executed by the one or more processors, the one or more processors implement the coding method of any one of claims 1-5.

8. A storage medium, characterized by The storage medium stores a computer program, and the computer program is executed by a processor to implement the coding method of any one of claims 1-5. The storage medium stores a computer program, and the computer program is executed by a processor to implement the coding method of any one of claims 1-5.