Digital Up and Down Conversion for Family Radio Service in Simulink
This example demonstrates the use of Digital Up Conversion (DUC) and Digital Down Conversion (DDC) blocks in Simulink.
Family Radio Service (FRS) is an improved walkie talkie FM radio system authorized in the United States since 1996. This personal radio service uses channelized frequencies in the ultra high frequency (UHF) band. Devices operating in the FRS band must be authorized under Part 95 Subpart B "Family Radio Service" (Sections 95.191 through 95.194) of the FCC rules. The authorized bandwidth of FRS channels is 12.5 KHz and the center frequency separation between channels is 25 KHz.
The design of FRS transmitters and receivers utilizes the Digital up converter (DUC) and the Digital down converter (DDC). These blocks simplify the design of interpolation/decimation filters and the steps required to implement the up/down conversion process. Digital up conversion is applied to the input signal before it is transmitted through an FRS channel, and down conversion is applied to the received signal.
This example illustrates the Simulink® implementation of a Family Radio Service system using the Digital Down-Converter and Digital Up-Converter Simulink blocks. Refer to Digital Up and Down Conversion for Family Radio Service in MATLAB for more details and a similar example using MATLAB® System objects™.
The system implemented in the model
familyRadioServiceExample.slx uses speech signal as an input, and an audio playback as an output for the received signal. The 8 KHz speech is first resampled to 50KHz. The DUC at the transmitter up converts the signal from 50 KHz to 2 MHz and shifts the signal to an IF frequency of 455 KHz. The receiver has an analog front end that brings the received signal to an IF frequency of 455 KHz. The signal is then sampled at a rate of 2 MHz. The DDC at the receiver brings the signal back to the baseband with a sample rate of 50 KHz, which covers the speech frequency range of 8 KHz.
While the simulation is running, you can listen to either the input speech signal or the signal after processing using a switch in the model.
% Load system open_system('familyRadioServiceExample'); sim('familyRadioServiceExample');
Using Dataflow in Simulink
You can configure this example to use data-driven execution by setting the Domain parameter to dataflow for Dataflow Subsystem. With dataflow, blocks inside the domain execute based on the availability of data as opposed to Simulink's sample time. Simulink automatically partitions the system into concurrent threads. This autopartitioning accelerates simulation and increases data throughput. To learn more about dataflow and how to run this example using multiple threads, see Multicore Execution using Dataflow Domain