当前位置:文档之家› 基于VHDL 的异步串行通信电路设计

基于VHDL 的异步串行通信电路设计

基于VHDL 的异步串行通信电路设计
基于VHDL 的异步串行通信电路设计

 设计与制造

基于V HDL的异步串行通信电路设计

韩佩富,潘 锋,赵新秋

(燕山大学信息科学与工程学院,河北秦皇岛 066004)

摘 要: 本文分析了异步串行通信的帧格式,利用V HDL设计出异步串行通信电路,并通过计算机仿真和实验证明了设计的正确性。

关键词: V HDL;EDA;串行通信

中图分类号:TN702 文献标识码:A 文章编号:1008-0147(2003)04-29-05

Circuit Design of Asynchronous Serial Communication B ased on VH DL

HAN Pei-fu,PAN Feng,ZHAO Xin-qiu

(College of Inf orm ation Science and Engi neeri ng,Y anshan U niversity,

Qi nhuangdao066004,Chi na)

Abstract:In this paper,frame format of asynchronous serial communication is analyzed,and it is also introduced to apply V HDL to design the circuit of asynchronous serial communication.Finally,the ex2 actitude of this design has been proved by means of computer simulation and experiment.

K eyw ords:V HDL;EDA;Serial communication

1 前言

计算机串行通信技术在实际中应用十分广泛,硬件电路可以通过串口将数据传送到计算机,而后利用计算机强大的运算能力进行处理。一般,硬件电路常利用8051等可编程的芯片通过RS-232串行口与计算机进行串行通信。对于这些能与计算机进行串行通信可编程的芯片,如果不熟悉的话,还要参照手册来学习这些芯片的使用后,才能正确运用,并且通常没有完全利用这些芯片的全部功能,还造成芯片的资源浪费。

随着电子技术的发展,现场可编程门阵列FP2G A和复杂可编程逻辑器件CPLD的出现,使得电子系统的设计者利用与器件相应的电子CAD软件,在实验室里就可以设计自己的专用集成电路ASIC 器件。这种可编程ASIC不仅使设计的产品达到小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,实现电子设计自动化。其中电子设计自动化EDA(即Electronic Design Automation)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。V HDL(V HSIC Hardware Description Lan2

 第31卷,第4期Vol.31,No.4

微 电 子 技 术

MICR OE L ECTR ONIC TECHN OLOG Y

总第152期

2003年8月

收稿日期:2002210203

guage )是用来描述从抽象到具体级别硬件的工业标

准语言,它是由美国国防部在80年代开发的HDL ,现在已成为IEEE 承认的标准硬件描述语言。V HDL 支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。利用V HDL 这些优点和先进的EDA 工具,根据具体的实际要求,我们可以自己来设计串口异步通信电路。

2 计算机串口异步通信的帧格式

和波特率

211 串行异步通信的帧格式

在串行异步通信中,数据位是以字符为传送单位,数据位的前、后要有起始位、停止位,另外可以在停止位的前面加上一个比特位(bit )的校验位。其帧格式如图1所示

图1 串行异步通信的帧格式

起始位是一个逻辑0,总是加在每一帧的开始,为的是提醒数据接收设备接收数据,在接收数据位过程中又被分离出去。数据位,根据串行通信协议,允许传输的字符长度可以为5、6、7或8位。通常数

据位为7位或8位,如果要传输非ASCII 数据(假如使用扩展字符设置的文本或者二进制数据),数据位格式就需要采用8位。数据位被传输时从一个字符的最低位数据开始,最高位数据在最后。例如字母C 在ASCII 表中是十进制67,二进制的01000011,

那么传输的将是11000010。校验位是为了验证传输的数据是否被正确接收,常见的校验方法是奇、偶

校验。偶校验,指数据位中1的个数加上校验位(1或0),使其1的总数为偶数。奇校验,指数据位中1的个数加上校验位(1或0),使其1的总数为奇数。另外校验位也可以为0校验或者1校验,即不管数据位中1的个数是多少,校验位始终为0或者1,如果在传输的过程中校验位发生了变化,这就提示出现了某类错误。不过,在传输数据的时候,也可以不用校验位。停止位,为逻辑1,总在每一帧的末尾,

可以是1位、115位或者2位。最常用的是1位,超过1位的停止位通常出现在这样的场合:在处理下一个即将发送来的字符之前接收设备要求附加时间。

212 串行异步通信的波特率

串行口每秒发送或接收数据的位数为波特率。若发送或接收一位数据需要时间为t ,则波特率为1/t ,相应的发送或接收时钟为1/t Hz 。发送和接收

设备的波特率应该设置成一致,如果两者的波特率不一致,将会出现校验错或者帧错。

3 串行发送电路的设计

为简化电路设计的复杂性,我采用的帧格式为:1位开始位+8位数据位+1位停止位,没有校验

位,波特率为9600。311 波特率发生器的设计

要产生9600波特率,要有一个不低于9600Hz 的时钟才可以。为产生高精度的时钟,我选了6MHz (6M 能整除9600)的晶振来提供外部时钟。当然,你也可以选其它频率的时钟来产生9600Hz 的时钟。对于6MHz 时钟,需要设计一个625进制

的分频器来产生9600波特率的时钟信号。用V HDL 设计分频器较简单,我在这里就不再给出源

程序了。

312 发送电路的设计

根据采用的帧格式,需要发送的数据为10位(1位开始位、8位数据位、1位停止位),在发送完这10位后,就应该停止发送,并使发送端电平处于逻辑1,然后等候下次的发送。下面是实现上述功能的V HDL 源程序:

library ieee ;

use ieee.std-logic-1164.all ;entity Com is

port (clk ,en :in std-logic ;

Send-data :in std-logic-vector (9downto 0);serial :out std-logic );end com ;

architecture com-arc of com is begin process (clk )

variable count :integer range 0to 9:=0;begin

 30 微 电 子 技 术

if en =‘0’then count :=0;

serial <=‘1’;

elsif rising-edge (clk )then if count =9then serial <=Send-data (9);else

serial <=Send-data (count );count :=count +1;end if ;end if ;end process ;end com-arc ;

