×
嵌入式 > 技术百科 > 详情

Z16C32 IUSC集成通用串行控制器

发布时间:2021-10-25 发布时间:
|

特征
■两个全容量20兆赫DMA信道,每个信道具有32位寻址和16位数据传输。
■DMA模式包括单缓冲、流水线、阵列链和链接阵列链。
■环形缓冲区功能支持内存中缓冲区的循环队列。
■链接帧状态传输功能将接收帧的状态信息写入,并将传输帧的控制信息读取到DMA信道的阵列或链接列表,以显著简化处理帧状态和控制信息。
在突发模式下,可编程调节DMA总线占用,总线占用时间受到限制。
■0至20兆比特/秒,全双工信道,带两个波特率发生器和一个数字锁相环,用于时钟恢复。
接收机和发射机的32字节数据FIFOS
■高达12.5兆字节/秒(16位)的数据总线带宽
■在程序控制下的多协议操作,接收机和发射机有独立的模式选择。
■异步模式,1到8位/字符,1/16到2个停止位/字符,增量为1/16位;16x、32x或64x过采样;中断检测和生成;奇数、偶数、标记、空格或无奇偶校验和帧错误检测。支持9位和mil-std1553b协议。
■具有8位地址比较的HDLC/SDLC模式;扩展地址字段选项;16位或32位CRC;可编程空闲线路条件;可选前置传输和环路模式。背对背帧之间的可选标志数。
■面向字节的同步模式,1到8位/字符;可编程同步和空闲线路条件;可选接收同步剥离;可选前置传输;16位或32位CRC;Transmitto Receive Slaving(用于X.21)。
接收用外部字符同步模式
■带EBCDIC或ASCII字符码的透明双同步模式;自动CRC处理;可编程空闲线路条件;可选前置传输;自动识别DLE、SYN、SOH、ITX、ETX、ETB、EOT、ENQ和ITB。
■灵活的总线接口,可直接连接到大多数微处理器;用户可编程8或16位宽。直接支持680X0系列或8X86系列总线接口。
■用于ISDN、T1和E1(CEP)应用的接收和发送时隙分配程序。
带过渡检测的8位通用端口
■低功耗CMOS
68针PLCC组件
■提供电子程序员手册支持工具和软件驱动程序。

一般说明(续)
使用Z16C32 IUSC还有其他原因,而不仅仅是减少芯片数量和板空间经济。DMA和串行通道的相互通信也提供了应用的好处。例如,事件(例如HDLC帧末端的接收)从串行控制器内部传输到DMA,以便每个帧可以写入单独的内存缓冲区。缓冲区链接功能、环缓冲区支持、自动帧状态/控制块和帧末尾的缓冲区终止结合在一起,可以显著降低CPU开销
IUSC是软件配置,可满足各种串行通信应用。20兆比特/秒的数据速率和多协议支持使其非常适合在当今不断变化的规范和不断提高的速度的动态环境中应用。许多可编程功能允许用户调整设备响应以满足系统要求并适应未来的要求。IUSC包含各种复杂的内部功能,包括两个波特率发生器、一个数字锁相环、字符计数器和用于接收器和发送器的32字节FIFO。
芯片上的DMA通道允许接收器和发射器进行高速数据传输。IUSC支持通过DMA进行自动状态和控制传输,并允许在DMA控制下对串行控制器进行初始化。每个DMA通道可以在3个50ns时钟周期内完成16位传输,并且可以生成与32位、24位或16位内存范围兼容的地址。DMA通道可以在四种模式中的任意一种运行:单缓冲区、流水线、阵列链或链表。阵列链和链表模式提供分散读取和收集写入功能,且软件干预最少。为了防止DMA保存总线主控权的时间过长,可以通过计算时钟周期的绝对数量、总线事务的数量或两者同时计算来限制主控权时间。
CPU总线接口设计用于来自CISC和RISC处理器制造商(包括Intel、摩托罗拉和Zilog)的任何传统多路复用或非多路复用总线。总线接口可配置为16位数据、8位数据、单独地址或8位
无单独地址的数据,以支持多路复用或非多路复用总线。
IUSC处理异步格式、同步面向位格式(如HDLC)和同步字节定向格式(如Bisync和DDCMP)。此设备几乎支持任何串行数据传输应用程序。
IUSC可以在任何同步模式下生成和检查CRC。对CRC值的完全访问允许系统软件根据不同应用程序的需要重新发送或操作CRC。IUSC还为调制解调器控制信号提供设备。在不需要这些控制的应用中,调制解调器控制可用于通用I/O。
中断由串行通道内以及串行通道和DMA之间的菊花链层次结构支持。在串行控制器和DMA中,为每种中断类型分离中断向量有助于快速识别中断源。IUSC支持脉冲、双脉冲和状态中断确认周期。
支持工具可帮助设计者有效地对IUSC进行编程。技术手册详细描述了所有特性,并给出了编程顺序提示。电子程序员手册,DC 8287-02,是一个MS-DOS,基于磁盘的编程初始化工具,可以生成自定义序列。此外,Zilog还提供各种应用程序说明和开发板,帮助设计师进行硬件和软件开发。更多信息,请联系您最近的Zilog代表。
注:前斜杠前面加上“/”的所有信号均为低电平有效信号,如:b//w(字低电平有效);/b/w(字节低电平有效)。
电源连接遵循以下常规说明:
连接电路装置
电源VCC VDD接地GND VSS

