虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

前缀

  • 基于FPGA的OFDM调制解调器的设计与实现.rar

    正交频分复用(OFDM)技术是一种多载波数字调制技术,具有频谱利用率高、抗多径干扰能力强、成本低等特点,适合无线通信的高速化、宽带化及移动化的需求,将成为下一代无线通信系统(4G)的核心调制传输技术。 本文首先描述了OFDM技术的基本原理。对OFDM的调制解调以及其中涉及的特性和关键技术等做了理论上的分析,指出了OFDM区别于其他调制技术的巨大优势;然后针对OFDM中的信道估计技术,深入分析了基于FFT级联的信道估计理论和基于联合最大似然函数的半盲分组估计理论,在此基础上详细研究描述了用于OFDM系统的迭代的最大似然估计算法,并利用Matlab做了相应的仿真比较,验证了它们的有效性。 而后,在Matlab中应用Simulink工具构建OFDM系统仿真平台。在此平台上,对OFDM系统在多径衰落、高斯白噪声等多种不同的模型参数下进行了仿真,并给出了数据曲线,通过分析结果可正确评价OFDM系统在多个方面的性能。 在综合了OFDM的系统架构和仿真分析之后,设计并实现了基于FPGA的OFDM调制解调系统。首先根据802.16协议和OFDM系统的具体要求,设定了合理的参数;然后从调制器和解调器的具体组成模块入手,对串/并转换,QPSK映射,过采样处理,插入导频,添加循环前缀,IFFT/FFT,帧同步检测等各个模块进行硬件设计,详细介绍了各个模块的设计和实现过程,并给出了相应的仿真波形和参数说明。其中,针对定点运算的局限性,为系统设计并自定义了24位的浮点运算格式,参与傅立叶反变换和傅立叶变换的运算,在系统参数允许的范围内,充分利用了有限资源,提高了系统运算精度;然后重点描述了基于FPGA的快速傅立叶变换算法的改进、优化和设计实现,针对原始快速傅立叶变换FPGA实现算法运算空闲时间过多,资源占用较大的问题,提出了带有流水作业功能、资源占用较少的快速傅立叶变换优化算法设计方案,使之运用于OFDM基带处理系统当中并加以实现,结果满足系统参数的需求。最后以理论分析为依据,对整个OFDM的基带处理系统进行了系统调试与性能分析,证明了设计的可行性。 综上所述,本文完成了一个基于FPGA的OFDM基带处理系统的设计、仿真和实现。本设计为OFDM通信系统的进一步改进提供了大量有用的数据。

    标签: FPGA OFDM 调制解调器

    上传时间: 2013-07-25

    上传用户:14786697487

  • 基于OFDM的PLC通信系统同步模块的FPGA实现

    电力线通信技术利用分布广泛的低压电力线作为通信信道,实现internet高速互连,为用户提供互联网访问、视频点播等服务,形成包括电力在内的“四网合一”,目前正受到人们的关注。利用该技术,可以在居民区内建立宽带接入网,也可以利用遍布家庭各个房间的电源插座组成家庭局域网。但是电力线是传输电能的,因此通过电力线传输数据有许多的问题需要解决。 OFDM(正交频分复用)技术是实现电力线通信的一项热门技术。OFDM采用添加循环前缀的技术,能有效地降低ICI(信道间干扰)和ISI(码间干扰)。同时通过使用正交的子信道,大大提高了频谱资源利用率。FPGA作为可编程逻辑器件,具有设计时间短、投资少、风险小的特点,而且可以反复修改,反复编程,直到完全满足需要,具有其他方式无可比拟的方便性和灵活性,能够加速数字系统的研发速度。本文着重研究了OFDM同步技术在FPGA上的实现。本论文主要是在项目组工作的基础上构造双路信号数据纠正算法流程,提出最佳采样点与载波相位估计算法,完善中各个子模块算法的硬件设计流程。内容安排如下:第一章介绍OFDM(正交频分复用)技术的发展历史、技术原理。第二章介绍了PLD的分类、工艺和结构特点,以及FPGA的开发环境、开发流程和Verilog语言的特点。第三章对OFDM系统的同步模块进行详细的阐述。第四章是OFDM同步算法的在FPGA上的实现,对各个子模块进行仿真,给出了仿真波形图和系统性能分析。最后,第五章总结了全文的工作,对OFDM技术的实现需要进一步完善的方面与后续工作进行了探讨。

    标签: OFDM FPGA PLC 通信系统

    上传时间: 2013-04-24

    上传用户:hgy9473

  • OFDM信道估计模块运算部件的FPGA设计

    正交频分复用(OnIlogonaJ Frequency Division Multiplexing,OFDM)技术通过将整个信道分为多个带宽相等并行传输的子信道,通过将信息经过子信道独立传输来实现通信,子信道的正交性可以保证最大限度的利用频谱资源。OFDM系统通过循环前缀来消除符号间干扰(ISI),通过IDFT/DFT调制解调降低了系统实现的复杂度。由于其频谱利用率高,抗多径能力强,在多种通信场合中都得到了应用。虽然有着上述优点,但为了准确的恢复信号,信道估计是OFDM系统中必须实现的一环。 本文正是针对OFDM接收机中的信道估计模块的运算部件的实现进行了研究。首先,研究了OFDM信道估计的LS算法,一阶线性插值算法,二次多项式插值算法,建立了适用于宽带通信系统的信道估计模块模型。其次研究了加法器电路和乘法器电路的实现,包括进位行波加法器,曼彻斯特进位链,超前进位加法器和乘法原理,阵列乘法器,wallace树乘法器及BOOTH编码算法,并分析了各种电路的特性及优缺点。接着研究了几种主要的除法器设计算法,包括数字循环算法,基于函数迭代的算法,以及CORDIC算法,结合信道估计的特点选择了函数迭代和CORDIC算法作为具体实现的方法。最后,在前面的设计的基础上在FPGA芯片上实现了前面的设计方案。

    标签: OFDM FPGA 信道估计 模块

    上传时间: 2013-06-06

    上传用户:yyyyyyyyyy

  • 基于IEEE80211a的OFDM传输系统的接收机算法研究与FPGA实现

    作为一项正在兴起的无线应用服务,无线局域网已在机场、校园、会议室、甚至在家庭都有所应用.它正叩开高速无线数据业务市场的大门.目前,无线局域网仍处于众多标准共存时期.每一标准的背后都有大公司或者大集团的支持.在众多无线局域网协议中IEEE802.11a协议是很有特色的一个,它的优势在于采用了正交频分复用(OFDM)方式来传输数据,该技术可帮助提高速度和改进信号质量,并可克服干扰,因此得到众多关注.为了让这种高速的局域网真正应用到实际中,我们的项目就是要在硬件上实现基于IEEE802.11a协议的OFDM系统的发射机和接收机,而本文的主要工作就是用FPGA实现这个系统的内接收机.内接收机主要包括同步估计和信道估计.但是目前OFDM系统中包括同步、信道编码、信道估计、用户检测、降低峰均比等一些关键技术在具体实现上还存在着一些困难.许多文献对这些关键技术基本停留在理论上的讨论,与具体的实现还存在很大的差距.因此本文通过研究同步和信道估计的多种算法的性能和其实现的复杂度,提出一种适合在IEEE802.11a协议环境下的同步算法和信道估计,用FPGA加以实现.首先本文总结了目前OFDM系统信道估计的算法.在此基础上详细的讨论了基于IEEE802.11a协议的OFDM系统可以采用的信道估计方法:(1)提出了借助训练序列的LS估计法和LS-average估计法,分别在AWGN信道和多径信道对这两种方法进行了比较,证明无论在哪种信道环境下后者性能都要好于前者.为了能够进一步提高信道估计器的性能,在LS-average算法的基础上提出了消噪算法(NRA).(2)提出了借助导频的DFT插值算法.其次本文总结了目前OFDM系统同步的算法.OFDM系统同步包括定时同步和载波同步,其中定时同步又分为符号同步和抽样同步.本文主要是研究定时同步,而载波同步只是简单的讨论,因为在这项目中这是另有负责人.本文针对基于IEEE802.11a协议的OFDM系统把定时同步分为粗定时同步和细定时同步.然后分别对粗定时同步和细定时同步进行了详细的讨论.其中对粗定时同步的方法有:利用短训练序列和利用循环前缀,并对这两种方法进行了比较.对细定时同步是利用导频来跟踪.最后根据前面两章提出的算法所分析的结果,以及突发OFDM系统的信号和信道特征,选取了其中一种信道估计算法和定时同步算法,结合合作伙伴所提出的载波同步算法一起用FPGA实现整个基于IEEE802.11a协议的OFDM系统的内接收机,并分别测试了各个模块的性能以及综合模块的性能.

    标签: 80211a 80211 IEEE FPGA

    上传时间: 2013-05-26

    上传用户:zhengzg

  • 基于FPGA的OFDM调制解调器的设计与实现

    正交频分复用(OFDM)技术是一种多载波数字调制技术,具有频谱利用率高、抗多径干扰能力强、成本低等特点,适合无线通信的高速化、宽带化及移动化的需求,将成为下一代无线通信系统(4G)的核心调制传输技术。 本文首先描述了OFDM技术的基本原理。对OFDM的调制解调以及其中涉及的特性和关键技术等做了理论上的分析,指出了OFDM区别于其他调制技术的巨大优势;然后针对OFDM中的信道估计技术,深入分析了基于FFT级联的信道估计理论和基于联合最大似然函数的半盲分组估计理论,在此基础上详细研究描述了用于OFDM系统的迭代的最大似然估计算法,并利用Matlab做了相应的仿真比较,验证了它们的有效性。 而后,在Matlab中应用Simulink工具构建OFDM系统仿真平台。在此平台上,对OFDM系统在多径衰落、高斯白噪声等多种不同的模型参数下进行了仿真,并给出了数据曲线,通过分析结果可正确评价OFDM系统在多个方面的性能。 在综合了OFDM的系统架构和仿真分析之后,设计并实现了基于FPGA的OFDM调制解调系统。首先根据802.16协议和OFDM系统的具体要求,设定了合理的参数;然后从调制器和解调器的具体组成模块入手,对串/并转换,QPSK映射,过采样处理,插入导频,添加循环前缀,IFFT/FFT,帧同步检测等各个模块进行硬件设计,详细介绍了各个模块的设计和实现过程,并给出了相应的仿真波形和参数说明。其中,针对定点运算的局限性,为系统设计并自定义了24位的浮点运算格式,参与傅立叶反变换和傅立叶变换的运算,在系统参数允许的范围内,充分利用了有限资源,提高了系统运算精度;然后重点描述了基于FPGA的快速傅立叶变换算法的改进、优化和设计实现,针对原始快速傅立叶变换FPGA实现算法运算空闲时间过多,资源占用较大的问题,提出了带有流水作业功能、资源占用较少的快速傅立叶变换优化算法设计方案,使之运用于OFDM基带处理系统当中并加以实现,结果满足系统参数的需求。最后以理论分析为依据,对整个OFDM的基带处理系统进行了系统调试与性能分析,证明了设计的可行性。 综上所述,本文完成了一个基于FPGA的OFDM基带处理系统的设计、仿真和实现。本设计为OFDM通信系统的进一步改进提供了大量有用的数据。

    标签: FPGA OFDM 调制解调器

    上传时间: 2013-04-24

    上传用户:vaidya1bond007b1

  • 基于数据符号同步的FPGA仿真实现

    近年来,人们对无线数据和多媒体业务的需求迅猛增加,促进了宽带无线通信新技术的发展和应用。正交频分复用 (Orthogonal Frequency Division Multiolexing,OFDM)技术已经广泛应用于各种高速宽带无线通信系统中。然而 OFDM 系统相比单载波系统更容易受到频偏和时偏的影响,因此如何有效地消除频偏和时偏,实现系统的时频同步是 OFDM 系统中非常关键的技术。 本文讨论了非同步对 OFDM 系统的影响,分析了当前用于 OFDM 系统中基于数据符号的同步算法,并简单介绍非基于数据符号同步技术。基于数据符号的同步技术通过加入训练符号或导频等附加信息,并利用导频或训练符号的相关性实现时频同步。此算法由于加入了附加信息,降低了带宽利用率,但同步精度相对较高,同步捕获时间较短。 随着电子芯片技术的快速发展,电子设计自动化 (Electronic DesignAutomation,EDA) 技术和可编程逻辑芯片 (FPGA/CPLD) 的应用越来越受到大家的重视,为此文中对 EDA 技术和 Altera 公司制造的 FPGA 芯片的原理和结构特点进行了阐述,还介绍了在相关软件平台进行开发的系统流程。 论文在对基于数据符号三种算法进行较详细的分析和研究的基础上,尤其改进了基于导频符号的同步算法之后,利用 Altera 公司的 FPGA 芯片EP1S25F102015 在 OuartusⅡ5.0 工具平台上实现了 OFDM 同步的硬件设计,然后进行了软件仿真。其中对基于导频符号同步的改进算法硬件设计过程了进行了详细阐述。不仅如此,对于基于 PN 序列帧的同步算法和基于循环前缀 (Cycle Prefix,CP) 的极大似然 (Maximam Likelihood,ML)估计同步算法也有具体的仿真实现。 最后,文章还对它们进行了比较,基于导频符号同步设计的同步精度比较高,但是耗费芯片的资源多,另一个缺点是没有频偏估计,因此运用受到一定限制。基于 PN 序列帧的同步设计使用了最少的芯片资源,但要提取 PN 序列中的信号数据有一定困难。基于循环前缀的同步设计占用了芯片 I/O 脚稍显多。这几种同步算法各有优缺点,但可以根据不同的信道环境选用它们。

    标签: FPGA 数据 同步的 仿真实现

    上传时间: 2013-04-24

    上传用户:断点PPpp

  • OFDM发射机系统的FPGA设计

    无线局域网是计算机网络技术和无线通信技术相结合的产物,是利用无线媒介传输信息的计算机网络。在无线通信信道中,由于多径时延不可避免地存在符号间干扰,正交频分复用(OFDM)作为一种可以有效对抗符号间干扰(ISI)和提高频谱利用率的高速传输技术,引起了广泛关注。在无线局域网(WLAN)系统中,OFDM调制技术已经被采用作为其物理层标准,并且公认为是下一代无线通信系统中的核心技术。基于IEEE802.11a的无线局域网标准的物理层采用了OFDM技术,能有效的对抗多径信道衰落,达到54Mbps的速度,而未来而的IEEE802.11n将达到100Mbps的高速。因此,研发以OFDM为核心的原型机研究非常有必要。 本文在深入理解OFDM技术的同时,结合相应的EDA工具对系统进行建模并基于IEEE802.11a物理层标准给出了一种OFDM基带发射机系统的FPGA实现方案。整个设计采用目前主流的自顶向下的设计方法,由总体设计至详细设计逐步细化。在系统功能模块的FPGA实现过程中,针对Xilinx一款160万门的Spartan-3E XCS1600E芯片,依照:IEEE802.11a帧格式,对发射机系统各个模块进行了详细设计和仿真: (1)训练序列生成模块,包括长,短训练序列; (2)信令模块,包括卷积编码,交织,BPSK调制映射; (3)数据模块,包括加扰,卷积编码,删余,交织,BPSK/QPSK/16QAM/64QAM调制映射; (4)OFDM处理部分,包括导频插入,加循环前缀,IFFT处理; (5)对整个发射处理部分联调,并给出仿真结果另外,还完成了接收机部分模块的FPGA设计,并给出了相应的顶层结构与仿真波形。最后提出了改进和进一步开发的方向。

    标签: OFDM FPGA 发射机

    上传时间: 2013-04-24

    上传用户:李彦东

  • 基于FPGA的OFDM基带系统研究

    近几年来,OFDM技术引起了人们的广泛注意,根据这项新技术,很多相关协议被提出来。其中WiMax代表空中接口满足IEEE802.16标准的宽带无线通信系统,IEEE标准在2004年定义了空中接口的物理层(PHY),即802.16d协议。该协议规定数据传输采用突发模式,调制方式采用OFDM技术,传输速率较高且实现方便、成本低廉,已经成为首先推广应用的商业化标准。本文对IEEE802.16d OFDM系统物理层进行了研究,并在XILINX公司的Virtexpro II芯片上实现了基带算法。    ⑴探讨了OFDM基本原理及其关键技术。根据IEEE802.16d OFDM系统的物理层发送端流程搭建了基带仿真链路,利用MATLAB/SIMULINK仿真了OFDM系统在有无循环前缀(CP)、多径数目不同等情况下的性能变化。由于同步算法和信道估计算法计算量都很大,为了找到适合采用FPGA实现的算法,分析了同步误差和不同信道估计算法对接收信号的影响,并结合计算量的大小提出了一种新的联合同步算法,以及得出了LS信道估计算法最适合802.16d系统的结论。    ⑵完成了基带发射机和接收机的FPGA硬件电路实现。为了使系统的时钟频率更高,采用了流水线的结构。设计中采用编写Verilog程序和使用IP核相结合的办法,实现了新的联合同步算法,并且通过简化结构,避免了信道估计算法中的繁琐除法。利用ISE9.2i和Modelsim6.Oc软件平台对程序进行设计、综合和仿真,并将仿真结果和MATLAB软件计算结果相对比。结果表明,采用16位数据总线可达到理想的精度。    ⑶采用串口通信的方式对基带系统进行了验证。通过串口通信从功能上表明该系统确实可行。

    标签: FPGA OFDM 基带 系统研究

    上传时间: 2013-04-24

    上传用户:zhangyigenius

  • 单片机指令系统原理

    单片机指令系统原理 51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。在我们学习的8051单片机中,有6种寻址方法,下面我们将逐一进行分析。 立即寻址 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如:MOV  A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。MOV  DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。 直接寻址 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV  A,30H  这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV  IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV  IE,#85H 的形式表述,也可以MOV  80H,#85H的形式表述。 关于数据存储器RAM的内部情况,请查看我们课程的第十二课。 直接寻址是唯一能访问特殊功能寄存器的寻址方式! 大家来分析下面几条指令:MOV  65H,A       ;将A的内容送入内部RAM的65H单元地址中MOV  A,direct    ;将直接地址单元的内容送入A中MOV  direct,direct;将直接地址单元的内容送直接地址单元MOV  IE,#85H      ;将立即数85H送入中断允许寄存器IE 前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。 寄存器寻址 寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部份专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。 寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1 从前面的学习中我产应可以理解到,其实寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。 寄存器间接寻址 寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。 MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例:MOV  R0,#30H  ;将值30H加载到R0中    MOV  A,@R0    ;把内部RAM地址30H内的值放到累加器A中    MOVX A,@R0    ;把外部RAM地址30H内的值放到累加器A中 大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。例:MOV   DPTR,#1234H  ;将DPTR值设为1234H(16位)    MOVX  A,@DPTR      ;将外部RAM或I/O地址1234H内的值放到累加器A中 在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。例:PUSH  30H    ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。 那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP 寄存器间接寻址范围总结:1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。 2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。例如MOVX  A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。 堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。 寄存器间接寻址方式不可以访问特殊功能寄存器!! 寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。 基址寄存器加变址寄存器的变址寻址 这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。例:MOVC  A,@A+DPTR这条指令的功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A假若指令执行前A=54H,DPTR=3F21H,则这条指令变址寻址形成的操作数地址就是54H+3F21H=3F75H。如果3F75H单元中的内容是7FH,则执行这条指令后,累加器A中的内容就是7FH。 变址寻址的指令只有三条,分别如下:JMP    @A+DPTRMOVC   A,@A+DPTRMOVC   A,@A+PC 第一条指令JMP @A+DPTR这是一条无条件转移指令,这条指令的意思就是DPTR加上累加器A的内容做为一个16位的地址,执行JMP这条指令是,程序就转移到A+DPTR指定的地址去执行。 第二、三条指令MOVC   A,@A+DPTR和MOVC   A,@A+PC指令这两条指令的通常用于查表操作,功能完全一样,但使用起来却有一定的差别,现详细说明如下。我们知道,PC是程序指针,是十六位的。DPTR是一个16位的数据指针寄存器,按理,它们的寻址范围都应是64K。我们在学习特殊功能寄存器时已知道,程序计数器PC是始终跟踪着程序的执行的。也就是说,PC的值是随程序的执行情况自动改变的,我们不可以随便的给PC赋值。而DPTR是一个数据指针,我们就可以给空上数据指针DPTR进行赋值。我们再看指令MOVC   A,@A+PC这条指令的意思是将PC的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A是一个8位的寄存器,它的寻址范围是256个地址单元。讲到这里,大家应可明白,MOVC   A,@A+PC这条指令的寻址范围其实就是只能在当前指令下256个地址单元。所在,这在我们实际应用中,可能就会有一个问题,如果我们需要查询的数据表在256个地址单元之内,则可以用MOVC   A,@A+PC这条指令进行查表操作,如果超过了256个单元,则不能用这条指令进行查表操作。刚才我们已说到,DPTR是一个数据指针,这个数据指针我们可以给它赋值操作的。通过赋值操作。我们可以使MOVC   A,@A+DPTR这条指令的寻址范围达到64K。这就是这两条指令在实际应用当中要注意的问题。 变址寻址方式是MCS-51单片机所独有的一种寻址方式。 位寻址 80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。这个问题我们在后面的指令系统学习中再加以论述。 2、对专用寄存器位寻址。这里要说明一下,不是所有的专用寄存器都可以位寻址的。具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。 专用寄存器的位寻址表示方法: 下面我们以程序状态字PSW来进行说明 D7 D6 D5 D4 D3 D2 D1 D0 CY   AC  F0  RS1  RS0  OV    P  1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5H   MOV  C,D5H 2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示   MOV  C,F0 3、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5    MOV  C,D0H.5 4、专用寄存器符号加位表示:例如PSW.5    MOV C,PSW.5 这四种方法实现的功能都是相同的,只是表述的方式不同而已。 例题:   1. 说明下列指令中源操作数采用的寻址方式。   MOV R5,R7 答案:寄存器寻址方式   MOV A,55H 直接寻址方式   MOV A,#55H 立即寻址方式   JMP @A+DPTR 变址寻址方式   MOV 30H,C 位寻址方式   MOV A,@R0 间接寻址方式   MOVX A,@R0 间接寻址方式 改错题   请判断下列的MCS-51单片机指令的书写格式是否有错,若有,请说明错误原因。   MOV R0,@R3 答案:间址寄存器不能使用R2~R7。   MOVC A,@R0+DPTR 变址寻址方式中的间址寄存器不可使用R0,只可使用A。   ADD R0,R1 运算指令中目的操作数必须为累加器A,不可为R0。   MUL AR0 乘法指令中的乘数应在B寄存器中,即乘法指令只可使用AB寄存器组合。

    标签: 单片机指令 系统原理

    上传时间: 2013-11-11

    上传用户:caozhizhi

  • 单片机指令系统

    单片机指令系统 3.1 MCS-51指令简介 3.2 指令系统 3.1  MCS-51指令简介 二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址         1、数据传送指令位操 2、直接寻址             2、算术运算指令 3、寄存器寻址           3、逻辑运算指令 4、寄存器间接寻址指令   4、控制转移类指令 5、相对寻址             5、位操作指令 6、变址寻址 7、位寻址 三、寻址方式 3、寄存器间接寻址    MOV A, @R1        操作数是通过寄存器间接得到的。 4、立即寻址               MOV  A, #40H        操作数在指令中直接给出。 5、基址寄存器加变址寄存器寻址        以DPTR或PC为基址寄存器,以A为变址寄存器,        以两者相加形成的16位地址为操作数的地址。                   MOVC A, @A+DPTR                   MOVC A, @A+PC 四、指令中常用符号说明 Rn——当前寄存器区的8个工作寄存器R0~R7(n=0~7); Ri——当前寄存器区可作地址寄存器的2个工作寄存器R0和R1(i=0,1); direct——8位内部数据存储器单元的地址及特殊功能寄存器的地址; #data——表示8位常数(立即数); #datal6——表示16位常数; add 16——表示16位地址; addrll——表示11位地址; rel——8位带符号的地址偏移量; bit——表示位地址; @——间接寻址寄存器或基址寄存器的前缀; ( )——表示括号中单元的内容 (( ))——表示间接寻址的内容; 五、MCS-51指令简介 1. 以累加器A为目的操作数的指令 2.  以Rn为目的操作数的指令 3.  以直接地址为目的操作数的指令 4.  以寄存器间接地址为目的操作数指令 应用举例1 8段数码管显示 应用举例2 3.2  指令系统 2、堆栈操作指令  3.  累加器A与外部数据传输指令 4.  查表指令    MOVC  A,   @A+PC  例子: 5.  字节交换指令 6.  半字节交换指令 二、算术操作类指令 PSW寄存器 2.  带进位加法指令 3.  加1指令 4.  十进制调整指令 5.  带借位减法指令(Subtraction) 6.  减1指令(Decrease) 7.   乘法指令(Multiplication) 8.  除法指令(Division)        三、逻辑运算指令 1.  简单逻辑操作指令 2.  循环指令 带进位左循环指令(Rotate  Accumulator Left   through  Carry  flag)      右循环指令(Rotate  Accumulator  Right) 带进位右循环指令(Rotate  A  Right  with  C) 3.   逻辑与指令 4.  逻辑或指令 5.  逻辑异或指令 四、控制转移类指令 1.  跳转指令 相对转移指令   SJMP   rel           PC←(PC)+2                                                                                                                            PC←(PC)+rel 程序中标号与地址之间的关系 2.  条件转移指令 3.  比较不相等转移指令 4.  减 1 不为 0 转移指令 5.  调用子程序指令 7.  中断返回指令 五、位操作指令 1.  数据位传送指令 2.  位变量逻辑指令 3.  条件转移类指令

    标签: 单片机 指令系统

    上传时间: 2013-10-27

    上传用户:xuanjie