## 5 DASH7 Communication System Implementation
### The Transmitting Process
#### 5.1.2 Symbols to Waveform Conversion  
In the previous section, the complete DASH7 packet is formatted and converted to symbols. In this section, the symbols (see \(a(i)\) in Equation (9)) will be converted to a waveform. Consequently, every symbol will have a transmission time. Therefore, a single symbol will be represented by multiple samples. In our presentation, the symbols take the values of [-1,1] and are converted directly from the binary data [0,1]. However, the samples represent the digital waveform that will be transmitted. Therefore, the sample rate will always be larger than the symbol rate.  
The process of converting an individual symbol into multiple samples is called upsampling, and the factor that controls this conversion is called the samples per symbol (SPS) factor. Consequently, a larger SPS value will improve the modulation process but at the same time will require a higher sample rate; e.g., the Lo-Rate DASH7 signals' bit rate is 9.6 kbps if the SPS is set to 100, and this will lead to a sample rate of 960 kbps. After selecting the proper SPS, the pulse shape of the waveform should be specified. When the samples are represented by uniform values, the waveform of these samples will have a rectangular pulse shape. Nevertheless, the rectangular pulse shape is not commonly used in wireless communications due to its large side lobes in the frequency domain. In our application, the pulse shape of the signals will have a Gaussian filter response because DASH7 signals exploit GFSK modulation.  
In GNU Radio, we utilize the _Interpolating FIR Filter_ block to simultaneously perform the upsampling and shape filter processes. This filter creates a Finite Impulse Response (FIR) filter that performs the convolution in the time domain between the payload symbols and the filter taps, which happens after upsampling the bits by the SPS factor in the interpolation process. Consequently, if the taps are set to ones, then the output waveform will have a rectangular pulse shape. However, we deployed a Gaussian shape filter defined by the variable _Gaussian_Shape_Filter_. This variable exploits the GNU Radio _jrides_gaussian(gain, SPS, beta, ntags)_ function. The gain and SPS parameters are self-explanatory at this point, while beta is a Gaussian filter parameter ranging between 0 and 1. The parameter beta represents the product between the 3 dB bandwidth of the Gaussian filter and the symbol duration, i.e., BT, where B is the bandwidth and T is the symbol duration. For instance, if beta equals 0.25, then the Gaussian pulse shape spreads over four symbols. Thus, a smaller beta causes a higher Inter-Symbol Interference (ISI) but a compact spectrum. Finally, the ntaps variable specifies the amount of FIR taps. The choice of the number of taps (ntaps) is a trade-off between the filter performance and computational cost. A long tap line will  
Figure 7: DASH7-mappedpacket structure as seen in the time domain. The figure shows the preamble followed by the sync word and the whitened payload, respectively.  
ensure a compact signal bandwidth and good phase and amplitude responses for the signal of interest. A more expanded description regarding FIR filter design can be found in [24]. In our implementation, the ntaps parameter is equal to the SPS parameter because we usually deploy a high SPS factor. The implementation can be seen in Figure 8. We apply an _Automatic Gain Control_ (AGC) block to the output of the _Interpolating FIR filter_ block to obtain a more normalized signal after the pulses are amplified and shaped.  
The generated waveform is depicted in Figure 9. This signal is obtained by upsampling, pulse shaping, and gain control of the mapped symbols. This baseband waveform can now be modulated.