引脚描述
Z16C32 68针PLCC针分配
显示了IUSC管脚的逻辑管脚分组
一次只能激活一个选通管脚(/ds,/rd,/wr或脉冲输入)。任何未使用的输入插脚(当IUSC是总线主或从时的输入)必须被拉到其非活动状态。
重置
重置(输入,低激活)。这条线上的低电平将IUSC置于已知的非活动状态,并对其进行调节,使来自下一个断言/cs管脚的写入操作的数据进入总线配置寄存器(BCR),而不考虑寄存器地址。/在通电期间,应尽快将重置降低,并在重新启动整个系统或通信子系统时根据需要将重置降低。
时钟
系统时钟(输入)。该信号是DMA和总线接口逻辑的定时参考。(串行控制器部分由选定的接收和发送时钟源进行时钟。)
地址/数据总线(输入/三态输出)。复位后,这些线路在控制微处理器和IUSC之间传输数据,也可以在IUSC内传输寄存器的多路复用地址。这种在主机处理器和IUSC之间的操作通常称为从机模式。一旦软件设置好设备并投入运行,这些线路也在IUSC和系统存储器之间传输多路地址和数据;这种操作称为主模式。AD15-0可根据IUSC在重置后是否感知活动开/关以及写入总线配置寄存器(BCR)的数据以多种方式使用。

芯片选择(输入,低激活)。这条线上的低值表示控制微处理器的当前总线周期指的是IUSC中的寄存器。当低接通/接通指示当前总线操作是中断确认循环时,IUSC忽略/cs。在多路复用总线上,iusc在/as上的上升沿锁定该管脚的状态;在非多路复用总线上,它在/ds、/rd或/wr上的上升沿/下降沿锁定/cs。


读取选通(输入/三态输出,低激活)。该行表示总线上的读周期,用于具有此类信号的主机处理器/总线。当IUSC控制总线并在主模式下运行时,它是一个输出,否则,它是一个由/cs low或/intack low限定的输入。对于主读取周期,IUSC在该行的上升(后缘)边缘捕获数据。对于从机读取周期,IUSC在该行变低后的指定访问时间内提供AD行上的有效数据,并将数据保持有效,直到主设备将该行释放为高。
写入频闪灯(输入/三态输出,低激活)。这条线表示总线上的写入周期,用于具有这种信号的主机处理器/总线。当IUSC控制总线并在主模式下运行时,它是一个输出,否则它是一个/cs low限定的输入。对于从机写入周期,IUSC在该行的上升(后缘)边缘捕获写入数据。对于主写周期,IUSC将有效数据放在AD线路上,然后将此信号驱动到低电平,并将数据保持有效,直到将此线路驱动回高电平。
字节/字选择(三态输出,高表示8位传输)。当IUSC控制总线并作为主控系统运行时,此行的高位表示要传输一个字节,低位表示要传输16位。在从属循环期间,IUSC忽略此信号:它从/as的上升沿的AD行,或从串行或DMA命令/地址寄存器中的一个位获得字节/字的区别。
等待
等待、准备或确认握手(输入/三态输出,低电平有效)。当IUSC控制总线并在主模式下运行时,该线路是一个输入。对于从循环,IUSC将激活该行作为输出。在两个方向上,线路可根据初始BCR写入期间的S//D输入状态承载等待或确认信号。如果在写BCR时S//D很高,则此行作为Zilog和大多数Intel处理器的就绪/等待行运行。在该模式下,当该行低时,IUSC将不会完成主循环,并且在准备完成中断确认循环之前,它将该行断言为低;当主机访问其中一个IUSC寄存器时,它从不断言该行。
如果写BCR时S//D很低,则该行随后作为摩托罗拉和某些Intel处理器的确认行运行。在此模式下,在该测线处于低位之前,IUSC不会完成主循环。当它准备完成一个中断确认周期时,它断言该行为寄存器读写周期低。

对于从循环,这是一个全时(图腾柱)输出。Board Designer可以通过外部逻辑门或三态或开放收集器驱动程序,将此信号与来自其他从系统的类似信号结合起来。
中断请求
(输出,低激活)。当(1)其IEI管脚高,(2)其一个或多个中断条件被启用和挂起,以及(3)未为其最高优先级启用/挂起条件或任何更高优先级的内部条件设置服务中标志时,IUSC将此线路驱动低。软件可以编程总线接口是以图腾柱还是开放式漏极的方式驱动这个管脚。
中断确认
(输入,低激活)。该行的低值表示主机处理器正在执行中断确认循环。在某些系统中,该行的低值可能进一步表明外部逻辑已选择该IUSC作为要确认的设备,或作为要确认的潜在设备。总线配置寄存器中的一个字段选择该线路是否携带一个电平敏感的“状态”信号,该信号是IUSC应在/as或/ds的前沿采样,还是单脉冲或双脉冲协议。如文中所述,IUSC以各种方式响应中断确认循环,具体取决于此编程以及/int和iei行的状态。
中断使能输入(输入,高激活)。此信号和IEO引脚可以是中断确认菊花链的一部分,与其他可能请求中断的设备一起使用。如果在中断确认周期外IEI很高,一个或多个IUSC中断条件被启用并挂起,且未将服务下标志设置为最高优先级条件或任何更高优先级条件,则IUSC通过将其/int pin驱动为低来请求中断。如果在中断确认周期内IEI管脚处于高位,一个或多个IUSC中断条件被启用并挂起,且未为最高优先级条件或任何更高优先级设置服务下标志,则IUSC保持IEO低位并响应周期。
中断使能输出(输出,高激活)。此信号和/或IEI可以是中断确认菊花链的一部分,与其他可能请求中断的设备一起使用。当IEI管脚较低时,和/或在任何情况下设置了在用标志时,IUSC都会将其IEO管脚驱动至较低。在中断确认周期内,该IUSC驱动该信号的方式略有不同,因为如果它(已经)请求中断,它也会强制IEO低。

