"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej

Kuv tsab xov xwm niaj hnub no yog kev xav nrov nrov los ntawm ib tug neeg uas coj txoj kev programming yuav luag los ntawm kev sib tsoo (txawm tias ib txwm muaj).

Yog lawm, kuv nkag siab tias kuv qhov kev paub tsuas yog kuv qhov kev paub xwb, tab sis nws zoo li kuv tias nws haum zoo rau hauv kev sib txawv. Ntxiv mus, cov kev paub piav qhia hauv qab no cuam tshuam ntau dua rau kev ua haujlwm ntawm kev tshawb fawb, tab sis dab tsi lub ntuj raug txim tsis yog kidding - nws tuaj yeem pab tau sab nraud.

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej
Tau qhov twg los: https://xkcd.com/664/

Feem ntau, mob siab rau tag nrho cov tub ntxhais kawm tam sim no los ntawm cov tub ntxhais kawm qub!

kev cia siab

Thaum kuv kawm tiav kuv daim bachelor's degree hauv Infocommunication Technologies thiab Communication Systems hauv 2014, kuv paub yuav luag tsis muaj dab tsi txog lub ntiaj teb kev ua haujlwm. Yog lawm, zoo li ntau lwm tus, kuv tau kawm "Computer Science" hauv kuv thawj xyoo - tab sis, Tswv, nws yog kuv thawj xyoo! Nws twb tau nyob mus ib txhis!

Feem ntau, kuv tsis xav tias yuav muaj dab tsi txawv ntawm bachelor's degree, thiab thaum kuv nkag mus rau tus tswv txoj haujlwm "Kev sib txuas lus thiab teeb liab ua" German-Lavxias lub koom haum ntawm New Technologies.

Tab sis nyob rau hauv vain...

Peb tsuas yog qhov thib ob tau txais, thiab cov hais mav los ntawm thawj zaug tseem tab tom ntim lawv lub hnab rau lub teb chaws Yelemees nyob deb (kev xyaum ua haujlwm yuav siv sijhawm rau lub hlis hauv xyoo thib ob ntawm kev kawm tiav qib siab). Hauv lwm lo lus, tsis muaj leej twg los ntawm lub voj voog tam sim no tseem tau ntsib txoj hauv kev ntawm European kev kawm, thiab tsis muaj leej twg nug txog cov ntsiab lus.

Hauv peb lub xyoo thawj, peb muaj ntau yam kev coj ua, uas feem ntau peb tau muaj kev ywj pheej xaiv ntawm kev sau ntawv (tsuas yog hauv MATLAB hom lus) thiab siv ntau yam tshwj xeeb GUIs (hauv qhov kev nkag siab tias tsis muaj kev sau ntawv - simulation. kev ua qauv qhia ib puag ncig).

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej

Needless hais, peb, yav tom ntej Masters ntawm Science, tawm ntawm peb cov hluas stupidity, zam kev sau code zoo li hluav taws. Ntawm no, piv txwv li, yog Simulink los ntawm MathWorks: ntawm no yog cov blocks, ntawm no yog cov kev sib txuas, ntawm no yog txhua yam kev teeb tsa thiab hloov pauv.

Ib qho kev pom uas yog haiv neeg thiab nkag siab rau tus neeg uas yav dhau los ua haujlwm hauv kev tsim hluav taws xob hluav taws xob thiab tshuab hluav taws xob!

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej
Tau qhov twg los: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Yog li nws zoo li peb ...

Kev muaj tiag

Ib qho ntawm cov tswv yim ua haujlwm ntawm thawj lub semester yog kev txhim kho ntawm OFDM teeb liab transceiver raws li ib feem ntawm cov kev kawm "Txoj hauv kev rau kev ua qauv thiab kev ua kom zoo". Lub tswv yim zoo heev: cov thev naus laus zis tseem cuam tshuam thiab nrov heev vim nws siv, piv txwv li, hauv Wi-Fi thiab LTE / LTE-A tes hauj lwm (hauv daim ntawv OFDMA). Qhov no yog qhov zoo tshaj plaws rau cov masters los xyaum lawv cov kev txawj ntse hauv kev tsim qauv hauv xov tooj cua.

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej

