HDL设计数字UART(中英文翻译)

上传人:新** 文档编号:465195782 上传时间:2024-01-27 格式:DOCX 页数:30 大小:893.79KB
返回 下载 相关 举报
HDL设计数字UART(中英文翻译)_第1页
第1页 / 共30页
HDL设计数字UART(中英文翻译)_第2页
第2页 / 共30页
HDL设计数字UART(中英文翻译)_第3页
第3页 / 共30页
HDL设计数字UART(中英文翻译)_第4页
第4页 / 共30页
HDL设计数字UART(中英文翻译)_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《HDL设计数字UART(中英文翻译)》由会员分享,可在线阅读,更多相关《HDL设计数字UART(中英文翻译)(30页珍藏版)》请在金锄头文库上搜索。

1、译文基于FPGA的串行控制器设计Thomas Oelsner QuickLogic Europe 应用注释:QAN20 简介目前设计开发和验证FPGA系统时,硬件描述语言HDL的使用变得越来越 主流。采用行为级描述不仅提高了产品的设计效率, 而且在设计验证中显示出其 独特的优势。目前最流行的HDL语言是Verilog和VHDL语言。本文介绍了采 用verilog语言对数字异步串行收发器进行设计和验证。UART通用异步串行收发器(UART)由二个独立的HDL模块组成。一个模块实现发 射功能,而另一个模块则实现接收功能。发射和接收功能模块在顶层设计时组合 到一起,这种接收和发射的组合是通信所必需的

2、。数据写入发射器,从接收器读出,所有的数据是以二进制8字节的形式通过一个双向CPU接口。由地址映射 的发射机和接收机通道可以很容易地建立接口。两个模块共用一个主控时钟,该时钟为mclkx16,在每个模块里,主控时钟mclkx16被分频成独立的波特率时钟。图1通用异步串行收发器通用异步串行收发器的特点是否具有全双工操作是标准UART数据帧格式是偶校验或奇校验模式是奇偶错误校验是帧错误校验是溢出错误校验是数据接收准备中断是数据发送准备中断是UART的功能概况UART的基本功能概况见下图。左边为“发送寄存器”、“发送移位寄存器” 以及“发送控制逻辑模块”,这些模块包含在发送模块txmix”中。右边为

3、“接收 移位寄存器”、“接收寄存器”和“接收控制逻辑模块”,这些模块包含在发送模 块rxmix”中。这两个模块有单独的输入和输出的控制线路,只有双向的数据总 线、主时钟和复位线是共享的。图2 UART框图顶层UART系统的I/O功能描述符号描述mclkx16输入用于主控时钟波特率的生产。reset输入主复位输入信号。parityerr输出表明被检测的数据帧有无奇偶校验错误。校验编码可以基于偶数 或可数模式。framingerr输出表明从rx输入的数据串是否符合如图2所示的UART数据帧格式。overrun输出表明接收模块准备接收新数据是,模块中仍然有数据未读取。rxrdy输出表明接收模块已经接

4、收新数据,并准备读取。txrdy输出表明数据已准备好加载到发送模块。read输入低电平有效的读选通信号,用于从接收模块中读取数据。write输入低电平有效的写选通信号,用于将数据写入发送模块。data7:0输入双向数据总线。数据通过该总线进行发送或接收。tx输出发送模块串行输出。复位或闲置时为高电平。rx输入接收模块串行输入。复位或闲置时为高电平。表3 UART的IO接口UART的标准数据格式图3为UART的串行数据格式,在用行数据帧中包含8位数据位以及编码比 特的信息。在连续传输线路之间,传输线路处于高电平。传输从低位的起始比特 开始,接下来的是8比特的数据信息,低位对于后边高位有重要的作用

5、。 然后是 1比特的奇偶校验位,对之前的8比特的数据位进行奇偶校验。奇偶校验位由奇 校验或偶校验的形式进行编码。奇偶校验位之后是高位停止比特,标志数据帧的 结束。UART时序图下面显示了数据是如何写入“发送寄存器”并如何加载给“发送移位寄存器”, 及在波特率时钟上升沿时如何传输到tx端进行输出的。图4发送时序图下图显示了数据如何从rx端输入写入“接收移位寄存器”并加载到“接收 寄存器”。最后接收模块发出rxrdty标志位。图5接收时序图发送模块主控时钟称为mclkx16 ,被分频成等于mclkx16/16的称为txclk的时钟频率。数据以并行的形式写入模块,而按照波特率时钟的频率以串行的形式从

6、tx端输出。从tx端输出的数据按照图3所示的UART数据帧格式发送。inrllnl6m chRI 丁订中痴巾他图6发送模块符号回描述mclkx16输入用于生成主控时钟波特率。reset输入主复位输入信号write输入低电平有效的写选通信号,将数据写入发送模块。data7:0输入数据传输是通过数据总线写入发送模块。在写选通脉冲的上升沿,数据总线的内容锁定在一个内部的“发送寄存器”。tx输出串行数据输出。串行数据帧通过这个端口发送,当复位或闲置时,tx保持高电平。txrdy输出表明数据锁存到“发送寄存器”,同时加载到“发送移位寄存器”, 发送寄存器”准备好接收新数据。表2发送模块IO接口功能符号内

