A GMSK parallel modulator based on GPU
Through a pure software method based on GPU, combining differential coding, forming filtering, data segmentation, Gaussian filtering and Gardener interpolation modules, the GMSK modulator's accuracy and speed consideration is solved, and high-precision and real-time GMSK parallel modulation is achieved, which is suitable for aerospace communication systems.
Patent Information
- Application Number
- CN202211134532.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-09-19
- Publication Date
- 2025-08-15
- Estimated Expiration
- 2042-09-19
AI Technical Summary
In the prior art, GMSK modulators are difficult to take into account both processing accuracy and speed, and the hardware implementation is complex, which cannot meet the real-time requirements of aerospace communication systems.
Using a pure software method based on GPU, GMSK parallel modulation is realized through the combination of differential encoding, forming filtering, data segmentation, Gaussian filtering, Gardener interpolation and carrier modulation modules, and the data throughput is dynamically adjusted using locked page memory and multi-stream segmentation coverage operation.
It achieves higher data accuracy and real-time than traditional FPGA and DSP dedicated hardware, meeting the engineering application needs of aerospace communication systems.
Smart Images

Figure CN115766360B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the field of communication technology, and in particular to a GMSK parallel modulator based on a GPU. Background Art
[0002] Gaussian Minimum Shift Keying (GMSK) modulation has the advantages of constant envelope, continuous phase, small bandwidth and high spectrum utilization, and is widely used in aerospace communication systems. However, the current methods for implementing GMSK modulation in communication systems are mainly based on dedicated hardware such as FPGA and DSP, and mainly use the orthogonal modulation method with waveform storage. This method uses Gaussian filtering to reduce the possible 2% GMSK phase change within a symbol period. N (N is the Gaussian filter order) The curves are calculated in advance and stored in a table, and then searched based on the N consecutive code element combinations input. This algorithm is inefficient and complex. Due to the data bit width of the hardware, it is difficult to achieve a balance between floating-point accuracy and speed.
[0003] In the construction of ground station networks in the aerospace measurement and control field, "software-based" and "localized" development have become the trend. Software baseband equipment based on general-purpose computing platforms is a core component and the key to achieving ground station softwareization. The software ground station's uplink ranging, remote control, security control, and equipment self-test functions require a purely software-based analog source, necessitating a parallel GMSK modulator for the software baseband. Summary of the Invention
[0004] The present invention aims to solve the problem that the processing accuracy and speed of a GMSK modulator cannot be taken into account at the same time. A GPU-based GMSK parallel modulator is provided. The GMSK modulator is implemented using a pure software method. The upsampling part after Gaussian filtering adopts the Gardener algorithm for interpolation, and the interpolation value is calculated in real time, thereby achieving higher data accuracy than modulators using traditional FPGA and DSP dedicated hardware. The use of page-locked memory saves the time of data copying between the CPU and the GPU. The multi-stream data is segmented and overwritten, and the data throughput of a parallel modulation can be dynamically adjusted, thereby meeting the real-time requirements of engineering applications and realizing a GPU-based multi-stream data segmentation and overwriting parallel processing architecture.
[0005] The present invention provides a GMSK parallel modulator based on a GPU, comprising a differential encoding module, a shaping filter module, a data segmentation module, a Gaussian filter module, a Gardener interpolation module, a carrier modulation module and a data combination module which are electrically connected in sequence, wherein the differential encoding module and the data combination module are arranged on a CPU, and the shaping filter module, the data segmentation module, the Gaussian filter module, the Gardener interpolation module and the carrier modulation module are all arranged on a GPU;
[0006] The raw data to be modulated enters the GMSK parallel modulator serially, is divided into n segments for parallel processing in the GPU, and is finally combined into a serial GMSK modulated signal output in the CPU.
[0007] The GPU-based GMSK parallel modulator described in the present invention is preferably configured such that the original data to be modulated enters the differential encoding module in series and is converted into serial encoded data and stored in the CPU memory; the shaping filter module reads the serial encoded data into the GPU for modulation to obtain serial shaped data; the data segmentation module segments the serial shaped data in chronological order to obtain n data segments; the data segmentation module creates n GPU streams corresponding to the n data segments; in the Gaussian filtering module, the Gardener interpolation module, and the carrier modulation module, the GPU stream performs Gaussian filtering, Gardener interpolation, and carrier modulation on the corresponding data segments to obtain n segments of output data and store them in the CPU; the data combination module combines the n segments of output data in chronological order and outputs a GMSK modulated signal; and the data combination module performs carrier combination and then performs GPU stream synchronization.
[0008] The GPU-based GMSK parallel modulator of the present invention is preferably configured such that the original data to be modulated are a0, a1, a2, ..., a n , the differential encoding module is calculated according to the formula Perform differential encoding to obtain serial coded data b1, b2, ..., b n ;
[0009] The shaping filter module performs serial-to-parallel conversion on the serial coded data to obtain I branch coded data and Q branch coded data, and then upsamples the I branch coded data and Q branch coded data to obtain I branch sampled data p k And Q branch sampling data q k , and then the I branch sampling data p k And Q branch sampling data q k Modulating to obtain I-branch shaped data I(t) and Q-branch shaped data Q(t), the I-branch shaped data I(t) and the Q-branch shaped data Q(t) are sequentially and alternately stored in a GPU memory;
[0010] The n data segments include data segment 1, ..., data segment n. The data length of each data segment is L. The first N bits of data segment 1 are padded with 0s. When the length of data segment n is less than L, 0s are padded at the end of the data. The first N data bits at the beginning of data segment i+1 are the N data bits at the end of data segment i, 1≤i≤n, N≤n;
[0011] n GPU streams include stream 1, ..., stream n, and stream j. Gaussian filtering, Gardener interpolation, and carrier modulation are performed on data segment j to obtain output data j. n GPU streams are executed in parallel. The n output data segments include output data 1, ..., output data n, where 1≤j≤n.
[0012] The data combination module obtains n segments of output data, retains the N data bits at the beginning of output data k, removes the N data bits at the end of output data k, and combines the output data in chronological order to obtain a GMSK modulated signal output, 1≤k≤n.
[0013] In the GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, the data segment length L is an integer power of 2.
[0014] In the GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, N>M-1, M is the Gaussian filter order of the Gaussian filter module, and M is an odd number greater than 5.
[0015] In the GPU-based GMSK parallel modulator described in the present invention, as an optimal mode, the 3dB bandwidth B of the Gaussian filter module can be set within a range of 0.25 to 0.5 times the symbol rate of the original data to be modulated.
[0016] In the GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, data is exchanged between the differential encoding module and the shaping filter module, and between the carrier modulation module and the data combination module through page-locked memory.
[0017] In the GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, the Gardener interpolation filter of the Gardener interpolation module is a cubic interpolation filter, and the number of basic samples is 4.
[0018] In a GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, n GPU streams are respectively stored in fixed address intervals of CPU memory, the address interval corresponding to output data m is continuous with the address interval corresponding to output data m+1, and a data combination module sequentially extracts data bits from the CPU memory and combines the data to obtain a GMSK modulated signal output.
[0019] In the GPU-based GMSK parallel modulator described in the present invention, as a preferred embodiment, the number n of GPU streams is adjustable.
[0020] The present invention provides a parallel GMSK modulator based on a GPU, which is used in software baseband execution of uplink modulation tasks or equipment self-test and can meet the requirements of multiple code rates and high throughput.
[0021] The raw data to be modulated enters the GMSK modulator serially, is divided into n segments for parallel processing in the GPU, and is finally combined into a serial GMSK modulated signal output in the CPU. The specific steps include:
[0022] (1) The original data to be modulated enters the differential encoding module serially for differential encoding, and the obtained serial encoded data is stored in the CPU memory;
[0023] (2) The shaping filter module reads the coded data, performs the first modulation, and obtains the serial shaped data, which is stored in the GPU memory;
[0024] (3) The data segmentation module segments the incoming serial data in chronological order to obtain n data segments, which are recorded as data segment 1 to data segment n. The length of each data segment is the same, L, and the first N bits of the first data segment are padded with 0s; if the length of the last data segment is less than L, 0s are padded at the end of the data. The first N data bits at the beginning of data segment i+1 (i≥1) are the N data bits at the end of data segment i;
[0025] (4) After the data segmentation module, n GPU streams are created, denoted as stream 1 to stream n, corresponding one to one with data segments 1 to data segment n. Stream j performs Gaussian filtering, Gardener interpolation, and carrier modulation on data segment j to obtain n segments of output data, denoted as output data 1 to output data n, which are stored in the CPU memory;
[0026] (5) The data combination module obtains n segments of output data, retains the N data bits at the beginning of output data k, removes the N data bits at the end of data k, and combines the output data in chronological order to obtain a modulated output;
[0027] (6) GPU stream synchronization is performed after the data combination module.
[0028] The present invention is applicable to software baseband and the like in a measurement and control system, which utilizes pure software to execute real-time tasks or equipment self-test to realize the function of GMSK modulation.
[0029] The upsampling process of the Gaussian filtered data is interpolated using the Gardener algorithm.
[0030] The present invention has the following advantages:
[0031] (1) The present invention uses a pure software method to implement the GMSK modulator. The upsampling part after Gaussian filtering adopts the Gardener algorithm for interpolation, and the interpolation value is calculated in real time, achieving higher data accuracy than the traditional FPGA and DSP dedicated hardware modulator;
[0032] (2) The present invention uses page-locked memory, which saves the time of data copying between CPU and GPU;
[0033] (3) The present invention utilizes multiple streams to perform segmented coverage operations on data, and can dynamically adjust the data throughput of a parallel modulation, thereby meeting the real-time requirements of engineering applications. BRIEF DESCRIPTION OF THE DRAWINGS
[0034] Figure 1 A schematic diagram of a multi-stream parallel software framework for a GPU-based GMSK parallel modulator;
[0035] Figure 2 A schematic diagram of sequential alternating storage of data of two branches of a GPU-based GMSK parallel modulator;
[0036] Figure 3 Schematic diagram of data segmentation and combination of a GPU-based GMSK parallel modulator. DETAILED DESCRIPTION
[0037] The technical solutions in the embodiments of the present invention will be clearly and completely described below in conjunction with the drawings in the embodiments of the present invention. Obviously, the described embodiments are only part of the embodiments of the present invention, rather than all the embodiments.
[0038] Example 1
[0039] like Figure 1 As shown, a GMSK parallel modulator based on a GPU includes a differential encoding module, a shaping filter module, a data segmentation module, a Gaussian filter module, a Gardener interpolation module, a carrier modulation module, and a data combination module, which are electrically connected in sequence. The differential encoding module and the data combination module are arranged on the CPU, and the shaping filter module, the data segmentation module, the Gaussian filter module, the Gardener interpolation module, and the carrier modulation module are all arranged on the GPU.
[0040] The raw data to be modulated enters the GMSK parallel modulator serially, is divided into n segments for parallel processing in the GPU, and is finally combined into a serial GMSK modulated signal output in the CPU;
[0041] The original data to be modulated enters the differential encoding module serially and is converted into serial encoded data and stored in the CPU memory. The shaping filter module reads the serial encoded data into the GPU for modulation to obtain serial shaped data. The data segmentation module segments the serial shaped data in chronological order to obtain n data segments. The data segmentation module creates n GPU streams corresponding to the n data segments. In the Gaussian filtering module, the Gardener interpolation module, and the carrier modulation module, the GPU stream performs Gaussian filtering, Gardener interpolation, and carrier modulation on the corresponding data segments to obtain n segments of output data and store them in the CPU. The data combination module combines the n segments of output data in chronological order and outputs a GMSK modulated signal. The data combination module performs carrier combination and then synchronizes the GPU streams.
[0042] The original data to be modulated is a0,a1,a2,...,a n , the differential encoding module is calculated according to the formula Perform differential encoding to obtain serial coded data b1, b2, ..., b n ;
[0043] like Figures 2-3 As shown, the shaping filter module performs serial-to-parallel conversion on the serial coded data to obtain I branch coded data and Q branch coded data, and then upsamples the I branch coded data and Q branch coded data to obtain I branch sampled data p k And Q branch sampling data q k , and then the I branch sampling data p k And Q branch sampling data q k Modulating to obtain I-branch shaped data I(t) and Q-branch shaped data Q(t), the I-branch shaped data I(t) and the Q-branch shaped data Q(t) are sequentially and alternately stored in a GPU memory;
[0044] The n data segments include data segment 1, ..., data segment n. The data length of each data segment is L. The first N bits of data segment 1 are padded with 0s. When the length of data segment n is less than L, 0s are padded at the end of the data. The first N data bits at the beginning of data segment i+1 are the N data bits at the end of data segment i, 1≤i≤n, N≤n;
[0045] n GPU streams include stream 1, ..., stream n, and stream j. Gaussian filtering, Gardener interpolation, and carrier modulation are performed on data segment j to obtain output data j. n GPU streams are executed in parallel. The n output data segments include output data 1, ..., output data n, where 1≤j≤n.
[0046] The data combination module obtains n segments of output data, retains the N data bits at the beginning of output data k, removes the N data bits at the end of output data k, and combines the output data in chronological order to obtain a GMSK modulated signal output, 1≤k≤n;
[0047] The data segment length L is an integer power of 2;
[0048] N>M-1, M is the Gaussian filter order of the Gaussian filter module, and M is an odd number greater than 5;
[0049] The 3dB bandwidth B of the Gaussian filter module can be set within a range of 0.25 to 0.5 times the symbol rate of the original data to be modulated.
[0050] Data is exchanged between the differential encoding module and the shaping filter module, and between the carrier modulation module and the data combination module through the page-locked memory;
[0051] The Gardener interpolation filter of the Gardener interpolation module is a cubic interpolation filter with a basic sample number of 4;
[0052] The n GPU streams are stored in fixed address intervals in the CPU memory. The address interval corresponding to output data m is continuous with the address interval corresponding to output data m+1. The data combination module sequentially extracts data bits from the CPU memory and combines the data to obtain the GMSK modulated signal output;
[0053] The number of GPU streams n is adjustable.
[0054] Example 2
[0055] A parallel GMSK modulator based on GPU includes seven modules: differential encoding module, shaping filter module, data segmentation module, Gaussian filter module, Gardener interpolation module, carrier modulation module and data combination module. The seven modules are executed sequentially to complete the processing of one channel of raw data to be modulated and output one channel of serial GMSK modulated data. Among them, the differential encoding module and data combination module are completed on the CPU, and the shaping filter, data segmentation, Gaussian filter, Gardener interpolation and carrier modulation modules are completed on the GPU. Figure 1 As shown;
[0056] The differential encoding module in the CPU converts the external input raw data a0, a1, a2, ..., a n According to the formula Perform differential encoding to obtain encoded data b1, b2, ..., b n , stored in the page-locked memory requested by the cudaMallocHost function.
[0057] The shaping filter module directly reads the encoded data in the locked page memory and completes the encoded data b in the GPU n The serial-to-parallel conversion is performed to obtain the coded data of the I branch and the Q branch; and the two branch data are upsampled to obtain two sampling data p k and q k , sampling rate where R b is the original data to be adjusted a n The symbol rate of the two sampling data is modulated for the first time to obtain two shaped data:
[0058]
[0059] in is the original data symbol length,
[0060] is the sampling time of the first modulation.
[0061] The two-way shaping data are stored in the video memory in the complex form cuComplex, I(t) is stored in the real part position, Q(t) is stored in the imaginary part position, and they are stored alternately in the video memory, such as Figure 2 shown.
[0062] like Figure 3 As shown in the figure, the data segmentation module divides the sequentially stored shaped data into n data segments, which are recorded as data segment 1 to data segment n. The number of data segments n affects the number of GPU streams created subsequently. n should be set according to the total length of the GMSK modulated signal to be generated and the computing power of the GPU. The length of each data segment is the same, which is L. If the length of the last data segment is less than L, 0 is added to the end of the data. And the first N data bits at the beginning of data segment i+1 are the N data bits at the end of data segment i, as shown in the figure. Figure 3 For computational efficiency, the length of the data segment, L, should be an integer power of 2. The coverage data length, N, should be greater than the subsequent Gaussian filter order, M-1. For a 33-order Gaussian filter, N should be at least 32.
[0063] After the data segmentation module, the cudaStreamCreate function is used to create n GPU streams, labeled stream 1 through stream n, corresponding one to each of the data segments 1 through 2. Each GPU stream sequentially executes three modules: the Gaussian filter module, the Gardener interpolation module, and the carrier modulation module. Streams 1 through 2 execute in parallel, with no order of execution between GPU streams.
[0064] The Gaussian filter module completes the Gaussian filtering of the corresponding shaped data segment and sends the filtering results as Figure 2 As shown, it is stored in the video memory in the form of cuComplex.
[0065] The Gardener interpolation module completes the interpolation filtering corresponding to the Gaussian filtering result. The interpolation filtering adopts the Gardener algorithm. Its interpolation filter is a cubic interpolation filter with a basic sample number of 4. Its coefficient is designed as follows:
[0066]
[0067]
[0068]
[0069]
[0070] The interpolation result is:
[0071] Outdata[oid]=C -1 ×Indata[iid-1]+C0×Indata[iid]+C1×Indata[iid+1]+C2×Indata[iid+2]
[0072] Among them, Indata is the input of the interpolation filter, that is, the Gaussian filter result; Outdata is the output of the interpolation filter; oid is the output result sequence number of the interpolation filter, and iid is the input data sequence number of the interpolation filter. The corresponding relationship between the two is:
[0073]
[0074] Indata[id-1], Indata[id], Indata[id+1] and Indata[id+2] are the four basic sample points required to calculate the interpolation data, which are the previous point of the current input data, the current input data and the next two values of the current input data respectively; C -1 , C0, C1 and C2 are the coefficients of the basic sample points; is the decimal interval of real-time calculation; SampRate2 is the ratio of the interpolation filter output data rate (ie, the signal sampling rate SampRate) to the interpolation filter input rate (ie, SampRate1).
[0075] After the Gaussian filter result is interpolated by Gardener, two interpolation results are obtained. Figure 2 As shown, it is stored in the video memory in the form of cuComplex.
[0076] The carrier modulation module generates the corresponding phase according to the sampling rate and the interpolated data segment, and modulates the interpolated data segment to the carrier for the second time:
[0077] s[idx]=Outdata[idx].x×cos(ωc ×tid)+Outdata[idx].y×sin(ω c ×tid);
[0078] Where idx is the serial number of the input and output data of the carrier modulation module; Outdata.x and Outdata.y are the I-channel and Q-channel interpolation results stored in the form of cuComplex; tid = idx / SampRate is the sampling time corresponding to each data point.
[0079] The data combination module completes the combination of n-segment carrier modulation output result data. Figure 3 As shown, the carrier modulation output data 1 of stream 1 discards the first N and last N data points, retaining only the middle L-2N data points. If the first N data points of the output data of stream j (j ≥ 2) overlap with the last N data points of the previous stream j-1, then stream j retains only the first L data points for combination. If zeros are padded after data segment n during data segmentation, stream n discards the padded data length and retains the original non-padded data calculation result. All data from streams 1 to n are combined and placed sequentially into page-locked memory.
[0080] After the data is combined, the cudaStreamSynchronize function is called to synchronize the GPU streams. This ensures that all streams are executed to completion and a complete GMSK modulated signal is obtained before output.
[0081] The above description is only a preferred specific embodiment of the present invention, but the scope of protection of the present invention is not limited thereto. Any technician familiar with the technical field, within the technical scope disclosed by the present invention, who makes equivalent replacements or changes based on the technical solution and inventive concept of the present invention, should be covered by the scope of protection of the present invention.
Claims
1. A GPU-based GMSK parallel modulator, characterized by: The system comprises a differential encoding module, a shaping filter module, a data segmentation module, a Gaussian filter module, a Gardener interpolation module, a carrier modulation module and a data combination module, which are electrically connected in sequence. The differential encoding module and the data combination module are arranged on a CPU, and the shaping filter module, the data segmentation module, the Gaussian filter module, the Gardener interpolation module and the carrier modulation module are all arranged on a GPU. The raw data to be modulated enters the GMSK parallel modulator serially, is divided into n segments for parallel processing in the GPU, and is finally combined into a serial GMSK modulated signal output in the CPU; The modulation method comprises the following steps: (1) One channel of raw data to be modulated Serially enter the differential encoding module by pressing Perform differential encoding to obtain serial encoded data Stored in CPU memory; (2) The shaping filter module reads the coded data for the first modulation and completes the coded data in the GPU Serial-to-parallel conversion, we get Branch and The coded data of the two branches are upsampled to obtain two sampling data. and , sampling rate ,in The original data to be retrieved The symbol rate of the two-way sampling data is modulated for the first time to obtain two-way shaped data: ; in is the original data symbol length, is the sampling time of the first modulation; The two-way shaping data is stored in the video memory in the complex form cuComplex. Stored in the real part position, Stored in the imaginary position, the data is stored alternately in the video memory to obtain serial shaped data, which is stored in the GPU video memory; (3) The data segmentation module segments the incoming serial shaped data in chronological order to obtain n data segments, which are recorded as data segment 1 to data segment n; the length of each data segment is the same as L, and the first N bits of the first data segment are padded with 0; if the length of the last data segment is less than L, 0 is padded at the end of the data; and the first N data bits at the beginning of data segment i+1 (i≥1) are the N data bits at the end of data segment i, 1≤i≤n, N≤n; (4) After the data segmentation module, n GPU streams are created, denoted as stream 1 to stream n, corresponding to data segments 1 to data segments n one by one; stream j performs Gaussian filtering, Gardener interpolation and carrier modulation on data segment j to obtain n segments of output data, denoted as output data 1 to output data n, which are stored in the CPU memory, 1≤j≤n; (5) The data combination module obtains n segments of output data, retains the N data bits at the beginning of output data k, removes the N data bits at the end of data k, 1≤k≤n, and combines the output data in chronological order to obtain a modulated output; (6) The data combination module performs GPU stream synchronization.
2. The GPU-based GMSK parallel modulator according to claim 1, wherein: The raw data to be modulated enters the differential encoding module serially and is converted into serial encoded data and stored in the CPU memory. The shaping filter module reads the serial encoded data into the GPU for modulation to obtain serial shaped data. The data segmentation module segments the serial shaped data in chronological order to obtain n data segments. The data segmentation module creates n GPU streams corresponding to the n data segments. In the Gaussian filtering module, the Gardener interpolation module, and the carrier modulation module, the GPU stream performs Gaussian filtering, Gardener interpolation, and carrier modulation on the corresponding data segments to obtain n segments of output data and stores them in the CPU. The data combination module combines the n segments of output data in chronological order and outputs the GMSK modulated signal. The data combination module performs carrier combination and then performs GPU stream synchronization. The carrier modulation module generates a corresponding phase according to the sampling rate and the interpolated data segment, and performs a second modulation on the interpolated data segment to the carrier.
3. The GPU-based GMSK parallel modulator according to claim 1, wherein: The data segment length L is an integer power of 2.
4. The GPU-based GMSK parallel modulator according to claim 1, wherein: N>M-1, M is the Gaussian filter order of the Gaussian filter module, and M is an odd number greater than 5.
5. The GPU-based GMSK parallel modulator according to claim 1, wherein: The 3dB bandwidth B of the Gaussian filter module can be set, and the setting range is 0.25~0.5 times the code element rate of the original data to be adjusted.
6. The GPU-based GMSK parallel modulator according to claim 1, wherein: The differential encoding module and the shaping filter module, and the carrier modulation module and the data combination module exchange data through page-locked memory.
7. The GPU-based GMSK parallel modulator according to claim 1, wherein: The Gardener interpolation filter of the Gardener interpolation module is a cubic interpolation filter, and the number of basic sampling points is 4.
8. The GPU-based GMSK parallel modulator according to claim 2, wherein: The n GPU streams are respectively stored in fixed address intervals of the CPU memory, the address interval corresponding to the output data m is continuous with the address interval corresponding to the output data m+1, and the data combination module sequentially extracts data bits from the CPU memory and combines the data to obtain a GMSK modulated signal output.
9. The GPU-based GMSK parallel modulator according to claim 2, wherein: The number of GPU streams n is adjustable.
Citation Information
Patent Citations
Hardware implementation method for GMSK modulation
CN111970087A