完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
UART 内核模块是整个设计的核心,所以它也是整个设计中最为复杂的模块。由于 UART 内核模块的整体结构比较复杂,下面的内容将从模块接口、状态机设计和实现代码 3 方面介绍UART 内核的实现方法。 1.UART 内核模块的接口 (1)CPU UART 内核模块提供的 CPU 接口就是 UART 模块的 CPU 接口,如图 5-18 虚线框中所示。 这些端口又可以分为两组:第一组是与发送相关的,包括 send、send_bus 和 send_over,其中 send 信号是发送控制的信号,send_bus 是待发送数据的总线,send_over 是发送完成的提示信号;第二组是与接收相关的,包括 recv、recv_bus 和 error,其中 recv 信号表示有新的数据被接收,recv_bus 是接收数据的总线,error 信号表示数据接收产生错误。CPU 接口的端口定义如表 5-11 所示。 其中,DATA_BIT 是 UART 内核模块实体声明中定义的类属参数,表示数据位的长度。 (2)奇偶校验器 UART 内核模块通过总线选择模块和奇偶校验器模块实现奇偶校验,它们之间的连接方式如图 5-19 所示。 总线选择器的两个输入端分别连接到数据发送总线 send_bus 和数据接收总线 recv_bus上,它的输出连接到奇偶校验器的输入端,最后奇偶校验器的校验结果输出连接到 UART 的一个端口 parity 上。这样的连接方式有一个好处,就是在发送和接收的不同过程中,只要通过一个总线选择信号 sel_pv 就能够选择不同的奇偶校验内容,sel_pv 信号是由 UART 内核的一个端口连接到总线选择器的选择信号端口上。 由上述内容可知, UART 使用的端口除了上面已经介绍的数据发送总线和数据接收总线外,就是总线选择信号 sel_pv 和奇偶校验信号 parity 了。它们的定义如表 5-12 所示。 (3)计数器模块 计数器模块的功能是在输入时钟的驱动下进行计数,当到达计数上阈时给 UART 内核一个提示信号,它们两者之间的连接方法如图 5-20 所示。 在数据接收、数据加载和数据发送过程中,都需要使用到计数器,并且不同的过程中提供给计数器的时钟信号是不一样的。要选择计数器时钟信号,可以通过一个二选一选择器实现。二选一选择器的两个输入端分别连接到波特率发生器的 indicator 提示信号和系统时钟信号,同时其信号选择端口连接 UART 内核的一个 sel_clk 端口,这样便可以通过控制 sel_clk 端口实现对计数器模块时钟信号的控制。另一方面,要正确使用计数器需要对其进行复位和使能,所以 UART 内核还提供了两个端口 reset_parts 和 ce_parts,作为子模块复位信号和使能信号的端口。以上介绍的 4 个端口定义如表 5-13 所示。 (4)移位寄存器 UART 内核和移位寄存器之间的接口主要可以分为 3 个作用:第一,UART 内核需要控制数据加载过程,所以具有向移位寄存器发送串行数据的接口;第二,已接收的数据是保存在移位寄存器内部的,所以移位寄存器具有提供内部寄存器数据的接口;第三,在不同的工作流程中,移位寄存器的工作时钟也不同,可能是波特率时钟,也可能是系统时钟,所以 UART 内核还需要有控制移位寄存器输入时钟的信号接口。图 5-21 是 UART 内核和移位寄存器之间的连接示意图。 UART 内核对数据加载过程的控制是通过 send_si 信号、sel_si 信号和一个二选一选择器实现的。图 5-21 中左侧的二选一选择器的作用即是串行数据选择,它的输入端分别接到 UART内核的串行数据发送端口 send_si 和 RS-232 的数据接收端口 RxD,信号选择端口则和 UART 内核的 sel_si 端口相连,输出端口连接到移位寄存器的数据输入端口。这样,在进行数据加时,UART 内核可以通过 sel_si 信号控制 UART 内核的串行数据输入端口作为移位寄存器的输入;当进行数据接收时,UART 内核又可以将 RS-232 的接收端口 RxD 选择为移位寄存器的输入。 UART 内核对移位寄存器输入时钟的控制方法和对计数器的控制方法一样,也是利用了一个二选一选择器,再通过选择信号控制。图 5-21 中右侧的二选一选择器的作用便是实现对移位寄存器输入时钟的选择,它的两个输入信号分别是波特率时钟 bd_clk 和系统时钟,选择信号连接到 UART 内核的一个端口 sel_clk 上,输出和移位寄存器的输入时钟端口相连。 移位寄存器内部寄存器的数据是通过一个 regs 端口发送给 UART 内核的,regs 端口是多位信号,其宽度就是 RS-232 串行通信的总位数(起始位、数据位、奇偶校验位和停止位)。表5-14 所示为 UART 内核和移位寄存器之间的端口。 除了表 5-14 所列的端口,UART 内核的 reset_parts 端口还和移位寄存器的复位端口相连,作为它的复位信号。 (5)波特率发生器 UART 内核和波特率发生器之间的接口比较简单,只有复位和使能两个信号,即图 5-22 所示中的 reset_parts 和 ce_parts 信号。 波特率发生器的复位、使能信号与计数器的相同,其端口定义参考表 5-13 所示。 (6)信号监测器 UART 内核不但需要接收信号监测器的指示信号,同时还需要在完成数据接收后控制信号监测器复位。所以,UART 内核和信号监测器之间有两个接口,第一个是监测到数据传输的提示信号接口 new_data,另一个是用于复位信号监测器的 reset_dt 信号。图 5-23 所示是 UART内核与信号监测器连接示意图。 UART 内核和信号监测器的端口定义如表 5-15 所示。 (7)RS-232 串行发送端口 移位寄存器在进行移位的时候,会将最高位输出,但是只有在发送数据的时候才需要将移位寄存器的数据串行输出,所以移位寄存器的输出端不能直接连到 RS-232 串行发送端口上,它们之间需要添加一个二选一选择器,如图 5-24 所示。 图 5-24 中的二选一选择器的输入信号分别是高电平 VCC(即逻辑“1”)和移位寄存器输出 dout,选择信号连接到 UART 内核的一个端口 set_out,输出连接到 RS-232 串行发送端口TxD 上。这样,UART 内核就可以通过 sel_out 信号选择向 TxD 发送的数据,在发送过程中将移位寄存器输出 dout 送到 TxD 上,在其他的过程中则将高电平送到 TxD 上。
|
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2902 浏览 3 评论
27709 浏览 2 评论
3483 浏览 2 评论
3987 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2336 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:25 , Processed in 0.531066 second(s), Total 43, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号