7、部标志或信号的描述thrreg7:08位“发送寄存器”,用于锁存发送模块接收到的数据。tsrreg7:08位“发送移位寄存器”,发送模块的数据通过此输出。paritymodewire奇偶校验模式位表明了发送模块进行奇偶校验的模式。值 为“1”时,为奇校验,为“ 0”时,偶校验。txparityreg输出tx奇偶校验的结果。tag1,tag2reg此标志位表明发送模块的状态。txclkreg波特率时钟,根据时钟频率将数据通过tx输出。txdonewire表明一个数据串发送完成。txdatardyreg表明“发送寄存器”已锁存新数据,准备好进行发送。paritycyclewire表明tx输出端接收

8、到txparity的值时,发送模块的状态。cntreg3:0暂存器,用于将 clkx16时钟分频为txclk时钟。表3发送模块的内部信号发送模块的行为描述发送模块等待新的数据来写入模块,新的数据在发送模块初始化后发送。以 并行形式写入模块的数据转换成串行的形式并由tx端输出。当没有传输序列的时候,tx端输出高电平。用Verilog语言声明模块端口,这里定义的信号,是来自于模块并在这里输出的。在这里并没有详细地说明方向。module txmit(mclkx16,write,reset,tx,txrdy,data);图8发送模块的声明端口定义之后是端口的方向,方向为输入、输出或输入(双向),这在表

9、1中已说明。描述端口方向之后是声明内部信号,内部信号在Verilog语言中内部信号声明为Wire”或reg”数据类型,wire类型用于连续的赋值,也叫做组合声明。 reg类型在Verilog语言中用于“alway默,常常用于时序逻辑的赋值,但有时并 不是这样,进一步解释见Verilog参考书。模块内部信号的数据类型说明见表3。我们现在已经进行所有必要的声明,并作好准备看看实际的执行情况。硬件描述语言使我们可以用更多的行为模式来描述发送模块的功能,而不是把重点放在门一级的实际实现上。软件编程语言,函数和过程将庞杂的程序变得更具可读 性和易于维护。Verilog语言提供类似的函数和任务结构类似于软

10、件编程语言的 函数和过程。一个 Verilog语言的函数和任务相当于几行 Verilog代码,这些代码 使得输入信号影响输出信号或变量。函数和任务通常用在多行代码都是重复出现 的地方,从而使得设计易于阅读和维护。一个 Verilog的函数可以有多个输入, 但始终只有一个输出,而Verilog的任务在某些情况下可以同时有多个输入和多 个输出。下图显示了 Verilog的任务格式,保留了所有必要的语句,用来描述发 送模块的传输模式。UTSK smft1staaH RiqIiI tsr by one.tsrf7 h = I;与向 tsrfZ) = togi.laQ IEg;/ 串领 tagi - 3

11、02r.t0中;2=寸b。;fi 与。t = OtxpnriTy = tMptinfy 八 1 石ptirity图9发送传输模式我们可以看到在移位寄存器有2个标志位tagl和tag2,创建类似的任务来描述 发送模块的“闲置”和“负载”模式。使用Verilog语言,现在我们可以创建一个 “容易阅读”的行为模型的空穴传输过程。如在波特率时钟的上升沿,tsr中的内 容传输到tx端输出。在tsr传输的同时,奇偶校验位也产生了,如图10所示。重要的一点,就是在传输过程中tsr会进行补零。不同的后置标志位tag和 tsr补零位的组合表示不同的传输模式。如果奇偶校验循环周期的第二个周期是高电平,这意味着以标

12、志位tg2的值对tsr1赋值。当传输结束时,Txdone置高电平,这意味着以标志位tg2的置对tx赋值基于所述传输序列中的不同状态,“数据位”,“奇偶校验位”或“停止位” 被多路复用到tx输出。tediJfl,81* 4111c of * %(rQDirlieral. FCiist褶 untunicii门itMggJillH ctKdniEiiT ixdntnffdy) _dclrvOygiin 小 h i_dm-1 Shltt 弋今Qf 1r to tk outputhifG owl (in才 OutlJLJl Momucfl。tHt( (punryGycl tx . i , ftTMUji

13、asn r ovvrruti1Ia4 a7 :1)|图14接收模块符号IO接口描述mclkx16输入用于输入主控时钟波特率的生成。reset输入主复位输入信号。read输入低电平有效的读选通信号,用于从接收模块中读取数据。data7:0输出数据总线,数据以并行的形式从总线中读取。在读选通信号的下降 沿,数据加载到数据总线。rx输入接收信号,处于闲置状态时,保持为高电平。rxrdy输出表明已接收新数据,并准备将其读取。parityerr输出表明无论是否发生奇偶校验错误,都可以进行奇偶校验编码。framingerr输出表明发送到rx的串行信号的数据格式是否符合如图3所示的UART数据帧格式。overrun输出表明新数据准备传输到接收模块时,接收模块仍然有数据未读取。表4接收模块IO接口信号符号回内部标志或信号的描述rhrreg7:08位“接收寄存器

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号