其中,Send-data (0to 9)表示需要发送的数据帧,发送时,开始位Send-data (0)必须为逻辑0,停止

位Send-data (9)必须为逻辑1,否者与硬件电路连接的设备接收到的数据会出现错误。在发送每一帧之前,首先给输入端en 一个低电平脉冲,让电路复位(count 置0),然后开始发送。变量count 在进程中用来记录发送的数据数目,当数据帧发送完后,发送端就一直发送停止位(逻辑1)。313 时序仿真

选EDA 工具,对V HDL 源程序编译。我用的是Altera 公司的MAX +plus Ⅱ913Baseline ,这个工具支持V HDL 的编译、仿真。图2是编译后的仿真结果,其中,Clk 为频率9600Hz 的时钟,Send-da 2ta0为开始位,Send-data[8..0]为数据位,Send-data9

为停止位。结果显示,输出完全是按数据帧格式发送的

图2 串行发送电路的时序仿真

4 串行接收电路的设计

接收电路比发送电路要复杂的多,接收电路要

时实检测起始位的到来,一旦检测到起始位到,就要将这一帧数据接收下来。为提高接收的准确性,减少误码率,每一位数据都用3倍频的波特率对数据进行采样(如图3所示),然后对3次采样结果进行判决:如果3次采样中至少有2次为高电平,则接收这一位数据被判决为高电平,否者,为低电平

图3 数据的3次采样

411 波特率发生器和采样时钟的设计

为完成3次采样,除了频率为9600Hz 的接收时钟外,还要有一个3倍频的采样时钟。下面是实现上述功能的V HDL 源程序:

library ieee ;

use ieee.std-logic-1164.all ;

entity count625is

port (clk ,en :in std-logic ;Clock1,Clock3:out std-logic );

end count625;

architecture count625-arc of count625is begin

process (clk ,en )

variable count :integer range 0to 625:=0;begin

if en =‘0’then

NUll ;

elsif (rising-edge (clk ))then

 第4期 韩佩富,潘 锋,赵新秋:基于VHDL 的异步串行通信电路设计31

 

count:=count+1;

if count=625then

Clock1<=‘1’;count:=0;

else

Clock1<=‘0’;

end if;

if(count=100or count=300or count= 500)then

Clock3<=‘1’;

else

Clock3<=‘0’;

end if;

end if;

end process;

end count625-arc;

其中clk为6MHz的时钟,en控制波形的产生, Clock1为9600Hz的接收时钟,Clock3为3倍频的采样时钟。

412 接收电路的设计

串行接收电路首先要能判断接收数据的到来,即每一帧的开始,然后对数据进行3次采样,最后判决输出。为简化设计,帧格式仍然采用:1位开始位+8位数据位+1位停止位。下面是我设计的接收电路V HDL程序:

library ieee;

use ieee.std-logic-1164.all;

entity com-receive10is

port(com,clr,clk1,clk3:in std-logic;Q:out std-logic-vector(0to9);Valid:out std-logic);

end com-receive10;

architecture com-receive10-arc of com-receive10 is

Signal Enable:std-logic:=‘1’;

Signal Hold:std-logic:=‘0’;

Signal N:std-logic-vector(0to2):=“000”;

begin

Valid<=Enable and Hold;

process(clk1,clr)

variable Num:integer range0to9:=0;

begin

if clr=‘0’then

Enable<=‘1’;Num:=0;Q<=“0000000000”;

elsif(rising-edge(clk1))then

Q(Num)<=(N(0)and N(1))or(N(1) and N(2))or(N(0)and N(2));

if Num=9then

Enable<=‘0’;Num:=0;

else

Num:=Num+1;

end if;

end if;

end process;

process(clk3,clr)

variable m:integer range0to2:=0;

begin

if clr=‘0’then

m:=0;

elsif(rising-edge(clk3))then

N(m)<=com;

if m=2then

m:=0;

else

m:=m+1;

end if;

end if;

end process;

process(clr,com)

begin

if clr=‘0’then

Hold<=‘0’;

elsif falling-edge(com)then

Hold<=‘1’;

end if;

end process;

end com-receive10-arc;

其中,N(m)<=com用来对波形采样,Q (Num)<=(N(0)and N(1))or(N(1)and N(2)) or(N(0)and N(2))是对其中1位数据的3次采样结果判决,Num用来记录接收的数据位数,falling-edge(com)是用来时实检测每一帧的起始位(即下降沿)的到来,Valid<=Enable and Hold用来输出到波特率发生器电路单元控制时钟的产生,最后将一帧的10位数据输出。

用MAX+plusⅡ913Baseline将上面两个V HDL文件制成库器件,然后在电路图上调出来,

 32 微 电 子 技 术

最后做成的串行接收电路图如图4所示

图4 串行接收电路图

413 时序仿真

时序仿真如图5所示,Receive 为接收到的序列

波形,最后结果:接收到的数据位为6D ,起始位为0,停止位为1

图5 串行接收电路的时序仿真

5 结束语

V HDL 语言设计的出现从根本上改变了以往

数字电路的设计模式,使电路设计由硬件设计转变

为软件设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。利用V HDL 设计的灵活性,根据串行通信协议的要求,我们可以在实验室利用先进的EDA 工具,用V HDL 设计出符合自己实际需求的异步串行通信电路。

本文设计出的基于V HDL 异步串行通信电路,在实验室已经与计算机串口RS -232进行了通信实验(注意:TTL 和RS -232逻辑电平的转换)。实

验证明,0至255的所有数据都能被正确收、发。

参考文献:

[1](美)James R.Armstrong ,F.G ail Fray 著.李宗伯,王蓉

晖译.VHDL 设计表示和综合.北京:机械工业出版社,

20021

[2]Skahill K.朱明程,孙普译.可编程逻辑系统的VHDL

设计技术.南京:东南大学出版社,19981

[3]仇玉章著.微型计算机系统接口技术.江苏:江苏科技出

版社,19971

作者简介:韩佩富 

男,教授、硕士生导师,主要研究方向EDA 和可编程逻辑器件。

潘 锋 

