首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
COM 5140代做、c/c++程序设计代写
项目预算:
开发周期:
发布时间:
要求地区:
COM 5140 Error-Correcting Codes
Spring 2024
Project No. 1
Due 4:00pm, May 16, 2024
You are expected to produce a program to implement the Viterbi decoding algorithm for
the widely used (2, 1, 6) convolutional code with generator matrix
G(D) = (1 + D
2 + D
3 + D
5 + D
6
1 + D + D
2 + D
3 + D
6
).
This code is assumed to be transmitted over an additive white Gaussian noise (AWGN)
channel.
The deliverable will consist of three parts:
? Part I, Demonstration. At the time of demonstration, we will let you know: the
number of decoded bits N, the bit signal-to-noise ratio (SNR) Eb/N0 (in dB), the seed
for the random number generator, and hard or (unquantized) soft decision. You should
then report in each case the number of decoded bit errors made by your decoder and
the corresponding bit error rate (BER). I want you to truncate your survivors at length
32, outputting the oldest bit on the survivor with the best metric.
? Part II, Report. You should run experiments with your Viterbi decoder to produce
performance curves showing the relationships between Eb/N0 (in dB) and the decoded
BER (in logarithmic scale), with both hard-decision decoding, which corresponds to
decoding on a binary symmetric channel (BSC), and unquantized soft-decision decod?ing, for Eb/N0 ranging from 1 dB to 6 dB for hard decision and 1 dB to 4 dB for
unquantized soft decision, with increments of 0.5 dB. Please also include your simula?tion data in tabular form, listing for each data point: the bit SNR E0/N0, the number
of decoded bits, the number of decoded bit errors, and the BER. (These detailed data
are only required for the two mandatory performance curves.) Please hand in before
the deadline a report (in a hard copy) which includes, among other things, performance
curves, and (optional) discussions of issues like output decision alternatives (best-state,
fixed-state, majority-vote), survivor truncation length, etc. Your computer program
with comments should be attached at the end of the report.
? Part III, Program file. You also need to submit, before the deadline, your program
file. Please put all of your programs into a single file with your registration number and
proj1 as the file name, say, 105064851 proj1.c or 105064851 proj1.cpp. (If, after all
kinds of attempts, you are still unable to put all of your programs in a single file, please
compress your files into a single rar or zip file and use your registration number along
with proj1 as the file name, say, 105064851 proj1.rar or 105064851 porj1.zip.)
Upload your file to the eeclass system.
Additional Details on Project No. 1
1. Use the recursion
ul+6 = ul+1 ul
, for l 0
with the initial conditions u0 = 1, u1 = u2 = u3 = u4 = u5 = 0 to generate the infor?mation bits. Ensure that the generated sequence is 100000100001 . . . and is periodic
with period 63.
2. Encode the information sequence using the generator matrix G(D).
3. The encoder outputs 0 s and 1 s. However, the input to the AWGN channel is normal?ized to 1. Therefore, map 0 s to +1 s and 1 s to ?1 s.
4. To simulate the AWGN channel with unquantized soft-decision decoding, add a normal
(Gaussian) random variable of mean zero and variance
2
to the 1 s generated at the
previous step. For a binary code of rate R on the AWGN channel with antipodal
signaling, the relationship between Eb/N0 and
2
is given by
2 =
2R
Eb
N0
?1
so for example for a R = 1/2 code, the relationship is simply
2 =
Eb
N0
?1
.
Please remember that Eb/N0 is always quoted in dBs, which equals 10 log10(Eb/N0).
Thus for example, a value of Eb/N0 of 4 dB for a R = 1/2 code corresponds to a value
of
2 = 0.3981.
5. Use the following segment of pseudo code to generate normal random variables of
mean zero and variance
2
. The procedure normal outputs two independent normal
random variables, n1 and n2, and Ranq1 is a function which generates a random variable
uniformly distributed in the interval (0, 1).
unsigned long long SEED;
// SEED must be an unsigned integer smaller than 4101842887655102017.
unsigned long long RANV;
int RANI = 0;
main()
{
}
2
normal(n1, n2, )
{
do{
x1 = Ranq1();
x2 = Ranq1();
x1 = 2x1 ? 1;
x2 = 2x2 ? 1;
s = x
2
1 + x
2
2;
} while (s 1.0)
n1 = x1
q ?2 ln s/s;
n2 = x2
q ?2 ln s/s;
}
double Ranq1()
{
if ( RANI == 0 ){
RANV = SEED 4101842887655102017LL;
RANV = RANV >> 21;
RANV = RANV << 35;
RANV = RANV >> 4;
RANV = RANV * 2685821657736338717LL;
RANI++;
}
RANV = RANV >> 21;
RANV = RANV << 35;
RANV = RANV >> 4;
return RANV * 2685821657736338717LL * 5.42101086242752217E-20;
}
6. To get the output of the BSC, take the sign of the output of the AWGN channel and
map +1 s to 0 s and ?1 s to 1 s.
7. In your decoder, truncate the survivors to length 32 and output the oldest bit on the
survivor with the best metric. To decode N bits, generate N + 31 bits in (1). Finally
compare the decoded information sequence with the original information sequence. If
there are K bit errors, K/N will be a good estimate of the decoded BER.
8. As a partial check, some typical values are listed below.
Eb/N0 BER (BSC) Eb/N0 BER (AWGN)
4.5 dB 2.1 10?3 2.5 dB 2.2 10?3
5.0 dB 6.4 10?4 3.0 dB 5.3 10?4
3
Other Notes for Demonstration
1. The survivor truncation length corresponds to the actual storage requirement of the
survivors. For example, a survivor truncation length of 32 for this code means that
each survivor stores 32 bits.
2. For the illustration below, suppose a state is described as the content of the feed-forward
shift register in the encoder s = (s1, s2, s3, s4, s5, s6), where the input information bit
first fed to s1 and then shifted from left to right. In the trellis diagram, consider placing
the states vertically from top to bottom in the order of (0 0 0 0 0 0), (1 0 0 0 0 0),
(0 1 0 0 0 0), (1 1 0 0 0 0), (0 0 1 0 0 0), . . ., (1 1 1 1 1 1). What to do in case of tied
metrics? In the add-compare-select step the two metrics could be equal. In this case,
if 0 s and 1 s are equally probable to occur in the transmitted information sequence, in
principle you can safely select either case, and it will not affect the decoder performance.
Yet for the purpose of demonstration, always choose the upper branch as the survivor.
If best-state output decision is employed, in case of tied metrics, in principle you can
also safely select either case, but again for the purpose of demonstration, always choose
the survivor of the uppermost state.
3. Except in the procedure normal for generating noise, if a random number is needed in
your program, use other random number generators instead of the function Ranq1, for
the purpose of demonstration.
4. Each call of the procedure normal can return two independent normal random vari?ables, n1 and n2. Please use both of them in your program. Specifically, since this is
a (2, 1) code, each branch transition consists of two encoded bits, say x1 and x2. Add
n1 and n2 to x1 and x2, respectively, to get the two channel outputs y1 and y2, i.e.,
y1 = x1 + n1 and y2 = x2 + n2.
4
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做 program、代写 c++设计程...
2024-12-23
comp2012j 代写、代做 java 设...
2024-12-23
代做 data 编程、代写 python/...
2024-12-23
代做en.553.413-613 applied s...
2024-12-23
代做steady-state analvsis代做...
2024-12-23
代写photo essay of a deciduo...
2024-12-23
代写gpa analyzer调试c/c++语言
2024-12-23
代做comp 330 (fall 2024): as...
2024-12-23
代写pstat 160a fall 2024 - a...
2024-12-23
代做pstat 160a: stochastic p...
2024-12-23
代做7ssgn110 environmental d...
2024-12-23
代做compsci 4039 programming...
2024-12-23
代做lab exercise 8: dictiona...
2024-12-23
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!