第三章 地址译码技术及存储器接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例】 将一个字节输出到输出端口360H。
main( ) { outport (0x360, 0x55); }
4. 用Win98下VC(Visual C++)语言访问 端口
1)在C源程序中嵌入汇编代码: … _asm /* 内联汇编 */ { mov dx,264h mov al,100 out dx,al } …
若用双字节地址作为端口地址,则最多可寻址64K个端口
输入 或 输出 MOV DX,XXXXH IN AX,DX ;16位传送 IN AL,DX ;8位传送 MOV DX,XXXXH OUT DX,AX ;16位传送 OUT AL,DX ;8位传送
或
2.端口输入输出字(节)串指令
• INSB : 端口输入字节串 合法格式: INSB;
• LES 传送目标指针,把指针内容存入ES
目的地址传送指令
例:端口直接与RAM之间传送数据
输入 MOV DX,PORT LES DI,BUFFER_IN INSB ;8位传送 (INSW) ;16位传送
输出 MOV DX,PORT LDS SI,BUFFER_OUT OUTSB ;8位传送 (OUTSW) ;16位传送 。
1.端口输入输出指令
• 汇编语言中的累加器专用传送指令:
IN :输入指令。该指令将一个字或一个字节由输 入端口传送到AX或AL中。 合法格式:IN 累加器 ,端口号 例: IN AL , 0x23H OUT:输出指令。该指令将AX中的16位数或AL 中的8位数输出到端口。 合法格式:OUT 端口号,累加器 例: OUT 0x23H , AL
• 电路结构形式: (1)用比较器和地址开关进行地址译码 (2)使用跳线的可选式译码电路
开关式可选端口地址译码
8位比较器74LS688的可选式译码电路
3.3 GAL器件应用
3.3.1 GAL器件的特点 3.3.2 GAL器件的开发过程及工具
3.3.1 GAL器件的特点
• 什么是GAL器件
GAL(Generic Array Logic,通用阵列逻 辑)是PLD (Programmable Logic Device, 可编程逻辑器件)的一种,包含几百个门 电路。可根据需要设计成多种专用集成电 路。
用门电路进行端口地址译码
• 如何用门电路设计2F8H端口的译码电路
用门电路进行端口地址译码
6 输 入 非 门 8 输入与非门
2 输入或门
4 输入与非门
2F8H端口读译码电路
用门电路进行端口地址译码
2E2H端口读写译码电路
用译码器进行端口地址译码
译码器: 2-4线译码器 74LS139 3-8线译码器 74LS138 4-16线译码器 74LS154
4. 用Win98下VC(Visual C++) 语言访问端口
2) 用_inp(), _outp()函数
_inp :从端口输入一个字节。 原型:int _inp( unsigned short port ); 例:int Port=0x08; int Byte; Byte=_inp(Port); _outp:将数据输出到字节型端口。 原型: int _ outp( unsigned short port, unsigned char value);
④编程器编程。将生成的编程文件下载到编程器,对 器件编程。
2.独立编址
微处理器设置专门的输入/输出指令来访问 端口,产生专用访问检测信号,与地址线结合, 形成一个独立的I/O空间。
两种编址方式的比较
优缺点 编址方式
优点
缺点
①使用访问存储器 ①占用存储器的地址 统一编址 的指令,指令类型 空间,使存储器容量 多,功能齐全; 减小 ②端口编址空间大。 ②指令长度比I/O指令 要长,执行时间较长。 ①I/O指令和访问存 ①I/O指令类型少,一 独立编址 储器的指令区别明 般只能对端口进行传 显,使程序清晰, 送操作。 便于理解。②使用 专门的控制信号。
C语言中的端口读/写函数示例
【例】 利用inportb( )函数从指定的输入端口 2F0H读取一个字节的数据,并显示在屏幕上。 main( ) { unsigned char c; c = inport(0x2f0); printf(“data = %0x”,c); }
C语言中的端口读/写函数示例
例:I/O端口与累加器传送数据
假设PORT是一个8位的字节地址,则最多可寻址 256个端口 输入 IN AX,PORT IN AL,PORT 输出 OUT PORT,AX OUT PORT,AL (输入16位数据) (输入8位数据) (输出16位数据) (输出8位数据)
例:I/O端口与累加器传送数据
3.1.3 端口访问指令
1) 16位汇编指令:端口输入输出指令(累加器专用传送 指令): IN、OUT 2) 32位汇编指令:端口输出字(节)串指令: INSB、 INSW、OUTSB、OUTSW
3) C语言I/O语句:inport(), outport();
4) C++语言I/O语句:_inp(), _outp();
德才兼备 知行合一
第三章 地址译码技术及存储器接口
微机接口技术
第3章 地址译码技术 及存储器接口
学习目标:
◆ 掌握I/O端口的概念及端口地址的编址方式; ◆ 掌握访问I/O端口的指令; ◆ 掌握固定式端口地址译码、开关式可选端口地 址译码的实现方法。重点掌握地址译码的原则和 端口地址范围的计算方法; ◆ 了解GAL器件的特点及其在地址译码电路中的 作用。掌握用GAL16V8进行译码设计的过程以及 应注意的问题; ◆ 掌握SRAM、DRAM、 EPROM与CPU典型的 连接方式。重点掌握三总线的连接以及采用不同 的连接方法时地址范围的计算方法。
getch( ): 从控制台读取一个字符,但不显示在屏幕上 原型:int getch(void)
3.C语言中的端口读/写函数 (续)
kbhit( ): 检查当前是否有键盘输入,若有则返回一个 非0值,否则返回0 原型: int kbhit(void);
delay( ): 延时 原型:void delay(int ms); sound( ): 以指定频率打开PC扬声器 原型: void sound(unsigned frequency);
3.3.1 GAL器件的特点
•GAL器件的特点:
①实现多种逻辑功能,它可以实现组合逻辑 电路和时序逻辑电路的多种功能。 ②采用电擦除工艺,门阵列的每个单元可以 反复改写(至少100次)。
③具有硬件加密单元,可以防止抄袭电路设 计和非法复制。 ④速度高而功耗低。
3.3.1 GAL器件的特点
• 用GAL器件进行I/O地址译码的优点:
3.1.1 I/O端口概述
I/O接口:
CPU与外围设备连接的中间部件(电路),是 CPU与外界进行信息交换的电子系统。
I/O端口:
I/O接口电路中能被CPU直接访问的寄存器 或某些特定器件称为端口。CPU通过这些端口 发送命令、读取状态和传送数据。
3.1.2 端口编址方式
1.统一编址
从存储空间划出一部分地址空间给I/O设备, 把I/O接口中的端口当作存储器单元一样进行访问, 不设置专门的I/O指令。与地址线结合,形成一个 独立的I/O空间。
3.C语言中的端口读/写函数
在接口设计中,常用到的Turbo C函数如下:
inportb( ):从指定端口读入一个字节 原型:void inportb (int port); outport( ):从指定端口输出一个字节 原型:void outportb (int port, unsigned char value); clrscr( ): 清除文本模式窗口 清屏的意思 原型:void clrscr(void);
译码输入
A B C G1 G2A G2B
译码使能
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
译码输 出
74LS138 译码器
用译码器进行端口地址译码
3-8译码器74LS138的真值表
用译码器进行端口地址译码
PC/XT系统板上的端口地址译码电路
3.2.3 开关式可选端口地址译码
• 使用开关式端口地址译码的优点: (1)适应不同的地址分配方法 (2)便于系统以后的扩充
3.2.2 固定式端口地址译码
• 固定式端口译码:
接口中用到的端口地址不能更改。一 般接口卡中大部分都采用固定式译码。 • 固定式端口译码方法: (1)用门电路进行端口地址译码 (2)用译码器进行端口地址译码
用门电路进行端口地址译码
门电路: 与门、非门、或门、与非门、或非门等
• • • •
74LS30为 8 输入与非门 74LS20为 4 输入与非门 74LS32为 2 输入或门 74LS04为 6 输入非门(反相器)
3.1.4 I/O端口地址分配
1) PC微机I/O端口有16根,对应的I/O端口编址可达 64K字节。
2) 其端口地址译码采用非完全译码方式,既只考虑 了低10位地址线:A9~A0,而没有考虑高6位地址线 A15~A10。 3) I/O端口地址范围是:0x0000~0x03ff,总共1024 个端口。其中,前256个端口(000~0FFH)供系统板上 的I/O接口芯片使用;后756(100~3FFH)为扩展槽上 的I/O接口控制卡使用
芯片内部的地址译码电路来选择该接口电路的某 个寄存器端口,即实现接口芯片的片内寻址。
I/O端口地址译码相关信号
I/O地址译码电路不仅有地址信号有关还与控制信号有关: ① 用A0~A910根地址线对端口地址范围限定
② 利用IOR、IOW信号控制对端口的读写。
③ 用AEN(DMA控制器地址允许输出端)信号控制非 DMA传送。 ④ 用I/O CS16(ISA总线I/O16位片选信号)信号控制是8 位还是16位的I/O端口 ⑤ 用SBHE(或BHE)信号控制端口奇偶地址。
第3章 地址译码技术及存 储器接口
本章目录:
3.1 I/O端口 3.2 I/O端口地址译码 3.3 GAL器件在I/O地址译码电路中应用 3.4 半导体存储器接口 习题与思考题
3.1 I/O端口
3.1.1 3.1.2 3.1.3 3.1.4
I/O端口概述 端口编址方式 端口访问指令 I/O端口地址分配
3.2.1 I/O端口地址译码方法
• I/O端口地址译码的方法,通常是由地址信号和控 制信号的不同组合来选择端口地址。 • 一般把地址信号分为两部分: ① 高位地址线与CPU或总线的控制信号组合, 经过译码电路产生一个片选信号去选择某个I/O接 口芯片,从而实现接口芯片的片间寻址;
② 低位地址线直接连到I/O接口芯片,经过接口
①廉价
②具有较高集成度,体积下,可靠性高
③可被多次修改和反复使用 ④ 运行速度快 ⑤生产周期短
3.3.2 GAL器件的开发过程及工具
• GAL开发工具:
①编程写百度文库器
② PLD的开发软件
③ 计算机
3.3.2 GAL器件的开发过程及工具
•GAL器件的开发过程:
①设计构思。用真值表、逻辑方法、状态图三中的任 一种将所要设计的问题变为设计文件。 ②选择器件型号。根据设计要求,选择合适的工业器 件型号,要考虑到输入、输出的引脚数目,是组合 逻辑器件还是时序逻辑器件等。 ③将设计文件按照所应用的HDL语言的要求,写成源 文件,然后上机编译、仿真和测试。
• INSW : 端口输入字串 合法格式: INSW; • OUTSB:端口输出字节串 合法格式: OUTSB; • OUTSW:端口输出字串 合法格式: OUTSW;
目的地址传送指令
• LDS 传送目标指针,把指针内容存入DS 指令格式: LDS 目标寄存器 ,源操作数 指令功能:把4个字节地址指针(包括一 个段地址和一个偏移地址)从源操作数指定 的4个存储单元取出,低地址的两个字节送目 的寄存器,高地址的两字节送DS寄存器。
系统主板上I/O接口芯片的 端口地址
I/O扩展槽上接口控制卡的 端口地址
选I/O端口地址时注意问题
① 凡是已被系统配置所占用的地址一律不能 使用。 ② 未被占用的地址,用户可以使用,但申明 保留的地址不能使用。
③ 一般用户可使用300~31FH地址。
3.2 I/O端口地址译码
3.2.1 I/O端口地址译码方法 3.2.2 固定式端口地址译码 3.2.3 开关式可选端口地址译码
main( ) { outport (0x360, 0x55); }
4. 用Win98下VC(Visual C++)语言访问 端口
1)在C源程序中嵌入汇编代码: … _asm /* 内联汇编 */ { mov dx,264h mov al,100 out dx,al } …
若用双字节地址作为端口地址,则最多可寻址64K个端口
输入 或 输出 MOV DX,XXXXH IN AX,DX ;16位传送 IN AL,DX ;8位传送 MOV DX,XXXXH OUT DX,AX ;16位传送 OUT AL,DX ;8位传送
或
2.端口输入输出字(节)串指令
• INSB : 端口输入字节串 合法格式: INSB;
• LES 传送目标指针,把指针内容存入ES
目的地址传送指令
例:端口直接与RAM之间传送数据
输入 MOV DX,PORT LES DI,BUFFER_IN INSB ;8位传送 (INSW) ;16位传送
输出 MOV DX,PORT LDS SI,BUFFER_OUT OUTSB ;8位传送 (OUTSW) ;16位传送 。
1.端口输入输出指令
• 汇编语言中的累加器专用传送指令:
IN :输入指令。该指令将一个字或一个字节由输 入端口传送到AX或AL中。 合法格式:IN 累加器 ,端口号 例: IN AL , 0x23H OUT:输出指令。该指令将AX中的16位数或AL 中的8位数输出到端口。 合法格式:OUT 端口号,累加器 例: OUT 0x23H , AL
• 电路结构形式: (1)用比较器和地址开关进行地址译码 (2)使用跳线的可选式译码电路
开关式可选端口地址译码
8位比较器74LS688的可选式译码电路
3.3 GAL器件应用
3.3.1 GAL器件的特点 3.3.2 GAL器件的开发过程及工具
3.3.1 GAL器件的特点
• 什么是GAL器件
GAL(Generic Array Logic,通用阵列逻 辑)是PLD (Programmable Logic Device, 可编程逻辑器件)的一种,包含几百个门 电路。可根据需要设计成多种专用集成电 路。
用门电路进行端口地址译码
• 如何用门电路设计2F8H端口的译码电路
用门电路进行端口地址译码
6 输 入 非 门 8 输入与非门
2 输入或门
4 输入与非门
2F8H端口读译码电路
用门电路进行端口地址译码
2E2H端口读写译码电路
用译码器进行端口地址译码
译码器: 2-4线译码器 74LS139 3-8线译码器 74LS138 4-16线译码器 74LS154
4. 用Win98下VC(Visual C++) 语言访问端口
2) 用_inp(), _outp()函数
_inp :从端口输入一个字节。 原型:int _inp( unsigned short port ); 例:int Port=0x08; int Byte; Byte=_inp(Port); _outp:将数据输出到字节型端口。 原型: int _ outp( unsigned short port, unsigned char value);
④编程器编程。将生成的编程文件下载到编程器,对 器件编程。
2.独立编址
微处理器设置专门的输入/输出指令来访问 端口,产生专用访问检测信号,与地址线结合, 形成一个独立的I/O空间。
两种编址方式的比较
优缺点 编址方式
优点
缺点
①使用访问存储器 ①占用存储器的地址 统一编址 的指令,指令类型 空间,使存储器容量 多,功能齐全; 减小 ②端口编址空间大。 ②指令长度比I/O指令 要长,执行时间较长。 ①I/O指令和访问存 ①I/O指令类型少,一 独立编址 储器的指令区别明 般只能对端口进行传 显,使程序清晰, 送操作。 便于理解。②使用 专门的控制信号。
C语言中的端口读/写函数示例
【例】 利用inportb( )函数从指定的输入端口 2F0H读取一个字节的数据,并显示在屏幕上。 main( ) { unsigned char c; c = inport(0x2f0); printf(“data = %0x”,c); }
C语言中的端口读/写函数示例
例:I/O端口与累加器传送数据
假设PORT是一个8位的字节地址,则最多可寻址 256个端口 输入 IN AX,PORT IN AL,PORT 输出 OUT PORT,AX OUT PORT,AL (输入16位数据) (输入8位数据) (输出16位数据) (输出8位数据)
例:I/O端口与累加器传送数据
3.1.3 端口访问指令
1) 16位汇编指令:端口输入输出指令(累加器专用传送 指令): IN、OUT 2) 32位汇编指令:端口输出字(节)串指令: INSB、 INSW、OUTSB、OUTSW
3) C语言I/O语句:inport(), outport();
4) C++语言I/O语句:_inp(), _outp();
德才兼备 知行合一
第三章 地址译码技术及存储器接口
微机接口技术
第3章 地址译码技术 及存储器接口
学习目标:
◆ 掌握I/O端口的概念及端口地址的编址方式; ◆ 掌握访问I/O端口的指令; ◆ 掌握固定式端口地址译码、开关式可选端口地 址译码的实现方法。重点掌握地址译码的原则和 端口地址范围的计算方法; ◆ 了解GAL器件的特点及其在地址译码电路中的 作用。掌握用GAL16V8进行译码设计的过程以及 应注意的问题; ◆ 掌握SRAM、DRAM、 EPROM与CPU典型的 连接方式。重点掌握三总线的连接以及采用不同 的连接方法时地址范围的计算方法。
getch( ): 从控制台读取一个字符,但不显示在屏幕上 原型:int getch(void)
3.C语言中的端口读/写函数 (续)
kbhit( ): 检查当前是否有键盘输入,若有则返回一个 非0值,否则返回0 原型: int kbhit(void);
delay( ): 延时 原型:void delay(int ms); sound( ): 以指定频率打开PC扬声器 原型: void sound(unsigned frequency);
3.3.1 GAL器件的特点
•GAL器件的特点:
①实现多种逻辑功能,它可以实现组合逻辑 电路和时序逻辑电路的多种功能。 ②采用电擦除工艺,门阵列的每个单元可以 反复改写(至少100次)。
③具有硬件加密单元,可以防止抄袭电路设 计和非法复制。 ④速度高而功耗低。
3.3.1 GAL器件的特点
• 用GAL器件进行I/O地址译码的优点:
3.1.1 I/O端口概述
I/O接口:
CPU与外围设备连接的中间部件(电路),是 CPU与外界进行信息交换的电子系统。
I/O端口:
I/O接口电路中能被CPU直接访问的寄存器 或某些特定器件称为端口。CPU通过这些端口 发送命令、读取状态和传送数据。
3.1.2 端口编址方式
1.统一编址
从存储空间划出一部分地址空间给I/O设备, 把I/O接口中的端口当作存储器单元一样进行访问, 不设置专门的I/O指令。与地址线结合,形成一个 独立的I/O空间。
3.C语言中的端口读/写函数
在接口设计中,常用到的Turbo C函数如下:
inportb( ):从指定端口读入一个字节 原型:void inportb (int port); outport( ):从指定端口输出一个字节 原型:void outportb (int port, unsigned char value); clrscr( ): 清除文本模式窗口 清屏的意思 原型:void clrscr(void);
译码输入
A B C G1 G2A G2B
译码使能
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
译码输 出
74LS138 译码器
用译码器进行端口地址译码
3-8译码器74LS138的真值表
用译码器进行端口地址译码
PC/XT系统板上的端口地址译码电路
3.2.3 开关式可选端口地址译码
• 使用开关式端口地址译码的优点: (1)适应不同的地址分配方法 (2)便于系统以后的扩充
3.2.2 固定式端口地址译码
• 固定式端口译码:
接口中用到的端口地址不能更改。一 般接口卡中大部分都采用固定式译码。 • 固定式端口译码方法: (1)用门电路进行端口地址译码 (2)用译码器进行端口地址译码
用门电路进行端口地址译码
门电路: 与门、非门、或门、与非门、或非门等
• • • •
74LS30为 8 输入与非门 74LS20为 4 输入与非门 74LS32为 2 输入或门 74LS04为 6 输入非门(反相器)
3.1.4 I/O端口地址分配
1) PC微机I/O端口有16根,对应的I/O端口编址可达 64K字节。
2) 其端口地址译码采用非完全译码方式,既只考虑 了低10位地址线:A9~A0,而没有考虑高6位地址线 A15~A10。 3) I/O端口地址范围是:0x0000~0x03ff,总共1024 个端口。其中,前256个端口(000~0FFH)供系统板上 的I/O接口芯片使用;后756(100~3FFH)为扩展槽上 的I/O接口控制卡使用
芯片内部的地址译码电路来选择该接口电路的某 个寄存器端口,即实现接口芯片的片内寻址。
I/O端口地址译码相关信号
I/O地址译码电路不仅有地址信号有关还与控制信号有关: ① 用A0~A910根地址线对端口地址范围限定
② 利用IOR、IOW信号控制对端口的读写。
③ 用AEN(DMA控制器地址允许输出端)信号控制非 DMA传送。 ④ 用I/O CS16(ISA总线I/O16位片选信号)信号控制是8 位还是16位的I/O端口 ⑤ 用SBHE(或BHE)信号控制端口奇偶地址。
第3章 地址译码技术及存 储器接口
本章目录:
3.1 I/O端口 3.2 I/O端口地址译码 3.3 GAL器件在I/O地址译码电路中应用 3.4 半导体存储器接口 习题与思考题
3.1 I/O端口
3.1.1 3.1.2 3.1.3 3.1.4
I/O端口概述 端口编址方式 端口访问指令 I/O端口地址分配
3.2.1 I/O端口地址译码方法
• I/O端口地址译码的方法,通常是由地址信号和控 制信号的不同组合来选择端口地址。 • 一般把地址信号分为两部分: ① 高位地址线与CPU或总线的控制信号组合, 经过译码电路产生一个片选信号去选择某个I/O接 口芯片,从而实现接口芯片的片间寻址;
② 低位地址线直接连到I/O接口芯片,经过接口
①廉价
②具有较高集成度,体积下,可靠性高
③可被多次修改和反复使用 ④ 运行速度快 ⑤生产周期短
3.3.2 GAL器件的开发过程及工具
• GAL开发工具:
①编程写百度文库器
② PLD的开发软件
③ 计算机
3.3.2 GAL器件的开发过程及工具
•GAL器件的开发过程:
①设计构思。用真值表、逻辑方法、状态图三中的任 一种将所要设计的问题变为设计文件。 ②选择器件型号。根据设计要求,选择合适的工业器 件型号,要考虑到输入、输出的引脚数目,是组合 逻辑器件还是时序逻辑器件等。 ③将设计文件按照所应用的HDL语言的要求,写成源 文件,然后上机编译、仿真和测试。
• INSW : 端口输入字串 合法格式: INSW; • OUTSB:端口输出字节串 合法格式: OUTSB; • OUTSW:端口输出字串 合法格式: OUTSW;
目的地址传送指令
• LDS 传送目标指针,把指针内容存入DS 指令格式: LDS 目标寄存器 ,源操作数 指令功能:把4个字节地址指针(包括一 个段地址和一个偏移地址)从源操作数指定 的4个存储单元取出,低地址的两个字节送目 的寄存器,高地址的两字节送DS寄存器。
系统主板上I/O接口芯片的 端口地址
I/O扩展槽上接口控制卡的 端口地址
选I/O端口地址时注意问题
① 凡是已被系统配置所占用的地址一律不能 使用。 ② 未被占用的地址,用户可以使用,但申明 保留的地址不能使用。
③ 一般用户可使用300~31FH地址。
3.2 I/O端口地址译码
3.2.1 I/O端口地址译码方法 3.2.2 固定式端口地址译码 3.2.3 开关式可选端口地址译码