文档库 最新最全的文档下载
当前位置:文档库 › 曼彻斯特编译码实验报告

曼彻斯特编译码实验报告

曼彻斯特编译码实验报告
曼彻斯特编译码实验报告

实验十二曼彻斯特编译码实验

一、实验目的

掌握曼彻斯特编码/译码原理

二、实验内容

1、学习曼彻斯特编译码原理

2、用示波器观察曼彻斯特编码结果和译码结果

三、基本原理

曼彻斯特码又称双相码(Manchester),实际上是1BIC码。它是对每个二进制代码分别利用两个具有不同相位的二进制码去取代的码。编码规则之一是:

0→01(零相位的一个周期的方波)

1→10(π相位的一个周期的方波)

例如:

代码:1100101

双相码;101001 01 10 01 10

双相码的特点是只使用两个电平,而不像三电平码。这种码既能提供足够的定时分量,又无直流漂移,编码过程简单。但这种码的带宽要宽些。上述码又称为绝对双相码。与它对应的另一种双相码称为差分双相码。先把输入的NRZ波形换成差分波形,用差分波形衽绝对双相码编码,此时的输出码,相对于输入NRZ波形,称为差分双相码。该码在本地局域网中常被使用。

组成模块如下图所示:

cclk

端口说明:

CCLK:编码时钟输入端

DIN:编码数据输入端

M-OUT:曼彻斯特编码结果输出端

DCLK:译码时钟输入端

M-IN:曼彻斯特译码数据输入端

DOUT:译码结果输出端

四、实验步骤

1、实验所用模块:数字编解码模块、数字时钟信号源模块。

实验连线:

CCLK:从数字时钟信号源模块引入一高频时钟,如512K。

DIN:从数字时钟信号源模块引入一低频时钟,如16K。

M-OUT与M-IN短接。

DCLK与CCLK短接。

2、用示波器两探头同时观测DIN与M-OUT端,分析曼彻斯特编码规则。

3、用示波器两探头同时观测DIN与DOUT端,分析曼彻斯特译码结果。

五、实验报告要求

设信息代码为1001101,码速率为128K,曼彻斯特的编码时钟为码速率的四倍,根据实验观察得到的规律,画出曼彻斯特波形。

移动通信实验线性分组码卷积码实验

实验二抗衰落技术实验(4学时) 1.线性分组码实验 2.卷积码实验 姓名: 学号: 班级: 日期: 成绩:

1、线性分组码实验 一、实验目的 了解线性分组码在通信系统中的意义。 掌握汉明码编译码及其检错纠错原理,理解编码码距的意义。二、实验模块 主控单元模块 2号数据终端模块 4号信道编码模块 5号信道译码模块 示波器 三、实验原理

汉明码编译码实验框图 2、实验框图说明 汉明码编码过程:数字终端的信号经过串并变换后,数据进行了分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。 注:为方便对编码前后的数据进行对比观测,本实验中加入了帧头指示信号。帧头指示信号仅用于线性分组码编码时将输入信号的比特流进行分组,其上跳沿指示了分组的起始位置。 四、实验步骤 (注:实验过程中,凡是涉及到测试连线改变或者模块及仪器仪表的更换时,都需先停止运行仿真,待连线调整完后,再开启仿真进行后续调节测试。) 任务一汉明码编码规则验证 概述:本项目通过改变输入数字信号的码型,观测延时输出,编码输出及译码输出,验证汉明码编译码规则。 1、登录e-Labsim仿真系统,创建实验文件,选择实验所需模块和示波器。 2、按表格所示进行连线。 3、调用示波器观测2号模块的DoutMUX和4号模块的编码输出TH4编码数据,

6、此时系统初始状态为:2号模块提供32K编码输入数据,4号模块进行汉明码编码,无差错插入模式,5号模块进行汉明码译码。 7、实验操作及波形观测。 0000 0001 0010

0100 0101

0111 1000

哈夫曼编码实验报告

中南大学数据结构课程 姓名:刘阳 班级:信息0703 学号:0903070312 实验时间: 08.11.14 指导老师:赵颖