男,在读硕士生,主要研究方向EDA 。综合信息

适于高速光通信系统的小型光连接器

精密仪器公司(SIL )开发出了小型光连接器

(MU 连接器)。为了适应产品零件小型化要求,作

为光连接器零件的箍,其外部直径作到1125

μm 。该零件(箍)通过成形、加工,直至检查采用一体化生

产,实现了高质量低成本的目标。另外,还开发出了

最佳端面研磨条件并同时提供给广大用户。

(松 川)

 第4期 韩佩富,潘 锋,赵新秋:基于VHDL 的异步串行通信电路设计33

 

异步串行通信的工作方式

异步串行通信的工作方式,然后给出了VB MSComm控件下异步串行通信在电子衡器中的应用实例,包括硬件接口及软件设计。关键词:RS-232 异步串行通信Visual Basic 电子衡器控件计算机一般提供了2个25针或9针的RS-232标准串行口,简称为COM1和COM2。在某些应用中,我们还可以通过插通信卡来获得额外的RS-232标准串行口。利用这些串行口可以与其它数字设备进行一般的数据通信,计算机的串行接口主要用于远程通信和低速输入输出设备。由于串行数据通信传输线条数最少,而且有许多较便宜的专用芯片可实现它,发送和接受器也简单,因而对数据传输速度要求不高的计算机和数字设备间的近程通信,多采用串行通信实现。而目前各个厂家生产的电子衡器的称重仪表多配有与上位机通信的RS—232C串行接口,因而计算机与称重仪表之间的数据通信用串口很容易实现,只需要制作一条2芯或3芯的数据线编写相应的接口程序即可实现,不需要增加其他硬件设备。采用这种方式组成的微机电子衡器有许多优点:称重仪表经过多年的发展,在数据采集、抗干扰、可靠性等方面技术成熟,质量稳定;而计算机在存储容量、数据处理、查询、统计报表等数据管理方面有明显优势。正是两者的完美结合,才使计算机与称重仪表组成的在线式称重管理系统得到了广泛的应用。1串行通信的工作方式串行通信,可分为同步和异步两种方式。异步方式是指在约定的波特率下,传送和接受的数据不需要严格的保持同步,允许有相对的延迟,虽然速度较慢,但经济实用,所以异步串行通信现大量应用于计算机接口技术中。计算机与称重仪表就采用异步通信的方式传送数据。1.1异步串行通信的数据格式在这种通信方式中,一般以一个字符为一帧。一帧最少由三部分组成:起始位、数据位、停止位,开始是一位起始位以发送一个逻辑“0”表示,接着是表示这个数据的数据位,数据位可以是5位、6位、7位或8位,再加一位奇偶校验位,然后是一个、一个半或二个停止位,停止位以逻辑“1”表示。1.2波特率串行通信每秒传送的位数,传送时先低位后高位。常用的波特率有600、1200、2400、4800、9600等。1.3端口在计算机中,一般都配有两个标准串行口,用COM1和COM2表示。(通常采用2个9针D型阳性插头。)1.4信号线RS—232C标准规定有25根连线,使用21个信号线。在我们讨论的微机电子衡器中仅用到3根信号线,它们是:发送数据线TXD(输出信号),接受数据线RXD(输入信号线),信号地GND。其余信号线定义可参考相关书籍。2串行通信在电子衡器中的应用实例串行通信接口设计,包括硬件、软件设计两部分。在WINDOWS操作系统下,可选用VC++、VB等可视化开发工具。下面将以上海耀华称重系统公司的XK3190—A1+为例,以VB6.0编程语言,说明串行通信的软、硬件设计过程。 2.1称重仪表仪表选用上海耀华XK3190-A1+仪表,其串口通信格式如下:2.1.1连续方式发送:所传送的数据为仪表显示的当前称量(毛重或净重),每帧数据由12组数据组成。 第X组 内容及注释 1 02(XON)开始 2 +或- 符号位 3 称量数据高位 : 称量数据: : 称量数据: 8 称量数据低位 9

第六章时序逻辑电路

第六章时序逻辑电路 一、选择题 1.同步计数器和异步计数器比较,同步计数器的显著优点是。 A.工作速度高 B.触发器利用率高 C.电路简单 D.不受时钟CP控制。 2.把一个五进制计数器与一个四进制计数器串联可得到进制计数器。 A.4 B.5 C.9 D.20 3.下列逻辑电路中为时序逻辑电路的是。 A.变量译码器 B.加法器 C.数码寄存器 D.数据选择器 4.N个触发器可以构成最大计数长度(进制数)为的计数器。 A.N B.2N C.N2 D.2N 5.N个触发器可以构成能寄存位二进制数码的寄存器。 A.N-1 B.N C.N+1 D.2N 6.五个D触发器构成环形计数器,其计数长度为。 A.5 B.10 C.25 D.32 7.同步时序电路和异步时序电路比较,其差异在于后者。 A.没有触发器 B.没有统一的时钟脉冲控制 C.没有稳定状态 D.输出只与内部状态有关 8.一位8421BCD码计数器至少需要个触发器。 A.3 B.4 C.5 D.10 9.欲设计0,1,2,3,4,5,6,7这几个数的计数器,如果设计合理,采用同步二进制计数器,最少 应使用级触发器。 A.2 B.3 C.4 D.8 10.8位移位寄存器,串行输入时经个脉冲后,8位数码全部移入寄存器中。 A.1 B.2 C.4 D.8 11.用二进制异步计数器从0做加法,计到十进制数178,则最少需要个触发器。 A.2 B.6 C.7 D.8 E.10 12.某电视机水平-垂直扫描发生器需要一个分频器将31500H Z的脉冲转换为60H Z的脉冲,欲构成此分频器至少需要个触发器。 A.10 B.60 C.525 D.31500

实验二 时序逻辑电路的设计[1]