管脚说明(续)
巴斯雷克
总线请求(输出,低激活)。DMA控制器部分将这条线驱动得很低,以请求对主机总线的控制。/根据总线配置寄存器中的一个位,BusReq可以是一个开漏或可复输出。在开漏模式下,IUSC对管脚进行采样作为输入,仅在采样后将其驱动为低。
/仓
总线确认输入(输入,低激活)。当IUSC接收到该输入的下降沿时,它会对其是否正在驱动(或刚刚开始驱动)/busreq进行采样。如果是这样,它将保持/大约高并控制主机总线。如果没有,则通过低行驶/大约低行驶通过公共汽车补助。该信号可与/bout一起构成总线授权菊花链,用于总线控制的仲裁。或者,它可以连接到外部仲裁者的直接正授权,并且/bout-pin可以不连接。
/回合
总线确认输出(输出,低激活)。如上所述,该信号可与/bin一起使用,形成总线授权菊花链,用于总线控制的仲裁。
/中止
中止主循环(输入,低激活)。在主循环期间,此行的低值会使当前活动的DMA通道终止其活动并进入禁用状态。注意/abort仅在DMA周期内有效,因此IUSC知道应该中止哪个通道。还要注意,在/abort生效之前,外部逻辑必须将/wait//rdy设置为正确的状态,以便完成循环。
接收数据(输入,正逻辑)。串行输入。
传输数据(输出,正逻辑)。串行输出。
接收时钟(输入或输出)。该信号可用作串行控制器中任何功能块的时钟输入。或者,软件可以对iusc进行编程,使该pin是一个输出,其中包含多个接收器或内部时钟信号、通用输入或输出或中断输入。
发送时钟(输入或输出)。该信号可用作串行控制器中任何功能块的时钟输入。或者,软件可以对iusc进行编程,使这个pin是一个输出,其中包含几个发送器或内部时钟信号中的任何一个、通用输入或输出、或中断输入。
接收DMA请求(输入或输出)。在设备测试中或在不以通常方式同时使用串行控制器和DMA控制器部分的应用程序中,该管脚可以承载来自接收FIFO的低动态DMA请求。在IUSC上,该请求在内部路由到片上接收DMA通道;通常将RxREQ管脚用作通用输出或中断输入。
传输DMA请求(输入或输出)。在设备测试中或在不以通常方式同时使用串行控制器和DMA控制器部分的应用程序中,该管脚可以承载来自发送FIFO的低动态DMA请求。在IUSC上,该请求在内部路由到片上传输DMA信道,通常将RxREQ管脚用作通用输出或中断输入。
数据载波检测(输入或输出,低激活)。软件可以对IUSC进行编程,使该信号启用/禁用接收器。此外,软件可以对设备进行编程,以请求中断以响应这条线上的转换。插脚也可以用作简单的输入或输出。
清除以发送(输入或输出,低激活)。软件可以对IUSC进行编程,使该信号启用/禁用发射器。此外,软件可以对设备进行编程,以请求中断以响应这条线上的转换。插脚也可以用作简单的输入或输出。

端口7/txFutt
通用I/O或传输COM
普莱特
(输入或输出)。软件可以对IUSC进行编程,使该引脚是通用输入或输出,或者使其携带来自发送器的传输完整信号,从而控制外部驱动器。IUSC在内部锁存器中捕获该管脚上的转换。
PoT6/FSYNC
通用I/O或帧同步(输入或输出)。软件可以对iusc进行编程,使该pin成为iusc时隙分配电路的通用输入或输出或帧同步输入。IUSC在内部锁存器中捕获该管脚上的转换。
PORT5/RXSENC
通用I/O或接收同步(输入或输出)。软件可以对IUSC进行编程,使该管脚为通用输入或输出,或者使其携带来自接收器的接收同步输出。IUSC在内部锁存器中捕获该管脚上的转换。
PORT4/TXTSA
通用I/O或传输时隙
分配门(输入或输出)。软件可以对IUSC进行编程,使该管脚是通用输入或输出,或者使其携带传输时隙分配器的门输出,从而在时隙ISDN或分数T1应用中启用外部TXD驱动程序。如文中所述,IUSC在内部闩锁中捕获该管脚上的转换。

