串行输入并行输出的移位寄存器-EDA仿真

串行输入并行输出的移位寄存器-EDA仿真
串行输入并行输出的移位寄存器-EDA仿真

串行输入/并行输出的移位寄存器

//功能模块部分

module shifter_sipo(data_in,clk,clr,shift_en,data_out); //定义模块名及输入、输出变量parameter size=4; //定义size为常数4

input data_in,clk,clr,shift_en; //输入端口

output [size:1] data_out; //输出端口

reg [size:1] data_out; //输出变量为四位的寄存器型

always@(posedge clk) //always过程块[敏感事件列表(时钟上升沿有效)] if(!clr) //如果清零信号不为零

data_out='b0; //把二进制0赋给输出端口data_out

else if(shift_en) //如果shift-en不为0

begin //串行块

data_out=data_out<<1; // data_out左移一位,结果原赋给data_ou

data_out[1]=data_in; //把输入端口的值赋给输出端口的第一位

end

endmodule

//测试模块部分

module sti_shifter;//测试模块名

parameter size=8; //定义size为常数8

wire [size:1] data_out; //定义data_out为8位的连线形

reg clk,clr,data_in,shift_en; //定义clk,clr,data_in,shift_en为寄存型shifter_sipo sh1(data_in,clk,clr,shift_en,data_out); //调用功能模块

defparam sh1.size=size; //对实例sh1的size变量进行重新赋值initial begin // initial过程块

clk = 0; //把0赋给变量clk

clr = 1; //把1赋给变量clr

shift_en=1; // 把1赋给变量shift_en

data_in = 0; // 把0赋给变量data_in

#10 data_in=1; //10个时间单位后,把1赋给变量data_in

#20 data_in=0; //20个时间单位后,把0赋给变量data_in

#30 data_in=1; //30个时间单位后,把1赋给变量data_in

#40 data_in=0; //40个间单位后,把0赋给变量data_in

#50 clr=0; //50个时间单位后,把0赋给变量clr

#10 data_in=1; //10个时间单位后,把1赋给变量data_in

#20 clr=1; //20个时间单位后,把1赋给变量clr

#50 shift_en=0; // 50个时间单位后,把0赋给变量shift_en

#40 data_in=0; // 40个时间单位后,把0赋给变量data_in

#10 shift_en=1; // 10个时间单位后,把1赋给变量shift_en

#40 data_in=1; // 40个时间单位后,把1赋给变量data_in

#20 $finish; //20个时间单位后,结束仿真任务

end // initial begin

always #5 clk = ~clk; //产生时钟信号

always #10 $display ($time," clr=%b shift_en=%b data_in=%b ->data_out=%b

",clr,shift_en, data_in, data_out); //每隔10个时间单位,显示输出:当前的仿真时间,变量clr,shift_en, data_in, data_out的值(循环执行)

endmodule // stumulus

仿真波形图

总图

2.

3

并行输入及输出实验

学习情景四并行输入与输出 学习目标: 了解并行通信的基本概念; 掌握键盘的基本组成及工作原理; 掌握七段LED显示器的基本组成及工作原理。 技能目标: 能够正确在AT89S52外连接键盘和显示设备。 能够灵活应用典型键盘、显示电路构成各种实际电路。 在数据通信与计算机领域中,有两种基本的数据传送方式,即串行数据传送方式与并行数据传送方式,也称串行通信与并行通信。串行通信将在以后介绍。 数据在多条并行传输线上各位同时传送的方式,称为并行传送方式,多用于近距离传送,如图4.1(a)所示;而数据在单条一位宽的传输线上按时间先后一位一位地传送,称为串行数据传送方式,常用于远距离传送,如图4.1(b)所示。 在单片机应用系统中,通常都有操作面板。操作人员通过操作面板实现与应用系统的信息交流,包括下达命令、修改程序和参数、干预应用系统的状态、显示运行状态和运行结果。 本学习环境主要介绍人机对话通道中常用的输入设备――键盘,输出设备――LED 显示器。 a)并行通信方式 (b)串行通信方式 第一部分项目要求 设计一个4×4矩阵键盘与AT89S52接口电路。要求用查询法读取行列键盘键码,并将键码存入内部RAM 32H单元。 第二部分相关知识 键盘是由若干个按键组成的开关矩阵,它是最简单的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信。若键盘闭合键的识别是由专用硬件实现的,则称为编码键盘;若用软件实现闭合键识别的,则称为非编码键盘。非编码键盘又分为行列式和独立式两种。本项目主要讨论,非编码键盘的工作原理、接口技术和程