实验二 时序逻辑电路的设计 一、实验目的: 1、 掌握时序逻辑电路的分析方法。 2、 掌握VHDL 设计常用时序逻辑电路的方法。 3、 掌握时序逻辑电路的测试方法。 4、 掌握层次电路设计方法。 5、 理解时序逻辑电路的特点。 二、实验的硬件要求: 1、 EDA/SOPC 实验箱。 2、 计算机。 三、实验原理 1、时序逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。 2、同步时序逻辑电路的设计方法 同步时序逻辑电路的设计是分析的逆过程,其任务是根据实际逻辑问题的要求,设计出能实现给定逻辑功能的电路。同步时序电路的设计过程: (1)根据给定的逻辑功能建立原始状态图和原始状态表。 ①明确电路的输入条件和相应的输出要求,分别确定输入变量和输出变量的数目和符号; ②找出所有可能的状态和状态转换之间的关系; ③根据原始状态图建立原始状态表; (2)状态化简---求出最简状态图。 合并等价状态,消去多余状态的过程称为状态化简。 等价状态:在相同的输入下有相同的输出,并转换到同一个次态去的两个状态称为等价状态。 (3)状态编码(状态分配)。 给每个状态赋以二进制代码的过程。 根据状态数确定触发器的个数,n n M 221-≤∠(M 为状态数;n 为触发器的个数)。 (4)选择触发器的类型。 (5)求出电路的激励方程和输出方程。 (6)画出逻辑图并检查自启动能力。 3、时序逻辑电路的特点及设计时的注意事项 ①时序逻辑电路与组合逻辑电路相比,输出会延时一个时钟周期。 ②时序逻辑电路一般容易消除“毛刺”。 ③用VHDL 描述时序逻辑电路时,一般只需将时钟信号和异步控制(如异步复位)信号作为敏感信号。

实验二 组合逻辑电路的VHDL实现

实验二组合逻辑电路的VHDL实现 一、实验目的 掌握使用VHDL语言进行时序逻辑电路设计的方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 (1)用VHDL 语言设计一个D触发器,对程序进行编译和仿真,并记录仿真波形。 CLK接收到上升沿信号时,输入端D的信号被传送到输 出端Q输出,否则输出端Q维持原来的状态不变。 实验代码: D触发器LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ; END IF;

Q <= Q1 ; --将内部的暂存数据向端口输出 END PROCESS ; END bhv; (2)用VHDL语言设计一个十进制加法计数器,对程序进行编译和仿真,并记录仿真波形。 提示:十进制加法计数器的电路如下图所示,在时钟信号的驱动下,计数器进行累加,每次加1,其输出状态由0000变化到1001,加满回零。当复位输入端reset为低电平时,计数器复位,输出状态回到0000。 十进制加法计数器电路图 实验代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jsq10 IS PORT(CLK,RESET:IN STD_LOGIC; Q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END jsq10; ARCHITECTURE ONE OF jsq10 IS BEGIN PROCESS(CLK,RESET) BEGIN IF(RESET='0') THEN Q<="0000"; ELSIF(CLK' EVENT AND CLK='1') THEN

异步串行接口电路及通信系统设计设计报告

异步串行接口电路及通信系统设计 设计报告 2009级可编程逻辑课程名称: 实验题目:学生姓名: YC 开课学院: Bio开课时间: 2011课程设计可编程逻辑设计异步串行接口电路及通信系统设计、SXL、ZY、YLJ、WJ 学院至2012学年第二学期重庆大学本科学生课程设计指导教师评定成绩表学院年级学生姓名课程设计题目be学院2009级指导教师专业Zxm. Wxp. BME YC、SXL、ZY、YLJ、WJ 异步串行接口电路及通信系统设计指导教师评语课程设计成绩指导教师签名:年月日重庆大学本科学生课程设计任务书课程设计题目学院BE学院异步串行接口电路及通信系统设计专业BME 年级、班09 BME 01、02班

设计要求:设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。1)每帧数据供10 位,其中1位启动位,8位数据位,1位停止位。2)波特率为:9600。3)收发误码率摘要摘要通用串口是远程通信接口,在数字系统使用很普遍,是一个很重要的部件。本论文使用VHDL语言描述硬件功能,并适当借助Verilog HDL 语言,利用在FPGA 芯片上的综合描述,采用模块化设计方法设计UART的各个模块。其中包括波特率发生器,程序控制器,UART数据接收器和UART数据发送器,采用的外部时钟为50MHZ,波特率为9600。在QuartusII 环境下进行设计、编译和仿真。最后的程序编译仿真结果及硬件测试结果表明系统设计完全正确。关键字:VHDL; Verilog HDL;UART; 帧格式; FPGA;异步通信I 摘要Abstract In this paper, the use of

第六章 异步 时序逻辑电路 教案

第 6 章 异步时序逻辑电路 异步时序逻辑电路中没有统一的时钟脉冲信号,电路状态的改变是外部输入信号变 化直接作用的结果。 根据电路结构和输入信号形式的不同,异步时序逻辑电路可分为脉冲异步时序逻辑 电路和电平异步时序逻辑电路两种类型。 两类电路均有 Mealy 型和 Moore 型两种结构模型。 6.1 脉冲异步时序逻辑电路 6.1.1 概述 一、结 构 脉冲异步时序电路的一般结构如下图所示。 图中,存储电路可由时钟控制触发器或非时钟控制触发器组成。 二、输入信号的形式与约束 1.输入信号为脉冲信号; 2.输入脉冲的宽度必须保证触发器可靠翻转; 3.输入脉冲的间隔必须保证前一个脉冲引起的电路响应完全结束后,后一个脉冲才 能到来; 4.不允许两个或两个以上输入端同时出现脉冲。对 n 个输入端的电路,其一位输入 只允许出现 n+1 种取值组合,其中有效输入种取值组合为 n 种。 三、输出信号的形式 脉冲异步时序逻辑电路的输出信号可以是脉冲信号也可以是电平信号。 6.1.2 脉冲异步时序逻辑电路的分析 一、分析方法与步骤 1. 分析方法