端口3 / RXTSA
通用I/O或接收时隙
分配门(输入或输出)。软件可以对IUSC进行编程,使该管脚是通用输入或输出,或者使其携带接收时隙分配器的门输出。IUSC在内部锁存器中捕获该管脚上的转换。
端口2
通用I/O(输入或输出)。软件可以对IUSC进行编程,使该引脚成为通用输入或输出。IUSC在内部锁存器中捕获该管脚上的转换。
端口1-0/CLK 1-0
通用I/O或参考
时钟(输入或输出)。软件可以对IUSC进行编程,使这些管脚中的任何一个都是通用输入或输出,或者是一个参考时钟,该时钟可以向下划分,以获得接收器和/或发射器的时钟。当其中一个管脚是通用I/O时,IUSC会在内部闩锁中捕获其上的转换。
电源和接地。每个电源轨包含七个插脚,确保了良好的信号完整性,防止了输出端的瞬变,并提高了输入端的噪声裕度。IUSC的内部配电网络要求所有这些插脚都正确连接。

建筑学
IUSC集成了一个快速和高效的双通道DMA和一个高度通用的串行通信控制器。从两个不同的角度描述了IUSC的功能能力;作为一个数据通信设备,它以各种数据通信协议传输和接收数据;作为一个微处理器外围设备,具有两个DMA通道,提供以下功能:
四种DMA传输类型、灵活的总线接口和矢量中断。该体系结构分为三个部分:DMA和总线接口能力、DMA和串行通道之间的通信以及串行通信能力

DMA和总线接口功能
IUSC的两个通用的DMA信道与灵活的总线接口相结合,使其能够满足各种应用需求。将数据移入和移出发送器和接收器所需的时间通过IUSC的速度(20兆赫时钟,每个字三个时钟周期,典型情况下)最小化;两种具有链接帧状态传输的缓冲链模式;使接收帧保持在单独的内存缓冲区中的早期缓冲终止;以及矢量中断。下面简要介绍了其中的一些功能,但用户应参阅IUSC技术手册以获取更多信息。
DMA方式
IUSC包含两个DMA信道,一个用于发射机,一个用于接收机。每个通道支持32位地址和16位字节计数。通道以四种模式之一运行。在正常模式下,处理器必须在每个缓冲区的末尾重新加载地址和长度。在流水线模式下,在DMA传输到第一个缓冲区的过程中,处理器可以随时加载下一个缓冲区的地址和长度。在数组链模式下,处理器在内存中创建一个地址/长度对表,以便由通道自动传输。在链表模式下,处理器在内存中创建地址和长度对的链表,由通道自动传输。
单缓冲模式是四种数据传输类型中最基本的一种。每个存储器缓冲区的起始地址和要传输到存储器或从存储器传出的最大字符数被编程到IUSC寄存器中。当DMA被启用时,它在系统内存和发送和接收FIFO之间传输所有数据。
流水线模式与单缓冲区模式类似,它增加了一组寄存器,处理器可以将地址和下一个内存缓冲区的计数加载到该寄存器中以重新加载DMA。因此,当一个缓冲区完成时,IUSC会预先用下一个缓冲区的地址和计数进行编程,这样只要软件比内存缓冲区使用提前一步,DMA就不需要在每个缓冲区之间停止。
在数组模式中,两种链接模式之一,软件建立一个内存缓冲区信息表。数组的长度仅受缓冲区可用的系统内存量的限制。IUSC用缓冲区地址和大小数组的位置进行编程。这种模式的优点是短帧的突发较少
可能会超出系统的跟踪能力。使用接收状态块和发送控制块以及早期缓冲区终止功能简化了内存缓冲区中串行消息的分割和重新组装。当一个dma通道获取一个零的缓冲区计数时,它会停止并可以创建一个数组结束中断。
链表模式是最通用的DMA模式。它具有阵列模式快速切换缓冲区的能力,而不需要缓冲区信息在连续表中。每个链接条目包含:写入或读取数据的起始地址;缓冲区的大小;可选的状态或控制信息;以及指向下一个链接的指针。通过更改列表项中的链接,可以轻松地添加和删除内存缓冲区。
DMA特征
在链表模式下,IUSC有一个可编程功能,以便于在环中使用缓冲区。启用此功能后,DMA会在读取每个数组或列表项后,将零写回其缓冲区长度字段。因此,如果一个链表缠绕在它本身上,那么在软件处理缓冲区之前,DMA通道将不会重用缓冲区,并且通过在count字段中写入一个非零值(获取一个零值的count值将停用DMA通道)表明它有资格重用。此功能还可以在数组模式下用于跟踪缓冲区的使用。
在总线从机和主模式下,IUSC可以按任意字节顺序读写数据字。它支持许多英特尔微处理器使用的小端约定和许多摩托罗拉微处理器使用的大端约定。当IUSC是总线主控时,它可以被编程为在需要时仅生成高16位地址,从而在每次传输时保存一个时钟周期(每次传输三个时钟,而不是四个)。当在16位总线上使用iusc时,消息的起始地址是奇数地址,iusc通过首先获取一个字节自动将自己重新定位到偶数字边界。当重新传输的帧头大小与接收到的帧头大小不同时,这一点尤其重要。两个插脚可用作进行中传输类型的状态信号。
有多种命令和状态寄存器来控制和监视DMA通道。DMA信道可以通过/abort pin或软件命令中止。暂停命令也可用于临时暂停传输

