1、沈阳理工大学课程设计 专用纸 目 录 第 1 章 设计目的 . 1 第 2 章 设计思路 . 2 2.1 总体说明 . 2 2.2 硬件设计 . 2 2.3 系统整体硬件框图 . 5 第 3 章 关键技术 . 6 2.1 ARM9 处理器 . 6 2.2 嵌入式 C 语言开发技术 . 8 2.3 ADS 开发环境 . 8 2.4 题目针对的关键技术 . 11 第 4 章 程序流程 . 13 第 5 章 主要源代码 . 15 第 6 章 运行结果及结论 . 19 参考文献 . 20 沈阳理工大学课程设计专用纸 NO.1 第 1 章 设计目的 1. 学习模拟输入输出接口的原理 2. 掌握接口程序实
2、现的基本方法 3. 掌握简单并行输入输出接口的工作原理及使用方法 , 进一步熟悉掌握输入输出单元的功能和使用。 沈阳理工大学课程设计专用纸 NO.2 第 2 章 设计思路 2.1 总体说明 本课程设计为模拟输入输出接口的实验,使用一片缓冲芯片 74LS244 来把 CPU外面的输入数据写入 CPU 的并行总线上,之后,并行总线上的数据被一片数据锁存芯片 74LS273 保留, CPU 通过选中锁存芯片,并读取预先设给锁存器地址内的内容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用 8 个带锁的按键的按下和未按下两种工作状态来表示输入接口的高低状态(每个按键代表 1个数字位,按键均
3、不按下,代表数字量为 255,全按下为 0,每个按键的都是 2的权值,在不按下时,最靠近键盘的按键代表 1,之后依次是 2; 4; 8; 16; 32; 64;128。按下时均代表 0),然后,再通过 8个 LED 灯亮和灭两种工作状态,以及 LCD上用数据值来清楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实现。 2.2 硬件 设计 该程序在硬件上需要 74LS244, 74LS273 等接口芯片的支持。 ( 1) 74LS244 是一种三态输出的八缓冲器和线驱动器,该芯片的引脚图和功能表如下所示。 图 2.1 74LS244 管脚分配 74LS244 功能 从图可见,该缓冲器有 8
4、个输入端和 8个输出端,从表中可 见 74LS244 的功能为:当使能端 EN 为低电平时,输出等于输入;当使能端 EN 为高电平,输入 X为任意值 (即不论为“ H”还是为“ L”都一样 )时,输出为高阻态。经 74LS244 缓冲后,输入信号被驱动,输出信号的驱动能力加大了。 沈阳理工大学课程设计专用纸 NO.3 74LS244 缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器和定向发送器等。 ( 2) 74LS273 是一种 8D 锁存器,具有三态驱动输出,其逻辑电路及引脚图如图所示。 图 2.2 74LS273 管脚分配 74LS273 功能表 由图可见,该锁存器由
5、8个 D 门组成,有 8个输入端 1D 一 8D,八个输出端1Q 一 8Q,使能端 有效时,将 D 端数据打入锁存器中 D 门,当输出允许端有效时,将锁存器中锁存的数据送到输出端 Q。 表中 H为高电平, L 为低电平, Q0为原状态, Z为高阻态, X表示任意值 (即不论为“ H”还是为“ L”都一样 )。 从表中可见 74LS273 的功能为:当使能端 为高电平时,同时输出允许端 为低电平,则输出 Q等于输入 D;当使能端 为低电平,而输出允许端 也为低电平时,则输 出 Q=Qo(原状态,即使能端 由高电平变为低电平前,输出端 Q 的状态,这就是“锁存”的意义 )。 74LS273 锁存器
6、主要用于锁存地址信息、数据信息以及 DMA页面地址信息等。 ( 3) 通常是采用 TTL 或 CMOS 电路锁存器、三态门等作为扩展芯片,通过 P0口来实现扩展的简单 I/O 口扩展方案。它具有电路简单、成本低、配置灵活的特点。本实验采用 74LS244 作为扩展输入、 74LS273 作为扩展输出的简单 I/O 口扩展。扩展电路图如下所示: 沈阳理工大学课程设计专用纸 NO.4 图 2.3 简单 I/O 口扩展图 在上述电路中采用的芯片为 TTL 电路 74LS244、 74LS273。其中 74LS244 为 8缓冲线驱动器(三态输出), /G1、 /G2 为低电平有效的使能端,当二者之一
7、为高电平时,输出为三态。 74LS273 为 8D 触发器, /CLR 为低电平有效的清除端,当 /CLR=0时,输出全为 0 且与其他输入端无关; CP端是时钟信号,当 CP 由低电平向高电平跳变时刻, D 端输入数据传送到 Q 输出端。 P0 口作为双向 8 位数据线,既能够从74LS244 输入数据,又能够从 74LS273 输出数据。输入控制信号由 P2.0 和 /RD 相“或”后形成。当二者都为 0时, 244 的控制端 /G 有效,选通 74LS244,外部的信息输入到 P0 数据总线上。当与 244 相连的按键都没有按下时,输入全为 1,若按下某键,则所在线输入为 0。输出 控制
8、信号输入控制信号由 P2.0 和 /WR 相“或”后形成。当二者都为 0 后, 74LS273 的控制端有效,选通 74LS273, P0 上的数据锁存到 273 的输出端,控制发光二极管 LED,当某线输出为 0时,相应的 LED 发光。 因为 74LS244 和 74LS273 都是在 P2.0 为 0 时被选通的,所以二者的口地址都为 FEFFH(这个地址不是唯一的,只要保证 P2.0=0,其它地址位无关)。但是由于分别由 /RD 和 /WR 控制,两个信号不可能同时为 0,所以逻辑上二者不会发生冲突。 沈阳理工大学课程设计专用纸 NO.5 2.3 系统整体硬件框图 Data_bus 8
9、 个按键 8个 LED 灯 图 2.4 系统整体硬件框图 CPU 74LS244 CS 74LS273 CS 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 沈阳理工大学课程设计专用纸 NO.6 第 3 章 关键技术 2.1 ARM9处理器 ( 1) ARM 微处理器结构 RISC 体系结构: RISC 结构优先选取使用频最高的简单指令,避免复杂指令RISC 体系结构应具有如下特点: 采用固定长度的指令格式,指令归整、简单、基本寻址方式有 2 3种。 使用单周期指令,便于流水线操作执行。 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载 / 存储指令可 以访问存储器,以
10、提高指令的执行效率。 除此以外, ARM 体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗: 所有的指令都可根据 前面的执行结果决定是否被执行,从而提高指令的执行效率。 可用加载 /存储指令批量传输数据,以提高数据的传输效率。 可在一条数据处理指令中同时完成逻辑处理和移位处理。 在循环处理中使用地址的自动增减来提高运行效率。 (2) ARM 微处理器的寄存器结构 ARM 处理器共有 37个寄存器,被分为若干个组( BANK),这些寄存器包括: 31 个通用寄存器,包括程序计数器( PC 指针),均为 32 位的寄存器。 6个状态寄存器,用以标识 CPU 的工作
11、状态及程序的运行状态,均为 32 位,目前只使用了其中的一部分。 同时, ARM 处理器又有 7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与 之对应。即在任意一种处理器模式下,可访问的寄存器包括15 个通用寄存器( R0 R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在 7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。 (3) ARM 微处理器的指令结构 ARM 微处理器的在较新的体系结构中支持两种指令集: ARM 指令集和 Thumb 指令集。其 中, ARM 指令为 32 位的长度, Thumb 指令为
12、16 位 长度。 Thumb 指令集为ARM 指令集的功能子集,但与等价的 ARM 代码相比较,可节省 30 40以上的沈阳理工大学课程设计专用纸 NO.7 存储空间,同时具备 32 位代码的所有优点。 ( 4) ARM 微处理器的工作状态 从编程的角度看, ARM 一般有两种工作状态: ARM 状态和 Thumb 状态。并可在两个状态之间随时切换。 ARM 状态下,大多数指令都是有条件执行的;而 Thumb 状态下,只有分支指令是有条件执行的。 ( 5) ARM 体系结构的存储器结构 ARM 体系结构可以用两种方式存储:大端格式和小端格式。最大寻址空间为4GB( 232 字节) 。 ( 6)
13、指 令长度和数据类型 ARM 处理器的指令长度可以是 32 位( ARM 状态下),也可以是 16 位( Thumb 状态下)。 ARM 处理器支持字节( 8 位)、半字( 16 位)、字( 32 位)三种数据类型。其中字需要 4字节对齐(地址的低两位为 0)、半字需要 2 字节对齐(地址的最低位为 0)。 ( 7) 处理器模式 ARM 微处理器支持 7 种运行模式: 用户模式( usr) 快速中断模式( fiq) 外部中断模式( irq) 管理模式( svc) 数据访问中止模式( abt) 系统模式( sys) 未定义指令中止模式( und) ( 8) ARM 体系结构所支持的异常类型 复位
14、、未定义指令、软件中断、指令预取中止、数据中止、 IRQ(外部中断请求)、FIQ(快速中断请求)。 ( 9)对中断的响应: 将下一条指令的地址存入相应连接寄存器 LR,以便程序在处理异常返回时能从正确的位置重 新开始执行。若异常是从 ARM 状态进入, LR 寄存器中保存的是下一条指令的地址(当前 PC 4 或 PC 8,与异常的类型有关);若异常是从 Thumb状态 进入,则在 LR 中保存当前 PC 的偏移量。 将 CPSR 复制到相应的 SPSR。 沈阳理工大学课程设计专用纸 NO.8 根据异常的类型,强制转换 CPSR 的运行模式位。 强制 PC 从相关的异常向量地址取下一条指令执行,
15、从而跳转到相应的异常处理程序处。 (10) 各类异常的具体描述: FIQ 异常是为了支持数据传输或者通道处理而设计的。 IRQ 属于正常的中断请求。 ABORT 意味着对存储器的访问失败 2.2 嵌入式 C 语言开发技术 嵌入式 C语言程序设计是利用基本的 C语言知识,面向嵌入式工程实际应用进行程序设计。它首先是 C 语言程序设计,因此必须符合 C语言基本语法,只是它是面向嵌入式的应用而设计的程序。 函数是 C语言程序设计的核心。一个较大 的 C语言程序一般是由一个主函数和若干个子函数组成,每个函数完成一个特定的功能。主函数可以调用其他函数,其他函数之间也可以相互调用。通过函数间的相互调用可以
16、大大减少编程的工作量。 嵌入式开发出来的应用程序最终不是要运行在 PC 上的,而是目标板。所以嵌入式开发就一定会有交叉编译这个环节。 所基于的硬件平台包括两部分: ( 1) 以通用处理器为中心的协议处理模块,用于网络控制协议的处理; ( 2) 以数字信号处理器( DSP)为中心的信号处理模块,用于调制、解调和数 /模信号转换。 2.3 ADS 开发环境 ADS 全称为 ARM Developer Suite 是 ARM 公司推出的新一代 ARM 集成开发工具。现在 ADS 的最新版本是 1.2,它取代了早期的 ADS1.1 和 ADS1.0。 在 ADS 工具诞生之前,一直使用的是 ARM S
17、DT 工具,目前 ARM SDT 工具已经慢慢淘汰。 ADS 除了可以安装在 Windows NT4、 Windows 2000、 Windows 98 和 Windows 95 操作系统下,还支持 Windows XP 和 Windows Me 操作系统。 ADS 软件组成 ADS 由命令行开发工具、 GUT( Graphics User Interface,图形用户界面)沈阳理工大学课程设计专用纸 NO.9 开发环境( Code Warrior 和 AXD)、实用程序和支持软件组成。 (一)命令行开发工具 命令行开发工具在实际应用中比较广泛,用它最大的好处就是可以将许多编译命令写在一个脚本
18、文件中,然后只执行该脚本文件就可以让工具自动完成所有编译的工作。命令行中常用的命令如下 (1) armcc armcc 是 ARM C 编译器,这个编译器通过了 Plum Hall C Validation Suite 为 ANSI C 的一致性测试。 Armcc 用于将用 ANSI C 编写的程序编译成 32为 ARM 指令代码。 在命令控制台环境下,输入以下命令: armcc help 将可以查看 armcc 的语法格式以及最常用的一些操作选项。 armcc 最基本的用法为: armccoptions file1 file2 filen 其中 oprtons 是编译器所需要的选项, fil
19、e1, file2 filen 是相关的文件名。 (2)armcpp 是 ARM C+编译器,它将 ISO C+或 EC+编译成 32 位 ARM 指令代码。该编译器的命令选项和 armcc 的选项基本一样。 ( 3) tcc Tcc 是 Thumb C 编译器,该编译器通过了 Plum Hall C Validation Suite 为ANSI 一致性的测试。 Tcc 将 ANSI C 源代码编译成 16位的 Thumb 指令代码,同时它的编译选项和用法类似 armcc. (4)tcpp Tcpp 是 Thumb C+编译器,它将 ISO C+和 EC+源码编译成 16 位 Thumb 指令代码,同时它的编译选项和用法类似 armcc。 ( 5) armasm Armasm 是 ARM 和 Thumb 的汇编器,它对用 ARM 汇编语言和 Thumb 汇编语言写的源代码进行汇编。在命令行输入 :armasm -help 将会看到 armasm 汇编器的用法以及它的编译选项。 armasmoptions sourcefile objectfile armasmoptions -o objectfile sourcefile 其中 options 为它的选项 ( 6) armlink