摘要:
背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假设读者都已经很熟悉 Linux 平台上基本的线程编程的 Pthread 库 API 。其他的第三方用以线程编程的库,如 boost,将不会在本文中提及。本文中主要涉及的题材包括线程开发中的线程管理,互斥变量, 阅读全文
摘要:
请问各位大虾,像4QAM,16QAM,32QAM,64QAM调制每符号平均能量怎么求解?我看别人程序时,16QAM得每符号平均能为10,不知道怎么求出来的。我想知道对于这些调制方式,怎么加噪的,我看一段程序如下: Eav=10*d^2; % energy per symbol snr=10^(SNRindB(p)/10); % SNR per bit (given) sgma=sqrt(Eav/(... 阅读全文
摘要:
Slip打包与解包基本原理 在数据包的头和尾加0xC0,如果数据中包含0xC0,用0xDB 0xDC代替,如果数据中包含0xDB,则用0xDB 0xDD代替。SLIP打包程序(MATLAB)function SlipOut = SlipPk(SlipIn) xC0 = hex2dec('C0'); xDB = hex2dec('DB'); xDC = hex2dec('DC'); xDD = he... 阅读全文
摘要:
QPSK的基本原理 四相相移键控信号简称“QPSK”。它分为绝对相移和相对相移两种。由于绝对相移方式存在相位模糊问题,所以在实际中主要采用相对移相方式QDPSK。它具有一系列独特的优点,目前已经广泛应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。 QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在数字信号的调制方式中QPSK四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。其星座图如下所示(采用格雷码编码)。 QPSK数字解调 QPSK数字解调 阅读全文
摘要:
所谓恶性卷积码,是指在接收序列中含有少部分比特错误时,却导致译码出现大量的错误的卷积码。这个错误增加的过程也称为卷积码的错误传播。这类卷积码在实际应用中是应该避免的,可以通过考察其状态图中来辨识。当卷积码的状态图中的非零序列编码使在图中出现环路且编码输出全为零时,对应的卷积码就是恶性卷积码,例如图给出了两个恶性卷积码的状态图。 阅读全文
摘要:
1、DSP应用程序代码结构,有三种: ○ 纯汇编; ○ 纯C语言; ○ 汇编+C语言。 这三种结构还可插入带CSL 或不带CSL的DSP/BIOS API。为了加快应用程序的开发,现在的DSP程序一般都采用:汇编+C语言+带CSL的API。其中,汇编代码用于特殊要求,如Flash编程及对速度 要求很高的关键部分;C语言则是整个应用程序主框架,但主要是运算处理部... 阅读全文
摘要:
前几天,我与一位从事硬核FPGA设计的设计师谈起我开发系统芯片的方式。由于我提到了“FPGA”,因此他问我对于仿真器的感觉怎么样。而当我告诉他我已近三年不依赖仿真器后,他大吃一惊,觉得不可思议。这同我与许多其他FPGA设计师围绕着提高设计抽象度的对话很类似。正如软件开发人员非常依赖调试器和代码仿真器来查找错误和验证功能一样,FPGA设计师同样一直习惯利用仿真器来进行这些工作。仿真器为FPGA设计师提供了开发复杂IP所需的控制手段和可视性,随后设计师们设计流程就可以以良好的仿真工具为中心组织起来。不进行仿真而从事设计的观念是完全违背常规的。 与此相对的是电路板设计师所用的方法。电路板设计师就是那 阅读全文
摘要:
我的主要工作是做FPGA的开发,可是工作中经常用到数字信号处理和数字通信方面的知识,还需要和DSP协助工作,可是现在我想在FPGA、数字通信和DSP这3个方面有所发展,可是又力不从心,不知道该如何抉择,有时候不知道先重点学习哪个方面,这三个方面都学习的话又没有那么多时间和精力,以至于现在在哪方面都不是很精通,好像只是个半吊子!主攻FPGA的还好,可是现在基本的开发还是可以掌握,过于复杂的算法还欠缺... 阅读全文
摘要:
这里给出自由空间传播时的无线通信距离的计算方法:所谓自由空间传播系指天线周围为无限大真空时的电波传播,它是理想传播条件。电波在自由空间传播时,其能量既不会被障碍物所吸收,也不会产生反射或散射。 阅读全文
摘要:
SystemVerilog语言简介(一)
1. 接口(Interface)
Verilog模块之间的连接是通过模块端口进行的。为了给组成设计的各个模块定义端口,我们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的早期,我们很难把握设计的细节。而且,一旦模块的端口定义完成后,我们也很难改变端口的配置。另外,一个设计中的许多模块往往具有相同的端口定义,在Verilog中,我们必须在每个模块中进行相同的定义,这为我们增加了无谓的工作量。 阅读全文