总线接口与利用
总线接口模块位于外部总线插脚和与其他功能模块互连的片上16位数据总线之间。它包括几个灵活的总线接口选项,由总线配置寄存器(BCR)的内容控制。BCR是主机处理器在重置后第一次写入IUSC的目的地。
IUSC兼容多路和非多路总线接口,可以传输8位或16位。它支持使用/rd和/w r或r//w和/ds选通管脚以及字节顺序的任意一种格式进行数据传输。IUSC生成Intel或摩托罗拉微处理器使用的等待或就绪确认握手。此外,支持三种类型的中断确认信号,用于自动将中断向量返回到任何通用微处理器。
有几个选项控制IUSC如何使用总线。/bin和/bout引脚可用于形成总线授权菊花链。在如何仲裁信道间总线主控请求以及在请求之间离开总线多长时间上,IUSC有几个选项。两个DMA通道的优先级是可编程的,并且可以在请求之间交替,以允许两个通道平等地访问总线。一旦其中一个通道掌握了总线,如果请求控制,可以将控制权传递给另一个通道,或者可以强制IUSC离开总线。可编程抢占功能选择在低优先级通道使用总线时,如果高优先级通道开始请求控制,那么它是否可以接管总线的控制。
在发送FIFO满、接收FIFO为空或同时为空之前,IUSC保持/BUSREQ活动,从而最大限度地利用其32字节FIFO。可编程停留计时器可用于通过计算总线传输、时钟周期或两者兼有来限制IUSC保持总线主控状态的时间。因此,可编程FIFO请求级别、通道仲裁选项和可编程驻留计时器功能的组合为应用软件提供了灵活性,以优化IUSCS总线占用率,以满足系统吞吐量和总线响应要求。
中断
IUSC的中断子系统源自Zilog在提供微处理器领域最先进的中断功能方面的经验。这些功能在与ZiLog微处理器一起使用时是最好的,但是也很容易将IUSC与其他微处理器连接起来。四个管脚专用于在串行通道内以及串行通道和DMA之间创建中断菊花链层次结构。
当IUSC响应来自CPU的中断确认时,它会在数据总线上放置一个中断向量。为了加快中断响应时间,IUSC修改向量中的三个位,以指示请求的中断类型。为串行通道和DMA提供单独的矢量,以便于区分中断源。
DMA有四个中断源,分别用于接收和发送信道。每个中断源都是独立启用的,并且所有的DMA中断都有一个主启用。四个中断源分别是数组结束/链接结束、缓冲结束、硬件中止和软件中止。
在串行部分IUSC中的六种中断类型(接收状态、接收数据、传输状态、传输数据、I/O状态和设备状态)中,每一种都有三个与之相关的位:中断挂起(IP)、服务中断(IUS)和中断启用(IE)。如果为给定源设置了IE位,那么该位可以源请求中断。注意,六种类型中的各个源也有自己的中断臂位。最后,还有一个主中断启用(MIE)位,它全局地启用或禁用来自串行通道的所有中断。
提供中断(/int)、中断确认(/intack)、中断启用输入(iei)和中断启用输出(ieo)管脚,以创建自动机制,将矢量放在总线上的多个设备的最高优先级挂起中断中。具有最高挂起中断的设备(/int low,iei high)在总线上放置一个矢量,以响应中断确认周期。
在IUSC中,IP位表示一个中断被挂起。如果设置了一个IUS位,该中断将被服务,并且所有低优先级的中断源都将被阻止请求中断。如果没有更高优先级的设备请求中断,则在中断确认周期中设置一个IUS位。

DMA和总线接口能力(续)
有六个接收状态中断源。每一个都是单独武装的:接收器退出狩猎,接收到空闲线路,接收到中断/中止,接收到代码冲突/传输结束/消息结束,奇偶校验错误/中止和溢出错误。每当接收FIFO填充的数据超过接收中断控制寄存器(RICR)中编程的水平时,就会生成接收数据中断。传输状态中断有六个来源。每个都是单独防护的:发送前置码、发送空闲线路、发送中止、发送帧结束/消息结束、发送CRC和欠载错误。当发送FIFO清空低于发送中断控制寄存器(TICR)中编程的电平时,就会生成发送数据中断。
I/O状态中断用于报告六个管脚中的任何一个的转换。在任意一个或两个边上生成中断,每个边都有单独的边选择和配置。可编程生成I/O状态中断的管脚是/RXC、/TXC、/RXREQ、/TXREQ、/DCD和/CTS。这些中断独立于管脚的编程功能。
设备状态中断有四个单独启用的源:接收字符计数器下溢、获取的dpll同步、brg1零计数和brgo零计数。有关更多详细信息,请参阅IUSC技术手册。
DMA和串行通道之间的通信
与单独的DMA控制器相比,IUSC在DMA和串行通信控制器之间的芯片内通信提供了实现更高效率的能力。链接帧状态传输功能将每个接收帧的状态和字节计数作为数组或链接列表的一部分写入内存。这提供了一种简单易用的机制来存储接收到的消息的结果,而无需对主机软件检查结果的速度进行任意限制。同样,传输帧的控制信息可以由DMA从阵列或链路上自动读取,并传输到串行逻辑中的寄存器中。
在所有模式下,DMA都可以接受来自串行通道的信号,以便提前终止缓冲区。当接收到消息的结尾时,数据被传输到缓冲区,状态被写入内存。如果启用了链接帧状态传输,则状态将在单缓冲区和管道模式中的数据之后写入,或者在数组和链接列表模式中写入数组/链接。此早期缓冲区终止是
与DMA中的终端计数条件相同。因此,接收消息结尾是从一个内存缓冲区到下一个缓冲区的无缝转换。
图5显示了使用链表模式使用这些交互功能的示例。此示例显示启用了链接帧状态传输和环缓冲区功能的内存缓冲区环的格式。任何设置“rxbound”位(rcsr4=1)的协议(如hdlc或802.3)都适用于此示例。为了简单起见,链接列表如图5所示,有三个链接,并且可以尽可能大的内存。每个列表项中的第六个字是保留的,不应使用(它将列表项保持在32位边界上)。如果到达缓冲区的结尾,而不是帧的结尾,则IUSC将零作为状态和计数写入。此外,如果传输通道需要启动一个新的内存缓冲区而不是在帧的开始,则DMA会忽略传输控制块。