脉冲异步时序逻辑电路的分析方法与同步时序逻辑电路大致相同。 注意两点: ⑴当存储元件采用时钟控制触发器时, 对触发器的时钟控制端应作为激励函数处理。 仅当时钟端有脉冲作用时,才根据触发器的输入确定状态转移方向,否则,触发器 状态不变。 ⑵根据对输入的约束,分析时可以排除两个或两个以上输入端同时出现脉冲以及输 入端无脉冲出现情况,从而使图、表简化。 2. 分析步骤 (1) 写出电路的输出函数和激励函数表达式; (2) 列出电路次态真值表或次态方程组; (3) 作出状态表和状态图; (4) 用文字描述电路的逻辑功能(必要时画出时间图)。 二、 分析举例 例分析下图所示脉冲异步时序逻辑电路,指出该电路功能。 & 解:该电路由两个 J-K 触发器和一个与门组成,有一个输入端 x 和一个输出端 Z,输 出是输入和状态的函数,属于Mealy型脉冲异步时序电路。 ⑴ 写出输出函数和激励函数表达式 Z = xy2y1 J2 = K2 =1 ; C2 = y1 J1 = K1 =1 ; C1 = x ⑵ 列出电路次态真值表 J-K 触发器的状态转移发生在时钟端脉冲负跳变的瞬间,为了强调在触发器时钟端 C1、C2 何时有负跳变产生,在次态真值表中用“↓”表示下跳。仅当时钟端有“↓” 出 现时,相应触发器状态才能发生变化,否则状态不变。

组合逻辑电路的VHDL设计

组合逻辑电路的VHDL设计 学院及班级:信工院电子信息工程一班 学号: 2010550428 姓名:王尧 完成时间: 2012年10月11日

(1)实验目的: 熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。 (2)实验内容1:用VHDL语言设计2选1多路选择器。 提示:参考例3-1。 要求:首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入和编译、仿真测试等步骤,给出时序仿真波形。选择目标器件EP1C3,建议选实验电路模式5,如附图1所示。用键1(PIO0,引脚号为1)控制s;a和b分别接clock0(引脚号为93)和clock2(引脚号为17);输出信号y接扬声器speaker(引脚号为129)。通过短路帽选择clock0接256Hz信号,clock2接8Hz信号。引脚锁定后进行编译、下载和硬件测试实验,通过键1控制s,可使扬声器输出不同音调。 (3)实验内容2:将此二选一多路选择器看成是一个元件mux21a,利用元件例 化语句描述图2所示电路,并将此文件放在同一目录中。 图2 双2选1多路选择器 要求:首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入和编译、仿真测试等步骤,给出时序仿真波形。然后进行引脚锁定以及硬件下载测试。选择目标器件EP1C3,建议选实验电路模式5(附图1),用键1(PIO0,引脚号为1)控制s0;用键2(PIO1,引脚号为2)控制s1;a3、a2和a1分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调。 (4)程序设计 程序示例1: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity mux21a is

异步时序逻辑电路分析方法案例说明

异步时序逻辑电路分析方法案例说明 下图8.41为一multisim 的仿真的异步时序逻辑电路,试调试电路,分析该电路的功能。 图8.41 异步时序逻辑电路 由图8.41可知,FF1的时钟信号输入端是由FF0的输出相连,所以该电路为异步时序 逻辑电路。具体分析方法如下: 1.写方程式 时钟方程:FF 0和FF 2由CP 的下降沿触发,CP CP CP ==20。 FF 1由Q 0的输出的下降沿触发,01Q CP = 输出方程:n Q Y 2= 驱动方程:1,020==K Q J n ;1,111==K J ;1,2012==K Q Q J n n 状态方程: n n n n n Q Q Q K Q J Q 02000010=+=+,CP 下降沿有效; n n n n Q Q K Q J Q 1111111=+=+,Q0下降沿有效; n n n n n n Q Q Q Q K Q J Q 201222212=+=+,CP 下降沿有效 2.列状态转换真值表 上述状态方程只有在满足时钟条件后,将现态的各种取值代入计算才是有效的。设现态 为000012=n n n Q Q Q ,代入状态方程,可得表8.8所示的状态转换真值表。下面对表8.9做简单说明:表中第一行取值,在现态000012=n n n Q Q Q 时,先计算Q 2和Q 0的次态为 011012=++n n Q Q ,由于CP1=Q0,其由0跃变1为正跃变(上升沿),故FF1保持0态不变,

这时0011 1112=+++n n n Q Q Q 。表中第二行取值,在现态为001012=n n n Q Q Q 时,得 001012=++n n Q Q ,故此时CP 1=Q 0,信号由1变成0,为负跃变(下降沿),使FF 1由0态翻 转为1态,这时0101 1112=+++n n n Q Q Q 。其余以此类推。 3.逻辑功能说明 有表8.9可知,在输入第5个计数脉冲时,返回初始000状态,同时Y 输出一个负跃变 信号,因此该电路为异步五进制计数器。 4.状态转换图和时序图 如下图8.42所示。 Q 2Q 1Q 0 /Y CP Q 0 Q 1Q 2 (a)状态转换图 (b)时序图 图8.42 状态转换图和时序图

串行通信技术-模拟信号转换接口

微机原理与应用实验报告6 实验9串行通信技术 实验10A模拟信号转换接口 实验报告

实验九串行通信技术 一、实验目的 1. 了解异步串行通信原理; 2. 掌握MSP430异步串行通信模块及其编程方法; 二、实验任务 1. 了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用 (1)利用PC机的串口助手程序控制串口,实现串口的自发自收功能 为实现PC串口的自发自收功能,须现将实验板上的扩展板去下,并将单片机板上的BRXD和BTXD用杜邦线进行短接,连接图如下所示: 由此可以实现PC串口的自收自发功能。 (2)思考题:异步串行通信接口的收/发双方是怎么建立起通信的 首先在异步通信中,要求接收方和发送方具有相同的通信参数,即起始位、停止位、波特率等等。在满足上面条件的情况下,发送方对于每一帧数据按照起始位数据位停止位的顺序进行发送,而接收方则一直处于接受状态,当检测到起始位低电平时,看是采集接下来发送方发送过来的数据,这样一帧数据(即一个字符)传送完毕,然后进行下一帧数据的接受。这样两者之间就建立起了通信。 2. 查询方式控制单片机通过板载USB转串口与PC机实现串行通信 (1)硬件连接图

