深入解析Zilog Z80C30/Z85C30:多功能串口通信控制器的技术精髓

电子说

1.4w人已加入

描述

深入解析Zilog Z80C30/Z85C30:多功能串口通信控制器的技术精髓

在电子工程师的世界里,串口通信控制器就像是连接各个电子设备的桥梁。今天,我要和大家深入探讨一下Zilog公司的Z80C30和Z85C30这两款CMOS SCC(Serial Communications Controller)串口通信控制器。它们在通信领域有着广泛的应用,下面就让我们一起来揭开它们的神秘面纱。

文件下载:Z85C3008VSG.pdf

一、产品概述与特性

Z80C30和Z85C30这两款控制器分别针对不同的总线微处理器进行了优化。Z85C30适用于非复用总线微处理器,而Z80C30则在复用总线微处理器上表现出色。并且,它们与NMOS版本引脚兼容,这意味着在升级或者替换时能大大减少工程师的工作量。

这两款控制器拥有两个独立的全双工通道,每个通道的数据传输速率可达0 - 4.1Mbps,还配备了独立的晶体振荡器、波特率发生器(BRG)和数字锁相环(DPLL)用于时钟恢复。这种设计使得它们能够在多种协议下稳定运行,支持NRZ、NRZI或FM等数据编码方式。

在异步模式下,它们可以处理5 - 8位字符,每个字符可设置1、1.5或2个停止位,还能实现时钟因子可编程、中断检测与生成、奇偶校验、溢出和帧错误检测等功能。而在同步模式下,能够实现内部或外部字符同步,并进行CRC生成和校验,支持CRC - 16或CRC - CCITT预设为1或0。此外,它们还支持SDLC/HDLC模式,具备全面的帧级控制、自动零插入和删除、I - 字段残留处理、中止生成和检测等功能。

值得一提的是,这两款控制器还具有软件中断确认功能、本地回环和自动回显模式,支持T1数字干线,并且增强了DMA支持,拥有10 x 19位状态FIFO和14位字节计数器,能更好地满足高速数据传输的需求。速度方面,Z85C30有8.5、10、16.384 MHz可选,Z80C30则有8、10 MHz可选。

Z85C30的独特特性

Z85C30还有一些独特的特性。它有新的可编程写寄存器7 prime(WR7),可用于启用新功能。在支持SDLC同步通信模式上,有诸多改进,比如能更轻松地发送连续帧、自动发送SDLC起始标志、自动复位SDLC模式下的Tx欠载/EOM锁存器、自动停用RTS、在SDLC NRZI模式下关闭标志后强制TxD引脚为高电平、完成CRC接收、改进状态FIFO对中止序列的响应、自动预设/复位Tx CRC生成器、扩展写寄存器的读取功能以及改善写数据建立时间等。

在AC时序方面也有所优化,访问恢复时间为3 - 3.6 PCLK,DTR/REQ时序可编程,消除了写数据到WR下降沿的建立时间要求,还减少了INT时序。此外,它还具备扩展读取功能,可读取写寄存器的写入值,在读取时锁存RRO,并且RRO的D7位和RR10的D6位现在有复位默认值。

二、引脚说明

公共引脚

Z85C30和Z80C30有许多公共引脚,这些引脚在不同的应用场景中发挥着重要作用。例如,CTSA和CTSB是清除发送输入引脚(低电平有效),若编程为自动使能功能,低电平输入可使相应的发送器启用;若未编程为自动使能,则可作为通用输入引脚。这两个输入都采用施密特触发器缓冲,能适应缓慢上升时间的输入,并且SCC能检测这些输入上的脉冲,并在逻辑电平转换时中断CPU。

DCDA和DCDB是数据载波检测输入引脚(低电平有效),若编程为自动使能,可作为接收器使能;否则,作为通用输入引脚。同样采用施密特触发器缓冲,能检测脉冲并在逻辑电平转换时中断CPU。