DMA和串行通道共同工作的另一种方法是使用传输字符计数器将一大块数据分解成若干固定长度的帧。例如,需要将位于多个内存缓冲区中的大文件作为固定长度的较小帧传输。使用IUSC,串行通道被编程为在每次传输设定字节数时发送帧结束序列。因此,DMA传输不会中断,也不需要系统响应来将大文件分解为帧。
与离散串行和DMA芯片解决方案相比,IUSC提供了更高的吞吐量,因为离散芯片之间不直接通信,因此,一个设备的状态必须由CPU读取并与另一个设备通信。这通常需要中断和暂停活动,直到状态/控制信息被更新。这将使用宝贵的时间和总线带宽,从而限制总吞吐量。

数据通信能力
IUSC提供一个可编程的全双工信道,用于任何通用数据通信协议。接收器和发送器完全独立,每个都由32字节深的FIFO和16位帧长计数器支持。所有模式都允许可选的偶数、奇数、标记或空间奇偶校验。同步模式允许选择两个16位或32位CRC多项式。最多8位的字符长度可单独为接收器和发射器编程。接收FIFO中的数据携带错误和状态条件,以大大减少发送或接收消息所需的CPU开销,而关键控制参数通过TX FIFO伴随发送字符。中断可单独设置为信号状态,如溢出、奇偶校验错误、帧错误、帧结束、接收空闲线路、同步采集、传输欠载、发送CRC、发送关闭同步/标志、发送中止、发送空闲线路和发送前置码。此外,一些有用的内部信号,如接收字符边界、接收同步、传输字符边界和传输完成,可以发送到管脚,供外部电路使用。
协议
异步模式。接收器和发送器以时钟速率的1/16、1/32或1/64的速率处理数据。接收器拒绝少于半位时间的起始位,并包括帧错误后的恢复逻辑。发送器能够以1/16位的增量在每个字符9/16到2个停止位的范围内发送一个、两个或任何地方。
九位模式。此模式与异步模式相同,只是接收器检查奇偶校验位和停止位之间的附加地址/数据位的状态。这个位的值与数据一起被配置。在发送器中,该位自动插入传输数据的FIFO值。
等时模式。发送器和接收器都使用1X时钟对起停(异步)数据进行操作。发送器发送一个或两个停止位。
与代码冲突异步。这类似于等时模式,只是起始位被一个三位时间码违规模式替换,如mil-std1553b中所述。发送器发送零位、一位或两位停止位。
HDLC模式。在此模式下,接收器识别标志,执行可选地址匹配,容纳扩展地址字段,并执行零删除和CRC检查。接收端能够接收sharedzero标志,识别中止序列,可以接收任意长度的帧。发射机自动发送
打开和关闭标志,执行零插入,可编程为发送中止、扩展中止、标志或CRC以及发送欠载运行时的标志。在编程信息长度的末尾,发送器自动发送带有可选CRC的关闭标志。在发送器中选择sharedzero标志,并为帧中的最后一个字符编程单独的字符长度。
除了可以启用的状态中断之外,以中止终止的帧还可以在前面的字符上用状态位标记。仅在帧中检测到中止,因此消除了由于空闲线路而导致的错误检测。IUSC提供了四种线路前导码选择(标志、所有1、所有0或交替1和0),以在开始数据传输之前调节线路。此功能对于使接收器DPLL同步以及作为一种流控制机制来降低帧传输速度,而不降低时钟或禁用发送器很有价值。
HDLC环路模式。此模式仅在发送器中可用,并允许在HDLC环路配置中使用IUSC。在此模式下,接收器被编程为在HDLC模式下工作,以允许发送器回显接收到的信息。一旦接收到特定的位模式(实际上是七个连续的序列),发送器就停止重复数据,并插入自己的帧。
802.3模式。此模式使用16位地址比较实现了IEEE 802.3的数据格式。在此模式下,/dcd和/cts用于实现载波感知和碰撞检测与接收器和发射器的交互。必须在外部提供后退时间。
单模态。在此模式下,使用单个字符进行同步。同步字符可以是8位长,也可以是与数据字符相同的长度。接收器可以自动从接收的数据流中删除同步字符。发射器被编程为在欠载运行或编程信息长度结束时自动发送CRC。
slaved单同步模式。此模式仅在发送器中可用,并允许发送器(就像在单同步模式下一样运行)发送数据,其字节边界与接收数据的字节边界同步。
双模式。此模式与单同步模式相同,只是字符同步需要两个连续字符。