Thiab tam sim no peb tau muab ntau yam kev xaiv ntawm kev specifications nrog obviously impractical thav duab tsis (yog li ntawd raws li tsis mus nrhiav kev daws nyob rau hauv Internet), thiab peb pounce rau lub twb hais Simulink ... Thiab peb tau ntaus lub taub hau nrog ib tug teapot. ntawm kev muaj tiag:

  • Txhua qhov thaiv yog fraught nrog ntau yam tsis paub, uas txaus ntshai hloov ntawm qhov poob ntawm lub kaus mom.
  • Lub manipulations nrog cov lej yuav tsum tau ua, zoo li, yooj yim, tab sis koj tseem yuav tsum fuss, Vajtswv txwv.
  • Cov tshuab Cathedral pom tau tias qeeb qeeb los ntawm kev siv tsis txaus ntseeg ntawm GUI, txawm tias nyob rau theem ntawm kev caij nkoj los ntawm cov tsev qiv ntawv ntawm cov blocks muaj.
  • Yuav kom ua tiav ib yam dab tsi hauv tsev, koj yuav tsum muaj tib Simulink. Thiab, qhov tseeb, tsis muaj lwm txoj hauv kev.

Yog lawm, thaum kawg peb, tau kawg, ua tiav qhov project, tab sis peb ua tiav nrog lub suab nrov nrov ntawm kev nyem.

Qee lub sij hawm dhau mus, thiab peb tuaj txog thaum kawg ntawm thawj xyoo ntawm kev kawm tiav qib siab. Tus nqi ntawm kev ua haujlwm hauv tsev siv GUIs pib poob qis nrog kev nce hauv kev faib ua feem ntawm cov ntsiab lus German, txawm hais tias nws tseem tsis tau mus txog qhov kev hloov pauv. Ntau tus ntawm peb, suav nrog kuv, kov yeej peb qhov muaj peev xwm loj heev los txhim kho, ntau thiab ntau siv Matlab hauv peb cov haujlwm tshawb fawb (txawm tias nyob rau hauv daim ntawv ntawm Toolboxes), thiab tsis zoo li Simulink paub.

Lub ntsiab lus hauv peb qhov kev tsis ntseeg yog cov kab lus ntawm ib tus tub ntxhais kawm xyoo ob (lawv nyuam qhuav rov qab los rau Russia los ntawm lub sijhawm ntawd):

  • Tsis nco qab, tsawg kawg rau lub sijhawm ua haujlwm, txog Similink, MathCad thiab lwm yam LabView - hla toj txhua yam yog sau rau hauv MATLAB, siv MatLab nws tus kheej lossis nws cov "version" Octave dawb.

Cov lus tshaj tawm tau ua qee qhov tseeb: hauv Ilmenau, qhov kev tsis sib haum xeeb ntawm kev xaiv cov cuab yeej kuj tseem tsis tau daws tag nrho. Muaj tseeb, qhov kev xaiv feem ntau ntawm MATLAB, Python thiab C.

Nyob rau tib hnub, kuv raug coj los ntawm kev zoo siab: kuv puas yuav tsum tsis txhob hloov kuv ib feem ntawm OFDM transmitter qauv rau hauv daim ntawv sau? Kev lom zem xwb.

Thiab kuv tau mus ua haujlwm.

Ruam dhau ib ruam

Es tsis txhob theoretical xam, kuv yuav tsuas muab ib qhov txuas rau qhov no tsab xov xwm zoo heev 2011 los ntawm tgx ua thiab ntawm cov slides LTE lub cev txheej xibfwb Michel-Tila (TU Ilmenau). Kuv xav tias qhov no yuav txaus.

"Yog li,"Kuv xav tias, "peb rov qab, peb yuav ua li cas rau tus qauv?"
Peb yuav ua qauv OFDM ncej generator (OFDM ncej generator).

Dab tsi nws yuav suav nrog:

  • cov ntaub ntawv cim
  • pilot signals
  • zeros (DC)

Dab tsi (rau lub hom phiaj ntawm simplicity) peb paub daws teeb meem los ntawm:

  • los ntawm kev ua qauv rau lub voj voog ua ntej (yog tias koj paub cov hauv paus, ntxiv nws yuav tsis yooj yim)

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej

Thaiv daim duab ntawm tus qauv nyob rau hauv kev xav. Peb yuav nres ntawm qhov rov qab FFT (IFFT) thaiv. Txhawm rau ua kom tiav daim duab, txhua tus tuaj yeem txuas ntxiv rau lawv tus kheej - Kuv tau cog lus rau cov kws qhia ntawv los ntawm lub tuam tsev yuav tso ib yam dab tsi rau cov tub ntxhais kawm.

Cia peb txhais cov ntawd rau peb tus kheej. kev tawm dag zog:

  • taag naj npawb ntawm sub-carriers;
  • tsau ncej ntev;
  • peb yuav tsum ntxiv ib qho xoom hauv nruab nrab thiab ib khub ntawm xoom thaum pib thiab xaus ntawm tus ncej (tag nrho, 5 daim);
  • Cov ntaub ntawv cim tau hloov kho siv M-PSK lossis M-QAM, qhov twg M yog qhov kev txiav txim.

Cia peb pib nrog tus lej.

Tag nrho cov ntawv tuaj yeem rub tawm los ntawm txuas.

Cia peb txhais cov input parameters:

clear all; close all; clc

M = 4; % e.g. QPSK 
N_inf = 16; % number of subcarriers (information symbols, actually) in the frame
fr_len = 32; % the length of our OFDM frame
N_pil = fr_len - N_inf - 5; % number of pilots in the frame
pilots = [1; j; -1; -j]; % pilots (QPSK, in fact)

nulls_idx = [1, 2, fr_len/2, fr_len-1, fr_len]; % indexes of nulls

Tam sim no peb txiav txim siab qhov ntsuas ntawm cov ntaub ntawv cov cim, lees paub qhov chaw uas cov cim qhia yuav tsum tau mus ua ntej thiab / lossis tom qab xoom:

idx_1_start = 4;
idx_1_end = fr_len/2 - 2;

idx_2_start = fr_len/2 + 2;
idx_2_end =  fr_len - 3;

Tom qab ntawd cov haujlwm tuaj yeem txiav txim siab siv qhov ua haujlwm linspace, txo cov nqi mus rau qhov tsawg tshaj plaws ntawm cov lej ze tshaj plaws:

inf_idx_1 = (floor(linspace(idx_1_start, idx_1_end, N_inf/2))).'; 
inf_idx_2 = (floor(linspace(idx_2_start, idx_2_end, N_inf/2))).';

inf_ind = [inf_idx_1; inf_idx_2]; % simple concatenation

Cia peb ntxiv indexes ntawm zeros rau qhov no thiab xaiv:

%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx); 

Raws li, qhov ntsuas ntsuas ntsuas ntsuas yog txhua yam ntxiv:

%numbers in range from 1 to frame length 
% that don't overlape with inf_and_nulls_idx vector
pilot_idx = setdiff(1:fr_len, inf_and_nulls_idx); 

Tam sim no cia peb nkag siab cov cim qhia.

Peb muaj ib tug template (variable pilots), thiab cia peb hais tias peb xav tau cov neeg tsav dav hlau los ntawm cov qauv no kom muab tso rau hauv peb lub thav duab ua ntu zus. Tau kawg, qhov no tuaj yeem ua tiav hauv lub voj voog. Lossis koj tuaj yeem ua si me ntsis nrog matrices - hmoov zoo MATLAB tso cai rau koj ua qhov no nrog kev nplij siab txaus.

Ua ntej, cia peb txiav txim siab pes tsawg tus qauv no haum rau hauv tus ncej:

pilots_len_psudo = floor(N_pil/length(pilots));

Tom ntej no, peb tsim ib lub vector uas muaj peb cov qauv:

% linear algebra tricks:
mat_1 = pilots*ones(1, pilots_len_psudo); % rank-one matrix
resh = reshape(mat_1, pilots_len_psudo*length(pilots),1); % vectorization

Thiab peb txhais cov vector me me uas tsuas muaj ib daim qauv ntawm tus qauv - "tail", uas tsis haum rau hauv tus ncej:

tail_len = fr_len  - N_inf - length(nulls_idx) ...
                - length(pilots)*pilots_len_psudo; 