序设计。 键盘接口应有以下功能: ? 键扫描功能,即检测是否有键闭合; ? 键识别功能,确定被闭合键所在的行列位置; ? 产生相应的键值功能; ? 消除按键抖动功能。 一、 键盘工作原理 1.按键去抖动 常用键盘的按键是一个 机械开关结构,被按下时,由 于机械触点的弹性及电压突 跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图4.2所示。抖动时间长短与按键的结构和机械特性有关,一般为5~10 ms 。而按健的闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。 去抖动有硬件和软件两种方法。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性,图4.3为利用双稳电路的去抖动电路;而软件方法则是采用时间延迟以躲过抖动(大约延时20-30ms 即可),待行线上状态确定之后,再进行状态输入。一般为简单起见多采用软件方法。 图4.3去抖动电路 2.按键连接方式 键盘和CPU 的连接方式可分为独立式键盘和矩阵式键盘。 ① 独立式键盘 独立式是一组相互独立的按健,这些按键可直接与单片机的I/O 口连接,即每个按键独占一条口线,接口简单。独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合。 图4.4(a)是一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接AT89S52的I/O 口。从图中可以看出,独立式键盘每一按键都需要一根I/O 线,占用AT89S52的硬件资源较多。 ② 矩阵式键盘 也称行列式键盘,因为键的数目较多,所以按键按行列组成矩阵。图7.4(b)是由4根行线和4根列线组成的16个按键的键盘。与独立式键盘相比,16个按键只占用了8个I/O 口线,因此适用于按键较多的场合。 矩阵式键盘接口处理的内容: 图4.2 键闭合和断开时的电压抖动 图4.4独立式键盘和矩阵式键盘

移位寄存器及其应用(精)

移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、原理说明 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。按代码的移位方向可分为左移、右移和可逆移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同又可分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图8-3-3-1所示。 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输入 C为直接无条件清零端; 端,S L为左移串行输入端;S1、S0为操作模式控制端;R CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表8-3-3-1。 图8-3-3-1 CC40194的逻辑符号及引脚功能 表8-3-3-1 CC40194功能表

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图8-3-3-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表10-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图8-3-3-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。其状态表如表8-3-3-2所示。 表8-3-3-2 环形计数器状态表 图 8-3-3-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图8-3-3-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

实验四:串行接口输入输出实验

实验四串行接口输入输出实验 一、实验目的 1、学习TEC-2000教学计算机I/O接口扩展的方法; 2、学习串行通信的基本知识,掌握串行通信接口的设置和使用方法。 二、实验说明 1、TEC-2000教学机配置了两个串行接口COM1和COM2,其中COM1口是系统默认的串行接口,上电复位后,监控程序对其进行初始化,并通过COM1与PC机终端相连,监控程序负责对COM1进行管理。COM2口预留给实验者扩展使用,监控程序不对COM2进行任何处理,实验者需要对COM2进行初始化、使用和管理。 2、实验前查阅有关资料,了解可编程串行通信接口芯片8251的工作原理,了解8251复位、初始化、数据传输过程控制等方面的知识。注意,①每次对8251复位后(即按了“RESET”键),都需要对其进行初始化,然后再进行正常的数据传输;②每次复位后,只能对8251进行1次初始化,多次初始化将导致串口工作不正常。 3、在使用COM2口时,需要将两片8251芯片之间的跳线短接(缺省状态),以便为COM2正常工作提供所需的控制信号和数据;此外,还需要为其分配端口地址。教学机已将COM2口的C/(/D)与地址总线的最低位A0相连,但片选信号/CS未连,只引出1个插孔,实验时,应将该插孔与标有“I/O /CS”的7个插孔中的1个相连。 三、实验内容 1、为扩展I/O口选择一个地址,即将8251的/CS与标有I/O /CS的一排插孔中的一个相连。 2、将COM2口与终端或另一台运行有PCEC16的PC机的串口相连。 3、用监控程序的A命令,编写一段小程序,先初始化COM2口,再向COM2口发送一些字符,也可从COM2口接收一些字符,或实现两个串口的通信。 四、实验要求 应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中。 五、实验步骤 1、为扩展I/O接口选择一个地址,将8251的/CS与标有I/O /CS的插孔中地址为90~9F的插孔相连; 2、将教学机COM1口与微机PC1相连,在PC1上运行PCEC16.EXE,进入联机状态后保持PCEC的运行状态; 3、断开教学机COM1与PC1的串口线,将其连接到另一台微机PC2的串口上,在PC2上运行PCEC16.EXE联机; 4、用另一条串口线将PC1与教学机的COM2接口相连。 5、与COM1相连的PC2作为主PC,在主PC2上输入程序,和COM2连接的从PC1只作数据输入输出; 6、在主PC上用A、E命令编程对实验机的COM2口进行操作。 1)程序1:初始化COM2口 主PCEC在命令行提示符状态下输入: A 2000 从2000H单元开始输入下面的程序: 2000:MVRD R0,004E ;给R0赋值004E(8251模式寄存器参数) 2002:OUT 91 ;将R0的值输出到COM2口中8251的模式寄存器(地址为0091H) 2003:MVRD R0,0037 ;给R0赋值0037(8251控制寄存器参数) 2005:OUT 91 ;将R0的值输出到COM2口中8251的控制寄存器(地址同为0091H) 2006:RET 在命令行提示符状态下输入G 2000运行初始化程序,完成对COM2口的初始化。注意:每次按“RESET”按键后,在对COM2进行读写操作之前,都应运行该程序。注意,按一次“RESET”按键后,只能对COM2口进行一次初始化操作。 2)程序2:从与COM2口相连的PC输入字符串,在与COM1口相连的PC上显示该字符串。 主PCEC在命令行提示符状态下输入:

