一本很好的汇编语言教程,跟大家一起分享 课程介绍 第1章 预备知识 1.1 汇编语言的由来及其特点 1 机器语言 2 汇编语言 3 汇编程序 4 汇编语言的主要特点 5 汇编语言的使用领域 1.2 数据的表示和类型 1 数值数据的表示 2 非数值数据的表示 3 基本的数据类型 1.3 习题 第2章 CPU资源和存储器 2.1 寄存器组 1 寄存器组 2 通用寄存器的作用 3 专用寄存器的作用 2.2 存储器的管理模式 1 16位微机的内存管理模式 2 32位微机的内存管理模式 2.3 习题 第3章 操作数的寻址方式 3.1 立即寻址方式 3.2 寄存器寻址方式 3.3 直接寻址方式 3.4 寄存器间接寻址方式 3.5 寄存器相对寻址方式 3.6 基址加变址寻址方式 3.7 相对基址加变址寻址方式 3.8 32位地址的寻址方式 3.9 操作数寻址方式的小结 3.10 习题 第4章 标识符和表达式 4.1 标识符 4.2 简单内存变量的定义 1 内存变量定义的一般形式 2 字节变量 3 字变量 4 双字变量 5 六字节变量 6 八字节变量 7 十字节变量 4.3 调整偏移量伪指令 1 偶对齐伪指令 2 对齐伪指令 3 调整偏移量伪指令 4 偏移量计数器的值 4.4 复合内存变量的定义 1 重复说明符 2 结构类型的定义 3 联合类型的定义 4 记录类型的定义 5 数据类型的自定义 4.5 标号 4.6 内存变量和标号的属性 1 段属性操作符 2 偏移量属性操作符 3 类型属性操作符 4 长度属性操作符 5 容量属性操作符 6 强制属性操作符 7 存储单元别名操作符 4.7 表达式 1 进制伪指令 2 数值表达式 3 地址表达式 4.8 符号定义语句 1 等价语句 2 等号语句 3 符号名定义语句 4.9 习题 第5章 微机CPU的指令系统 5.1 汇编语言指令格式 1 指令格式 2 了解指令的几个方面 5.2 指令系统 1 数据传送指令 2 标志位操作指令 3 算术运算指令 4 逻辑运算指令 5 移位操作指令 6 位操作指令 7 比较运算指令 8 循环指令 9 转移指令 10 条件设置字节指令 11 字符串操作指令 12 ASCII-BCD码调整指令 13 处理器指令 5.3 习题 第6章 程序的基本结构 6.1 程序的基本组成 1 段的定义 2 段寄存器的说明语句 3 堆栈段的说明 4 源程序的结构 6.2 程序的基本结构 1 顺序结构 2 分支结构 3 循环结构 6.3 段的基本属性 1 对齐类型 2 组合类型 3 类别 4 段组 6.4 简化的段定义 1 存储模型说明伪指令 2 简化段定义伪指令 3 简化段段名的引用 6.5 源程序的辅助说明伪指令 1 模块名定义伪指令 2 页面定义伪指令 3 标题定义伪指令 4 子标题定义伪指令 6.6 习题 第7章 子程序和库 7.1 子程序的定义 7.2 子程序的调用和返回指令 1 调用指令 2 返回指令 7.3 子程序的参数传递 1 寄存器传递参数 2 存储单元传递参数 3 堆栈传递参数 7.4 寄存器的保护与恢复 7.5 子程序的完全定义 1 子程序完全定义格式 2 子程序的位距 3 子程序的语言类型 4 子程序的可见性 5 子程序的起始和结束操作 6 寄存器的保护和恢复 7 子程序的参数传递 8 子程序的原型说明 9 子程序的调用伪指令 10 局部变量的定义 7.6 子程序库 1 建立库文件命令 2 建立库文件举例 3 库文件的应用 4 库文件的好处 7.7 习题 第8章 输入输出和中断 8.1 输入输出的基本概念 1 I/O端口地址 2 I/O指令 8.2 中断 1 中断的基本概念 2 中断指令 3 中断返回指令 4 中断和子程序 8.3 中断的分类 1 键盘输入的中断功能 2 屏幕显示的中断功能 3 打印输出的中断功能 4 串行通信口的中断功能 5 鼠标的中断功能 6 目录和文件的中断功能 7 内存管理的中断功能 8 读取和设置中断向量 8.4 习题 第9章 宏 9.1 宏的定义和引用 1 宏的定义 2 宏的引用 3 宏的参数传递方式 4 宏的嵌套定义 5 宏与子程序的区别 9.2 宏参数的特殊运算符 1 连接运算符 2 字符串整体传递运算符 3 字符转义运算符 4 计算表达式运算符 9.3 与宏有关的伪指令 1 局部标号伪指令 2 取消宏定义伪指令 3 中止宏扩展伪指令 9.4 重复汇编伪指令 1 伪指令REPT 2 伪指令IRP 3 伪指令IRPC 9.5 条件汇编伪指令 1 条件汇编伪指令的功能 2 条件汇编伪指令的举例 9.6 宏的扩充 1 宏定义形式 2 重复伪指令REPEAT 3 循环伪指令WHILE 4 循环伪指令FOR 5 循环伪指令FORC 6 转移伪指令GOTO 7 宏扩充的举例 8 系统定义的宏 9.7 习题 第10章 应用程序的设计 10.1 字符串的处理程序 10.2 数据的分类统计程序 10.3 数据转换程序 10.4 文件操作程序 10.5 动态数据的编程 10.6 COM文件的编程 10.7 驻留程序 10.8 程序段前缀及其应用 1 程序段前缀的字段含义 2 程序段前缀的应用 10.9 习题 第11章 数值运算协处理器 11.1 协处理器的数据格式 1 有符号整数 2 BCD码数据 3 浮点数 11.2 协处理器的结构 11.3 协处理器的指令系统 1 操作符的命名规则 2 数据传送指令 3 数学运算指令 4 比较运算指令 5 超越函数运算指令 6 常数操作指令 7 协处理器控制指令 11.4 协处理器的编程举例 11.5 习题 第12章 汇编语言和C语言 12.1 汇编语言的嵌入 12.2 C语言程序的汇编输出 12.3 一个具体的例子 12.4 习题 附录
上传时间: 2013-07-05
上传用户:hw1688888
通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)是一种能同时支持短距离和长距离数据传输的串行通信接口,被广泛应用于微机和外设之间的数据交换。像8251、NS8250、NS16550等都是常用的UART芯片,但是这些专用的串行接口芯片的缺点是数据传输速率比较慢,难以满足高速率数据传输的场合,而更重要的就是它们都具有不可移植性,因此要利用这些芯片来实现PC机和FPGA芯片之间的通信,势必会增加接口连线的复杂程度以及降低整个系统的稳定性和有效性。 本课题就是针对UART的特点以及FPGA设计具有可移植性的优势,提出了一种基于FPGA芯片的嵌入式UART设计方法,其中主要包括状态机的描述形式以及自顶向下的设计方法,利用硬件描述语言来编制UART的各个子功能模块以及顶层模块,之后将其集成到FPGA芯片的内部,这样不仅能解决传统UART芯片的缺点而且同时也使整个系统变得更加具有紧凑性以及可靠性。 本课题所设计的LIART支持标准的RS-232C传输协议,主要设计有发送模块、接收模块、线路控制与中断仲裁模块、Modem控制模块以及两个独立的数据缓冲区FIFO模块。该模块具有可变的波特率、数据帧长度以及奇偶校验方式,还有多种中断源、中断优先级、较强的抗干扰数据接收能力以及芯片内部自诊断的能力,模块内分开的接收和发送数据缓冲寄存器能实现全双工通信。除此之外最重要的是利用IP模块复用技术设计数据缓冲区FIFO,采用两种可选择的数据缓冲模式。这样既可以应用于高速的数据传输环境,也能适合低速的数据传输场合,因此可以达到资源利用的最大化。 在具体的设计过程中,利用Synplify Pro综合工具、ModelSim仿真工具、ISE集成的软件开发环境中对各个功能模块进行综合优化、仿真验证以及下载实现。各项数据结果表明,本课题中所设计的UART满足预期设计目标。
上传时间: 2013-08-02
上传用户:rocketrevenge
在现代电子系统中,数字化已经成为发展的必然趋势,接收机数字化是电子系统数字化中的一项重要内容,对数字化接收机的研究具有重要的意义。随着数字化理论和微电子技术的迅速发展,高速的中频数字化接收机的实现已经成为可能。本文研究了一种基于FPGA的软件无线电数字接收平台的设计,并着重研究了其中数字中频处理单元的设计和实现。FPGA器件具有设计灵活、开发周期短和开发成本低等优点,所以广泛应用于各种通信系统中。相比于传统的DSP串行结构,FPGA能够进行流水线性设计,对数据进行并行处理,所以FPGA在进行数据量大,要求实时处理的系统设计时有很大的优势。 本文首先首先分析了软件无线电当前的发展趋势及技术现状,针对存在的处理速度跟不上的DSP瓶颈问题,提出了中频软件无线电的FPGA实现方案。本文以FPGA实现为重点,在深入分析软件无线电相关理论的基础上,着重研究和完成了中频软件无线电数字接收平台两大模块的FPGA实现:数字下变频相关模块和数字调制解调模块。其中,在深入研究数字下变频实现结构的基础上,首先对数字下变频模块的数控振荡器(NCO)采用了直接频率合成技术(DDS)实现,其频率分辨率高,灵活,易于实现;高效抽取滤波器组由积分梳状滤波器(CIC),半带滤波器(HB),FIR滤波器组成。对积分梳状滤波器(CIC)本文采用了Hogenaur“剪除”理论对内部寄存器的位宽进行改进,极大地节约了资源,提高了运行速率。对FIR滤波器和半带滤波器采用了(DA)分布式算法,它的运行速度只与数据的宽度有关,只有加减法运算和二进制除法,既缩减了系统资源又大大节省了运算时间,实现了高效的实时处理。对数字调制解调模块,重点研究和完成了2ASK和2FSK的调制解调的FPGA实现,模块有很好的通用性,能方便地移植到其它的系统中。在文章的最后还对整个系统进行了Matlab仿真,验证了系统设计思想的正确性。在系统各个关键模块的设计过程中,都是先依据一定的设计指标进行verilog编程,然后再在Quartus软件中编译,时序仿真测试,并与Matlab仿真结果进行对比,验证设计的正确性。
上传时间: 2013-05-18
上传用户:450976175
MP3音乐是目前最为流行的音乐格式,因其音质、复杂度与压缩比的完美折中,占据着广阔的市场,不仅在互联网上广为流传,而且在便携式设备领域深受人们喜爱。本文以MPEG-1的MP3音频解码器为研究对象,在实时性、面积等约束条件下,研究MP3解码电路的设计方法,实现FPGA原型芯片,研究MP3原型芯片的验证方法。 论文的主要贡献如下: (1)使用算法融合方法合并MP3解码过程的相关步骤,以减少缓冲区存储单元的容量和访存次数。如把重排序步骤融合到反量化模块,可以减少一半的读写RAM操作;把IMDCT模块内部的三个算法步骤融合在一起进行设计,可以省去存储中间计算结果的缓存区单元。 (2)反量化、立体声处理等模块中,采用流水线设计技术,设置寄存器把较长的组合逻辑路径隔开,提高了电路的性能和可靠性;使用连续访问公共缓存技术,合理规划各计算子模块的工作时序,将数据计算的时间隐藏在访存过程中;充分利用频率线的零值区特性,有效地减少数据计算量,加快了数据处理的速度。 (3)设计了MP3硬件解码器的FPGA原型芯片。采用Verilog HDL硬件描述语言设计RTL级电路,完成功能仿真,以Altera公司Stratix II系列的EP2S180 FPGA开发板为平台,实现MP3解码器的FPGA原型芯片。MP3硬件解码器在Stratix II EP2S180器件内的资源利用率约为5%,其中组合逻辑查找表ALUT为7189个,寄存器共有4024个,系统频率可达69.6MHz,充分满足了MP3解码过程的实时性要求。实验结果表明,MP3音频解码FPGA原型芯片可正常播放声音,解码音质良好。
上传时间: 2013-07-01
上传用户:xymbian
可配置端口电路是FPGA芯片与外围电路连接关键的枢纽,它有诸多功能:芯片与芯片在数据上的传递(包括对输入信号的采集和输出信号输出),电压之间的转换,对外围芯片的驱动,完成对芯片的测试功能以及对芯片电路保护等。 本文采用了自顶向下和自下向上的设计方法,依据可配置端口电路能实现的功能和工作原理,运用Cadence的设计软件,结合华润上华0.5μm的工艺库,设计了一款性能、时序、功耗在整体上不亚于xilinx4006e[8]的端口电路。主要研究以下几个方面的内容: 1.基于端口电路信号寄存器的采集和输出方式,本论文设计的端口电路可以通过配置将它设置成单沿或者双沿的触发方式[7],并完成了Verilog XL和Hspiee的功能和时序仿真,且建立时间小于5ns和保持时间在0ns左右。和xilinx4006e[8]相比较满足设计的要求。 2.基于TAP Controller的工作原理及它对16种状态机转换的控制,对16种状态机的转换完成了行为级描述和实现了捕获、移位、输出、更新等主要功能仿真。 3.基于边界扫描电路是对触发器级联的构架这一特点,设计了一款边界扫描电路,并运用Verilog XL和Hspiee对它进行了功能和时序的仿真。达到对芯片电路测试设计的要求。 4.对于端口电路来讲,有时需要将从CLB中的输出数据实现异或、同或、与以及或的功能,为此本文采用二次函数输出的电路结构来实现以上的功能,并运用Verilog XL和Hspiee对它进行了功能和时序的仿真。满足设计要求。 5.对于0.5μm的工艺而言,输入端口的电压通常是3.3V和5V,为此根据设置不同的上、下MOS管尺寸来调整电路的中点电压,将端口电路设计成3.3V和5V兼容的电路,通过仿真性能上已完全达到这一要求。此外,在输入端口处加上扩散电阻R和电容C组成噪声滤波电路,这个电路能有效地抑制加到输入端上的白噪声型噪声电压[2]。 6.在噪声和延时不影响电路正常工作的范围内,具有三态控制和驱动大负载的功能。通过对管子尺寸的大小设置和驱动大小的仿真表明:在实现TTL高电平输出时,最大的驱动电流达到170mA,而对应的xilinx4006e的TTL高电平最大驱动电流为140mA[8];同样,在实现CMOS高电平最大驱动电流达到200mA,而xilinx4006e的CMOS驱动电流达到170[8]mA。 7.与xilinx4006e端口电路相比,在延时和面积以及功耗略大的情况下,本论文研究设计的端口电路增加了双沿触发、将输出数据实现二次函数的输出方式、通过添加译码器将配置端口的数目减少的新的功能,且驱动能力更加强大。
上传时间: 2013-07-20
上传用户:顶得柱
介绍单电源、低功耗、高精度 A/D转换器 AD7714的特点、内部寄存器结构和外部接口;详细阐述 AD7714与单片机 AT89C51的接口技术。
上传时间: 2013-06-30
上传用户:CSUSheep
在嵌入式系统的开发过程中,仿真器是一个必不可少的开发工具。特别是对于初级嵌入式系统开发工程师,借助一个功能强大的仿真器进行开发工作,可以达到事半功倍的效果。一个嵌入式仿真、调试系统支持单步执行、设置断点、观察变量内容及寄存器内容等功能。开发人员可以通过各类调试功能观察变量和寄存器的变化,从而可以很清楚的了解整个程序运行的状况,及时的调整和修改程序,并不需要反复的向芯片烧写程序,就可以完成对于程序的调试工作。 @@ 本文在分析了目前市场上常用仿真器的设计原理的基础上,提出了以三星公司的S3C44BO ARM7处理器为主CPU,通过以太网接口进行数据传输的ARMJTAT仿真器的设计方案。利用这种仿真器进行程序调试,不仅可以大幅度的提高下载速度,还可以实现仿真器资源的共享,而且调试时程序是在目标板上运行,仿真更接近于目标硬件。 @@ 文中首先对于传统仿真器的设计原理、作用、存在的问题进行了研究,然后提出了基于S3C44BO的以太网接口的ARM-JTAG仿真器的设计。该仿真器的设计主要分为以下几步:第一,提出总体设计方案,包括硬件的设计及软件的设计。第二,详细介绍该仿真器的硬件结构设计和程序开发过程,其中特别对以太网接口的设计进行了研究。第三,总结了该仿真器的功能、特点。 @@关键词:仿真器;S3C44BO;以太网接口;JTAG;LwIP
上传时间: 2013-06-16
上传用户:253189838
本文提出了一种高速Viterbi译码器的FPGA实现方案。这种Viterbi译码器的设计方案既可以制成高性能的单片差错控制器,也可以集成到大规模ASIC通信芯片中,作为全数字接收的一部分。 本文所设计的Viterbi译码器采用了基四算法,与基二算法相比,其译码速率在理论上约提升一倍。加一比一选单元是Viterbi译码器最主要的瓶颈所在,本文在加一比一选模块中采用了全并行结构的设计方法,这种方法虽然增加了硬件的使用面积,却有效的提高了译码器的速率。在幸存路径管理部分采用了两路并行回溯的设计方法,与寄存器交换法相比,回溯算法更适用于FPGA开发设计。为了提高译码性能,减小译码差错,本文采用较大译码深度的回溯算法以保证幸存路径进行合并。实现了基于FPGA的误码测试仪,在FPGA内部完成误码验证和误码计数的工作。 与基于软件实现译码过程的DSP芯片不同,FPGA芯片完全采用硬件平台对Viterbi译码器加以实现,这使译码速率得到很大的提升。针对于具体的FPGA硬件实现,本文采用了硬件描述语言VHDL来完成设计。通过对译码器的综合仿真和FPGA实现验证了该方案的可行性。译码器的最高译码输出速率可以达到60Mbps。
上传时间: 2013-04-24
上传用户:181992417
卷积码是无线通信系统中广泛使用的一种信道编码方式。Viterbi译码算法是一种卷积码的最大似然译码算法,它具有译码效率高、速度快等特点,被认为是卷积码的最佳译码算法。本文的主要内容是在FPGA上实现约束长度为9,码率为1/2,采用软判决方式的Viterbi译码器。 本文首先介绍了卷积码的基本概念,阐述了Viterbi算法的原理,重点讨论了决定Viterbi算法复杂度和译码性能的关键因素,在此基础上设计了采用“串-并”结合运算方式的Viterbi译码器,并在Altera EP1C20 FPGA芯片上测试通过。本文的主要工作如下: 1.对输入数据采用了二比特四电平量化的软判决方式,对欧氏距离的计算方法进行了简化,以便于用硬件电路方式实现。 2.对ACS运算单元采用了“串-并”结合的运算方式,和全并行的设计相比,在满足译码速度的同时,节约了芯片资源。本文中提出了一种路径度量值存储器的组织方式,简化了控制模块的逻辑电路,优化了系统的时序。 3.在幸存路径的选择输出上采用了回溯译码方法,与传统的寄存器交换法相比,减少了寄存器的使用,大大降低了功耗和设计的复杂度。 4.本文中设计了一个仿真平台,采用Modelsim仿真器对设计进行了功能仿真,结果完全正确。同时提出了一种在被测设计内部插入监视器的调试方法,巧妙地利用了Matlab算法仿真程序的输出结果,提高了追踪错误的效率。 5.该设计在Altera EP1C20 FPGA芯片上通过测试,最大运行时钟频率110MHz,最大译码输出速率10.3Mbps。 本文对译码器的综合结果和Altera设计的Viterbi译码器IP核进行了性能比较,比较结果证明本文中设计的Viterbi译码器具有很高的工程实用价值。
上传时间: 2013-07-23
上传用户:叶山豪
本文从AES的算法原理和基于ARM核嵌入式系统的开发着手,研究了AES算法的设计原则、数学知识、整体结构、算法描述以及AES存住的优点利局限性。 针对ARM核的体系结构及特点,对AES算法进行了优化设计,提出了从AES算法本身和其结构两个方面进行优化的方法,在算法本身优化方面是把加密模块中的字节替换运算、列混合运算和解密模块中的逆列混合运算中原来的复杂的运算分别转换为简单的循环移位、乘和异或运算。在算法结构优化方面是在输入输山接口上采用了4个32位的寄存器对128bits数据进行了并行输入并行输出的优化设计;在密钥扩展上的优化设计是采用内部扩展,即在进行每一轮的运算过程的同时算出下一轮的密钥,并把下一轮的密钥暂存在SRAM里,使得密钥扩展与加/解密运算并行执行;加密和解密优化设计是将轮函数查表操作中的四个操作表查询工作合并成一个操作表查询工作,同时为了使加密代码在解密代码中可重用,节省硬件资源,在解密过程中采用了与加密相一致的过程顺序。 根据上述的优化设计,基于ARM核嵌入式系统的ADS开发环境,提出了AES实现的软硬件方案、AES加密模块和解密模块的实现方案以及测试方案,总结了基于ARM下的高效编程技巧及混合接口规则,在集成开发环境下对算法进行了实现,分别得出了初始密钥为128bits、192bits和256bits下的加密与解密的结果,并得剑了正确验证。在性能测试的过程中应用编译器的优化选项和其它优化技巧优化了算法,使算法具有较高的加密速度。
上传时间: 2013-04-24
上传用户:liansi