tail = pilots(1:tail_len); % "tail" of pilots vector

Peb tau txais cov cim pilot:

vec_pilots = [resh; tail]; % completed pilots vector that frame consists

Cia peb txav mus rau cov ntaub ntawv cim, uas yog, peb yuav tsim cov lus thiab hloov kho nws:

message = randi([0 M-1], N_inf, 1); % decimal information symbols

if M >= 16
    info_symbols = qammod(message, M, pi/4);
else
    info_symbols = pskmod(message, M, pi/4);
end 

Txhua yam yog npaj txhij! Assembling lub thav duab:

%% Frame construction
frame = zeros(fr_len,1);
frame(pilot_idx) = vec_pilots;
frame(inf_ind) = info_symbols

Koj yuav tsum tau txais qee yam zoo li no:

frame =

   0.00000 + 0.00000i
   0.00000 + 0.00000i
   1.00000 + 0.00000i
  -0.70711 - 0.70711i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   0.00000 + 1.00000i
  -0.70711 + 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
  -0.70711 - 0.70711i
   0.00000 - 1.00000i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
   0.70711 + 0.70711i
   0.00000 - 1.00000i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.70711 - 0.70711i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 0.00000i

"Bliss!" - Kuv xav zoo siab thiab kaw lub laptop. Nws coj kuv ob peb teev ua txhua yam: suav nrog kev sau cov lej, kawm qee qhov haujlwm Matlab thiab xav txog kev ua lej ua lej.

Kuv kos cov lus xaus li cas?

Tus kheej:

  • Kev sau cov lej yog qhov zoo nkauj thiab zoo ib yam li paj huam!
  • Scripting yog txoj kev tshawb fawb yooj yim tshaj plaws rau kev sib txuas lus thiab kev teeb tsa.

Lub Hom Phiaj:

  • Tsis tas yuav tua sparrows los ntawm rab phom (tshwj tsis yog tias lub hom phiaj kev kawm no yog, ntawm chav kawm, tsim nyog): siv Simulink, peb tau daws qhov teeb meem yooj yim nrog cov cuab yeej ntse.
  • GUI yog qhov zoo, tab sis kev nkag siab txog dab tsi muaj "hauv qab hood" yog qhov zoo dua.

Thiab tam sim no, nyob deb ntawm kev ua tub ntxhais kawm, kuv xav hais cov lus hauv qab no rau cov tub ntxhais kawm fraternity:

  • Mus rau nws!

Sim sau code, txawm tias nws phem thaum xub thawj. Nrog programming, zoo li nrog rau lwm yam kev ua, qhov nyuaj tshaj plaws yog qhov pib. Thiab nws yog qhov zoo dua los pib ua ntej: yog tias koj yog tus kws tshawb fawb lossis txawm tias tsuas yog techie, sai lossis tom qab koj yuav xav tau cov txuj ci no.

  • Xav tau!

Xav tau kev nce qib thiab cov cuab yeej los ntawm cov kws qhia ntawv thiab tus saib xyuas. Yog tias qhov no ua tau, tau kawg ...

  • Tsim!

Qhov twg yog qhov zoo dua kom dhau txhua qhov mob ntawm tus neeg pib tshiab, yog tias tsis nyob hauv lub moj khaum ntawm qhov kev kawm? Tsim thiab ua kom koj cov kev txawj ntse - dua, sai dua koj pib, qhov zoo dua.

Aspiring programmers los ntawm txhua lub teb chaws, koom ua ke!

PS

Txhawm rau sau kuv txoj kev sib raug zoo nrog cov tub ntxhais kawm, Kuv tau txuas ib daim duab nco txog xyoo 2017 nrog ob tus kws kho mob: Peter Scharff (saum sab xis) thiab Albert Kharisovich Gilmutdinov (sab laug).

"Manifesto rau pib programmers los ntawm lwm yam tshwj xeeb" lossis yuav ua li cas kuv tau mus txog qhov no hauv lub neej

Nws tsim nyog ua tiav qhov program tsawg kawg rau cov khaub ncaws no! (loj)

Tau qhov twg los: www.hab.com

Ntxiv ib saib