移位寄存器 第三章答案

第三章习题参考答案 1.画出以1)(2 4 6 +++=x x x x f 为联接多项式的线性移位寄存器逻辑框图,及其对应的状态图。 解:由1)(2 46+++=x x x x f ,得反馈函数为531621),,,(x x x x x x f ++=Λ,故 (1)逻辑框图: (2)状态图: 状态圈-1: 状态圈-2: 状态圈-3: 状态圈-4: 状态圈-5: 状态圈-6: 状态圈-7: 状态圈-8:

状态圈-9: 状态圈-10: 状态圈-11: 状态圈-12: 2.已知图3-2所示的7级线性反馈移位寄存器: 图3-2 (1)绘出该移位寄存器的线性递推式,联接多项式及特征多项式。 (2)给出状态转移矩阵。 (3)设初态为(1 1 1 1 1 1 1),给出输出序列a 。 解:(1)由逻辑框图得,递推式为: k k k k a a a a ++=+++357 ()0≥k 。 联接多项式为:7 4 2 1)(x x x x f +++=。 特征多项式为:7531)(~ x x x x f +++=

(2)状态转移矩阵:? ? ???? ? ?? ? ? ??0100000 101000000010001000100 000001000000011000000。 (3)输出序列:)111111111(ΛΛ=- a 。 3.设5级线性反馈移位寄存器的联接多项式为1)(2 5 ++=x x x f ,初态为(10101)。求输出序列a 。 解:由联接多项式得,反馈函数为:41521),,,(x x x x x f +=Λ。故以)10101(为初态的状态转移图为: 10101 01010001010001000001100000100000100100100100110100110100110100110100111100111100111101111101111001110001110001110000110010110110111110101110101110101110101→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 由此可得,输出序列为:=a 44444443444444421一个周期 0110100100000011111001010111011…。 4.证明:n 级线性反馈移位寄存器的状态转移变换是n 维线性空间n F 2上的线性变换。 证明:设f T 为n 级线性移位寄存器的状态转移变换,对n F 2,∈?βα,令),,,(110-=n a a a Λα, ),,,(110-=n b b b Λβ,有: ),,,(),,,()(121110∑=--==n i i n i n f f a c a a a a a T T ΛΛα, ),,,(),,,()(1 21110∑=--==n i i n i n f f b c b b b b b T T ΛΛβ。 ) ()() ,,,(),,,() )(,,,() ,,,()(1 211 2112211111100βαβαf f i n n i i i n n i i n i i n i n i n n f f T T b c b b a c a a b a c b a b a b a b a b a T T +=+=+++=+++=+-=-==----∑∑∑ΛΛΛΛ 对 2F k ∈?, ))((),,,(),,,()(1 21110ααf i n n i i n f f T k a c k ka ka ka ka ka T k T ===-=-∑ΛΛ。 故n 级线性反馈移位寄存器的状态转移变换是n 为线性空间n F 2上的线性变换。

实验六---8255并行输入输出

实验六---8255并行输入输出

东南大学 《微机实验及课程设计》 实验报告 实验六 8255并行输入输出

姓名:学号: 专业:测控技术与仪器实验室: 516 同组人员:评定成绩: 一、实验目的 1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示; 2)掌握8段数码管的动态刷新显示控制; 二、(1)实验内容(必做) 6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。 6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。(如56或7f) (2)实验内容(必做一题,选做一题) 6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。 6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出) 三、实验原理 (1)实验预备知识