DTR/REQA和DTR/REQB是数据终端就绪/请求输出引脚(低电平有效),其状态跟随DTR位的编程状态,也可作为通用输出引脚或DMA控制器的请求线。

IEI是中断使能输入(高电平有效),与IEO配合使用,可形成中断菊花链。当IEI为高电平时,表示没有其他更高优先级的设备正在处理中断或请求中断。IEO是中断使能输出(高电平有效),只有当IEI为高电平,且CPU未处理SCC中断或SCC未请求中断时,IEO才为高电平。它连接到下一个较低优先级设备的IEI输入,从而抑制较低优先级设备的中断。

INT是中断请求输出(开漏,低电平有效),当SCC请求中断时,该信号激活。INTACK是中断确认输入(低电平有效),表示一个有效的中断确认周期。在这个周期内,SCC中断菊花链稳定下来。当RD有效且IEI为高电平时,SCC会将中断向量放置在数据总线上。

PCLK是时钟输入,是SCC的主时钟,用于同步内部信号,为TTL电平信号,且与主系统时钟无需任何相位关系,最大传输速率为1/4 PCLK。

RxDA和RxDB是接收数据输入(高电平有效),用于接收标准TTL电平的串行数据。RTxCA和RTxCB是接收/发送时钟输入(低电平有效),可在多种不同的操作模式下编程,能提供接收时钟、发送时钟、波特率发生器时钟或数字锁相环时钟,也可与相应的SYNC引脚一起用作晶体振荡器。在异步模式下,接收时钟可以是数据速率的1、16、32或64倍。

RTSA和RTSB是请求发送输出(低电平有效),当写寄存器5中的请求发送(RTS)位被设置时,RTS信号变为低电平。在异步模式下且自动使能开启时,当发送器为空后,信号变为高电平;在同步模式下,严格跟随RTS位的状态。当自动使能关闭时,RTS引脚可作为通用输出引脚。

SYNCA和SYNCB是同步输入或输出(低电平有效),可作为输入、输出或晶体振荡器电路的一部分。在不同的模式下,它们有着不同的功能。例如,在异步接收模式(未选择晶体振荡器选项)下,类似于CTS和DCD,其线路上的转换会影响读寄存器0中的同步/搜索状态位,但无其他功能;在外部同步模式(未选择晶体振荡器)下,作为输入,在接收到同步字符的最后一位后,SYNC必须被驱动为低电平两个接收时钟周期;在内部同步模式(单同步和双同步)下,作为输出,仅在识别同步字符的接收时钟周期部分有效;在SDLC模式下,作为输出,在接收到标志时有效。

TxDA和TxDB是发送数据输出(高电平有效),用于发送标准TTL电平的串行数据。TRxCA和TRxCB是发送/接收时钟输入或输出(低电平有效),可在多种不同的操作模式下编程,在输入模式下可提供接收时钟或发送时钟,在输出模式下可提供数字锁相环、晶体振荡器、波特率发生器或发送时钟的输出。W/REQA和W/REQB是等待/请求输出,当编程为等待功能时为开漏输出,当编程为请求功能时可驱动为高电平或低电平,可作为DMA控制器的请求线或同步CPU到SCC数据速率的等待线,复位状态为等待。

专属引脚

Z85C30还有一些专属引脚。A/B是通道A/通道B输入,用于选择进行读或写操作的通道。CE是芯片使能输入(低电平有效),用于选择SCC进行读或写操作。D7 - D0是数据总线(双向,三态),用于在SCC和其他设备之间传输数据和命令。D/C是数据/控制选择输入,用于定义传输到或从SCC传输的信息类型,高电平表示数据传输,低电平表示命令。RD是读输入(低电平有效),表示读操作,当SCC被选中时,启用SCC的总线驱动程序。在中断确认周期中,如果SCC是请求中断的最高优先级设备,该信号会将中断向量选通到总线上。WR是写输入(低电平有效),当SCC被选中时,表示写操作。RD和WR同时有效时,被解释为复位。