(2)C语言程序 采用SMCLK=1.0MHz时,程序如下:

其中SMCLK=1MHz,波特率采用的是9600,采用低频波特方式,则N=1000000/9600=104.1666…,故UCA0BR1=0,UCA0BR0=104,UCBRS=1; 当采用外部晶振时,时钟采用默认设置即可,程序如下:

也是采用了低频波特率方式,所以关于波特率设置的相关计算和上面是一样的。 (3)思考:如果在两个单片机之间进行串行通信,应该如何设计连线和编程? 由于在上面的连线中将单片机上的P1.2和BRXD相连,P1.1和BTXD相连,所以若要在两个单片机之间进行通信,首先应该将两个单片机的P1.2和P1.1交叉相连,并根据上面的程序进行相同的关于端口和波特率相关的设置即可实现两个单片机之间的通信。 3. (提高)利用PC机RS232通信接口与单片机之间完成串行通信 (1)硬件连接图 在实验时,采用了将PC机的串口com1直接连接至MSP430F149的孔型D9连接器上,G2553单片机的输出引脚P1.1和P1.2分别与F149单片机上的URXD1和UTXD1相连接,连接图如下所示:

实验一 组合逻辑电路的VHDL实现

实验一组合逻辑电路的VHDL实现 一、实验目的 掌握使用VHDL语言进行组合逻辑电路设计的方法。 二、实验设备及器件 IBM PC机一台 三、实验内容 按照Quartus II 软件的使用说明进行Quartus II 集成开发环境的仿真调试练习,然后按照以下内容建立文件并编译仿真调试。 (1)用VHDL 语言设计一个2选1多路选择器,对程序进行编译和仿真,并记录仿真波形。 提示:如右图所示,a和b分别为两个数据输入端,s 为通道选择控制信号输入端。当s为低电平时,a输入端的信号传送至y;当s为高电平时,b输入端的信号传送至y。 实验代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT) ; END ENTITY mux21a ; ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s = '0' ELSE b ; END ARCHITECTURE one ;