图 八段式LED 数码管的符号和引脚 (2) 6-1流程图:

N Y 将对应段码输 结 6-1源代码: data segment ioport equ 0ec00h-0280h io8255a equ ioport+288h ;8255A口地址 io8255b equ ioport+28bh ;8255控制寄存器端口地址 led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h

实验五:串行接口输入输出实验

实验五串行接口输入/输出实验 一、实验目的 1、学习TEC-XP+教学计算机I/O接口扩展的方法; 2、学习串行通信的基本知识,掌握串行通信接口芯片的设置和使用方法。 二、实验说明 1、TEC-XP+教学计算机的I/O结构 TEC-XP+教学计算机配置有COM1和COM2两个串行接口,其中COM1是TEC-XP+默认的标准接口,与PC终端相连接,监控程序负责对COM1进行初始化和使用管理。COM2预留给用户扩展使用,监控程序不能识别COM2,也不对COM2进行任何操作,用户需要对COM2进行初始化和使用管理。COM1和COM2均由可编程串行通信接口芯片intel8251芯片构成。 2、Intel8251的组成及控制和使用方法 可编程串行通信接口芯片Intel8251支持同步和异步两种通信方式。在异步方式下,波特率为0~19.2Kbps,数据位可为5、6、7或8位,可设1个奇偶校验位,1个起始位,1个、1.5个或2个停止位。Intel8251内部有7个功能模块负责实现与CPU的数据交换以及与I/O设备的数据通信功能,内部有6个寄存器,其中与异步通信方式的有关的寄存器有5个,即模式寄存器、控制寄存器、状态寄存器、数据发送寄存器和数据接收寄存器。 模式寄存器的功能是设定intel8251的工作模式,控制寄存器的功能是控制intel8251的数据发送和接收等工作过程,状态寄存器的功能是反映intel8251数据发送和接收等工作的状态,各寄存器的格式如图5-1、图5-2和图5-3所示。当CPU把需发送的数据写入数据发送寄存器后,intel8251将自动把数据组成帧并逐位发送出去。Intel8251能自动完成数据接收操作,并把接收到的数据存放在数据接收寄存器中,CPU 从中读取即可。 图5-1模式寄存器格式图5-2 控制寄存器格式 图5-3 状态寄存器格式 CPU对模式寄存器、控制寄存器和数据发送寄存器只能写入,不能读出。对状态寄存器和数据接收寄存器只能读出,不能写入。Intel8251使用2个地址来访问内部的寄存器,其中用偶地址访问数据发送寄存

串行输入并行输出的移位寄存器-EDA仿真

