Engee documentation
Notebook

Baseband modulation

This example shows a simple way to perform baseband modulation by multiplying a modulated complex signal by a complex sine wave to perform frequency conversion with boost. It is preferable to model the system in a complex baseband. However, there are some circumstances in which it is necessary to simulate the system in real bandwidth. An example of this is when a signal from an adjacent frequency band is processed with non-linearity and causes interference in the desired frequency band.

The algorithm scheme looks like this:

passband.png

Building a model

Now let's look at the communication system model, which is a simulation of digital signal processing using Engee models.

Passbanmod

image.png

Interference with Nonlinearity

image.png

Upconverter

image.png

Downconverter

image.png

Calculate RMS EVM

image.png

Compute BER

image.png
In [ ]:
function run_model( name_model, path_to_folder )
    
    Path = path_to_folder * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Checking the condition for loading a model into the kernel
        model = engee.open( name_model ) # Open the model
        model_output = engee.run( model, verbose=true ); # Launch the model
    else
        model = engee.load( Path, force=true ) # Upload a model
        model_output = engee.run( model, verbose=true ); # Launch the model
        engee.close( name_model, force=true ); # Close the model
    end

    return model_output
end
# Launching the model
run_model( "passbandmod", @__DIR__ )
Building...
Progress 0%
Progress 5%
Progress 11%
Progress 16%
Progress 22%
Progress 27%
Progress 33%
Progress 38%
Progress 44%
Progress 49%
Progress 54%
Progress 60%
Progress 66%
Progress 71%
Progress 77%
Progress 83%
Progress 88%
Progress 93%
Progress 99%
Progress 100%
Progress 100%
In [ ]:
# Connecting libraries
using CSV, DataFrames
gr() # Enabling a backend graphics display method
Out[0]:
Plots.GRBackend()
In [ ]:
# # EVM
EVM = Matrix(CSV.read("$(@__DIR__)/EVM.csv", DataFrame)); # uploading data
plot(EVM[:,1], EVM[:,2], xlabel="Time", ylabel="EVM", title="EVM") # Plotting a graph
Out[0]:
No description has been provided for this image
In [ ]:
# # BER
BER = Matrix(CSV.read("$(@__DIR__)/BER.csv", DataFrame)); # uploading data
plot(BER[:,1], BER[:,2], xlabel="Time", ylabel="BER", title="BER") # Plotting a graph
Out[0]:
No description has been provided for this image

Conclusion

We have implemented a model of a simple way to perform baseband modulation by multiplying a modulated complex signal by a complex sine wave to perform frequency conversion with an increase. They also showed how to use models for digital signal processing in Engee.