卷积码是广泛应用于卫星通信、无线通信等多种通信系统的信道编码方式。Viterbi算法是卷积码的最大似然译码算法,该算法译码性能好、速度快,并且硬件实现结构比较简单,是最佳的卷积码译码算法。随着可编程逻辑技术的不断发展,使用FPGA实现Viterbi译码器的设计方法逐渐成为主流。不同通信系统所选用的卷积码不同,因此设计可重配置的Viterbi译码器,使其能够满足多种通信系统的应用需求,具有很重要的现实意义。 本文设计了基于FPGA的高速Viterbi译码器。在对Viterbi译码算法深入研究的基础上,重点研究了Viterbi译码器核心组成模块的电路实现算法。本设计中分支度量计算模块采用只计算可能的分支度量值的方法,节省了资源;加比选模块使用全并行结构保证处理速度;幸存路径管理模块使用3指针偶算法的流水线结构,大大提高了译码速度。在Xilinx ISE8.2i环境下,用VHDL硬件描述语言编写程序,实现(2,1,7)卷积码的Viterbi译码器。在(2,1,7)卷积码译码器基础上,扩展了Viterbi译码器的通用性,使其能够对不同的卷积码译码。译码器根据不同的工作模式,可以对(2,1,7)、(2,1,9)、(3,1,7)和(3,1,9)四种广泛运用的卷积码译码,并且可以修改译码深度等改变译码器性能的参数。 本文用Simulink搭建编译码系统的通信链路,生成测试Viterbi译码器所需的软判决输入。使用ModelSim SE6.0对各种模式的译码器进行全面仿真验证,Xilinx ISE8.2i时序分析报告表明译码器布局布线后最高译码速度可达200MHz。在FPGA和DSP组成的硬件平台上进一步测试译码器,译码器运行稳定可靠。最后,使用Simulink产生的数据对本文设计的Viterbi译码器的译码性能进行了分析,仿真结果表明,在同等条件下,本文设计的Viterbi译码器与Simulink中的Viterbi译码器模块的译码性能相当。
上传时间: 2013-06-24
上传用户:myworkpost
无线局域网(WLAN)是未来移动通信系统的重要组成部分。由于摆脱了有线连接的束缚,无线局域网具有移动性好、成本低以及网络传输故障少等诸多优点,得到了越来越广泛的发展与应用。正交频分复用(OFDM)技术具有抗多径衰落,频谱利用率高等优点,特别适合于无线环境下的高速数据传输,是高速无线局域网的首选技术之一。从IEEE802.11a,IEEE802.11g到IEEE802.1n都是以OFDM为基础。随着OFDM技术的普及以及下一代通信技术对OFDM的青睐,研究与实现应用于无线局域网的OFDM关键技术具有一定的意义。 本文首先介绍了WLAN的基本概念及相关协议标准和OFDM系统的工作原理,并描述了基于IEEE802,11a和IEEE802.11n标准的OFDM系统的数据帧结构以及系统参数。文中对OFDM传输系统的关键算法进行了详细的研究。然后以Xilinx公司的ISE10.1为软件平台,利用VHDL描述的方式,并以FPGA(现场可编程门阵列)芯片SPARTAN-3E为硬件平台,研究实现了适用于IEEE802.11a和IEEE802.11n的64点16bits复数块浮点结构的FFT模块,(2,1,7)卷积编码和维特比译码模块,以及分组检测和符号定时模块,并进行了仿真、综合、下载验证等工作。
上传时间: 2013-06-25
上传用户:cee16
本文以某型号接收机的应用为背景,主要论述了如何实现基于FPGA的参数化的Viterbi译码器的知识产权(IP)核。文中详细论述了译码器的内部结构、VerilogHDL(硬件描述语言)实现、仿真测试等。这些可变的参数包括:码型、ACS(加比选)单元的数目、软判决比特数、回溯深度等。用户可以根据自己的需要设置不同的参数由开发工具生成不同的译码器用于不同的系统。 本文的创新之处在于,针对FPGA的内部结构提出了一种新的累加度量RAM的组织形式,大大节省了嵌入式RAM块;提出了一种新的累加度量值的归一化办法;此外还给出了用Matlab建模得到软判决信息辅助仿真工具进行电路仿真的方法,大大提高了仿真的速度。 所设计的(2,1,7)连续型5比特软判决译码器已经应用于某型号接收机,经受了实际应用的考验产生了巨大的经济效益。
上传时间: 2013-04-24
上传用户:waizhang
电路板设计介绍1.1 现有的设计趋势.............................................................................1-21.2 产品研发流程................................................................................1-21.3 电路板设计流程.............................................................................1-31.3.1 前处理 – 电子设计资料和机构设计资料整理...................1-41.3.2 前处理 – 建立布局零件库.................................................1-81.3.3 前处理 – 整合电子设计资料及布局零件库.......................1-81.3.4 中处理 – 读取电子/机构设计资料....................................1-91.3.5 中处理 – 摆放零件............................................................1-91.3.6 中处理 – 拉线/摆放测试点/修线......................................1-91.3.7 后处理 – 文字面处理......................................................1-101.3.8 后处理 – 底片处理..........................................................1-111.3.9 后处理 – 报表处理..........................................................
上传时间: 2013-10-17
上传用户:18711024007
目录 第一章 传输线理论 一 传输线原理 二 微带传输线 三 微带传输线之不连续分析 第二章 被动组件之电感设计与分析 一 电感原理 二 电感结构与分析 三 电感设计与模拟 电感分析与量测
标签: 传输线
上传时间: 2013-12-12
上传用户:浩子GG
淮南煤矿区地跨淮河两岸,辖有大通、田家庵、谢家集、八公山、潘集5个行政区,人口106.30万,是国家大型煤炭生产基地之一。淮南供电始于民国19年(1930年)4月,当时仅有1台7.5千瓦直流发电机发电,供九龙岗矿场地面照明。民国25年,九龙岗东西两矿,有1路1.70公里的2.3千伏送电线相联,各装1台10千伏安变压器。民国27年后,日本侵略军占领淮南,在大通、九龙岗两区建矿采煤,掠夺煤炭资源,民国32年,建成下窑(田家庵)发电所,架设经大通至九龙岗22千伏同杆(铁塔)双固路输电线,和大通、九龙岗2个变电所,以3.3千伏向矿井配电。抗日战争胜利后,民国36年4月,淮南路矿公司架设田家庵至八公山22千伏输电线。至此22千伏线路全长37.10公里,变电所4个,降压变压器11台,总容量7500千伏安。民国37年售电量1189.60万千瓦·时,主要供煤矿用电。建国后,先后对谢一、谢二、谢三矿和李咀孜矿进行勘探建井。1954年,原22千伏线路和变电所升压为35千伏供电。1958年起以110千伏电压供电。至1972年,发展成为工商业区和政治文化中心的东部地区,也升压为110千伏供电。1975年淮河北岸潘集矿区开始建设,负荷中心北移,由田家庵电厂出线跨越淮河至潘集矿区的110千伏输变电工程同时投运。1978~1982年间,淮南矿区又先后建成田家庵电厂经西山变电所至淮河北岸芦集变电所的220千伏系统。1985年,田家庵、洛河电厂装机总容量达90.10万千瓦,市内供电网相应加强,全矿区已形成主要由田家庵电厂110千伏母线和220千伏西山变电所、芦集变电所3点分片供电,以220千伏和110千伏高压配电网联合供电的格局。同时,一些大型厂矿都有自备35千伏及以上变电所,并向附近中小企业转供电,形成东部田家庵、大通两区,中部望峰岗地区,西部谢集、八公山两区,淮河北岸潘集区组成的4个公用中低压配电网络。1985年,全市最高负荷19.55万千瓦,供电量16亿多千瓦·时。其中,煤炭工业最高负荷9.34万千瓦,用电量4.99亿千瓦·时,占全市用电量的三分之一。
标签: 矿区供电
上传时间: 2013-10-12
上传用户:fandeshun
设计了一种基于dsPIC30F6014A单片机的荧光测量装置。可根据不同荧光物质的荧光特性,通过可控激发分光模块灵活选择激发波长,通过可控发射分光模块选择发射波长,并选择相应的标准物质曲线,最终实现测量。经测试,本系统设计的荧光测量装置稳定性可达99.1%~99.7%。
上传时间: 2014-12-24
上传用户:yangbo69
M68HC11单片机原理、应用及技术手册 【整理者】悠子 【提供者】drre 【详细说明】M68HC11单片机原理、应用及技术手册/MOTOROLA单片机开发应用丛书 书名: M68HC11单片机原理、应用及技术手册/MOTOROLA单片机开发应用丛书 作者: 涂时亮主编 出版社: 复旦大学出版社 出版日期: 1992-11-01 简介: 介绍了M68HC11单片机的系统结构、指令系统、程序设计方法和片内存贮器和它的定时系统、串行通讯口、串行外围接口、A/D、脉冲累加器、Watchdog等各种I/O功能的结构和使用方法等。 第一章 MOTOROLA单片机简介 1.1 发展概述 1.2 MOTOROLA单片机的结构特点 1.2.1 储存器组织 1.2.2 OPU结构 1.2.3 中断处理 1.2.4 并行I/O口 1.2.5 定时器系统 1.2.6 串行口 1.2.7 其他I/O功能 1.3MOTOROLA单片机系列 1.3.1抵挡 8 位单片机 1.3.2高档 8 位单片机 M68HO11 1.3.3MOTOROLA模块化单片机 .............................. ................................
上传时间: 2014-12-25
上传用户:hz07104032
附件为:LCD12864显示汉字和数字的程序与电路 /* 自定义延时子函数 */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判断LCD忙信号状态 */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD写指令函数 */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD写数据函数 */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD选屏函数 */ void select_screen(uchar screen) { switch(screen) { case 0: //选择全屏 CS1=0; CS2=0; break; case 1: //选择左屏 CS1=0; CS2=1; break; case 2: //选择右屏 CS1=1; CS2=0; break; /* case 3: //选择右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滚屏显示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* LCD显示汉字字库函数 */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数 int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* LCD显示字符字库函数 */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* LCD显示数字字库函数 */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函数 */ void lcd_init() { w_com(0x3f); //LCD开显示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD页初始地址,共8页 w_com(0x40); //LCD列初始地址,共64列 } /* LCD显示主函数 */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //LCD显示数字 lcd_display_shuzi(1,0,5,1); //LCD显示数字 lcd_display_hanzi(1,0,3,0); //LCD显示汉字 lcd_display_hanzi(2,0,0,1); //LCD显示汉字 //LCD字符汉字 lcd_display_hanzi(2,0,1,2); //LCD显示汉字 //第二行 lcd_display_zifuk(1,1,2,0); //LCD显示字符 lcd_display_zifuk(1,1,3,0); //LCD显示字符 lcd_display_zifuk(1,1,4,0); //LCD显示字符 lcd_display_zifuk(1,1,5,4); //LCD显示字符 lcd_display_shuzi(1,1,6,8); //LCD显示字符 lcd_display_shuzi(1,1,7,9); //LCD显示字符 lcd_display_shuzi(2,1,0,5); //LCD显示字符 lcd_display_shuzi(2,1,1,1); //LCD显示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //LCD显示汉字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //LCD显示汉字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //LCD显示汉字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滚屏显示 lcd_rol(); } */ }
上传时间: 2013-11-08
上传用户:aeiouetla
#include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char uint a,b,c,d=0; void delay(c) { for for(a=0;a<c;a++) for(b=0;b<12;b++); }; uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
上传时间: 2013-10-21
上传用户:13788529953