串行输入/并行输出的移位寄存器 //功能模块部分 module shifter_sipo(data_in,clk,clr,shift_en,data_out); //定义模块名及输入、输出变量parameter size=4; //定义size为常数4 input data_in,clk,clr,shift_en; //输入端口 output [size:1] data_out; //输出端口 reg [size:1] data_out; //输出变量为四位的寄存器型 always@(posedge clk) //always过程块[敏感事件列表(时钟上升沿有效)] if(!clr) //如果清零信号不为零 data_out='b0; //把二进制0赋给输出端口data_out else if(shift_en) //如果shift-en不为0 begin //串行块 data_out=data_out<<1; // data_out左移一位,结果原赋给data_ou data_out[1]=data_in; //把输入端口的值赋给输出端口的第一位 end endmodule //测试模块部分 module sti_shifter;//测试模块名 parameter size=8; //定义size为常数8 wire [size:1] data_out; //定义data_out为8位的连线形 reg clk,clr,data_in,shift_en; //定义clk,clr,data_in,shift_en为寄存型shifter_sipo sh1(data_in,clk,clr,shift_en,data_out); //调用功能模块 defparam sh1.size=size; //对实例sh1的size变量进行重新赋值initial begin // initial过程块 clk = 0; //把0赋给变量clk clr = 1; //把1赋给变量clr shift_en=1; // 把1赋给变量shift_en data_in = 0; // 把0赋给变量data_in #10 data_in=1; //10个时间单位后,把1赋给变量data_in #20 data_in=0; //20个时间单位后,把0赋给变量data_in #30 data_in=1; //30个时间单位后,把1赋给变量data_in #40 data_in=0; //40个间单位后,把0赋给变量data_in #50 clr=0; //50个时间单位后,把0赋给变量clr #10 data_in=1; //10个时间单位后,把1赋给变量data_in #20 clr=1; //20个时间单位后,把1赋给变量clr #50 shift_en=0; // 50个时间单位后,把0赋给变量shift_en #40 data_in=0; // 40个时间单位后,把0赋给变量data_in #10 shift_en=1; // 10个时间单位后,把1赋给变量shift_en #40 data_in=1; // 40个时间单位后,把1赋给变量data_in #20 $finish; //20个时间单位后,结束仿真任务 end // initial begin always #5 clk = ~clk; //产生时钟信号 always #10 $display ($time," clr=%b shift_en=%b data_in=%b ->data_out=%b

2.4.1 并行输入串行输出

2.4.1 并行输入串行输出移位寄存器实验 1.步骤: (1)新建工程SHIFT8R; (2)新建VHDL文件SHIFT8R.vhd,编写程序如下: --带有同步并行预置功能的8位右移移位寄存器:SHIFT8R.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFT8R IS PORT( CLK , LOAD : IN STD_LOGIC ; --CLK是移位时钟信号、LOAD是并行数据预置使能信号DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --DIN是8位并行预置数据端口 QB : OUT STD_LOGIC ); --QB是串行输出端口 END ENTITY SHIFT8R; ARCHITECTURE BEHAV OF SHIFT8R IS BEGIN PROCESS(CLK,LOAD) VARIABLE REG8 : STD_LOGIC_VECTOR( 7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK='1' THEN IF LOAD='1' THEN REG8 := DIN; --装载新数据 ELSE REG8(6 DOWNTO 0):= REG8(7 DOWNTO 1); -- 此语句表明:一个时钟周期后将上一时钟周期移位寄存器中的高7位 -- 二进制数赋给此寄存器的低7位 END IF; END IF; QB <= REG8(0); END PROCESS; -- 输出最低位 END ARCHITECTURE BEHAV; (3)保存后编译; (4)新建波形图SHIFT8R.vwf,编辑输入波形; (5)进行功能仿真; (6)进行时序仿真; (7)资源分配; (8)编译后,生成可以配置到CPLD的POF文件。 2.功能仿真结果及分析: 输入:DIN[7:0]8为并行输入信号 输出:QB为串行输出信号 控制:CLK为时钟信号 LAOD并行数据预置使能信号

实验7串行接口输入输出实验

北京林业大学 11学年—12学年第 2 学期计算机组成原理实验任务书 专业名称:计算机科学与技术实验学时: 2 课程名称:计算机组成原理任课教师:张海燕 实验题目:实验七串行接口输入输出实验 实验环境:TEC-XP+教学实验系统、PC机 实验内容 1.串行接口输入输出; 2.串行接口扩展。 实验目的 学习串行口的正确设置与使用。 实验要求 1.实验之前认真预习,明确实验的目的和具体实验内容,做好实验之前的必要准备。 2.想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果; 3.在教学实验过程中,要爱护教学实验设备,记录实验步骤中的数据和运算结果,仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4.实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,运算结果的分析讨论,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 必要知识 串行接口是计算机主机和某些设备之间实现通信,硬件造价比较低廉、标准化程度比较高的一种输入输出接口线路,缺点是通信的速度比较低。从在程序中使用串行接口芯片的角度看,接口芯片内有用户可以访问的4个寄存器,分别是接收CPU送来数据的输出数据缓冲

寄存器,向CPU提供数据的输入数据缓冲寄存器,接收CPU发来的控制命令的控制寄存器,向CPU提供接口运行状态的状态寄存器,必须有办法区分这4个寄存器。接口芯片中还有执行数据串行和并行转换的电路,接口识别电路等。 串行接口用于执行数据的输入输出操作。一次输入或输出操作通常需要两个操作步骤完成,第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(8位的IO端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或输出操作,若执行输入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器堆中的R0寄存器,若执行OUT指令,则需要把R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。接口芯片与输入输出设备之间的数据传送过程无需另外管理,会自动完成。 教学计算机使用8位的IO端口地址,安排在IN和OUT指令的低位字节,指令的高8位用作指令操作码,16为的指令编码全部占满,已经不能再指定要使用的通用寄存器,最终决定用对IN和OUT指令默认使用运算器中的R0完成输入输出操作。IO地址端口的高4为(最高一位的值一定为1)用于通过译码电路产生接口芯片的8个片选信号,低4位用于选择一个芯片内最多16个寄存器。教学计算机中,只为每个串行口芯片地址分配了两个地址,第一路串行接口的端口地址为80H/81H,第二路串行接口的端口地址可以由用户从90/91~F0/F1这8对中选择,把译码器的一个输出连接到接口芯片的片选信号引脚。两个端口地址如何能够按照选择接口芯片内的4个寄存器呢?请注意,4个寄存器中的两个只用于输入,仅对IN 指令有用,另外两个只用于输出,仅对OUT指令有用。2个端口地址和2条输入输出指令有如下4种组合,分别实现如下4项功能: IN 80:完成从接口芯片输入数据缓冲器读出8位数据并传送到R0寄存器低位字节; OUT 80:完成把R0寄存器低位字节的8位数据写入到接口芯片的输出数据缓冲器; IN 81:完成从接口芯片状态寄存器读出8位接口状态信息并传送到R0寄存器低位字节; OUT 81:完成把R0寄存器低位字节的8位命令信息写入到接口芯片的命令寄存器。 可以看到,偶数地址用于输入输出数据,奇数地址用于输入输出状态或命令信息。 实验说明 1.TEC-XP+配置了两个串行接口COM1 和COM2,其中COM1 口是系统默认的串行口,加电复位后,监控程序对其进行初始化,并通过该口与PC 机或终端相连;而COM2 口,留给用户扩展用。

实验六---8255并行输入输出

东南大学 《微机实验及课程设计》 实验报告 实验六 8255并行输入输出 姓名:学号: 专业:测控技术与仪器实验室: 516 同组人员:评定成绩:

一、实验目的 1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示; 2)掌握8段数码管的动态刷新显示控制; 二、(1)实验容(必做) 6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。 6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。(如56或7f) (2)实验容(必做一题,选做一题) 6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。 6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出) 三、实验原理 (1)实验预备知识 图八段式LED数码管的符号和引脚

