当前位置:文档之家› 比特误码率仿真

比特误码率仿真

在一个特定时间内连续时间信号的实时振幅。假定振幅是电压的度量衡。连续样
本之间的时间定义为 Ts。这告知我们连续时间信号的取样频率。我们通常指定取 样频率为 Fs, 这是 Ts 的间隔,而不是指定 Ts。为方便起见,通常将数值 1 代表 1 伏电压, 并且通常假定电阻为 1 欧姆。 有了电阻的概念,我们就可以进行分配。 对于我们的模拟,用一系列的样本来代表连续时间信号,数值单位为瓦特, 代表
2.10 产生误差向量 一旦我们得知发射码与接收码向量之间的偏移,接下来便可以计算位差了。由于
每位只能取 0 和 1,位差很容易识别。只要某位有位差,那么位差即为正负 1,如 果没有,则位差为 0.
通过 matlab,由发射码向量 tx,接收码向量 rx 以及偏移向量 off,我们计算出 误差向量
2.9 确定偏移 由于接收机内部滤波和其他导致延时的操作,接受码和发射码之间会存在一定的 偏移。在我们比较解调前后码字之前,首先需明确这个偏移。一种方法就是计算 两个序列的相关函数,找到相关函数峰值。 假设我们的发射码储存为向量‘tx’,接受码存储为‘rx’。由于接收机当滤波器 (filling and flushing)会产生一些无关输出,接受码相比于发射码会包含更多的 码位。如果发射码向量长为 ltx ,接收码向量长为 lrx ,偏移的可能范围在 0 到 lrx-ltx-1 的范围之内。我们可通过计算两个向量的偏交叉相关函数来得到这个偏 移。 使用 matlab,通过如下循环,我们可以得到 tx 和 rx 两个向量的偏交叉相关函数 ‘cor’, 得到的向量‘cor’是发射码和接收码之间在所有可能的延迟范围 内的偏交叉相 关向量。 我们需要找到‘cor’向量中最大值的位号,即发射码与接收码之间的偏移。因为 matlab 中数列元素的标号是 1:N 而不是 0:N-1,所以 cor 向量中最大值的位号 应减 1.通过 matlab,我们得出正确的位偏移‘off’为:
均值为 0 时才有效。如果平均值不为 0 时,必须使用 Babala.当然, 无论平均是 是否为 0, 使用 Balala 都有效。 1.原理
误码率测试需要信号发射机、信号接受机、通道。我们用可以产生长序列随 机位的数据的发射机作为信号输入端,发射机调制某种形式的数字信号,然后把 这些数据发送到一个模拟通道,这个通道是通过注入一定信噪比的噪声到信号传 输过程中来实现的,在接收机端接收机接受解调信号,产生一个恢复的序列。最 后,比较接收到的比特和发射位并计算错误率。误码率通常被描述为二维图,纵 坐标是信号噪声比 SNR,横坐标是误码率。要创建一个误码率与信噪比的图,绘 制一系列的点,这些点都要在特定的 SNR 值下模拟运行。具体步凑如下: 2.过程 2.1 模拟的第一步就是使用发射器创建一个由伪随机位序列数字调制信号,一旦 创建了这个信号 x(n),我们就要做一些测量。 2.2 设置 SNR 2.3 定义 EB
1 欧姆的电阻。通常,取样频率为 8khz,但是也通常使用其它的取样频率,所以 每次都需要明确规定。
假定我们有一个信号 x(n)--一个样本号码的指数。我们将信号的瞬时功率定 义为 balala。 换句话说,一个样本的瞬时功率就是那个样本的平方数值。样本电 压单位为伏特,功率单位为瓦特。一个更有用的数量是 平均功率,简而言之就是
对于绘制曲线图,我们先创建两个轴的载体,X 轴矢量包含 SNR 值,Y 轴矢量 表示误码率,Y 轴应绘制数的尺度,X 轴应绘制线性尺度。在 matlab 中应用下面 的函数:
semil log y(xx, yy, o)
‘n’为
n sqrt( pn) * randn(1,length(x))
2.7 添加噪声 通过叠加噪声向量到信号向量,我们生成了含噪信号。如果进行固定点仿真。需 将得到的含噪信号除以最大绝对值来进行归一化,这样含噪信号的幅度将会在± 1.0 的范围内。否则,我们就可以直接将信号向量 x 与噪声向量 n 直接相加便得 到含噪信号向量。
置函数来生成附加高斯白噪声。由于白噪声均值为 0,所以它具有一致的(power 不晓得咋翻)和方差。我们需要生成一个与信号矢量 x(n)相同长度的噪声向量, 且方差为W 。 Matlab 函数‘randn’用于生成一组均值为 0 方差为 1 正态分布的随机数。为使 生成的随机数方差为 n ,我们直接将生成的随机数乘以 n ,生成噪声向量
y xn
2.8 接受仿真机 一旦我们得到含噪信号,我们使用接收机来解调这个信号。接收机生成一串解调 码,通过与发射码比较,已决定有多少位解调码错误。
2.9 决定偏移 一旦我们创建了噪声信号向量,我们就要使用接收机来解调这个信号,接收
器将产生一个序列解调位,我们必须比较,以确定多少错误解调位传输的比特序 列。
0.采样信号的性质 在 Matlad 中, 我们使用一系列的数字或样本代表连续时间的信号,而这些数 字或样本通常存储在一个向量或矩阵中。在进行比特误码率(bit-error-rate)实验 前, 我们必须准确理解这些样本的含义,以及信号代表的哪些方面,样本代表的
数值。我们必须知道连续样本间的时间间隔。就通讯模拟而言,样本的数值代表
ber te / length(tx)
3.0 仿真结果
3.1 统计有效性
当误码率很高时,说明很多位出错,最坏情况下的误码率是 10-2 在这一点上, 调制解调器基本上是无用的。大多数通信系统要求误码率幅度低于 10-2 ,即使是 百分之一的误码率也认为很高。我们通常绘制误码率的曲线,应该绘制足够多的 点来覆盖分布广泛的误码率。在信噪比很高的情况下,就很难做到,因为误码率 会变得很低。例如:误码率为 10-6 意味着百万分之一的位出错,如果我们测试信 号只包含 1000 位,误码率就很难出现。为了模拟的意义,必须产生一些错误的 数量。如果一个模拟没有生成错误,这并不意味着没有误码率,它意味着传播的 数据的位不够长。作为一个经验法则,为了增强误码率统计的有效性,我们需要 在每次模拟约 1 以及上的错误。在高信噪比的情况下,要做数百万甚至数十亿的 信号测试。
在信号中,每个岩本瞬时功率的平均值。
如果信号平均值为 0, 或者没有 DC 值, 看到此变化,信号平均功率也可相 应得出。因为:此差额正是平方数值的平均值,同平均功率一样。 所以如果没有
DC,通过差额也能够计算出平均功率。 使用(variance)差额得出信号平均功率时需要小心。 此技术只能在信号平
每比特信号能源是总能量除以信号的位数。也可以表达为能量每平均信号功率
乘以一个位的时间,无论哪种表达方式 EB 总可以用下面的公式:
eb 1

x2 (n)
N * f bit n1
2.4 计算 N0 定义 SNR 和每比特能量后就该计算噪声功率频谱度,所有我们需要做的事故分
割信噪比提供转换分贝的信噪比的比率。N0 它告诉我们 1.0hz 带宽的信号噪声功 率是多大。
n0 eb / ebno
2.5 计算
为了找到噪声功率分均方差,就要先找到噪声带宽。对于一个真正的信号 x(n),fs 的采样,噪声带宽是采样率的一半,我们找到乘以噪声带宽的噪声功率普密度的 平均噪声功率。
fs * n0 2
2.6 产生噪音 尽管 matlab 的通信工具箱有生成附加高斯白噪声的函数,我们将使用标准内
err tx rx(off 1: length(tx) off )
2.11 计算位的错误 误差向量‘err’中只要有位差,相应位元素即为非 0.我们需统计向量中非零元素 的个数,及仿真中的位差数。 通过 matlab,我们由 err 计算出位差数
te sum(abs(err))
2.12 计算误码率 每进行一次误码率仿真,我们需发射和接收一定数量的码字。我们计算出接收码 中多少位出错,然后除以发射码的总位数,即得到误码率。 通过 matlab,我们计算出误码率 ber
相关主题