《外文翻译格式样本(19页).doc》由会员分享,可在线阅读,更多相关《外文翻译格式样本(19页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-外文翻译格式样本-第 18 页毕业设计外文资料翻译学 院: 信息科学与工程学院 专 业: 电子科学与技术 姓 名: 康兴华 学 号: 040704128 (用外文写)外文出处: 填入英文资料名称 附 件: 1.外文资料翻译译文;2.外文原文。 指导教师评语: 签名: 年 月 日附件1:外文资料翻译译文UART的核核的概况带有Avalon接口的通用异步接收/发送器的核(UART的核)所执行的方式是为了沟通一个系统内置的Altera FPGA和外部设备之间的串行字符流。核实行RS-232协议计时,并提供可调波特率,奇偶,停止和数据位,以及可选RTS/CTS的流量控制信号。它的功能设置是可配置的,
2、对于给定的系统,它允许设计者实现必要的功能。核提供了一个简单的寄存器映射的Avalon存储器映射(Avalon-MM)的从属接口,使Avalon-MM的主控外设(如一个NiosII处理器)通过读和写控制寄存器和数据寄存器来简单的与核沟通。该UART的核是SOPC Builder-ready,并且可以轻松的集成到任何SOPC Builder产生的系统中,本章包含以下章节:“功能描述”见8-2页“设备和工具支持”见8-4页“在SOPC Builder中对核实例化”见8-4页“硬件仿真考虑”见8-9页“软件编程模型”见8-9页1. 功能描述图1 展示了UART核的分块表注意图及图题的格式核有两个用户
3、可见部分:寄存器文件,它通过Avalon-MM从属端口来存取RS-232的信号,RXD,TXD,CTS和RTS1.1 Avalon-MM从属接口和寄存器该UART的核提供了一个Avalon-MM从属接口到内部寄存器文件。连接用户接口包含6个16位的寄存器:控制,状态,rxdata,txdata,除数,endofpacket。一个主控外设,如一个NiosII处理器,可以使寄存器通过串行连接来控制核和传输数据。该UART的核提供了一个活跃的中断请求(IRQ)输出,当新的数据已收到或当核心准备传输另一字符时,可以要求一个中断,进一步的细节见8-20页“中断行为”。Avalon-MM从属端口有能力随流
4、量控制来转移。该UART的核可用于连接直接存储器(DMA)外设与Avalon-MM流量控制来使连续数据传输自动化。比如,UART的核和存储器之间。见“计时器核心”篇章细节。见“Avalon存储器映射接口规格”内容来了解Avalon-MM接口细节。1.2 RS-232接口该UART的核实现了RS-232的异步传输和接收逻辑。该UART的核通过TXD和RXD端口发送和接收串行数据。大多数Altera的FPGA系列产品的输入/输出缓冲不符合RS-232的电压水平,如果由一个RS-232连接器的信号来直接驱动,将有可能受到损害。为了遵守RS-232的电压信号规格,在FPGA的I/O引脚与外部RS-23
5、2连接器之间需要一个外部电平移动式缓冲(例如Maxim Max3237)。该UART的核使用逻辑0为标志,逻辑1为空间0。必要的话,FPGA里面的逆变器可以用来扭转任何RS-232信号的极性。 发射器的逻辑该UART的发射器包含一个7位,8位或9位的txdata控制寄存器和一个相应的7位,8位或9位的发射移位寄存器。Avalon-MM主控外设通过Avalon-MM从属端口来写入txdata控制寄存器。当一个串行发射移位操作当前没有进展时,发射移位寄存器自动从txdata寄存器上载入。发射移位寄存器直接提供TXD输出。数据以最低有效位元(LSB)开头,转移出TXD脚发送。这两个寄存器提供双重缓冲
6、,当先前被写入的字符转移出时,一个主控外设可以将一个新的数值写入txdata寄存器。该主控外设可以通过读状态寄存器的准备信号(trdy),发射器移位寄存器(tmt)以及发射器超支误差(toe)位来监测发射器状态。发射器逻辑自动插入RS-232的规格要求的串行TXD数据流中开始,停止和奇偶位的正确数目。1.4 接收器的逻辑该UART的接收器包括一个7位,8位,或9位接收器移位寄存器和相应7位,8位或9位rxdata控制寄存器。Avalon-MM主控外设通过Avalon-MM从属端口来读rxdata控制寄存器。每次新的字符完全被收到时,rxdata控制寄存器将自动从接收移位寄存器载入。这两个寄存器
7、提供双重缓冲。当随后的字符被转移到接收移位寄存器后,rxdata寄存器可以保持先前收到的字符。主控外设通过读状态寄存器的读就绪(rrdy),接收器超时误差(roe),间隔检测(brk),奇偶误差率(pe),以及帧误差(fe)位可以监测接收器的状态。接收器逻辑自动检测RS-232的规格要求的串行RXD数据流中开始,停止和奇偶位的正确数目。在接收的数据中,接受器逻辑检查四个特殊状态(帧误差,奇偶误差,接受超时误差,间隔),并设置相应的状态寄存器位(fe,pe,roe,brk)。 波特率的产生该UART核的内部波特率时钟是来自Avalon-MM时钟输入。内部波特率时钟是由一个时钟分频器产生的。该除数
8、值可以来自下列情形之一:恒定值指定在系统生成时间16位值存放在除数寄存器该除数寄存器是一个可选的硬件功能。如果在系统生成时间它不生效,那么除数值固定,波特率不能改变。2. 设备和工具支持该UART的核能够针对所有Altera的FPGA产品。3. 在SOPC Builder中对核实例化在硬件中对UART实例化为每个UART的核制造了至少有两个输入/输出端口:一个RXD输入,一个TXD输出。硬件可能包括流量控制信号,CTS输入和RTS输出,这是可选的。设计者用MegaWizard接口在SOPC Builder为UART的核配置了硬件功能集合。以下各节描述可行的选择。3.1 配置设置本节叙述配置设置
9、。 波特率选择该UART的核能执行对于RS-232连接的任何标准的传输速率。波特率可被两种方式之一配置:固定率:波特率固定在系统生成时间,且不能通过Avalon-MM从属端口改变。可变率:基于除数寄存器中保持的时钟分频器值,波特率可变。主控外设通过向除数寄存器中写入新值来改变波特率。波特率是基于Avalon-MM接口提供的时钟频率计算出来的。在没有再生成的UART的核硬件情况下改变系统时钟频率将会导致不正确信号。波特率(位)的设置复位后波特率的设置决定了默认的波特率。该波特率选项提供了标准的预设值(例如,9600、57600、115200bps),或者你可以手动输入任何波特率。波特率值用来计算
10、一个合适的时钟除数值以落实所期望的波特率。波特率和除数值的关系如下:除数=int(时钟频率)/(波特率)+)波特率=(时钟频率)/(除数+1)波特率可以通过软件设置来改变。当设置开启时,硬件包含一个16位除数寄存器,并且地址偏移为4。因为除数寄存器是可写的,所以波特率可以通过向该寄存器写入一个新值来改变。当设置关闭时,UART的硬件不包含除数寄存器。UART硬件实行一个常数(不可改变)波特率除数,并且系统产生后,值不可改变。在这种情况下,写入地址偏移4已无效。从地址偏移4读入产生了一个未定的结果。 数据位,停止位,奇偶校验位该UART核的奇偶位,数据位和停止位是可配置的。这些设置固定在系统生成
11、的时候,它们不能通过寄存器文件改变。以下是可行的设置:数据位设置见表1。表1 数据位设置注意表题在表的上面设置允许值描述数据位7,8,9该设置决定了txdata,rxdata和endofpacket寄存器的宽度。停止位1,2该设置决定了核随着字符传输一个还是两个停止位,不论停止位如何设置,核总是在第一个停止位终止接收活动,而忽略接下来所有的停止位。奇偶校验无,偶数,奇数该设置决定了UART传输字符时是否有奇偶校验,UART是否希望收到的字符有奇偶校验。见下文进一步的细节。奇偶设置当奇偶设置为无,传输逻辑传送数据,而无需包括一个校验位,并且接收逻辑假定传入数据不包括校验位。当奇偶为无时,状态寄存
12、器的pe(奇偶误差)位是无效的,总是为0。当奇偶设置为奇数或偶数时,传输逻辑计算并插入所需的校验位到离开的TXD脚发送码流,并接收逻辑检查到来的RXD码流中的校验位。如果接收器认定数据的奇偶位不正确,状态寄存器的奇偶误差设置为1。当奇偶设置是偶数时,如果一个字符中含“1”的个数为偶数,那么奇偶位是0。否则奇偶位为1。同样的,当奇偶是奇数,如果一个字符中含“1”的个数为奇数,那么奇偶位为0。 流量控制以下是可用的流量控制方案。包括CTS/RTS的引脚与控制寄存器位。当此设置开启时,UART的硬件包括:CTS_N(逻辑负CTS)输入端口RTS_N(逻辑负RTS)输出端口状态寄存器中的CTS位状态寄
13、存器中的DCTS位控制寄存器中的RTS位控制寄存器中的IDCTS位基于这些硬件设施,Avalon-MM主控外设可检测CTS和传送RTS流量控制信号。CTS输入和RTS输出端口直接同状态和控制寄存器的位相连,并没有直接影响到核的其它任何部分。当包括CTS/RTS的引脚和控制寄存器位设置处于关闭状态时,核并不包括上面所列的硬件。控制/状态位CTS,DCTS,IDCTS和RTS将无效,它们总是为0。 Avalon-MM随着流量控制的转移(DMA)该UART核的Avalon-MM接口有选择的使Avalon-MM随流量控制转移。这就允许一个Avalon-MM主控外设只在UART核心准备接收另一个字符时写
14、数据和只在核心有可用数据时读数据。该UART核还可以有选择的包括endofpacket寄存器。包括end-of-packet寄存器当此设置开启时,UART的核包括:一个7位,8位或9位endofpacket寄存器地址偏移量为5。数据宽度由数据位的设置决定。状态寄存器中的eop位控制寄存器中的ieop位Avalon-MM接口中的endofpacket信号,来支持数据随流量控制转移到系统中其他主控外设或从系统中其他主要外设转移出。endofpacket(EOP)检测允许UART的核终止与Avalon-MM主控外设随着流量控制的数据交易。EOP检测可以用一个DMA控制器。比如,使一个UART自动将收
15、到的字符写入存储器,直到到来的RXD流中遇到一个指定的字。这个终止字符的值取决于endofpacket寄存器。当endofpacket寄存器不能正常工作时,UART的核心将不包括上列的来源。向endofpacket寄存器写入是无效的,读入则产生一个未定值。 仿真设置当UART的核的逻辑生成,仿真模型也会产生。仿真模型提供的功能可以简化和加快使用UART核的仿真系统仿真设置的变化,从而不能影响硬件中UART的核的行为。这些设置只是影响功能仿真。比如,如何使用下列设置模拟NiosII系统,它涉及到AN351:模拟NiosII嵌入式处理器设计。 模拟rxd输入字符流您可以输入字符流,只要模拟系统复位
16、,它将会到达RXD端口被模拟。该UART核的MegaWizard接口接收一个任意字符串,它后来被合并到UART仿真模型中。复位端复位后,随着核能够接收新的数据,字符串会逐字的输入到RXD端口。 编写互动窗口在系统生成的时候,UART的核发生器可以产生ModelSim宏。它使仿真期间与UART模型的通信便利。以下方案可供选择:创造ModelSim别名打开流输出窗口创造ModelSim宏来打开一个可显示所有从TXD端口的输出的窗口。创造ModelSim别名打开互动的激励窗口创造一个ModelSim宏来打开一个为rxd端口接收激励的窗口,这个窗口可将打印在窗口上的任何字符发送给rxd端口。 模拟发射
17、器波特率RS-232的传输速率往往慢于系统中的其他任何进程,模拟真正波特率的功能模型时,这是很少有用的。例如,在传输速率为115200时,它通常需要几千个时钟周期来传输一个单一的字。该UART的仿真模型有能力运行一半的时钟常数,这使得模拟UART用一半的系统时钟速度,可以转移一位,即约为每20个时钟周期一个字。您可以选择下列情形之一的模拟发射器波特率:加速(使用除数=2):仿真时,TXD脚每两个时钟周期发送一位。实际(使用真实波特率除数):TXD脚以实际波特率传输,其值由除数寄存器决定。4. 硬件仿真考虑当使用ModelSim模拟器时,仿真功能创造了方便的模拟Nios,NiosII或Excal
18、ibur处理器的系统。每个处理器的文件编制记录了这些功能的建议用法。其他用途也有可能,但将需要额外的用户努力,以创造一个定制的模拟过程。仿真模型在UART核的高层HDL文件中被执行。合成HDL在同一文件里被执行。仿真的特点是采用了翻译开启和翻译关闭合成指令来执行,使某些路段的HDL代码对综合工具来说可见。如果你是用Altera的推荐仿真程序,那么不编辑仿真指令。如果你为自己定制的仿真流程改变了仿真指示,那么请注意SOPC Builder在系统生成期间会改写现有文件。采取防范措施确保你的修改不被覆盖。关于NiosII处理器系统模拟UART的核的细节请看AN351:模拟NiosII处理器的设计。为
19、详细了解在Nios的嵌入式处理器系统模拟UART的核AN189:模拟Nios的嵌入式处理器的设计。5. 软件编程模型以下章节描述UART的核的软件编程模型的建立,包括寄存器映射和软件声明来访问硬件。对NiosII处理器的用户,Altera提供了硬件抽象层(HAL)系统库驱动器,它使你用ANSIC的标准库函数访问UART,如printf( )和getchar( )。 HAL系统库支持该Altera公司提供的驱动程序所执行的HAL字符模式的装置驱动器对NiosII系统来说,可以整合到HAL系统库。HAL用户应通过熟悉的HAL的API和ANSIC的标准库来访问UART,而不是访问UART寄存器。io
20、ctl( )的要求是指允许HAL用户控制硬件依赖性方面的UART。注意:如果你的程序使用HAL设备驱动器来访问UART硬件,对设备寄存器的直接访问将干扰驱动器的正确行为。对NiosII处理器的用户来说,HAL系统库API提供了完全的UART核的功能。NiosII程序把UART的核看作是一个字符模式装置,并通过使用ANSIC的标准库函数同时发送和接收数据。该驱动支持在SOPC Builder中有效的CTS/RTS控制信号,见8-11页“驱动器的选择:快与小的执行”。下面的代码显示了最简单可行的使用,印刷信息标准输出使用printf( )。在这个例子中,SOPC Builder系统包含一个UART
21、的核,并且HAL系统库已配置好,以使用这个装置来标准输出。例如:印刷字符到一个UART的核,作为标准输出#includeint main()printf(Hello world.n);return 0;下面的代码显示了使用的标准库从UART装置读字符和向UART装置发送信息的过程。在这个例子中,SOPC Builder系统中包含一个SOPC Builder的系统包含一个UART的核命名为uart1,它不一定作为标准输出设备被配置。在这种情况下,程序对装置就像任何其他节点中的HAL文件系统一样。例如:发送和接收字符。/* A simple program that recognizes the
22、characters t and v */#include #include int main ()char* msg = Detected the character t.n;FILE* fp;char prompt = 0;fp = fopen (/dev/uart1, r+); /Open file for reading and writingif (fp)while (prompt != v) / Loop until we receive a v.prompt = getc(fp); / Get a character from the UART.if (prompt = t) /
23、 Print a message if character is t.fwrite (msg, strlen (msg), 1, fp);fprintf(fp, Closing the UART file.n);fclose (fp);return0;该NiosII软件开发者的手册提供了完整的HAL系统库的详细情况。 驱动器的选择:快与小的执行为容纳所需的不同类型的系统,UART的驱动提供了两种变体:一种快速的版本和一个小型版本。快速行为都将被默认使用。无论是快速和小型驱动器完全支持C标准库函数和HAL的API。快速驱动器是一个中断驱动的执行,当设备尚未准备好发送或接收时,它允许处理器执行其它
24、任务。因为UART的数据传输速率与处理器相比缓慢,快速的驱动器能给系统提供一个较大的执行优点,使系统在过渡期间可以执行其它任务。小型驱动器是询问执行的,它在发送和接收每个字符之前要等待UART硬件。有两种启动小轨迹的驱动器。为HAL系统库工程进行小轨迹设置。这个选择也会影响系统中所有设备的设备驱动器。注明预处理选项-DALTERA_AVALON_UART_SMALL。如果你要用小型、询问执行的UART驱动器,你可用这一选项,但你不能影响其它设备的驱动器。见NiosII IDE的帮助系统详细了解如何设置性能及预选项。如果CTS/RTS流量控制信号在硬件中被允许,那么快速驱动器可以自动使用它们,小
25、型驱动器总是忽略它们。 ioctl( )运行该UART的驱动支持ioctl( )函数让基于HAL的程序要求装置的具体运行。表2界定了UART驱动支持的操作要求。表2 UART ioctl( )操作请求含义TIOCEXCL锁定设备以免额外的访问。很难进一步的用open()访问设备直到这个文件描述器关闭或使用TIOCNXCL ioctl请求来解除锁定。为了让请求得以实现,这个设备没有其他存在的文件描述器。ioctl“arg”参数将被忽略。TIOCNXCL解除对之前的额外访问的锁定。详见上文内容。ioctl“arg”参数将被忽略。额外的操作要求也只供快速驱动选择,如表3为使这些操作在你的程序中运行,
26、你必须设置预选项。-DALTERA_AVALON_UART_USE_IOCTL。表3 仅对快速驱动的可选UART ioctl()操作请求含义TIOCMGET通过填写输入termios(1)结构的内容来返回设备的当前设置。这个结构的指针作为ioctl“opt”参数的值。TIOCMESET根据输入termios结构(1)里的值来设置设备的配置。这个结构的指针作为ioctl“arg”参数的值。注:(1)termios结构是指newlibC标准库。您可以在文件/components/ 找到定义。参考NiosII软件开发手册详细了解ioctl( )函数。 局限性该HAL驱动程序用于UART的核,不支持e
27、ndofpacket寄存器,见“寄存器变址”一章。 软件文件该UART的核伴随着以下软件文件。这些文件确定了低层次的接口硬件,并提供有关的HAL驱动。应用开发商不应该修改这些文件。-这个文件定义了核心的寄存器变址,提供了象征性常数,以访问低层次的硬件产品,该符号在此文件中使用的只有设备驱动程序的功能。,-这些文件为HAL系统库执行UART的核心的设备驱动。5.6 Legacy SDK路径该UART的核也为第一代Nios的处理器的Legacy SDK路径所支持。关于这些路径的细节参考“伴随第一代Nios的处理器的UART文件编制”。为详细了解基于Legacy SDK到HAL系统库API的升级程序
28、,参考AN350:NiosII处理器的升级Nios处理器系统。5.7 寄存器映射程序员使用的针对第一代Nios处理器的HAL API或Legacy SDK从不通过寄存器直接访问UART核。一般而言,寄存器变址只对程序员为核心作写设备驱动时有用。注意:Altera公司提供的HAL设备驱动程序可以直接访问设备寄存器。如果你是写驱动程序,并且HAL驱动对同样设备有用,那么你的驱动将会与之产生冲突而运行失败。表4是UART的核的寄存器变址,设备驱动控制并通过存储器映射同核心沟通。表4 UART核的寄存器映射偏移寄存器读/写说明/寄存器位151312111098765432100rxdataRO(1)(
29、2)(2)收到数据1txdataWO(1)(2)(2)发送数据2Status(3)RW(1)eopctsdcts(1)errdytrdytmttoeroebrkfepe3controlRW(1)ieoprtsidctstrbkieirrdyitrdyitmtitoeiroeibrkifeipe4Divisor(4)RW波特率除数5Endofpacket(4)RW(1)(2)(2)End-of-Packet 值注:(1)这些位均予以保留。读操作返回了一个未定值,写为0。(2)这些位可能或不可能存在,这取决于该数据宽度硬件的选择。如果它们不存在,它们会读0,而写操作无效。(3)写0到状态寄存器来清
30、除dcts,e,toe,roe,brk,fe,pe位。(4)这个寄存器可能或不可能存在,这取决于硬件配置选项,如果不存在,读返回一个未定值,而写无效。一些寄存器和位是可选的,这些寄存器只有当它们在系统生成时被启用,它们才会存在于硬件中,可选的寄存器和位说明如下: rxdata寄存器该rxdata寄存器通过rxd输入保持收到的数据。当一个新的字符通过rxd输入完全收到时,它将被转移进rxdata寄存器,并且状态寄存器的rrdy位设置为1。当读rxdata寄存器时,状态寄存器的rrdy位设置为0。如果一个字符转入rxdata寄存器而rrdy位也已设定(即以前的字符不能恢复),那么将会发生接收器超时
31、误差,并且状态寄存器的roe位设置为1。不论以前的字符是否被读取,新的字符总是转移入rxdata寄存器。向rxdata寄存器写入数据是无效的。 txdata寄存器Avalon-MM主控外设写入字符而被转移到txdata寄存器。字符不应被写入txdata直到发射器已经为新的字符准备好,这由状态寄存器的trdy位可以显示出来。当一个字符写入txdata寄存器时,trdy位设置为0。当字符从txdat寄存器被转移到发射器移位寄存器时,trdy位置为1。如果当trdy位为0时,字符写入txdata寄存器,结果是未定的。读取txdata寄存器将返回一个未定值。举例来说,假设发射器逻辑是闲置的,并且Ava
32、lon-MM主控外设向txdata寄存器写入第一个字符。TRDY位置为0。当字符转移到发射器移位寄存器时,又置为1。然后主控外设将第二个字符写入txdata寄存器,TRDY位又被置为0。然而这时移位寄存器仍忙着向TXD输出移动第一个字符。直到第一个字符完全移出,第二个字符自动移入移位寄存器,TRDY位才置为1。 状态寄存器状态寄存器的个别位显示UART核内的特殊情况。每个状态位与控制寄存器内一个相应的中断使能位相关。这个状态寄存器在任何时间都能读取,读操作不能改变任何位的值。向状态寄存器写入0会清除DCTS,E,TOE,ROE,BRK,FE和PE位。状态寄存器位列在表5。表5 状态寄存器位位位
33、名称读/写清除说明0(1)PERC奇偶错误。当收到的校验位有意想不到(不正确)逻辑水平时,就发生了奇偶错误。当核接到的字符有不正确的校验位,PE位设置为1。PE位保持设定为1 ,直到它通过状态寄存器的写操作被明确清除。当PE位被设置时,从rxdata寄存器的读操作产生了一个未定值。 如果奇偶校验的硬件选项没有被激活,将无奇偶校验并且PE位总是为0 。见页8-6数据位,停止位,奇偶 。1FERC帧错误。当接收器无法侦测到正确的停止位时,就发生了帧错误。当核收到不正确的停止位时,FE位设为1。FE位将保持设置1,直到它通过状态寄存器的写操作被明确清除。当FE位被设置时,从rxdata寄存器的读操作
34、产生了一个未定值。2BRKRC间隔检测。当RXD脚保持低电平(逻辑0)的持续时间超过一个全字符时间(数据位加上开始,结束和奇偶位)时,接收器的逻辑检测到间隔。当检测到一个间隔时,brk位设置为1 。该brk位保持设定为1 ,直至它通过状态寄存器的写操作被明确清除。3ROERC接收超时误差。当新收到的字符在先前的字符被读取(即当RRDY位是1)之前转移进rxdata保持寄存器,就会发生接收超时错误。在这种情况下,ROE位设置为1,rxdata以前的内容也被新的字符覆盖。ROE位保持设置为1直到它通过状态寄存器的写操作被明确清除。4TOERC传输超时错误。当新收到的字在先前的字符被转移进移位寄存器
35、(即当TRDY位是0)之前写入txdata保持寄存器,就会发生传输超时错误。在这种情况下,TOE位设置为1。TOE位保持设定为1,直到它通过状态寄存器的写操作被明确清除。5TMTR传输空状态。该tmt位显示发送器移位寄存器的当前状态。当移位寄存器正在将一个字符移出TXD脚时,TMT设为0。当移位寄存器处于闲置状态(即一个字符没有在传送),TMT位是1。一个Avalon-MM主控外设通过检查TMT位可决定传输是否完成(并且在串行链路的另一端被收到)。6TRDYR传送准备。该TRDY位显示txdata保持寄存器的目前状态。当txdata寄存器是空的,它是为一个新的字符作准备,并且trdy是1。当t
36、xdata寄存器已满,TRDY为0。一个Avalon-MM主控外设在向txdata写入新的数据前必须等待TRDY为1。7RRDYR接收字符准备就绪。该RRDY位显示rxdata保持寄存器的目前状态。当rxdata寄存器是空的,这是没有准备好读和rrdy 是0。当一个新收到的值转入rxdata寄存器,RRDY设置为1。读rxdata寄存器使RRDY位清为0。一个Avalon-MM主控外设在读rxdata寄存器之前必须等待RRDY位等于1。8ERC例外。E位显示一个发生的例外情况。E位是一个TOE,ROE,BRK,FE,PE位的逻辑或。E位和其相应的在控制寄存器的中断使能位(IE)的位提供一个方便
37、的方法来针对所有的错误情况启用/禁用IRQs。E位通过状态寄存器的写操作设置为0。10(1)DCTSRCCTS的信号的改变。每当逻辑层次的过渡在CTS_N输入端口(采样同步Avalon-MM时钟)被检测到时,该DCTS位设定为1。这一位是由两个在CTS_N的下降和上升过渡来设定。该DCTS位保持设定为1,直至它通过状态寄存器的写操作被明确清除。如果流量控制硬件选项没有被激活,DCTS位总是为0。见页8-6“流量管制”。11(1)CTSRCTS信号。CTS位反映了CTS_N输入的瞬时状态(采样同步Avalon-MM时钟)。因为CTS_N输入是逻辑否定的,当逻辑电平0应用到CTS_N输入时,CTS
38、位是1。该CTS_N输入对发送或接收的进程没有任何作用。该CTS_N输入的只有有形的影响是CTS和DCTS位和一个IRQ的状态,当控制寄存器的idcts位启用时,它们就能产生。如果流量控制硬件选项没有被激活,该CTS位总是为0。见页8-6“流量管制”。12(1)EOPR遇到包结束。该EOP位由下列情形之一的活动设定为1:一个EOP字符就被写入txdata一个EOP字符从rxdata被读入该EOP字符是由endofpacket寄存器的内容决定的。该EOP位保持设定为1,直至它通过状态寄存器的写操作设置为0。如果“包括endofpacket寄存器”的硬件选项没有被激活,EOP位总是0。见8-7页的
39、“Avalon-MM转移随流动控制(DMA)转移”。注:(1)这个位是可选的,并且在硬件中可能不存在。 控制寄存器控制寄存器由一个个别位组成,它们每一个都控制UART的核运行的一个方面。控制寄存器里的值在任何时间都可读取。控制寄存器的每一位使状态寄存器的相应位产生中断请求信号。当状态位和相应的中断使能位都为1时,核产生一个中断请求信号。比如,PE位是状态寄存器的“0”位,而IPE位是控制寄存器“0”位。当PE位和IPE位都为1时,产生一个中断请求。控制寄存器位说明见表6。表6 控制寄存器位位位名称读/写说明0IPERW使中断了奇偶误差。1IFERW使中断了帧误差。2IBRKRW使中断了一个间隔
40、探测。3IROERW使中断了一个接收器超时误差。4ITOERW使中断了一个发射器超时误差。5ITMTRW使中断了一个发射器移位寄存器空状态。6ITRDYRW使中断了传输准备。7IRRDYRW使中断了读准备。8IERW使中断了一个例外。9TRBKRW传输间隔。TRBK位允许Avalon-MM主外设通过TXD输出传输一个间隔字符。当TRBK位设置为1时,TXD信号被强制设为0。TRBK位超越了任何的逻辑电平,发送器逻辑将会驱动RXD输出。TBRK位可干扰任何传输的进程。Avalon-MM主外设在适当的间隔时间过去后,必须将TRBK设置回1。10IDCTSRW使中断了CTS信号的改变。11(1)RT
41、SRWRTS信号。RTS位可直接提供RTS_N输出。一个Avalon-MM主外设在任何时候都可写RTS位。RTS位的值只影响RTS_N输出;它不影响发送器或接收器逻辑。因为RTS_N输出是逻辑否定的,当RTS位是1时,RTS_N输出上是低逻辑电平0。如果流量控制硬件选项没有被激活,RTS位总是为0,写操作无效。见8-6页“流量控制”。12IEOPRW使中断了包结束情况。注:(1)这个位是可选的,并且在硬件中可能不存在。 除数寄存器(可选)除数寄存器里的值用来产生波特率时钟,有效波特率是由公式计算的:波特率=(时钟频率)/(除数+1)这个除数寄存器是一个可选的硬件功能。如果波特率可以通过软件更改
42、的硬件选项没有被激活,则除数寄存器是不存在的。在这种情况下,写入除数无效。读取除数返回一个未定值。更多资料见8-5页“波特率选项”。 endofpacket寄存器(可选)endofpacket寄存器里的值决定了可变长度DMA交易的endofpacket字符。复位后,默认值是零,这是无效的ASCII字符(0)。更多相关资料,请参阅8-16页的表5的对eop位的描述。endofpacket寄存器是一个可选的硬件功能。如果包括endofpacket寄存器的硬件选项没有激活,则endofpacket寄存器时不存在的。在这种情况下,写入endofpacket是无效的,读操作返回一个未定值。 中断行为该U
43、ART的核产出一个单一的IRQ信号给Avalon-MM接口,它能连接系统的任何一个主控外设,如一个NiosII处理器,主控外设必须读取状态寄存器来查明中断原因。每个中断情况有一个相关位在状态寄存器和一个中断使能位在控制寄存器。当任何一项中断情况发生,相关的状态位设置为1,而且保持。直到它被明确确认。当任何一个状态位被设置,同时相应的中断使能位是1时,可断定IRQ输出。Avalon-MM主控外设可通过清除状态寄存器来确认IRQ。复位时,所有的中断使能位设置为0,所以说,核不能断言有一个IRQ,直到一个或多个中断使能位是1。所有可能的中断情况及其相关状态和控制(中断使能)位在页6-16的表6-5和页6-18的表6-6列出。状态位的描述中提供了每个中断情况的详情。6. 参考文献这一章参考了下列文件:NiosII软件开发者的手册QuartusII手册第五章的“计时器核”这一节Avalon的存储器映射的接口规范。AN351:模拟NiosII处理器的设计AN189:模拟Nios的嵌入式处理器设计
限制150内