(2) 6-1流程图: 6-1源代码: data segment ioport equ 0ec00h-0280h io8255a equ ioport+288h ;8255A口地址 io8255b equ ioport+28bh ;8255控制寄存器端口地址 led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h out dx,al sss: mov dx,offset mesg1 ;显示提示信息 mov ah,09h int 21h

实验五 移位寄存器

实验五、移位寄存器的设计 一、实验目的 设计并实现一个异步清零同步置数8位并入并出双向移位寄存器电路。 二、实验原理 在数字电路中,用来存放二进制数据或代码的电路成为寄存器。寄存器按功能可分为:基本寄存器和移位寄存器。移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途也很广。下面是一个并入串出的8位左移寄存器的VHDL描述: library ieee; use ieee.std_logic_1164.all; port(data_in: in std_logic_vector(7 downto 0); clk: in std_logic; load: in std_logic; data_out:out std_logic); end; architecture one of left8 is signal q: std_logic_vector(7 downto 0); begin process(load,clk) begin if load='1' then q<=data_in; data_out<='Z'; elsif clk'event and clk='1' then for I in 1 to 7 loop 图5-1 q(i)<=q(i-1); end loop; data_out<=q(7); end if; end process; end one; 异步清零同步置数8位并入并出双向移位寄存器电路结构图如图5-1所示。 三、实验要求 输入信号有D[0]~D[7]、DIL、DIR、S、LOAD、CLK和CLR,其中CLK接时钟,其余接拨码开关,输出信号有Q[0]~Q[7],接发光二极管。改变拨码开关的状态,观察实验结果。 实验工程项目命名为rlshift,源程序命名为rlshift8.vhd。 四、实验记录 对比较器实验结果造表,得到其真值表。 五、实验报告要求

