卷积码是广泛应用于卫星通信、无线通信等多种通信系统的信道编码方式。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
软件无线电思想的出现带来了接收机实现方式的革新。随着近年来软件无线电理论和应用趋于成熟与完善,软件无线电技术已经被越来越广泛地应用于无线通信系统和电子测量测试仪器中。数字下变频技术作为软件无线电的核心技术之一,在频谱分析仪中也得到了越来越普遍的应用。 本人参与的手持式频谱分析仪项目采用的是中频数字化实现方式,可满足轻巧,可重配置和低功耗的需求。数字化中频的关键部件数字下变频器DDC采用的是Intersil公司的ISL5216,这个器件和高性能FPGA共同组成手持频谱仪的数字信号处理前端。这个数字前端就手持频谱分析仪来说存在一定的局限性,ISL5216的信号处理带宽单通道为1 MHz,4个通道级联为3MHz,未能满足谱仪分析带宽日益增加的需求;系统集成度不高,ISL5216的功能要是集成到FPGA,可进一步提高系统集成度,降低物料成本和系统功耗。基于以上两个方面的考虑,现正以手持频谱分析仪项目为依托,基于Xilinx Spartan3A-DSP系列FPGA实现高速高处理带宽的DDC。 本论文首先描述了数字下变频基本理论和结构,对完成各级数字信号处理所涉及的数字正交变换、CORDIC算法、CIC、HB、多相滤波等关键算法做了适当介绍;然后介绍了当前主流FPGA的数字信号处理特性和其内部的DSP资源。接着详细描述了数控振荡器NCO、复数数字混频器MIXER、5级CIC滤波器、5级HB滤波器和255阶可编程FIR的设计和实现,并对各个模块的不同实现方式作了对比和仿真测试数据作了分析。最后介绍了所设计DDC在手持频谱分析仪中的主要应用。
上传时间: 2013-04-24
上传用户:a155166
软件无线电是近年提出的新的通信体系,由于其具有灵活性和可重配置性并且符合通信的发展趋势,已成为通信系统设计的研究热点。因此对基于软件无线电的调制解调技术进行深入细致的研究非常有意义。 本文首先从阐述软件无线电的理论基础入手,对多速率信号处理中的内插和抽取、带通采样、数字变频等技术进行了分析与探讨,为设计和实现8PSK调制解调器提供了非常重要的理论依据。然后,研究了8PSK调制解调技术,详细论述了它们的基本概念和原理,提出了系统实现方案,在DSP+FPGA平台上实现了8PSK信号的正确调制解调。文中着重研究了突发通信的同步和频偏纠正算法,针对同步算法选取了一种基于能量检测法的快速位同步算法,采用相关器实现,同时实现位同步和帧同步。并且对于突发通信的多普勒频偏纠正,设计了一个基于自动频率控制(AFC)环的频偏检测器,通过修改数控振荡器(NCO)的频率控制字方法来校正本地载波频率,整个算法结构简单,运算量小,频偏校正速度快,具有较好的实用性。其次,对相干解调的初始相位进行纠正时,提出了一种简单易行的CORDIC方法,同时对FPGA编程当中的一些关键问题进行了介绍。最后,设计了自适应调制解调器,根据信噪比和误码率来自适应的改变调制方式,以达到最佳的传输性能。
上传时间: 2013-04-24
上传用户:mingaili888
本文对基于ARM的可编程控制器进行了研究。本文研制的可编程控制器配置简单,扩展方便,抗干扰能力强,可靠性高。能够采集4~20mA/0~5V的模拟量以及12路开关量;输出1路-10~+10V、4路0~5V与2路0~20mA的模拟量以及8路开关量;能够采集6路温度信号:可以应用于开关量的逻辑控制;能实现简单的PID控制:并配有RS232串行通信接口以及CAN总线通信接口,能满足基本工业控制的要求。
上传时间: 2013-04-24
上传用户:LSPSL
图像增强技术是数字图像处理领域中的一项重要内容,随着数字图像处理应用领域的不断扩大,快速、实时图像处理技术成为研究的热点。超大规模集成电路技术的飞速发展为数字图像实时处理技术提供了硬件基础,尤其是FPGA(Field Programmable Gate Array,现场可编程门阵列)凭借其高速并行、可重配置的架构和基于查找表的独特结构等优点使得在数字信号处理领域的应用持续上升。国内外,越来越多的实时图像处理应用逐渐转向FPGA平台。 本文基于FPGA的图像增强技术研究主要是针对空间域方法,这种方法是指在空间域内直接对像素灰度值进行运算处理,算法简单并且存在并行性,非常适合于用硬件实现。FPGA可以灵活地实现并行、实时处理图像数据,正是利用这一特点,本文提出了一种基于FPGA的图像增强处理系统设计。该系统采用SOPC技术,完成图像增强处理。文中给出了系统设计思路,并分析了该系统的结构及功能实现,说明了系统实现过程。其硬件平台的核心部分是Altera公司Stratix系列的.FPGA EPlS40芯片,采用自顶向下的设计方法构造图像增强处理功能模块,利用硬件描述语言vHDL对图像增强模块进行电路描述,并进行设计优化、仿真,在生成系统配置文件后加载到FPGA上进行板级调试。完成了基于FPGA的图像增强算法模块的设计,重点设计实现了点运算增强处理模块、中值滤波器模块,并对中值滤波器进行了改进设计实现,采用FPGA完成了对图像增强算法的硬件加速。
上传时间: 2013-06-16
上传用户:songrui
本论文来自于863项目基于光互连自组织内存服务体系(简称MemoryBox)。本文主要研究Memory Box系统中基于可重配置计算架构,软硬件携同设计方法,在XILINX VIRTEX 2 Pro FPGA上设计实现嵌入式系统。由于嵌入式系统是Memory Box工作的平台,所以硬件应具有良好的扩展性、灵活性,软件应具有优良的稳定性。在硬件平台选型时,我们选择的是基于高性能Xilinx VIRTEX2 Pro的自制开发板。嵌入式系统软硬件开发平台选用的是Xilinx EDK、ISE。内核移植所用的交叉开发工具链为powerpc-405-linux-gnu。该交叉开发工具链工作在Red Hat Enterprise LINUX.AS 4平台下。 本论文主要包括三部分工作:首先是硬件设计,其核心是EDK和ISE设计的SOPC工程;然后是嵌入式LINUX内核移植与调试;最后完成存储管理软件的设计。完全用硬件实现系统要求的各种存储管理功能极其困难。而通过移植内核,存储管理软件以运行在Linux内核上的应用软件的形式实现了其功能。存储管理软件要解决共享冲突,负载均衡,远程内存与本地内存的地址一致性以及对海量内存阵列的重新编址等问题,设计出较完善的Memory Box的存储管理模型。
上传时间: 2013-06-11
上传用户:tyler
特点: 精确度0.1%满刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT类比输出功能 输入与输出绝缘耐压2仟伏特/1分钟(input/output/power) 宽范围交直流兩用電源設計 尺寸小,穩定性高
上传时间: 2014-12-23
上传用户:ydd3625
开关在电路中起接通信号或断开信号的作用。最常见的可控开关是继电器,当给驱动继电器的驱动电路加高电平或低电平时,继电器就吸合或释放,其触点接通或断开电路。CMOS模拟开关是一种可控开关,它不象继电器那样可以用在大电流、高电压场合,只适于处理幅度不超过其工作电压、电流较小的模拟或数字信号。 一、常用CMOS模拟开关引脚功能和工作原理 1.四双向模拟开关CD4066 CD4066 的引脚功能如图1所示。每个封装内部有4个独立的模拟开关,每个模拟开关有输入、输出、控制三个端子,其中输入端和输出端可互换。当控制端加高电平时,开关导通;当控制端加低电平时开关截止。模拟开关导通时,导通电阻为几十欧姆;模拟开关截止时,呈现很高的阻抗,可以看成为开路。模拟开关可传输数字信号和模拟信号,可传输的模拟信号的上限频率为40MHz。各开关间的串扰很小,典型值为-50dB。
上传时间: 2013-10-27
上传用户:bibirnovis
特点(FEATURES) 精确度0.1%满刻度 (Accuracy 0.1%F.S.) 可作各式数学演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 类比输出功能(16 bit DAC isolating analog output function) 输入/输出1/输出2绝缘耐压2仟伏特/1分钟(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 宽范围交直流两用电源设计(Wide input range for auxiliary power) 尺寸小,稳定性高(Dimension small and High stability)
上传时间: 2013-11-24
上传用户:541657925
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230