一、实验内容 根据输入的n 个带权结点,构造出哈夫曼树,并且把构造结果输出到屏幕。 二、实验说明 哈夫曼数,也称最优二叉树,是指对于一组带有确定权值的叶结点,构造的具有最小带权路径长度的二叉树。 设二叉树具有n 个带权值的叶结点,那么从根结点到各个叶结点的路径长度与相应结点权值的乘积之和叫做二叉树的带权路径长度WPL ,记作: WPL=k n k k L W *∑=1。在给定一组具有确定权值的叶结点,可以构造出不同的带权二 叉树。根据哈夫曼树的定义,一棵二叉树要使其WPL 值最小,必须使权值越大的叶结点越靠近根结点,而权值越小的叶结点越远离根结点。 在数据通讯中,经常需要将传送的文字转换成由二进制字符0,1组成的二进制串,我们称之为编码。例如,假设要传送的电文为ABACCDA ,电文中只含有A ,B ,C ,D 四种字符,若这四种字符采用下表所示的编码,则电文的代码为000010000100100111 000,长度为21。 在传送电文时,我们总是希望传送时间尽可能短,这就要求电文代码尽可能短。如果在编码时考虑字符出现的频率,让出现频率高的字符采用尽可能短的编码,出现频率低的字符采用稍长的编码,构造一种不等长编码,则电文的代码就可能更短。并且在建立不等长编码时,必须使任何一个字符的编码都不是另一个字符编码的前缀,以避免反译成原文时,编码出现多义性。 在哈夫曼编码树中,树的带权路径长度的含义是各个字符的码长与其出现次数的乘积之和,也就是电文的代码总长,所以采用哈夫曼树构造的编码是一种能使电文代码总长最短的不等长编码。 采用哈夫曼树进行编码,也不会产生上述二义性问题。因为,在哈夫曼树中,每个字符结点都是叶结点,它们不可能在根结点到其它字符结点的路径上,所以一个字符的哈夫曼编码不可能是另一个字符的哈夫曼编码的前缀,从而保证了译码的非二义性。

曼彻斯特解码程序

曼彻斯特解码 1、变量定义 (2) 2、Manchest初始化 (2) 3、Manchest解码信号翻转 (3) 4、过滤错误的卡号 (4) 5、获取正确的卡号 (5) 6、Manchest获取卡号数据 (6) 7、通过中断采样获取刷卡数据 (9)

1、变量定义 #define TH1_370US_H 0XFE //晶振11.0592MHZ,12T模式 #define TL1_370US_L 0XAB #define SIGNAL_FLIP_TIME 10 //每隔100ms翻转一次读卡信号 #define REPEAT_TIME 5 //500ms后重复读卡 #define CLEAR_CARD_TIME 20 //2S后清除卡号数据 #define MANCHEST_TIME 5 sbit PULSE = P3^2; sbit RFEN = P3^5; //曼彻斯特解码脉冲信号 sbit MANCHEST0= P3^2; //wiegand0 sbit MANCHEST1= P3^3; //wiegand1 uchar code CheckingTab[32]={ //接收到10组卡号的偶校验 0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01, //这里数值是低五位的偶校验值 0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00, 0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00, 0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01}; uchar WGCardBuf[5]; //卡号 uchar CopyCardBuf[5]; //备份卡号 uchar ManchestBuf[11]; //暂存接收到的11组数据 uchar idata g_ucManchestTime = MANCHEST_TIME; // uchar idata g_ucDWithCardTime= 0; //隔500ms处理该卡号 uchar idata g_ucPreambleFlag = 0; uchar idata g_ucERAgainTimer = 0; //每隔100ms翻转一次RFEN uchar idata g_ucStoreGroupCnt= 0; //接收到几组数据,这里为11组才可能正确 uchar idata g_ucEGroupBitCnt = 0; //每组数据有5个为,5=4位卡号+1位偶校验 uchar idata g_ucPreambleCount= 0; //9位为1的引导码 uchar idata g_ucRemvoeCardTime=0; //隔多久清除以前的卡号数据,这里为3s 2、Manchest初始化 /******************************************************************** 函数原型:ManchestInit 功能:曼彻斯特解码变量初始化 输入:无 输出:无 说明:无

数据结构 哈夫曼编码实验报告