串行输入并行输出

串行出入并行输出寄存器实验1.步骤: (1)新建工程SHIFT8 (2)新建VHDL文件,编写程序如下: --串行输入并行输出寄存器: LIBRARY IEEE; USE Shift8 IS PORT( DI ,CLK : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY Shift8; ARCHITECTURE BEHA OF SHIFT8 IS SIGNAL TMP : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN TMP(7)<=DI; FOR I IN 1 TO 7 LOOP TMP(7-I)<=TMP(8-I); END LOOP; END IF; END PROCESS; DOUT<=TMP; END ARCHITECTURE BEHA; (3)保存后编译;

(4)新建波形图,编辑输入波形; (5)进行功能仿真; (6)进行时序仿真; (7)资源分配; (8)编译后,生成可以配置到CPLD的POF文件。 2.功能仿真结果及分析: 输入:DI为串行输入信号 输出:DOUT[7:0]为并行输出信号 控制:CLK为时钟信号 (1)功能仿真 波形分析:DI串行输入“01010101” DOUT[0:7]并行输出“01010101” 因此,该设计能够实现串行输出并行输出的功能。(2)时序仿真

从波形图看出来,并行输出中两条相邻输出时间延迟为. 3.资源分配

习题11-串行接口

习题十一串行接口 11.1 为什么串行接口部件中的4个寄存器可以只用1位地址来进行区分? 【答】复位后第一次用奇地址端口写入的值送模式寄存器;然后写入同步字符;然后写控制字。 读奇地址则读状态寄存器。所以奇地址对应模式、控制、状态寄存器,通过读写信号和时序来区分。偶地址对应数据输入、输出缓冲器,通过读写信号来区分。 11.2在数据通信系统中,什么情况下可以采用全双工方式,什么情况下可用半双工方式?【答】如果一个数据通信系统中,有两个信道可以采用全双工方式,只有一个信道只能采用半双工方式。 11.3 什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点? 【答】串行通信以同步信息封装的帧为单位传输。 同步通信,一帧可包含多个字符,要求收发双方传输速率严格一致,帧之间填充同步信息以保证发收双方随时同步,通信效率高。 异步通信,一帧只包含一个字符,帧之间为空闲位,每一帧都同步一次,由于帧小,发收双方传输速率允许有一定误差,但通信效率低。 11.4 什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为 多少? 【答】波特率指码元(波形)传输速率——单位时间内传输的码元个数,单位是Baud。 波特率因子是发送/接收时钟频率与波特率的比值。 时钟频率=64×1200=76800Hz 11.5 标准波特率系列指什么? 【答】标准波特率系列为110,300,600,1200,1800,2400,9600,19200 11.6 设异步传输时,每个字符对应1个超始位、7个信息位、1个奇/偶校验位和1个停止位, 如果波特率为9600,刚每秒能传输的最大字符数为多少个? 【答】即9600/10=960个 11.7 在RS-232-C标准中,信号电平与TTL电平不兼容,问RS-232-C标准的1和0分别对应什 么电平?RS-232-C的电平和TTL电平之间通常用什么器件进行转换? 【答】 RS-232-C将-5V—-15V规定为“1”,将+5V—+15V规定为“0”。将TTL电平转换成RS-232-C电平时,中间要用到MC1488器件,反过来,用MC1489器件,将RS232-C电平转换成TTL电平。 11.8 从8251A的编程结构中,可以看到8251A有几个寄存器和外部电路有关?一共要几个端口 地址?为什么 【答】数据发送寄存器、数据接收寄存器,状态寄存器和命令寄存器。一共2个端口地址。数据发送寄存器(只写)和接收寄存器(只读)共用一个端口地址。命令寄存器(只写)和状态寄存器(只读)共用一个端口地址。 11.9 8251A内部有哪些功能模块?其中读/写控制逻辑电路的主要功能是什么? 【答】8251A有一个数据输入缓冲寄存器和一个数据输出缓冲寄存器,一个发送移位寄存器和一个接收移位寄存器,一个控制寄存器和一个状态寄存器,一个模式寄存器和两个同步字符寄存器等功能模块。读/写控制逻辑电路用来配合数据总线缓冲器工作。其主要功能有:1)接收写信号WR,并将来自数据总线的数据和控制字写入8251A;2)接收读信号RD,并将数据或状态字从8251A送往数据总线;3)接收控制/数据信号C/D,将此信号和读/写信号合起来通知8251A,当前读/写的是数据还是控制字、状态字;4)接收时钟信号CLK,完成8251A的内部定时;5)接收复位信号RESET,使8251A处于空闲状态。 11.10 什么叫异步工作方式?画出异步工作方式时8251A的TxD和RxD线上的数据格式。【答】串行工作方式分为两种类型,一种叫同步方式,另一种叫异步方式。异步工作方式时,两个字符之间的传输间隔是任意的,所以,每个字符的前后都要用一些数位来作同步。在