Z80C30的专属引脚也有其独特之处。AD7 - AD0是地址/数据总线(双向,高电平有效,三态),这些复用线用于向SCC传输寄存器地址以及数据或控制信息。AS是地址选通输入(低电平有效),其上升沿会锁存AD7 - AD0上的地址。CS0是芯片选择0输入(低电平有效),与AD7 - AD0上的地址同时锁存,必须有效才能进行预期的总线事务。CS1是芯片选择1输入(高电平有效),在预期的总线事务发生之前也必须有效,并且在整个事务过程中必须保持有效。DS是数据选通输入(低电平有效),为数据进出SCC的传输提供时序。如果AS和DS同时有效,这种情况被解释为复位。R/W是读/写输入,用于指定要执行的操作是读还是写。

三、功能描述

I/O接口能力

SCC通过其寄存器组与系统进行通信,共有十六个写寄存器和八个读寄存器。在文档中,写寄存器用WR表示,读寄存器用RR表示。例如,WR4A表示通道A的写寄存器4,RR3表示任一或两个通道的读寄存器3。这些寄存器各自有着不同的功能,如RR0用于表示发送/接收缓冲区状态和外部状态,WR0用于CRC初始化、各种模式的初始化命令以及寄存器指针设置等。

数据、状态和控制信息在SCC中通过三种方式进行传输:轮询、中断(向量和非向量)以及CPU/DMA块传输。轮询时,所有中断被禁用,SCC中的三个状态寄存器会在任何功能执行时自动更新。CPU会定期读取状态寄存器,直到寄存器内容表明需要进行数据传输。中断方面,SCC的中断结构支持向量和嵌套中断,通过INTACK引脚实现嵌套中断。当SCC响应CPU的中断确认信号时,可将中断向量放置在数据总线上。中断源包括发送、接收和外部/状态中断,每个中断源有三个相关位:中断待处理(IP)、中断正在服务(IUS)和中断使能(IE)。此外,SCC还支持软件中断确认,通过设置写寄存器9(WR9)的D5位,读取读寄存器2(RR2)可触发内部中断确认周期。CPU/DMA块传输模式利用WAIT/REQUEST输出与WR1中的等待/请求位配合使用,可定义为CPU块传输模式的等待线或DMA块传输模式的请求线。

SCC数据通信能力

SCC提供两个独立的全双工可编程通道,可用于常见的异步或同步数据通信协议。

异步模式

在异步模式下,每个通道可独立地发送和接收数据,每个字符为5 - 8位,可选择奇偶校验。发送器每个字符可提供1、1.5或2个停止位,并可随时提供中断输出。接收器的中断检测逻辑会在接收到的中断开始和结束时中断CPU。同时,为了防止干扰,采用了瞬态尖峰抑制机制,当在接收数据输入(RxDA或RxDB引脚)检测到低电平后,会在半个位时间后检查信号,若低电平不持续,则不开始字符组装过程。还能检测帧错误和溢出错误,并将其与部分字符一起缓冲,通过向量中断可快速处理错误情况。需要注意的是,SCC不要求发送和接收时钟信号对称,这使得它可以使用多种时钟源。

同步模式

同步模式下,SCC支持面向字节和面向位的同步通信。在面向字节的同步协议中,有多种模式可供选择,可通过6位或8位同步字符(单同步)、12位或16位同步模式(双同步)或外部同步信号进行字符同步,并且在不中断CPU的情况下移除前导同步字符。对于5位或7位同步字符,SCC通过将较大的模式重叠在多个传入的同步字符上来进行检测。CRC校验在面向字节的同步模式下会延迟一个字符时间,以便CPU可以在特定字符上禁用CRC校验。支持CRC - 16和CCITT两种错误检查多项式,并且可以将CRC生成器和检查器预设为全1或全0。当没有数据或CRC要发送时,发送器会插入6、8或16位同步字符。

SDLC模式