透明的双同步模式。在此模式下,同步模式为DLE-SYN,可编程,可从ASCII或EBCDIC编码中选择。接收器识别控制字符序列,自动处理CRC计算,无需CPU干预。发送器被编程为在欠载运行时发送SYN、DLE-SYN、CRC-SYN或CRC-DLE-SYN,并在编程信息长度结束时自动发送带有可选CRC的闭合DLE-SYN。
外部同步模式。接收器通过一个外部提供的用于定制协议应用程序的pin信号与接收数据同步。
数据编码
IUSC被编程为以八种不同的方式对串行数据进行编码和解码(图6)。发射机编码方法的选择与接收机解码方法无关。
NRZ。在nrz中,1由位单元持续时间的高电平表示,0由位单元持续时间的低电平表示。
NRZBnrzb从nrz倒转。
NRZI Mark。在nrzi标记中,1由位单元开始处的转换表示,即,前一位单元中存在的电平颠倒。0表示位单元开始时没有转换。
NRZI空间在nrzi空间中,1表示位单元开始时没有过渡,即保持前一位单元中存在的电平。0由位单元开头的转换表示。
Biphase Mark。在双相标记中,1由位单元开始处的一个跃迁和位单元中心处的另一个跃迁表示。0仅由位单元开头的转换表示。
双相空间在双相空间中,1仅由位单元开始处的跃迁表示。0由位单元开始处的转换和位单元中心处的另一个转换表示。
Biphase Level。在双相电平中,1表示为位单元前半部分的高电平和位单元后半部分的低电平。0在位单元的前半部分由低表示,在位单元的后半部分由高表示。
微分两相水平。在差分双相电平中,1由位单元中心的跃迁表示,其极性与前一位单元中心的跃迁相反。0表示为位单元中心的过渡,其极性与前一位单元中心的过渡相同。在这两种情况下,位单元的开头都有转换,以设置进行正确中心转换所需的级别。

数据通信能力(续)
字符计数器
IUSC包含用于接收器和发送器的单独16位字符计数器。接收字符计数器被设置为可编程的起始值,或在每个接收帧的开始处自动设置,并且可以在帧期间在软件控制下重新加载。计数器对每个接收字符递减。在接收消息的末尾,计数器中的当前值自动加载到四个深度的FIFO中。启用接收状态块(RSB)功能后,计数器值和状态(RCSR)可自动传输到数据后的内存中。在阵列和链表模式下,RSB可以传输到阵列或列表条目,以便于软件访问。这允许数据的DMA传输在接收帧结束时继续进行,而无需CPU干预,因为FIFO中的值允许CPU确定每个帧的状态和长度。
同样,传输字符计数器在每个传输帧开始时自动加载,并且可以在帧期间在软件控制下重新加载。计数器在每次写入发送FIFO时递减。当计数器达到零,并且发送该字节时,发送器自动以适当的方式终止消息(通常通过发送CRC和关闭标志或同步字符),而不需要CPU干预。在链表和数组模式下,可以从链表或数组中提取发送字符数和帧控制字。
波特率发生器
IUSC包含两个波特率生成器。每个发生器由一个16位时间常数寄存器和一个16位下计数器组成。在操作中,计数器随所选输入时钟的每个周期递减,当计数达到零时,可以自动重新加载时间常数。波特率发生器的输出在计数器达到时间常数的一半时切换,在计数器达到零时再次切换。可以随时写入新的时间常数,但新值在计数器的下一次加载之前不会生效。两个波特率发生器的输出被发送到时钟复用器,供内部或外部使用。输入
对于波特率发生器,可以是/txc管脚、/rxc管脚、端口管脚或任一计数器的输出。波特率发生器输出频率与波特率发生器输入时钟频率有关,公式如下:
输出频率=输入频率/时间常数+1。
注:这允许输出频率在输入频率的1至1/65536范围内,包括1至1/65536。
波特率发生器的输出可以用作发送或接收时钟、DPLL电路的参考时钟输入和/或输出在/rxc或/txc引脚上。
数字锁相环
IUSC包含一个DPLL(数字锁相环),用NRZI或双相编码从数据流中恢复时钟信息。DPLL由一个时钟驱动,该时钟通常是接收数据速率的8、16或32倍。DPLL使用这个时钟和数据流来构造数据的时钟。这个时钟可以路由到接收器、发送器或两者,也可以路由到外部使用的一个管脚。在所有模式中,DPLL计算输入时钟以创建名义位时间。在计数时,DPLL会监视传入的数据流的转换。当检测到转换时,DPLL可以进行计数调整(在下一个计数周期内),以产生跟踪输入位单元的输出时钟。DPLL向时钟复用器提供适当的相位发送和接收时钟。
计数器
IUSC包含两个5位计数器,它们被编程为将输入时钟除以4、8、16或32。这两个计数器的输出被发送到时钟多路复用器。计数器可用作波特率发生器的预分频器。当DPLL提供接收时钟时,它们还提供来自公共源的稳定传输时钟。端口0和端口1的插脚可用作计数器的输入。