AD5543BR电流输出串行输入型AD

a AD5543/AD5553 Current Output/ Serial Input, 16-/14-Bit DAC REV.A Information furnished by Analog Devices is believed to be accurate and reliable. However, no responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other rights of third parties that may result from its use. No license is granted by implication or otherwise under any patent or patent rights of Analog Devices. Trademarks and registered trademarks are the property of their respective companies. One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A.Tel: 781/329-4700 https://www.360docs.net/doc/3c10646493.html, Fax: 781/326-8703? 2003 Analog Devices, Inc. All rights reserved. FEATURES 16-Bit Resolution AD554314-Bit Resolution AD5553?1 LSB DNL ?2 LSB INL for AD5543?1 LSB INL for AD5553Low Noise 12 nV/√Hz Low Power, I DD = 10 ?A 0.5 ?s Settling Time 4Q Multiplying Reference-Input 2 mA Full-Scale Current ? 20%, with V REF = 10 V Built-in RFB Facilitates Voltage Conversion 3-Wire Interface Ultracompact MSOP-8 and SOIC-8 Packages APPLICATIONS Automatic Test Equipment Instrumentation Digitally Controlled Calibration Industrial Control PLCs FUNCTIONAL BLOCK DIAGRAM V V FB OUT CS CODE 1.04096 I N L – L S B 0.88152 12288 16384 20480 24575 28672 32768 36864 40960 45056 49152 53248 57344 61440 65536 0.60.4 0.20–0.2–0.4–0.6–0.8 –1.0 Figure 1.Integral Nonlinearity Error FFFFH ST ART 10.000Hz 1k 100k 1010010k 1M 10M 8000H 4000H 1000H 0800H 0400H 0200H 0100H 0080H 0040H 0020H 0010H 0008H 0004H 0002H 0001H 0000H STOP 50 000 000.000Hz 2000H REF LEVEL 0.000dB /DIV 12.000dB MARKER 4 311 677.200Hz MAG (A/R)–2.939dB Figure 2.Reference Multiplying Bandwidth GENERAL DESCRIPTION The AD5543/AD5553 are precision 16-/14-bit, low power,current output, small form factor digital-to-analog converters.They are designed to operate from a single 5 V supply with a ±10 V multiplying reference. The applied external reference V REF determines the full-scale output current. An internal feedback resistor (R FB ) facilitates the R-2R and temperature tracking for voltage conversion when combined with an external op amp. A serial-data interface offers high speed, 3-wire microcontroller compatible inputs using serial data in (SDI), clock (CLK), and chip select (CS ). The AD5543/AD5553 are packaged in ultracompact (3 mm ? 4.7 mm) MSOP-8 and SOIC-8 packages.

八位串行输入串行输出冒泡排序(verilog)

实现功能:八位串行输入串行输出冒泡排序 源文件: module bubble_sort(clk,rst,Load,Sort,Send,Data_in,Data_out); input clk,rst,Load,Sort,Send; input [7:0]Data_in; output reg[7:0] Data_out; reg[7:0] A[1:8]; reg[3:0]k; reg[3:0]i,j; reg [2:0]state,nstate; parameter S_rst=3'd0; parameter S_init=3'd1; parameter S_idle=3'd2; parameter S_load=3'd3; parameter S_prep=3'd4; parameter S_sort=3'd5; parameter S_wait=3'd6; parameter S_send=3'd7; always@(posedge clk or posedge rst) begin if(rst) state<=S_rst; else state<=nstate; end //状态切换 always@(state or Load or Sort or Send or i or k) begin case(state) S_rst: begin nstate=S_init; end S_init: nstate=S_idle; S_idle: begin if(Load==1'b1) nstate=S_load; else if(Sort==1'b1) nstate=S_prep; else nstate = S_idle; end

相关文档
最新文档