(2)用VHDL 语言设计一个1位半 加器,对程序进行编译和仿真,并 记录仿真波形。 提示:半加器真值表如右所示。 实验代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ENTITY h_adder IS PORT(a,b:IN STD_LOGIC; so,co:OUT STD_LOGIC); END h_adder; ARCHITECTURE example2 OF h_adder IS BEGIN so<=a XOR b; co<=a AND b; END example2; (3)用VHDL 语言设计一个三态缓冲器,对程序进行编译和仿真,并记录仿真波形。 提示:三态缓冲器电路如右图所示,如果 缓冲器的使能端en 为1,缓冲器的输入端 in1的信号值被复制到输出端;如果使能端 en 为其它数值,缓冲器的输出为高阻态。 实验代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Threestategate IS PORT(IN1,EN:IN STD_LOGIC; 半加器真值表

异步串行通信接口实验

计算机系统的通信实验 一.目的:了解计算机间的数据通信的基本技术; 了解RS─232C的结构及使用方法。RS----232C 9芯连接器插针定义如下: 二.使用设备:带有RS─232C通信接口的微型计算器及一根多芯电缆。 三.8250异步串行接口: IBM PC系统可选的串行异步通信接口板上用的UART是一片INS8250,以它为核心,附加一些辅助电路,如I / O地址译码电路电平变换电路等,组成了RS232C接口,所以,对RS232C编程实际上是对8250的编程。8250的逻辑框图如下:

(一)8250的编程模型 8250异步串行接口是用于IBM PC串行通讯的接口芯片,8250内含比特率分频器,无须外接,所以用它构成接口非常简单。有两个串口,每个串口上有10个寄存器,IBM PC系统只为这10个寄存器分配了连续的7个端口地址,其端口地址分配如下: 分配的端口地址输入还是输出相应寄存器 3F8H/2F8H*输出发送数据寄存器 3F8H/2F8H*输入接收数据寄存器 3F8H/2F8H+输出波特率分频器L(数据传输速度)3F9H/2F9H+输出波特率分频器H 3F9H/2F9H*输出中断允许寄存器 3FAH/2FAH 输入中断标识寄存器 3FBH/2FBH 输出线控制寄存器 3FCH/2FCH 输出Modem控制寄存器 3FDH/2FDH 输入线狀态寄存器 3FEH/2FEH 输入Modem狀态寄存器 注:标有*寄存器地址是线控制存器7位为0时的寄存器地址,标有+寄存器地址是线控制存器7位为1时的寄存器地址。 从功能上分,这10个寄存器可分为两组:一组用于工作方式,通信参数的控置和设置。如数据格式有关参数的设置,是否允许中断方式的设置以及是否使用RTS,DTR等联络控制信号等,属于这一组的有5个寄存器:波特率分频器L(低位)和H(高位) 线控制寄存器,Moden控制寄存器,中断允许寄存器。这5个寄存器都是在8250初始化时用OUT指令向其中置入初值的。另一组寄存器用于实现通信传输,有5个寄存器, 它包括:输入和输出的缓冲寄存器——接收数据寄存器和发送保持寄存器, 记忆当前状态的寄存器——线状态寄存器, Moden状态寄存器和中断标识寄存器。 (二)8250的初始化: 1.波特率的设置:(波特率分频器L和H)是用OUT指令向地址为3F8H和3F9H的两个波特率分频器置入合适的值实现的。 在初始化时,将线控寄存器最高为置1,然后写3F8H,3F9H便可对串行传送速率进行初始化。波特率分频器确定串行传送的速率(每秒传送的位数)如下: 波特率分频器H 分频器L 50 09H 00H 75 06H 00H 110 04H 17H 134.5 03H 59H 150 03H 00H 300 01H 80H 600 00H C0H 1200 00H 60H 1800 00H 40H 2000 00H 3AH 2400 00H 30H 3600 00H 20H

实验一 用VHDL语言设计组合逻辑电路

实验一用VHDL语言设计组合逻辑电路 一、实验目的:掌握用VHDL语言设计组合逻辑电路的方法。熟悉QuartusⅡ的 操作。 二、实验仪器:PC机一台 三、实验内容: 1.用VHDL语言设计4选1数据选择器。 2.用文本输入法输入 3.建立工程,编译,改错,直至编译通过 4.仿真,验证所设计电路的正确性 四、操作步骤: 1、在所使用的计算机数据盘里建立自己的文件夹 2、打开QuartusII 3、单击工具栏中的new,在出现的对话框中选择VHDL File,点击OK。 4、输入设计程序。 输入结束后,将程序保存在自己的文件夹中。注意:存盘的文件名应该跟实体名相同。 5、创建工程。创建工程有两种方法:第一种方法是在保存文件后出现的对话框 中点击‘是’,按提 示进行操作;

第二种方法是在出现的对话框点击‘否’。 第一种方法的具体过程: 点击‘是’,出项下面的框 点击‘Next’,出项 不需要任何修改,继续点击‘Next’,出项

继续点击‘Next’,在后面出现的框图中继续点击‘Next’,直到没有‘Next’选项,点击‘Finish’,这样就完成工程的创建。 第二种方法的具体过程:点击‘否’ 此时要创建工程,点击菜单File下的“New Preject Wizard”。出现框图: 点击‘Next’,出项

名,点击打开(或双击要创建工程的文件名),出现 项目名称和文件名称相同。点击‘Next’,出现

点击,在出现的对话框点击文件名,点击‘打开’,出现 点击右边的‘add’,出现

点击‘Next’,在后面出现的框图中继续点击‘Next’,直到没有‘Next’选项,点击‘Finish’,这样就完成工程的创建。 6、观察QUARTUS 界面 点击箭头所指图标,观察箭头上方的变化,点击+号,双击出项的文件

第4章 异步串行通信

第4章 异步串行通信 本章导读:目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM 口.由于历史的原因,通常所说的串行通信就是指异步串行通信。USB、以太网等也用串行方式通信,但与这里所说的异步串行通信物理机制不同。 有的台式电脑带有两个串行口: COM1 口和COM2 口,部分笔记本电脑也带有串行口。随着 USB接口的普及,串行口的地位逐渐降低,但是作为设备间简便的通信方式,在相当长的时间内,串行口还不会消失,在市场上也可很容易购买到USB到串行口的转接器因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以串行通信仍然是MCU与外界通信的简便方式之一。 实现异步串行通信功能的模块在一部分MCU中被称为通用异步收发器(Universal Asynch?ronous Receiver/Transmitters, UART ),在另一些 MCU 中被称为串行通信接口( Serial Communication Interface, SCI)。串行通信接口可以将终端或个人计算机连接到MCU,也可将几个分散的 MCU连接成通信网络, 本章的主要知识点有①阐述了串口相关的基础知识;②描述了K60串口糢块的功能概要; ③介绍了串口模块驱动构件编程时涉及的相关寄存器;④设计并封装了串行通信的驱动构件; ⑤给出第一个中断例程的执行过程和设计流程。 本章介绍的K60UART模块的工作原理以及编程实例,这些编程实例都使用了基于构件的编程思想,读者在阅读时可以仔细体会,以求得对编程方法有更深刻的理解本章所出现的UART 字眼,在没有其他说明的情况下,都是特指K60的UART模块,本章串口驱动编程涉及的寄存器全部给出其详细介绍,目的是让读者对嵌入式底层驱动编程设计的寄存器有个直观的了解,以后各章节将不再给出相关寄存器的详细介绍。 4.1异步串行通信的基础知识 本节简要概括了串行通信中常用的基本概念,为学习MCU的串行接口编程做准备。对于己经了解这方面知识的读者,可以略读本节。 4.1.1基本概念 “位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0” 和“1”表示。在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(Byte)。串行通信的特点是:数据以字节为单位,按位的顺序(例如最高位优先)从一条传输线上发送出去。这里至少涉及以下几个问题:第一,每个字节之间是如何区分开的?第二,发送一位的持续时间是多少?第三,怎样知道传输是正确的?第四,可以传输多远?这些问题属于串行通信的基本概念。串行通信分为异步通信与同步通信两种方式,本节主要给出异步串行通信的一些常用概念。正确理解这些概念,对串行通信编程是有益的。

实验一 组合逻辑电路的设计

实验一 组合逻辑电路的设计 一、实验目的: 1、 掌握组合逻辑电路的设计方法。 2、 掌握组合逻辑电路的静态测试方法。 3、 加深FPGA 设计的过程,并比较原理图输入和文本输入的优劣。 4、 理解“毛刺”产生的原因及如何消除其影响。 5、 理解组合逻辑电路的特点。 二、实验的硬件要求: 1、 EDA/SOPC 实验箱。 2、 计算机。 三、实验原理 1、组合逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。 通常组合逻辑电路可以用图1.1所示结构来描述。其中,X0、X1、…、Xn 为输入信号, L0、L1、…、Lm 为输出信号。输入和输出之间的逻辑函数关系可用式1.1表示: 2、组合逻辑电路的设计方法 组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。 在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。组合电路的基本设计步骤可用图1.2来表示。 3、组合逻辑电路的特点及设计时的注意事项 ①组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。(实际电路中 图 1.1 组合逻辑电路框图 L0=F0(X0,X1,···Xn) · · · Lm=F0(X0,X1,···Xn) (1.1) 图 1.2 组合电路设计步骤示意图图

常用组合逻辑电路设计

实 验 报 告 实验日期: 学 号: 姓 名: 实验名称: 常用组合逻辑电路设计 总 分: 一、实验目的 学习常用组合逻辑电路的可中和代码编写,学习并熟悉VHDL 编程思想与调试方法,掌握LPM 元件实现逻辑设计,从而完成电路设计的仿真验证和硬件验证,记录结果。 二、实验原理 VHDL 设计采用层次化的设计方法,自上向下划分系统功能并逐层细化逻辑描述。层次关系中的没一个模块可以是VHDL 描述的实体,上层VHDL 代码中实例化出各个下层子模块。 利用VHDL 语言和LPM 元件设计这两种方法方法实现两个二位数大小比较的电路,根据A 数是否大于、小于、等于B 数,相应输出端F1、F2、F3为1,设A=A2A1,B=B2B1(A2A1、B2B1表示两位二进制数),当A2A1>B2B1时,F1为1;A2A1

port(a2,a1:in STD_LOGIC; b2,b1:in STD_LOGIC; f1,f2:buffer STD_LOGIC; f3:out STD_LOGIC); end bijiao; architecture bijiao_arch of bijiao is begin f1<=(a2 and(not b2))or(a1 and (not b1)and a2)or(a1 and (not b1)and(not b2)); f2<=((not a2)and b2)or((not a2)and(not a1)and b1)or((not a1)and b1 and b2); f3<=not(f1 or f2); end bijiao_arch; (2)波形仿真 网格大小 100ns 结束时间 2μs 功能仿真:时序仿真:输入信号00, 01,10,11 输入信号00, 01,10,11 输出信号001, 010,100 信号均为二 进制表达 输入信号00, 01,10,11

用VHDL设计三八译码器。。超赞版

3-8译码器的设计 1 设计目的与要求 随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。由此,计算机对我们的社会对我们每个人都是很重要的。所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。 1.1 设计的目的 本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC

设计能力,提高分析、解决计算机技术实际问题的独立工作能力。也能通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。 1.2 设计要求 根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL 设计计算机电路中译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。译码器由三-八译码器为实例代表。 关键词:输入、输出、译码 2 VHDL的简单介绍 2.1 VHDL的简介 VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在我过的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分

串行接口及串行通信技术

第9章串行接口及串行通信技术 U 难点 ?串行通信的四种工作方式 @要求 掌握: ?串行通信的控制寄存器 ?串行通信的工作方式0和方式1 了解: ?串行通信的基础知识 ?串行通信的工作方式2和方式3 9.1 串行通信的基础知识 9.2 MCS-51单片机串行通信的控制寄存器 9.3 MCS-51单片机串行通信工作方式 9.1 串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。 9.1.1 数据传送 单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。 1. 字符帧的帧格式 字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。如图9.1所示: 1)起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。 2)数据位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。 3)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。 4)停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。 图9.1 字符帧格式 异步串行通信的字符帧可以是连续的,也可以是断续的。连续的异步串行通信,是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始一个新的字符的传送,即帧与帧之间是连续的。而断续的异步串行通信,则是在一帧结