时钟多路复用器
时钟复用器逻辑选择接收和发送时钟以及/rxc和/或/txc引脚上的可选输出。在Z16C32中,端口0和端口1的针脚可以直接用作接收和发送时钟,也可以用作计数器的输入。
时隙分配程序
IUSC配备了两个时隙分配器,以支持ISDN和分数T1通信。接收者有一个分配者。每个时隙分配程序在一帧内选择一个或多个时隙,但是,所选时隙必须是连续的。第一个选定的时隙可从帧的时隙0(第一个时隙)编程到时隙127。连接插槽的数量可从1个编程到15个(总插槽数)。第一个时隙的时间可以偏移整数个时钟。此偏移量是一个延迟,可从0(无偏移量)编程为7个时钟,以一个时钟(一个位单元)的增量。该偏移量可用于补偿帧同步检测逻辑中的延迟。
测试模式
IUSC可编程为本地回送或自动回音操作。在本地环回中,发送器的输出在内部路由到接收器的输入。这允许在没有任何外部逻辑的情况下测试IUSC数据路径。Auto Echo将RxD管脚直接连接到TXD管脚。这对于测试IUSC外部的串行链路很有用。
输入输出端口
端口插脚是通用I/O插脚。它们用作额外的调制解调器控制线或其他I/O功能。每个端口位单独可编程为通用输入、输出或专用输入或输出功能。此编程在端口控制寄存器中完成。无论用作输入或输出,端口插脚都可以随时读取。
端口管脚的专用功能包括时隙分配门输出、传输完整输出、时钟输入、接收同步输出或帧同步输入。
端口管脚捕获边缘过渡。捕获的编程使用端口状态寄存器中的端口锁存/解锁命令位完成。每个端口位都是单独控制的。锁存/解锁位用作状态信号,以指示端口pin上发生了转换,并用作打开捕获此转换的锁存的命令。检测上升沿和下降沿。当检测到转换时,闩锁关闭,保持输入的后转换状态。
如果端口pin上没有发生转换,则锁定/解锁位保持在0;当检测到上升沿或下降沿转换时,该位设置为1;如果在闩锁关闭时发生一个或多个转换,则在闩锁打开后立即设置为1。将0写入锁存/解锁位对锁存没有影响。将1写入该位将重置状态位并打开闩锁。要将端口用作无边缘检测的输入,将1写入锁存/解锁位以打开锁存,然后读取端口状态寄存器以获得当前的插针输入状态。

程序设计
电子程序员手册(基于MS-DOS)和技术手册可用于提供有关IUSC编程的详细信息。还包括IUSC中所有寄存器的解释和特性。
系统对IUSC中的寄存器进行编程,以配置信道。在这种情况发生之前,系统必须通过写入总线配置寄存器(BCR)来设置总线接口。BCR没有特定地址,只有在设备硬件重置后才能访问。硬件复位后,第一次写入IUSC,对BCR进行编程。从那时起,可以访问其它信道寄存器。不需要向IUSC提供BCR写入的特定地址;IUSC知道硬件重置后的第一个写入是针对BCR的。
在多路复用总线的情况下,所有寄存器都可以通过在每个总线周期开始时由/as锁存的地址直接寻址。D//C插脚仍用于通过多路总线直接访问接收和发送数据寄存器(RDR和TDR);如果D//C高,则忽略/AS锁定的地址,并执行RDR或TDR访问。
在非多路复用总线情况下,使用通道命令/地址寄存器(CCAR)中的地址指针间接访问通道寄存器。所需寄存器的地址首先写入CCAR,然后访问所选寄存器;此访问后,CCAR中的指针自动清除。
关于国际自然保护联盟,还有两点需要注意。CCAR中的通道复位位将通道置于复位状态。要退出此重置状态,要么将所有零的一个字写入CCAR(16位总线),要么将所有零的一个字节写入CCAR(8位总线)的较低字节。其次,复位后,发送和接收时钟被禁用。在任何初始化序列中,首先要做的是写入时钟模式控制寄存器(CMCR),以选择接收器和发送器的时钟源。
串行/DMA(S//D)引脚用于区分串行通道和DMA寄存器。DMA寄存器分为三个逻辑组:应用于发送和接收、发送寄存器和接收寄存器的公共寄存器。DMA发送功能和接收功能的寄存器是对称的,因此,在下面的页面中,每个寄存器都显示一个图表。当寻址DMA寄存器时,数据/控制(D//C)引脚在发送寄存器和接收寄存器之间选择。例如,在地址10101处有一个用于发送和接收(tbcr和rbcr)的dma字节计数寄存器,其s//d pin低。在D//C引脚低的情况下选择TBCR,在D//C引脚高的情况下选择RBCR

寄存器描述
本节描述设备寄存器中各种位的功能。本节将讨论以下惯例:
控制位由CPU写入和读取,不被设备修改。命令位由CPU写入以启动设备中的操作,并读取为零。状态位由设备控制并读取以检查设备状态。设备将忽略对状态位的任何写入。命令/状态位由设备和CPU控制。它们可以被CPU写入和读取,也可以被设备修改。
保留位不用于设备的这种实现,可能在设备中实际存在,也可能不存在。物理上存在的任何保留位都是可读和可写的,但不存在的保留位总是作为零读取。为确保与未来版本的设备兼容,保留位应始终用零写入。保留命令不应出于相同的原因使用。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA及CPLD应用领域不断拓展