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.
请加QQ:99515681 邮箱:99515681@qq.com WX:codinghelp
- 代写 RavenPack and Tiingo
- 代做CS 455、C++编程语言代写
- WhatsApp群发协议号/ws频道号/ws引流营销工具
- ISL6146DFUZ: Empowering Electronic Systems with Advanced Power Management | ChipsX
- Telegram/TG精准营销平台,电报/TG全自动群发系统,TG/纸飞机拉群引流器
- CE Channel:打造未来科技生活,为新创公司提供全方位品牌支持与渠道服务
- Instagram营销软件,ins定位采集工具/采集全球任意国家
- Ig私信博主,Instagram批量养号,ins自动采集博主软件
- EECS 3221代做、代写c/c++设计编程
- 解决广告费用问题 WhatsApp拉群工具助您实现精打细算广告成本
- 雪浪云工业知识中台,开启知识管理新篇章
- ins群发软件好用吗?Instagram独家引流推广群发软件,博主推荐购买!
- Instagram引流神器 - ins自动登录/ig采集指定地区/ins群发软件
- 创新引爆业绩 WhatsApp拉群营销工具为您的业务开创新的成功篇章
- 世界级云ERP U9 cloud再升维,助推中国制造向高质量发展迈进!
- Ins采集工具+私信群发神器,Instagram引流推广双管齐下!
- Ig批量私信软件,Instagram最强群发工具,ins批量私信引流软件
- 代写program编程、代做C/C++,Java程序
- 神经外科医疗器械白皮书(2023版)正式上线!
- 用户至上,体验为王:WhatsApp拉群工具的创新让每次互动都成为难忘旅程
- Ins批量筛选群发营销采集神器,Instagram营销工具,助你轻松营销!
- XC95108-15PQ100I: Enhancing FPGA Solutions for Embedded Applications | ChipsX
- 隆恒钢绞线:优质品质,铸就行业传奇
- 智能协议分配,Line协议号注册器助您突破国际市场推广的瓶颈
- ins强力引流神器来袭!Instagram群发营销软件,Ins客户引流不再愁!
- 社科赛斯考研:二十二载岁月铸辉煌,穿越周期的生命力之源
- Instagram引流营销软件揭秘,Ins超级营销利器问世!
- 装饰装修网:打造您的梦想家园,让家更有温度
- Instagram引流营销软件,Ins群发工具,让你的营销事半功倍!
- 全球旅游产业迎来复苏,光子易PhotonPay助力OTA航旅企业展业全球
推荐
- 全力打造中国“创业之都”名片,第十届中国创业者大会将在郑州召开 北京创业科创科技中心主办的第十届中国创业 科技
- 智慧驱动 共创未来| 东芝硬盘创新数据存储技术 为期三天的第五届中国(昆明)南亚社会公共安 科技
- 丰田章男称未来依然需要内燃机 已经启动电动机新项目 尽管电动车在全球范围内持续崛起,但丰田章男 科技
- 疫情期间 这个品牌实现了疯狂扩张 记得第一次喝瑞幸,还是2017年底去北京出差的 科技
- 苹果罕见大降价,华为的压力给到了? 1、苹果官网罕见大降价冲上热搜。原因是苹 科技
- 创意驱动增长,Adobe护城河够深吗? Adobe通过其Creative Cloud订阅捆绑包具有 科技
- 老杨第一次再度抓握住一瓶水,他由此产生了新的憧憬 瘫痪十四年后,老杨第一次再度抓握住一瓶水,他 科技
- 如何经营一家好企业,需要具备什么要素特点 我们大多数人刚开始创办一家企业都遇到经营 科技
- 升级的脉脉,正在以招聘业务铺开商业化版图 长久以来,求职信息流不对称、单向的信息传递 科技
- B站更新决策机构名单:共有 29 名掌权管理者,包括陈睿、徐逸、李旎、樊欣等人 1 月 15 日消息,据界面新闻,B站上周发布内部 科技