时序逻辑电路试题

第五章时序电路 一、选择题 1.同步计数器和异步计数器比较,同步计数器的显著优点是。 A.工作速度高 B.触发器利用率高 C.电路简单 D.不受时钟C P控制。 2.把一个五进制计数器与一个四进制计数器串联可得到进制计数器。 A.4 B.5 C.9 D.20 3.下列逻辑电路中为时序逻辑电路的是。 A.变量译码器 B.加法器 C.数码寄存器 D.数据选择器 4.N个触发器可以构成最大计数长度(进制数)为的计数器。 A.N B.2N C.N2 D.2N 5.N个触发器可以构成能寄存位二进制数码的寄存器。 A.N-1 B.N C.N+1 D.2N 6.五个D触发器构成环形计数器,其计数长度为。 A.5 B.10 C.25 D.32 7.同步时序电路和异步时序电路比较,其差异在于后者。 A.没有触发器 B.没有统一的时钟脉冲控制 C.没有稳定状态 D.输出只与内部状态有关 8.一位8421B C D码计数器至少需要个触发器。 A.3 B.4 C.5 D.10 9.欲设计0,1,2,3,4,5,6,7这几个数的计数器,如果设计合理,采用同 步二进制计数器,最少应使用级触发器。 A.2 B.3 C.4 D.8 10.8位移位寄存器,串行输入时经个脉冲后,8位数码全部移入寄存器中。 A.1 B.2 C.4 D.8 11.用二进制异步计数器从0做加法,计到十进制数178,则最少需要个触发器。 A.2 B.6 C.7 D.8 E.10 12.某电视机水平-垂直扫描发生器需要一个分频器将31500H Z的脉冲转换为60H Z 的脉冲,欲构成此分频器至少需要个触发器。 A.10 B.60 C.525 D.31500 13.某移位寄存器的时钟脉冲频率为100K H Z,欲将存放在该寄存器中的数左移8

实验二时序电路的设计及显示

实验二时序电路的设计及显示 一、实验目的: 1.了解教学系统中8位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验调用。 2.会电路图输入方法和VHDL语言方法输入的混合使用。 二、硬件要求: 1.GW48EDA/SOPC+PK2实验系统。 三、实验内容及预习要求: 1.计数器(counter): 计数器(counter)是数字系统中常用的时序电路,因为计数是数字系统的基本操作之一。计数器在控制信号下计数,可以带复位和置位信号。因此,按照复位、置位与时钟信号是否同步可以将计数器分为同步计数器和异步计数器两种基本类型,每一种计数器又可以分为进行加计数和进行减计数两种。在VHDL描述中,加减计数用“+”和“-”表示即可。 (1)同步计数器: 同步计数器与其它同步时序电路一样,复位和置位信号都与时钟信号同步,在时钟沿跳变时进行复位和置位操作。例2-1为带时钟使能的同步4位二进制减法计数器的VHDL模型:

count是一个带时钟使能的同步4位二进制减法计数器,计数范围F~0。每当时钟信号或者复位信号有跳变时激活进程。如果此时复位信号clr有效(高电平),计数器被复位,输出计数结果为0;如果复位信号无效(低电平),而时钟信号clk出现上升沿,并且计数器的计数使能控制信号en有效(高电平),则计数器count自动减1,实现减计数功能。图S2-1为带时钟使能的同步4位二进制减法计数器的仿真波形图: 图S2-1 带时钟使能的同步4位二进制减法计数器的仿真图形 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count IS PORT(clk,clr,en : IN STD_LOGIC; qa,qb,qc,qd : OUT STD_LOGIC); END count; ARCHITECTURE ONE OF count IS SIGNAL count_4 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN qa <= count_4(0); qb <= count_4(1);

相关主题
文本预览
相关文档 最新文档