在SDLC模式下,SCC支持同步面向位的协议,如SDLC和HDLC,可自动发送标志、插入零和生成CRC。可使用特殊命令中止正在传输的帧,在消息结束时,若发送器欠载,会自动发送CRC和尾随标志。发送器还可编程为发送由连续标志字符组成的空闲线或稳定标记条件。若在消息中间发生发送器欠载,外部/状态中断会警告CPU,SCC也可编程为在欠载时自行发送中止信号。接收器可在SDLC或HDLC帧的前导标志上自动获取同步,并在SYNC引脚提供同步信号,还可编程为搜索由用户选择的单字节(或字节内的四位)地址寻址的帧或全局广播地址,忽略不匹配的帧。在接收数据时,可选择在第一个接收到的字符、每个字符或仅在特殊条件(帧结束)时产生中断。接收器会自动删除发送器在字符组装过程中插入的所有0,并计算和检查CRC以验证帧传输。在SDLC模式下,SCC必须编程为使用SDLC CRC多项式,并且生成器和检查器可预设为全1或全0。

SDLC循环模式

SDLC循环模式是SCC的另一个重要特性。在SDLC循环中,主控制器站管理循环上的消息流量,任何数量的从站都可参与。SCC在SDLC循环模式下充当从站,而在常规SDLC模式下的SCC则充当控制器。从站会一直监听循环上发送的消息,并在延迟一个位时间后重新传输这些消息。当从站有消息要发送且识别到线路上的EOP字符(位模式11111110)时,会将EOP的最后一个二进制1改为0,将其转换为标志序列,然后将自己的消息放置在循环上,并以EOP结束消息。其他有消息要发送的从站会通过相同的过程将其消息附加到第一个从站的消息后面。没有消息要发送的从站会回显传入的消息,除非识别到EOP,否则禁止在循环上放置消息。在SDLC循环模式下,支持NRZ、NRZI和FM编码。

波特率发生器

SCC的每个通道都包含一个可编程的波特率发生器(BRG)。它由两个8位时间常数寄存器组成一个16位时间常数、一个16位向下计数器和一个输出触发器组成。启动时,输出触发器设置为高电平,时间常数寄存器中的值加载到计数器中,计数器开始向下计数。当计数器达到0时,BRG的输出翻转,时间常数寄存器中的值再次加载到计数器中,重复该过程。时间常数可以随时更改,但新值要到下一次加载计数器时才生效。BRG的输出可作为发送时钟、接收时钟或两者,也可驱动数字锁相环。如果接收时钟或发送时钟未编程为来自TRxC引脚,BRG的输出可通过TRxC引脚输出。其时间常数与波特率的关系为:[Time Constant =frac{ PCLK or RTxC Frequency }{2 (Baud Rate)( Clock Mode )}-2] 其中,PCLK或RTxC是BRG的输入频率,时钟模式可以是1、16、32或64,由写寄存器4的D6和D7位选择。同步操作模式选择1,异步模式选择16、32或64。

数字锁相环

数字锁相环(DPLL)用于从NRZI或FM编码的数据流中恢复时钟信息。它由一个时钟驱动,该时钟的频率通常是数据速率的32倍(NRZI)或16倍(FM)。DPLL利用这个时钟和数据流来构建数据的时钟,该时钟可作为SCC的接收时钟、发送时钟或两者。当DPLL被选为发送时钟源时,它提供无抖动的时钟输出,该输出是DPLL输入频率除以所选编码技术的适当除数。对于NRZI编码,DPLL对32倍时钟进行计数以创建标称位时间,在计数过程中搜索传入数据流中的边缘,检测到边缘时进行计数调整。对于FM编码,DPLL从0计数到31,一个周期对应两个位时间,锁定时,数据流中的时钟边缘出现在计数15和16之间以及计数31和0之间,DPLL仅在以15到16计数转换为中心的时间内搜索边缘。DPLL的32倍时钟可以编程为来自RTxC输入或BRG的输出,其输出也可通过TRxC引脚输出。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分