012
ADSP2181汇编器及仿真器的设计样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
本设计包含内容:源代码+毕业论文
论文大概:
摘 要
数字信号处理相对于模拟信号处理有很大的优越性,随着人们对实时处理要求的不断提高和大规模集成电路技术的迅速发展,数字信号处理技术也发生着日新月异的变革。数字信号处理的主要对象是数字信号,且是采用运算的方法达到处理目的,基本上可以分成两种实现方法,即软件实现方法和硬件实现方法。软件实现方法指的是按照原理和算法,自己编写程序或者采用现成的程序在通用计算机上实现,显然用软件方法实现比较灵活,适合于科研和教学。我们将要设计的是一个交叉汇编器。它运行在pc机上,为基于AS-218x数字信号处理器的汇编语言进行汇编。以及对于研究计算机和运行在他们上面的程序来说是一个有用的仿真器。现采用的用汇编器及仿真器实现的方法,是针对约定的汇编语言语法规则,提出并实现了一种采用一边扫描的汇编算法,在词法分析与语法分析的模块中,介绍了两个在编译器的设计过程中经常会用到的软件:Lex与YACC的使用。在符号表处理模块的设计中,提出了一些常见的表搜索的方法。
关键词:汇编器 仿真器 词法分析器 语法分析器
Abstract
The arithmetic figure signal handles opposite in imitate
the signal handles very big and superior, handles to the solid hour
along with people the request increases continuously with the
large-scale integrated circuit technical and quick development, the
arithmetic figure signal handles the technique also takes place the
continuous changes and improvements replaces.The main object that
arithmetic figure signal handles is an arithmetic figure signal, and
is an adoption to carry the method that calculate attains to handle
purpose, the basic top can be divided into two kinds of realize
method, then the software realizes the method realizes with the
hardware method.The software realizes method is according to
principle with calculate way, oneself the plait write the procedure
or adopt the ready-made procedure in the in general use calculation
on board realize, realizes with the software method obviously more
vivid, suitable for section with teaching.We will design of is
a crosses to edit collected materials the machine.It circulates in
the pc on board, for according to the digital signal processor of x
AS-218 edits collected materials the language proceeds to edit
collected materials.And imitate study calculator with circulate on
they procedure to say is a very much the true machine.Adopt now of
using and editting collected materials machine and imitate the true
method that machine realizes, is to aim at the engagement edit
collected materials the language phrasing rule, putting forward and
realizes a kind of adoption scan of edit collected materials the
calculate way, in phrase method analyze and analytic mold in
phrasing piece, introduced two software for in design process that
edit and translate machine would usually usings:Lex and YACC
usage.In sign form handle the design of the mold piece, Put forward
the some familiar the method that watch search for.
Key phrase:
assembler
phrase analyze machine
Emluator
grammar analyze machine
第一章 概 述
§1.
数字信号处理器技术
数字信号处理相对于模拟信号处理有很大的优越性,表现在精度高、灵活性大、可靠性好、易于大规模继承等方面。随着人们对实时处理要求的不断提高和大规模集成电路技术的迅速发展,数字信号处理技术也发生着日新月异的变革。
§1. 1. 数字信号处理器发展
实时数字信号处理技术的核心和标志是数字信号处理器。自第一个微处理器问世以来,处理器技术水平得到了十分迅速的提高,而快速傅立叶变换等实用算法的提出促进了专门实现数字信号处理的一类微处理的分析和发展。数字信号处理有别于普通的科学计算与分析。它强调运算处理的实时性,因此DSP除了具备普通处理器所强调的高速运算和控制功能外,针对实时数字信号处理,在处理器结构、指令系统、指令流程上做了很大的改动,其结构特点如下:
••
DSP普遍采用了数据总线和程序总线分离的哈佛结构和改进的哈佛结构,比传统的冯•诺依曼结构有更高的指令执行速度。
•
DSP大多采用流水线技术,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等多个步骤,从而在不提高时钟频率的条件下减少每条指令的执行时间。
•
片内有多条总线可以同时进行取指令和多个数据存取操作,并且有辅助寄存器用于寻址,它们可以在寻址访问前或访问后自动修改内容,以指向下一个要访问的地址。
•
针对滤波、相关、矩阵运算等大量乘法累加运算的特点,DSP大都配有独立的乘法器和加法器,使得同一时钟周期内可以完成相乘、累加两个运算。
•
许多DSP带有DMA通道控制器,以及串行通信口等,配合片内多总线结构,数据块传送速度大大提高。
•
配合中断处理器和定时控制器,可以很方便地构成系统。
• 具有软、硬件等待功能,能与各种存储器接口。
§1. 2. 数字信号处理器的应用领域
随着DSP性能的迅速提供和成本价格的大幅度下降,DSP的应用范围不断扩大,成为当前产量和销量增长最快的电子产品之一。DSP应用几乎遍及整个电子领域,常见的典型应用有:
1.通用数字信号处理
数字滤波、卷积、相关、FFT、希尔波特变换、自适应滤波、窗函数、波形发送等、
2.通信
高速调制解调器、编/译码器、自适应均衡器、传真、程控交换机、蜂房移动电话、数字基站、数字留言机、回音消除、噪声抑制、电视会议、保密通信、卫星通信、TDMA/FDMA/CDMA等多种通信方式。随着网络的迅猛发展,DSP又在网路管理/服务、信息转发、IP电话等新领域扮演着重要的角色,而软件无线电的提出和发展进一步增强了DSP在无线通信领域的应用。
3.语音处理
语言识别、合成、矢量编码、语言信箱。
4.图形/图象处理
三维图像变换、模式识别、图象增强、动画、电子出版、电子地图等。
5.自动控制
磁盘、光盘、打印机伺服、发动机控制。
6.仪器仪表
测量数据谱分析、自动检测及分析、暂态分析、勘测、模拟试验。
7.医学电子
助听器、CT扫描、超声波、心脑电图、核磁共振、医疗监护等。
8.军事与尖端技术
雷达和声纳信号处理、雷达成像、自适应波束合成、阵列天线信号处理、导弹制导、火控系统、战场CI系统。导航、全球定位GPS、目测搜索跟踪、尖端武器试验,航空航天试验,宇宙飞船、侦察卫星。
9.计算机与工作站
阵列处理器、计算加速卡、图形加速卡、多媒体计算机。
10.消费电子
数字电视、高清晰度电视、图象/声音压缩解压器、VCD/DVD/CD播放器、电子玩具、游戏机、数字留言/应答机、汽车电子装置、音响合成、住宅电子安全系统、家电电脑控制装置。
§1. 3. 定点DSP ADSP21xx系列
1.3.1
ADSP218X特点
ADSP21XX系列各信号的存储器、外部接口各不相同。下面介绍最新的ADSP218x的性能特点。
•
指令周期25ns;
• 片内存储器分成两部分:程序16K × 24 bit,数据16 × 16 bit,共计80
KB,片内三条总线;
• 片外寻址能力16K;
• 片内设备:2个串口,一个定时器;
• 运算单元字宽,乘法器16
bit × 16 bit输入,32 bit结果,累加器(ACC)40 bit,ALU 16 bit;
•
寻址方式:循环,位反序;
• DMA 2个;
• 硬件堆栈16级,允许7级中断;
•
主机接口,13个状态输入/输出管脚,EZ-ICE仿真口(非JTAG标准);
• 外部中断4个;
•
封装128QFP。
ADSP21XX系列主要是面向通信系统等对处理数据精度和动态范围适中、更强调产品低成本和低功耗的应用领域。
ADSP218X系列定点DSP相对于其它定点DSP的突出优点是片内高速存储器容量大、寻址能力强、运算速度快,对于需要较大存储器(40~80KB)的应用,ADSP218X可以构成设备量最小的系统。
1.3.2 ADSP2183特点
三个独立的运算部件均可单周期操作。虽然输入数据为16
bit,但ADSP2183提供了更高精度运算的功能。ALU除进行标准算术、逻辑运算外,还提供了简易除法功能。乘法器MAC进行40
bit累加运算。移位器支持算术/逻辑移位、归一化、取指数、多字精度、块浮点等运算或数据格式。
程序控制器支持单周期的条件跳转、调用和返回,具有循环计数器和循环堆栈,支持无附加开销的指令块循环。两个地址产生器各有四个地址指针,都支持访问后变址操作、循环寻址操作。
ADSP2183支持13个中断,其中6个为外中断(一个边沿触发,2个电平触发,另3个可设置),7个内中断分别由定时器、串口(4个)、Byte
DMA(DBMA)及休眠电路产生。
串口工作方式多样,可以自带内时钟/外时钟;可设置成无帧/帧同步;字长可设置成2-16bit;可以按G.711标准自动作A律或µ律压缩;发送/接受完一个字或一段数据时都可产生中断;能以循环寻址方式发/收;串口0支持TDMA多通道(24-32
bit字宽)收发。
1.3。3 存储器组织
ADSP2183存储器由四种类型组成,其地址线复用,它们是程序存储器PM,数据存储器DM和I/O空间。
(1) PM:ADSP2183片内有16 K × 24 bit
程序存储区,允许它每周期访问两次。通过MMAP管脚和PMOVLAY寄存器的设置,16
K片内PM可以和片外同一存储区间的PM存储器重叠。这样可以和早期推出的ADSP2100(片内存储器很小)程序兼容。
(2) DM:片内16
K × 16 K
bit也可以设置为重叠存储,它是通过DMOVLAY寄存器设置的
(3) I/O空间:ADSP2183支持2048个I/O地址,访问此空间时,地址高3位并未用到,有两个专门访问I/O的指令,4个3
bit的等待寄存器IOWAIT0-3分别在000H-1FFH,200H-3FFH,400H-5FFH,600H-7FFH四段I/O空间产生0-7个等待。
§2. 系统软件
计算机系统包括硬件系统和软件系统。硬件和软件的关系就如同皮和毛的关系、血液和躯干的关系。硬件相当于躯干和皮,软件相当于血液和毛。软件必须附着在硬件上,同时硬件与软件必须相互匹配,才能导致计算机系统充分地发挥功效。
系统软件(System
Software)是指发挥和扩充硬件系统(单机、多机或计算机网络)的功能,方便用户使用,为用户编制和使用应用程序而提供的一套工具软件。它包括链接和转配程序,汇编语言和汇编程序,高级语言和编译程序,目标程序和源程序级的调试程序,单机、多机或计算机网络上的操作系统和通信软件,数据库语言和数据库软件等。
而随着芯片技术的不断发展,芯片的复杂性也不断增加。出现了把一个完整的系统集成到一个芯片上的技术,这就是片上系统(SOC,System
On a
Chip)。随着电子系统集成到芯片技术的不断发展,片上系统的优势和复杂性不断增加。这给系统软件和硬件的设计者带来了新的挑战。系统软件的设计者必须考虑芯片的硬件结构。对于片上的系统来说,更需要硬件和软件的协同设计(Codesign)。很多情况下,满足有上亿晶体管的系统设计效率要求,唯一的途径就是采用运行专用软件的嵌入式处理器(embedded
processor)。这给系统软件的设计者带来了新的意义。而对于嵌入式系统设计与开发,常常要一整套的开发工具。它们包括:交叉编译系统、反汇编器、链接器、仿真器、调试器等。
§2.1 汇编器(assembler)
直接使用机器语言(代码)编制程序是一件非常困难乏味的工作。汇编语言实质上是机器语言的一种符号表示。它的主要特点是可以使用符号名来表示机器指令的代码、地址、常量和变量。程序员不必为程序(代码和数据)在存储器中的物理地址进行具体的安排。汇编器可以把用汇编语言编写的源程序编为机器语言程序(称为目标代码或目标程序)。汇编语言编程要比机器语言编程方便的多。
汇编器的总任务是将汇编语言的源程序翻译为功能等价的机器语言的目标程序。所以汇编的过程就是寻找一组操作,将初始化状态的汇编源程序转换成为最终的状态机器语言的目标程序。大部分汇编器都采用两遍算法。第一遍扫描建立符号表。第二遍扫描根据第一遍扫描建立的符号表对源程序进行汇编,得到目标程序。
汇编器可以分成四类。为机器自身所运行的处理器汇编程序的一类汇编器称为常驻汇编器或自汇编器(resident or self
assembler)。交叉汇编器(cross
assembler)是在主机上为于主机不同的目标处理器汇编程序的一类汇编器。还有一类称为元汇编器(meta
assembler),它为单一的一个目标处理器汇编程序。元汇编器为特定的处理器根据相应的汇编指令表进行汇编。映射汇编器(reflective
assembler)是一种元交叉汇编器(meta
cross-assembler)。它为多种不同的目标处理器汇编程序。它根据读入的汇编语言源程序动态的装入相应的指令和指示集对源程序进行汇编。
我们将要设计的是一个交叉汇编器。它运行在pc机上,为基于AS-218x数字信号处理器的汇编语言进行汇编。
§2.2 软件仿真器
软件仿真器是用软件的手段对运行嵌入式应用程序所需的特定硬件环境(包括CPU芯片、内存及其它外围硬件设备)及其活动进行描述(仿真)。进而可以在真实硬件环境的情况下,实行程序的仿真运行。仿真器可以提供一个比实际机器更方便的低级语言编程环境,因为他们比起实际的机器可以检测更多的错误,而且可以提供更多的用户需要的特性。
仿真器对于研究计算机和运行在他们上面的程序来说是一个有用的工具。因为他们是由软件而不是硬件实现的,可以很容易通过修改指令集来加入新的指令、建立新的诸如微处理器之类的系统、或者仅仅是为了收集数据。
软件仿真器的引入,具有以下的优点:
1. 在宿主机上即能仿真目标机(DSP处理器)环境的软、硬件特性,支持嵌入式应用系统的开发。完全脱离具体的硬件限制,提高系统的开发效率,相对减少了一些不必要的额外开销。
2. 可以对整个嵌入式系统的正确性进行验证,辅助硬件、软件系统设计论证工作的完成。
3. 便于工程技术人员在对软件进行调试、测试过程中,控制与分析应用程序运行及仿真环境的状态。
目前,软件仿真器被广泛用于嵌入式系统的开发、SOC系统控制中的软件硬件协同设计(Co-design)、协同仿真(Co-simulation)、协同验证(Co-verification)中。
第二章
汇编器的设计与实现
本章内容讲的是汇编器的功能和实现方法。在具体汇编器的实现过程中密切结合ADSP218x型汇编语言的特点。
§1. 概
述
汇编器的总任务是将汇编语言的源程序翻译位等价的机器语言的目标程序。所以汇编的过程就是,寻找一组操作,将初始状态的汇编源程序转换成为最终的状态机器语言的目标程序。
经汇编程序汇编后的程序在盘上应建立三个文件:一个是扩展名为
.obj的目标程序,在此程序中,操作码部分以变成机器码,但地址操作数只是一个可浮动的相对地址,而不是内存中的绝对地址。第二个是扩展名为.lst的可打印文件,它把源程序和汇编后的目标程序都制成表,可打印出来供分析查用。第三个是扩展名为.CRF的可以对符号进行前后对照的文件。当然,这三个文件中的第一个文件是必要的,后两个供用户选的。要产生第一个文件的汇编程序主要功能为:
1. 收集源程序中的符号命、标号、常数等;
2. 按用户指定自动分配存储空间(包括程序区、数据区、暂存区);
3. 自动把各种进位制数转换为二进制,把字符转换成ASCII码;
4. 计算表达式的值;
5. 自动对源程序进行检查,给出错误信息(如非法格式,未定义的助记符、标号、漏掉的操作数等);
6. 产生代码;
绝大多数的汇编器的工作原理都采用了两遍扫描的方法。它的简化模型如图2-1所示。所谓两遍扫描就是指汇编器对源程序必须进行两次从头到尾的逐个语句逐个字符的扫描过程才能最终产生目标文件和列表文件。对源程序的第一遍扫描的主要任务是决定程序中使用的每一个标志符的相对位置(偏移量),从而建立起一个源程序的符号表。
汇编器为了定位每一个标志符,它建立了一个称为汇编地址计数器的变量。当源程序被扫描的时候,这个地址计数器随着每个语句被读出分析而做相应的增量。每次所增量的值等于一条语句所需的字节数。每当汇编器遇到一个新的段定义的时候,它就把地址计数器清零。因此,地址计数器可以看做一个段在汇编过程中动态地指示一个语句的相对位置(偏移量)的指针。图2-2给出了汇编器完成第一遍扫描的程序流程。
图2-2
第一遍扫描基本流程
第一遍扫描只是建立符号表而不产生机器码。第二遍扫描才产生机器码。每当汇编器在第一遍扫描中在一个语句地最左端发现一个标号或变量时,它就要定义这个标号。它的偏移量就是地址计数器的当前值。汇编器要把它和有关信息填入符号表。如果同一个标号或变量定义了两次,就产生一个出错记录。
在源程序第一遍扫描无错时,汇编器对其进行第二遍扫描。第二遍扫描的流程如图2-3所示。
图2-3
第二遍扫描基本流程
在第二遍扫描中,每当汇编器汇编一条语句时,它要根据这个语句的指令助记符(instruction
mnemonic)或汇编指示助记符(assembler directive
mnemonic)去查指令表或汇编指示表。如果找不到就产生一个出错记录。如果找到了,汇编器就把它翻译为机器码。
为了使汇编器能够分析每一个语句,不应当使用指令、伪指令、汇编指示的助记符或寄存器名来定义标号或者变量。这从上面的汇编过程中可以很容易明白。指令、伪指令、汇编指示和寄存器的助记符称为汇编语言的保留字。
§3. 仿真器的实现
§3.1 仿真系统的数据流图
仿真器的数据流图3-1所示。
图 3-1
§3.2 仿真器的模块划分
图 3-2
§3.2.1 顶层模块
顶层模块负责调用下层的各个模块,协调下层模块的工作。同时,顶层模块也是用户与仿真器之间的接口,用户可以通过这个接口指定仿真器进行各种操作,比如装载程序、运行、单步运行、设置断点等等,下面简要介绍一下这些接口。
1) LoadProgram(DWORD pMem[],int
count):该接口主要从数组pMem中读指令到仿真器中,其中count指定读入的指令的数目。
2) RunToCursor():该接口主要功能是将程序运行到用户指定的光标处,这个功能对用户调试程序非常有用,假如用户确定前半部分的程序没有问题,只关心程序的后半部分,那么我们可以把关标停在交接处,然后执行”运行到关标出”,接着再单步运行那些用户怀疑有问题的程序。
3) RunOneStep(
):该接口使用户能单步运行程序。没运行一条指令都对程序存储器、数据存储器以及寄存器进行更新,这样用户就能看到当前运行指令的操作。
4) ResetProgram():该接口主要对程序进行复位操作,通过该接口用户可以随时对程序进行初始化操作。
§3.3 仿真器的用户界面
整个仿真器的界面如图3-4所示。
图 3-4