实验报告 实验课名称:数据结构实验 实验名称:文件压缩问题 班级:20132012 学号:姓名:时间:2015-6-9 一、问题描述 哈夫曼编码是一种常用的数据压缩技术,对数据文件进行哈夫曼编码可大大缩短文件的传输长度,提高信道利用率及传输效率。要求采用哈夫曼编码原理,统计文本文件中字符出现的词频,以词频作为权值,对文件进行哈夫曼编码以达到压缩文件的目的,再用哈夫曼编码进行译码解压缩。 二、数据结构设计 首先定义一个结构体: struct head { unsigned char b; //记录字符 long count; //权重 int parent,lch,rch; //定义双亲,左孩子,右孩子 char bits[256]; //存放哈夫曼编码的数组 } header[512],tmp; //头部一要定设置至少512个,因为结 点最多可达256,所有结点数最多可 达511 三、算法设计 输入要压缩的文件读文件并计算字符频率根据字符的频率,利用Huffman 编码思想创建Huffman树由创建的Huffman树来决定字符对应的编码,进行文件的压缩解码压缩即根据Huffman树进行译码 设计流程图如图1.1所示。

图1.1 设计流程图 (1)压缩文件 输入一个待压缩的文本文件名称(可带路径)如:D:\lu\lu.txt 统计文本文件中各字符的个数作为权值,生成哈夫曼树;将文本文件利用哈夫曼树进行编码,生成压缩文件。压缩文件名称=文本文件名.COD 如:D:\lu\lu.COD 压缩文件内容=哈夫曼树的核心内容+编码序列 for(int i=0;i<256;i++) { header[i].count=0; //初始化权重 header[i].b=(unsigned char)i; //初始化字符 } ifstream infile(infilename,ios::in|ios::binary); while(infile.peek()!=EOF) { infile.read((char *)&temp,sizeof(unsigned char)); //读入一个字符 header[temp].count++; //统计对应结点字符权重 flength++; //统计文件长度 } infile.close(); //关闭文件 for(i=0;i<256-1;i++) //对结点进行冒泡排序,权重大的放在上面,编码时效率高 for(int j=0;j<256-1-i;j++) if(header[j].count

曼彻斯特码原理与应用

曼彻斯特码 1 曼彻斯特原理介及其编码规则 (1) 2 曼彻斯特码的各方面应用 (3) 3 曼彻斯特码与差分曼彻斯特码 (5) 1 曼彻斯特原理介及其编码规则 Manchester编码是一种常用的基带信号编码。它具有内在的时钟信息,因而能使网络上的每一个系统保持同步。在Manchester编码中,时间被划分为等间隔的小段,其中每小段代表一位数据。每一小段时间本身又分为两半,前半个时间段所传信号是该时间段传送比特值的反码,后半个时间段传送的是比特值本身。可见在一个时间段内,其中间点总有一次信号电平的变化,因此携带有信号传送的同步信息而不需另外传送同步信号。 Manchester编码采用电平由高到低变化的下降沿代表0,电平由低到高变化的上升沿代表1;发送和接收的同步工作方式保证了信息传递的方便和可靠。 为了减少控制器与位置反馈单元之间的连线数目,信息的传递可采用两根线的串行方式。发送端和接收端的同步靠信息脉冲串之前的同步脉冲串来实现。 在电信领域,曼彻斯特码,(也称作相位码或者PE)是一种数据通讯线性码,它的每一个数据比特都是由至少一次电压转换的形式所表示的曼彻斯特编码被因此被认为是一种自定时码。自定时意味着数据流的精确同步是可行的。每一个 图1 二进制码和曼彻斯特码对比图 比特都准确的在一预先定义时间时期的时间中被传送。但是,今天有许许多多的复杂的编码方法(例如8B/10B编码),在达到同等目的情况下只需要更少带宽负荷并且只有更少的同步信号相位模糊。

二进制码与曼彻斯特码波形的对比关系如图1所示。 在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相应编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。 用于数字基带传输的码型种类较多,Manchester码是其中常用的一种。Manchester码是一种用跳变沿(而非电平)来表示要传输的二进制信息(0或1),一般规定在位元中间用下跳变表示“1”,用上跳变表示“0”. 曼彻斯特编码被被认为是一种自定时码自定时意味着数据流的精确同步是可行的。每一个比特都准确的在一预先定义时间时期的时间中被传送。 在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。 曼彻斯特编码提供了一种简单的方法在长时间段内没有电平跳变的情况下,仍然能够对任意的二进制序列进行编码,并且防止在这种情况下同步时钟信号的丢失以及防止低通模拟电路中低频直流飘移所引起的比特错误。如果保证传送的编码交流信号的直流分量为零并且能够防止中继信号的基线漂移,那么很容易实现信号的恢复和防止能量的浪费。曼彻斯特码具有丰富的位定时信息。 在物理层的同步时钟编码技术用来将时钟和数据编码统一在一个同步比特数据流中。在这项技术中,在电缆上被传送的真实二元数据不是以一连串的逻辑序列1或者0来表示的(这项技术也是一种不归零码NRZ)。这些要传送的数据比特被转换成一个略微不同格式,比起直接用二进制码(i.e. NRZ)来有许多的优势。 在曼彻斯特编码方案中,比特周期中间的0到1跳变表示逻辑0,比特周期中间的1到0的跳变表示逻辑1。注意信号跳变不一定在‘bitboundaries’比特边界(一个比特和另外一个比特)之间的分界线,但是总是发生在每个比特的中间位置.曼彻斯特编码的规则列出如下表1所示。

卷积信号实验报告

信号与系统上机实验报告一连续时间系统卷积的数值计算 140224 班张鑫学号 14071002 一、实验原理 计算两个函数的卷积 卷积积分的数值运算实际上可以用信号的分段求和来实现,即: 如果我们只求当 t = n? t1 是r ( t )的值,则由上式可以得到: ?t足够小时,r(t2)就是e(t)和f(t)卷积积分的数值近似值由上面的公式可 当1 以得到卷积数值计算的方法如下: (1)将信号取值离散化,即以为周期,对信号取值,得到一系列宽度间隔为 的矩形脉冲原信号的离散取值点,用所得离散取值点矩形脉冲来表示原来的连续时间信号; (2)将进行卷积的两个信号序列之一反转,与另一信号相乘,并求积分,所得为t=0时的卷积积分的值。以为单位左右移动反转的信号,与另一信号相乘求积 分,求的t<0和t>0时卷积积分的值; (3)将所得卷积积分值与对应的t标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。 1

信号与系统上机实验报告一二、处理流程图 三、C程序代码 #include"stdafx.h" #include"stdio.h" //#include "stdilb.h" float u(float t) { while (t>= 0) return(1); while (t<0) return(0); } float f1(float t) { return(u(t+2)-u(t-2)); } float f2(float t) { return(t*(u(t)-u(t-2))+(4-t)*(u(t-2)-u(t-4))); } int_tmain(int argc, _TCHAR* argv[]) {

哈夫曼树实验报告

哈夫曼树实验报告 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

计算机科学与技术学院数据结构实验报告 班级 2014级计算机1班学号姓名张建华成绩 实验项目简单哈夫曼编/译码的设计与实现实验日期一、实验目的 本实验的目的是进一步理解哈夫曼树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、实验问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此实验即设计这样的一个简单编/码系统。系统应该具有如下的几个功能: 1、接收原始数据。 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件中。 2、编码。 利用已建好的哈夫曼树(如不在内存,则从文件中读入),对文件中的正文进行编码,然后将结果存入文件中。 3、译码。 利用已建好的哈夫曼树将文件中的代码进行译码,结果存入文件中。 4、打印编码规则。 即字符与编码的一一对应关系。 5、打印哈夫曼树, 将已在内存中的哈夫曼树以直观的方式显示在终端上。 三、实验步骤 1、实验问题分析 1、构造哈夫曼树时使用静态链表作为哈夫曼树的存储。 在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,描述结点的数据类型为: Typedef strcut { Int weight;/*结点权值*/ Int parent; Int lchild; Int rchild; }HNodeType; 2、求哈夫曼编码时使用一维结构数组HuffCode作为哈夫曼编码信息的存储。 求哈夫曼编码,实质上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,没回退一步,就走过了哈夫曼树的一个分支,从而得到一位哈夫曼码值,由于一个字符的哈夫曼编码是从根结点到相应叶子结点所经过的路

曼彻斯特码编解码的FPGA设计与实现

武汉理工大学 本科生毕业设计(论文)开题报告

目录 摘要 .......................................................................................................................................................... I ABSTRACT ............................................................................................................................................. II 1 绪论 (1) 1.1 背景及目的意义 (1) 1.2 国内外研究现状 (1) 1.2.1 在电信业的应用 (1) 1.2.2 在工业控制中的应用 (2) 1.2.3 在车辆总线中的应用 (2) 1.2.4 在石油勘测探井中的应用 (2) 1.3 项目研究内容及组织结构 (2) 2. 开发工具及仿真软件 (4) 2.1 FPGA原理 (4) 2.2 QuartusⅡ (5) 2.2.1 QuartusⅡ系统的特点 (5) 2.2.2 Quartus II下的FPGA设计 (6) 2.2.3 QuartusⅡ的仿真 (8) 2.3 Modelsim (8) 3 曼彻斯特码 (10) 3.1 数字通信中位同步与线路编码 (10) 3.2 曼彻斯特码及几种相关的二元码码型介绍 (11) 3.2.1 曼彻斯特码 (11) 3.2.2 单极性非归零波形 (12) 3.2.3 密勒码――曼彻斯特码的一种变形码 (12) 3.3 曼彻斯特码及几种常见二元码的包含定时信息的讨论 (12) 3.4曼彻斯特码的优点 (18) 3.5曼彻斯特码的应用范围 (19) 3.5.1在LAN中的应用 (19) 3.5.2在测井系统中的应用 (19) 3.6 曼彻斯特编码规则 (20) 4 系统方案设计 (23) 4.1 编码电路的设计 (23) 4.1.1 并串转换器的设计 (24) 4.1.2 NRZ码转换为曼彻斯特码 (25) 4.2 解码电路的设计 (26) 4.2.1 总体设计 (26) 4.2.2 各模块设计 (27) 5系统功能的实现 (30) 5.1 Verilog HDL语言简介 (30)

卷积编码实验报告

实验名称:___ 卷积编码_______ 1、使用MATLAB进行卷积编码的代码编写、运行、仿真等操作; 2、熟练掌握MATLAB软件语句; 3、理解并掌握卷积编码的原理知识。 二、实验原理 卷积码是由Elias于1955 年提出的,是一种非分组码,通常它更适用于前向纠错法,因为其性能对于许多实际情况常优于分组码,而且设备较简单。 卷积码的结构与分组码的结构有很大的不同。具体地说,卷积码并不是将信息序列分成不同的分组后进行编码,而是将连续的信息比特序列映射为连续的编码器输出符号。卷积码在编码过程中,将一个码组中r 个监督码与信息码元的相关性从本码组扩展到以前若干段时刻的码组,在译码时不仅从此时刻收到的码组中提取译码信息,而且还可从与监督码相关的各码组中提取有用的译码信息。这种映射是高度结构化的,使得卷积码的译码方法与分组译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个

特定的应用,采用分组码还是卷积码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。 (一)卷积编码的图形表示 卷积码的编码器是由一个有k 个输人位,n 个输出位,且有m 个移位寄存器构成的有限状态的有记忆系统,其原理如图1所示。 图1 卷积码编码器的原理图 描述这类时序网络的方法很多,它大致可分为两大类型:解析表示法与图形表示法。在解析法中又可分为离散卷积法、生成矩阵法、码多项式法等;在图形表示法中也可分为状态图法、树图法和网络图法等。 图2给出的是一个生成编码速率为1/2 卷积码的移位寄存器电路。输人比特在时钟触发下从左边移人到电路中,每输入一位,分别去两个模2加法器的输出值并复用就得到编码器的输出。对这一编码,每输入一比特就产生两个输出符号,故编码效率为

哈夫曼树 实验报告

计算机科学与技术学院数据结构实验报告 班级 2014级计算机1班学号姓名张建华成绩 实验项目简单哈夫曼编/译码的设计与实现实验日期一、实验目的本实验的目的是进一步理解哈夫曼树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、实验问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此实验即设计这样的一个简单编/码系统。系统应该具有如下的几个功能: 1、接收原始数据。 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件中。 2、编码。 利用已建好的哈夫曼树(如不在内存,则从文件中读入),对文件中的正文进行编码,然后将结果存入文件中。 3、译码。 利用已建好的哈夫曼树将文件中的代码进行译码,结果存入文件中。 4、打印编码规则。 即字符与编码的一一对应关系。 5、打印哈夫曼树,

将已在内存中的哈夫曼树以直观的方式显示在终端上。 三、实验步骤 1、实验问题分析 1、构造哈夫曼树时使用静态链表作为哈夫曼树的存储。 在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,描述结点的数据类型为:Typedef strcut { Int weight;/*结点权值*/ Int parent; Int lchild; Int rchild; }HNodeType; 2、求哈夫曼编码时使用一维结构数组HuffCode作为哈夫曼编码信息的存储。 求哈夫曼编码,实质上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,没回退一步,就走过了哈夫曼树的一个分支,从而得到一位哈夫曼码值,由于一个字符的哈夫曼编码是从根结点到相应叶子结点所经过的路径上各分支所组成的0、1序列,因此先得到的分支代码为所求编码的低位码,后得到的分支代码位所求编码的高位码,所以设计如下数据类型: #define MAXBIT 10

基于AVR单片机的曼彻斯特编解码及其应用_王建国

—258 — 基于A VR 单片机的曼彻斯特编解码及其应用 王建国,孙敬华,曹丙霞 (中国海洋大学工程学院,青岛 266071) 摘 要:提出了一种在较高通信速率(10kbps)下用A VR 单片机软件实现曼彻斯特码编解码的方法。介绍了小功率无线传输系统的工作原理和通信协议。详细阐述了用软件识别同步时钟、起始符、同步头和数据的技术方法。 关键词:曼彻斯特编解码;无线通信;A VR 单片机 Manchester Code/decode Based on A VR and Its Application WANG Jianguo, SUN Jinghua, CAO Bingxia (Engineering College, Ocean University of China, Qingdao 266071) 【Abstract 】The paper introduces a hi-efficient coding/decoding method to apply A VR MCU to code/decode Manchester at 10kbps successfully,principle and communication protocol in wireless communicating systems of low power. It provides in detail a technique about how to identify initial flag, synchronization code and data. 【Key words 】Manchester code/decode; Wireless communication; A VR 计 算 机 工 程Computer Engineering 第32卷 第20期 Vol.32 № 20 2006年10月 October 2006 ·工程应用技术与实现· 文章编号:1000—3428(2006)20—0258—03 文献标识码:A 中图分类号:TP368.2 随着无线通信芯片技术的发展,越来越多的便携式或电池供电的无线传输设备进入人们日常生活中。例如,遥控车门开关(RKE)系统、汽车轮胎压力监视系统(TPMS)、无线内窥镜系统、蓝牙技术等。这种小功率无线传输系统的关键技术是在低电流消耗和信道干扰较强的情况下实现数据稳定可靠的传输。 曼彻斯特码由于其特殊的性能,被广泛应用于小功率无线传输系统中。曼彻斯特编码是串行数据传输的一种重要的编码方式。曼彻斯特编码最大的优点是:数据和同步时钟统一编码,曼码中含有丰富的时钟信号,直流分量基本为零,接收器能够较容易恢复同步时钟,并同步解调出数据,具有很好的抗干扰性能,这使它更适合于信道传输。 传统的曼彻斯特码的编解码一般采用专用芯片电路实现,数据的串/并转换和信号的合成都通过硬件电路实现,导致电路复杂,系统成本提高。考虑到目前微处理器功能不断提高,在不影响系统微处理器完成其它处理任务的情况下,完全可以采用微处理器来实现曼彻斯特码的编码和解码。本设计提出了一种简单有效的曼彻斯特码解调方法,并选用高速AVR 单片机及软件编程实现了曼彻斯特码的编解码。 1 小功率无线传输系统工作原理 小功率无线传输系统一般由射频发射机和接收监视器两部分组成。射频发射机采集和发射信息;接收监视器接收信息,并根据接收到的信息执行相应的操作。 1.1 射频发射机模块 射频发射机一般采用电池供电,以遥控车门开关 (RKE)系统为例,电池需要连续工作3~5年,低功耗设计是电路设计的关键。在此射频发射机主控MCU 选用Atmel 公司的高性能、低功耗微控制器ATmega48V 。该芯片工作电压最低可达1.8V ,具有5种省电休眠模式,适合低功耗应用场合。根据处理器工作状态的不同进入相应的休眠模式。在掉电模式下耗电小于1μA ,极大地降低了功耗。 射频发射机的系统框图如图1所示。MCU 首先对数据进行曼彻斯特码编码,然后把数据送到射频发射芯片发射。 1.2 射频接收监视器模块 接收监视器的主控MCU 采用Atmel 公司的高性能、高速RISC 微控制器ATmega169。该芯片内嵌了4*25段的LCD 驱动器,通过它可以在LCD 上显示一些用户关心的状态信息,如轮胎气压信息等。ATmega169单片机的T/C1具有一个捕捉单元,可用来捕捉外部事件,并为其赋予时间标记以说明此事件发生的时刻。外部事件发生的触发信号可由引脚ICP1(输入捕捉引脚)输入,也可通过模拟比较器单元实现。 本设计采用T/C1的输入捕捉单元接收数据, 即曼彻斯特码数据从引脚ICP1输入。这种数据接收处理方法要求MCU 对外部输入事件具有足够的处理能力,微控制器ATmega169工作在16MHz 时性能高达16MIPS 。实验证明,当数据波特率为10kHz 时,系统能够正确接收数据。 接收监视器的系统框图如图2所示。射频信号经接收芯片解调,输出的曼码数据经过引脚ICP1输入到MCU ,MCU 利用单片机的T/C1的引脚捕捉功能虽然能够实现曼码数据电平时间精确测量,但存在一个明显的不足,就是对干作者简介:王建国(1954-),男,教授,主研方向:智能仪器仪表 与计算机控制技术;孙敬华、曹丙霞,硕士生 收稿日期:2005-11-08 E-mail :sunjinghua-2001@https://www.wendangku.net/doc/dc9637495.html,

数据结构哈夫曼编码实验报告

数据结构实验报告 ――实验五简单哈夫曼编/译码的设计与实现本实验的目的是通过对简单哈夫曼编/译码系统的设计与实现来熟练掌握树型结 构在实际问题中的应用。此实验可以作为综合实验,阶段性实验时可以选择其中的几 个功能来设计和实现。 一、【问题描述】 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此实验即设计这样的一个简单编/码系统。系统应该具有如下的几个功能: 1、接收原始数据。 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件nodedata.dat中。 2、编码。 利用已建好的哈夫曼树(如不在存,则从文件nodedata.dat中读入),对文件中的正文进行编码,然后将结果存入文件code.dat中。 3、译码。利用已建好的哈夫曼树将文件code.dat中的代码进行译码,结果存入文件textfile.dat中。 4、打印编码规则。 即字符与编码的一一对应关系。 二、【数据结构设计】 1、构造哈夫曼树时使用静态链表作为哈夫曼树的存储。 在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,描述结点的数据类型为: typedef struct { int weight;//结点权值 int parent; int lchild; int rchild; char inf; }HNodeType; 2、求哈夫曼编码时使用一维结构数组HuffCode作为哈夫曼编码信息的存储。 求哈夫曼编码,实质上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,没回退一步,就走过了哈夫曼树的一个分支,从而得到一位哈夫曼码值,由于一个字符的哈夫曼编码是从根结点到相应叶子结点所经过的路径上各分支所组成的0、1序列,因此先得到的分支代码为所求编码的低位码,后得到的分支代码位所求编码的高位码,所以设计如下数据类型: #define MAXBIT 10 typedef struct

卷积码实验报告

苏州科技大学天平学院电子与信息工程学院 信道编码课程设计报告 课设名称卷积码编译及译码仿真 学生姓名圣鑫 学号1430119232 同组人周妍智 专业班级通信1422 指导教师潘欣欲 一、实验名称 基于MAATLAB的卷积码编码及译码仿真 二、实验目的 卷积码就是一种性能优越的信道编码。它的编码器与译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本实验简明地介绍了卷积码的编码原理与Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码与译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真与实测,并对测试结果作了分析。 三、实验原理

1、卷积码编码原理 卷积码就是一种性能优越的信道编码,它的编码器与解码器都比较易于实现,同时还具有较强的纠错能力,这使得它的使用越来越广泛。卷积码一般表示为(n,k,K)的形式,即将 k个信息比特编码为 n 个比特的码组,K 为编码约束长度,说明编码过程中相互约束的码段个数。卷积码编码后的 n 各码元不经与当前组的 k 个信息比特有关,还与前 K-1 个输入组的信息比特有关。编码过程中相互关联的码元有 K*n 个。R=k/n 就是编码效率。编码效率与约束长度就是衡量卷积码的两个重要参数。典型的卷积码一般选 n,k 较小,K 值可取较大(>10),但以获得简单而高性能的卷积码。 卷积码的编码描述方式有很多种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述,树图描述,网格图描述等。 2、卷积码Viterbi译码原理 卷积码概率译码的基本思路就是:以接收码流为基础,逐个计算它与其她所 有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正就是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上就是一样的,但实现方法上略有不同。主要区别在于:分组码就是孤立地求解单个码组的相似度,而卷积码就是求码字序列之间的相似度。基于网格图搜索的译码就是实现最大似然判决的重要方法与途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第 L 级(L 为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi 译码正就是基于这种想法。对于(n, k, K )卷积码,其网格图中共 2kL 种状态。由网格图的前 K-1 条连续支路构成的路径互不相交,即最初 2k_1 条路径各不相同,当接收到第 K 条支路时,每条路径都有 2 条支路延伸到第 K 级上,而第 K 级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加

哈夫曼树实验报告

数据结构实验报告 实验名称:实验三哈夫曼树 学生姓名: 班级: 班内序号: 学号: 日期: 程序分析: 存储结构:二叉树 程序流程: template class BiTree { public: ) 1.初始化链表的头结点

2.获得输入字符串的第一个字符,并将其插入到链表尾部,n=1(n记录的是链 表中字符的个数) 3.从字符串第2个字符开始,逐个取出字符串中的字符 将当前取出的字符与链表中已经存在的字符逐个比较,如果当前取出的 字符与链表中已经存在的某个字符相同,则链表中该字符的权值加1。 如果当前取出的字符与链表中已经存在的字符都不相同,则将其加入到 链表尾部,同时n++ =n(tSize记录链表中字符总数,即哈夫曼树中叶子节点总数) 5.创建哈夫曼树 6.销毁链表 源代码: void HuffmanTree::Init(string Input) { Node *front=new Node; 建哈夫曼树(void HuffmanTree::CreateCodeTable(Node *p)) 算法伪代码: 1.创建一个长度为2*tSize-1的三叉链表 2.将存储字符及其权值的链表中的字符逐个写入三叉链表的前tSize个结点 的data域,并将对应结点的孩子域和双亲域赋为空 3.从三叉链表的第tSize个结点开始,i=tSize 3.1从存储字符及其权值的链表中取出两个权值最小的结点x,y,记录其 下标x,y。 3.2将下标为x和y的哈夫曼树的结点的双亲设置为第i个结点 3.3将下标为x的结点设置为i结点的左孩子,将下标为y的结点设置为 i结点的右孩子,i结点的权值为x结点的权值加上y结点的权值,i 结点的双亲设置为空 4. 根据哈夫曼树创建编码表

曼彻斯特解码原则+125K EM4100系列RFID卡解码源程序分析

曼彻斯特解码原则+125K EM4100系列RFID卡解码源程序分析 曼彻斯特解码原则 1.曼彻斯特编码 曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。曼彻斯特编码被用在以太网媒介系统中。曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的(技术上叫做反向不归零制(NRZ))。相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。 曼彻斯特编码,常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。 对于以上电平跳变观点有歧义:关于曼彻斯特编码电平跳变,在雷振甲编写的<<网络工程师教程>>中对曼彻斯特编码的解释为:从低电平到高电平的转换表示1,从高电平到低电平的转换表示0,模拟卷中的答案也是如此,张友生写的考点分析中也是这样讲的,而《计算机网络(第4版)》中(P232页)则解释为高电平到低电平的转换为1,低电平到高电平的转换为0。清华大学的《计算机通信与网络教程》《计算机网络(第4版)》采用如下方式:曼彻斯特编码从高到低的跳变是0 从低到高的跳变是1。 两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自同步能力和良好的抗干扰性能。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。 就是说主要用在数据同步传输的一种编码方式。 【在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相应编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。】 2. 曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE);常用于局域网传输。在曼

一种简便的ID卡曼彻斯特解码方法

一种简便的ID卡曼彻斯特解码方法 我这里介绍的是常用的125KHz的ID卡。ID卡内固化了64位数据,由5个区组成:9个引导位、10个行偶校验位“PO~P9′’、4个列偶校验位“PC0~PC3”、40个数据位“D00~D93”和1个停止位S0。9个引导位是出厂时就已掩膜在芯片内的,其值为“111111111”,当它输出数据时,首先输出9个引导位,然后是10组由4个数据位和1个行偶校验位组成的数据串,其次是4个列偶校验位,最后是停止位“0”。“D00~D13”是一个8位的晶体版本号或ID识别码。“D20~D93”是8组32位的芯片信息,即卡号。注意校验位都是偶校验,网上有些资料写的是奇校验,很明显是错的,如果是奇校验的话,在一个字节是FF 的情况下,很容易就出现9个1,这样引导位就不是唯一的了,也就无法判断64位数据的起始位了。 数据结构如下图:

我读的一个ID卡数据是111111111 10001 00101 00000 00011 00000 01010 00000 11011 00110 01100 01100,对应的ID卡号是01050d36。 ID卡数据采用曼彻斯特编码,1对应着电平下跳,0对应着电平上跳。每一位数据的时间宽度都是一样的(1T)。由于电路参数的差别,时间宽度要实际测量。解码芯片采用U2270B,单片机采用89S52。U2270B的输出脚把解码得到的曼彻斯特码输出到89S52的INT脚。在89S52的外部中断程序中完成解码。 在没有ID卡在读卡器射频范围内时,U2270B的输出脚会有杂波输出,ID卡进入读卡器射频范围内后,会循环发送64位数据,直到ID卡离开读卡器的有效工作区域。 根据ID卡的数据结构,64位数据的最后一位停止位是0。最开始的9位引导位是1,可以把0111111111做为引导码。也就是说在ID卡进入读卡器工作范围后,丢掉ID卡发送的第一个64位码,检测最后1位0,然后检测ID卡发送的第2个64位码的9个引导码111111111,引导码检测成功后,解码剩余的55位码。得到ID卡的数据。然后丢掉ID卡发送的第3个64位码,检测第3个64位码的最后1位0,再检测ID卡发送的第4个64位码。这样连续3次检测到同一个码,就认为解码到了正确的ID卡号。 之所以要丢掉ID卡发送的第一个64位数据,是因为U2270B在没有ID卡刷卡时,也会输出波形到89S52的INT脚,这样将无法判断ID卡数据的头码。从第2个码开始解码能确保检测的头码正确。丢掉第3个码的原因是在检测第2个码时,最后一位停止位也被解码,那么就不能采用 0111111111来检测第3个码了,只能检测第3个码的最后1位0,再解码第4个码。 下面详细介绍解码原理,程序中要用到的变量定义如下: Bit_over:为0,表示1位数据处理完,为1,表示当前处于数据位的跳变处。Head_start:检测到头码0时,把head_start置1,然后连续检测到8次下降沿时间间隔大于0.75T,小于1.25T,并且 head_start为1,置位头码标志head_flag。Head_start的作用就是保证是连续检测到0111111111。 Head_flag:头码标志,检测到0111111111后置1。 Prev_bit:保存当前数据位的值,下一位数据的值要根据当前位的值来判断。Pulse_width:16 位数据,保存INT脚两次下降沿之间的时间间隔。 Bit_cnt:检测完头码后,每次检测5位数据,也就是一行。 Row:行数,不包括头码,总共11行,用来判断64位数据是否接收完。 Buff[11]:缓冲区,用来保存接收的11行数据。每个数据只有低5位有效。 Id_data[11]:保存缓冲区的11个数据,进行校验,得到ID卡号。

信 卷积实验报告

信号与系统实验报告学院:电子信息与电气工程学院 班级: 13级电信<1>班 学号: 20131060104 姓名:李重阳

实验三 信号卷积实验 一、实验目的 1、理解卷积的概念及物理意义; 2、通过实验的方法加深对卷积运算的图解方法及结果的理解。 二、实验原理说明 卷积积分的物理意义是将信号分解为冲激信号之和,借助系统的冲激响应,求解系统对任意激励信号的零状态响应。设系统的激励信号为x (t ),冲激响应为h (t ),则系统的零状态响应为()()()*y t x t h t ==()()x t h t d ττ∞-∞-?。 1、两个矩形脉冲信号的卷积过程 两信号x (t )与h (t )都为矩形脉冲信号,如图3-1所示。下面由图解的方法(图3-1)给出两个信号的卷积过程和结果,以便与实验结果进行比较。 图3-1 两矩形脉冲的卷积积分的运算过程与结果 2、矩形脉冲信号与锯齿波信号的卷积 信号f1(t )为矩形脉冲信号, f2(t )为锯齿波信号,如图3-2所示。根据卷积积分的运算方法得到f1(t )和f2(t )的卷积积分结果f (t ),如图3-2(c )所示。 图3-2 矩形脉冲信号与锯齿脉冲信号的卷积积分的结果 3、本实验进行的卷积运算的实现方法 在本实验装置中采用了DSP 数字信号处理芯片,因此在处理模拟信号的卷积积分运算时,是先通过A/D 转换器把模拟信号转换为数字信号,利用所编写的相应程序控制DSP 芯片实现数字信号的卷积运算,再把运算结果通过D/A 转换为模拟信号输出。结果与模拟信号的直接运算结果是一致的。数字信号处理系统逐步和完全取代模拟信号处理系统是科学技术发展的必然趋势。图3-3为信号卷积的流程图。 图3-3 信号卷积的流程图 三、实验内容 1、检测矩形脉冲信号的自卷积结果。 用双踪示波器同时观察输入信号和卷积后的输出信号,把输入信号的幅度峰峰值调节为4V ,再调节输入信号的频率或占空比使输入信号的时间宽度满足表中的要求,观察输出信号有何变化,判断卷积的结果是否正确,并记录表3-1。 实验步骤如下: ①将函数发生器的SW702置于“方波”上。 ②连接函数发生器H701与数字滤波器的PB01,在TPB01上可观察到输入波形。将示波器接在TPB01上观测输入波形,并调节函数发生器模块上的频率旋钮与幅度旋钮,使信号频率为1KHz ,幅度为4V 。(注意:输入波形的频率幅度要在H701与PB01连接后,在TPB01上测试。) ③将红色拨动开关SWB01调整为“0001”。 ④按下复位键S1。 ⑤将示波器的CH1接于TP901;CH2接于TP903。可分别观察到输入信号的波形与卷积后的输出信号的波形。 表3-1 输入信号卷积后的输出信号

相关文档
相关文档 最新文档