版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【Word版本下载可任意编辑】 FPGA 的UART 扩展总线设计和应用 1 引言 在嵌入式领域,由于UART 具有操作简单、工作可靠、抗干扰强、传输距离远(组成 485 网络可以传输1,200 米以上),设计人员普遍认为UART 是从CPU 或微控制器向系统的 其他部分传输数据的方式,因此它们被大量地应用在工业、通信和家电控制等嵌入式领 域。而通常处理器都会自带一个UART 串口,实际应用中一个串口往往不够用,需要开展 UART 串口扩展。而本文在分析了片内总线技术和UART 的工作原理的根底上了实现UART 总线设备的设计,使主控芯片可以控制46 个外围设备。 本文中的嵌入式系统由AT91
2、ARM9200 处理器、Linux 操作系统和ALTERA 公司的 ACEX 系列的EP1K 所组成。 2 EP1K 的逻辑设计 设计所要实现的功能是 AT91ARM9200 处理器通过EP1K 控制多个带有UART 接口的 外设。EP1K 中包含了多个逻辑模块如图1 所示,为了实现多个模块间的互联就需要片内总 线的支持,而本文采用的是WISHBONE 片内总线规范。 2.1 WISHBONE 总线设计 WISHBONE采用主从构造,也称之为SLAVE/MASTER 构造。主单元MASTER 是发起 与从单元SLAVE 之间的数据传输,MASTER 和SLAVE 通过握手协议来实现可靠通信的。
3、 WISHBONE 总线架构提供了四种不同的互联方式:点对点(Point-to-point)、数据流(Data flow)、共享总线(Shared bus)和交叉开关(Crossbar switch)。为了实现单个MASTER 和多个SLAVE 的设计要求,同时要求总线构造占用较少的逻辑单元,所以采用了共享总线 的互联方式。 共享总线应包括 MASTER、SLAVE、INTERCON 和SYSCON 四个部分。MASTER 和 SLAVE 是实现总线信号与IP 核的信号转换,INTERCON 用于MATER 和Slave 的信号互联, 而SYSCON 则提供稳定的时钟信号和复位信号。总线逻辑构
4、造如图2 所示,因为只有一个 MASTER,设计时就省略了对总线使用权的总裁。MASTER 的地址和数据总线分别与四个 SLAVE 相联,其它的控制信号也都是直接相连,而SLAVE 的选通是通过stb 信号实现。 SLAVE 的stb 信号是由地址译码产生SLAVE 选择信号s_sel、m_cyc 和m_stb 三个信号相与 的结果。所选通的SLAVE 将ack 信号置1 说明一个数据传输周期的正常结束并将数据锁存 或发送到总线上,而err 信号置1 表示非正常结束,rty 信号置1 表示要求数据重发。 图 2 WISHBONE 总线的逻辑构造图 总线的详细设计过程请参考 WISHBONE S
5、oC Architecture Specification, Revision B.3,而 MASTER 和SLAVE 的设计可以参考OpenCores 的网站上相关设计。 2.2 UART 的逻辑设计 UART 的通信协议十分简单,以低电平作为起始位,高电平作为停止位,中间可传输 58 比特数据和1 比特奇偶校验位,奇偶校验位的有无和数据比特的长度由通信双方约 定。一帧数据传输完毕后可以继续传输下一帧数据,也可以继续保持为高电平,两帧之间 保持高电平,持续时间可以任意长。 UART模块由SLAVE接口、波特率控制器、UART接收器和UART发送器构成。SLAVE 接口是为了实现WISHBON
6、E 总线和功能模块之间的数据传输;UART 发送器的用途是将准备输出的并行数据按照基本UART 帧格式转为TXD 信号串行输出;UART 接收器接收RXD 串行信号,并将其转化为并行数据,但串并转换的时钟同发送器一样处理,收发设备间的时 钟是会累计的,会导致接收数据不正确,波特率控制器就是专门产生一个远远高于波特率的 本地时钟信号对输入RXD 不断采样,以不断地让接收器与发送器保持同步。 波特率控制器实际上就是一个简单的分频器。可以根据给定的系统时钟频率(晶振时 钟)和要求的波特率算出波特率分频因子。已算出的波特率分频因子作为分频器的分频数。 对于波特率发生器中的系数一般在FPGA 实现时往往
7、是固定的,但对于不同的实现,这个 系数需要更改。波特率控制器产生的分频时钟,不是波特率时钟,而是波特率时钟的16 倍,目的是为了在接收事实开展地采样,以提出异步的串行数据。 UART 发送器由16 个字节FIFO 和信号发送器组成。FIFO 主要是起到数据缓存的作用, 信号发送器的部分由有限状态机实现的,实现伪代码如下: case (状态机状态) 空闲状态:if ( FIFO 中有数据 ) 状态机跳转到 FIFO 读取状态; else 状态机保持空闲状态; FIFO 读取状态:读取FIFO 数据,保存到移位存放器;状态机跳转到开始位状态; 开始位状态:时钟计数,发送开始位;计数结束后状态机跳转
8、到数据位状态; 数据位状态:时钟计数,发送数据,移位存放器移位;计数结束后 if(移位存放器内数据发送完毕) 状态机跳转到停止位状态; else 状态机跳转到数据位状态; 停止位状态:时钟计数,发送停止位;计数结束后状态机跳转到 s_idle; default:状态机复位到空闲状态; endcase UART 接收器包括了16 个字节FIFO、信号同步器和信号接收器三个部分。其*号同 步器则是为了解决串行数据帧和接收时钟是异步问题,其它两部分和UART 发送器的中的 功能相似,只是数据传送的方向相反。 3 设备接口和驱动设计 3.1 设备接口设计 AT91ARM9200 芯片通过其静态存储控制
9、器 (SMC)控制EP1K,而静态存储控制器 (SMC) 是控制外部静态存储器或外设的访问。 SMC 可编程地址达512M 字节。它有8 个 片选及一个26 位地址总线。16 位数据总线能配置与8 位或16 位外部器件连接。独立的读写控制信号允许存储器与外设直接连接。SMC 支持不同的允许单时钟周期存储器访问的访 问协议。它还提供外部等待请求能力。 因为 EP1K 内部设计使用的是8 位数据总线和8 位地址总线,所以AT91ARM9200 芯片与EP1K 相连的I/O 端口为 A,D,NRD 和NWR0。然而EP1K 内部采用 的WISHBONE 总线规范,其读写信号wb_we_o,高电平表示
10、为写操作,低电平表示为 读操作。所以需要将NRD 和NWR0 开展相应的信号转换。而D为双向端口IO, 所以在EP1K 的设计中采用三态门的设计。 3.2 设备驱动设计 AT91ARM9200 上运行的是Linux 操作系统,EP1K 作为一个外接设备正常运行,就需 要相应的linux 驱动程序。我们将EP1K 的看作一个普通的字符设备,其关键是如何实现两 个不同工作频率的设备正确通信。而静态存储控制器 (SMC)提供的多等待状态管理,只要 根据具体时序对SMC 片选存放器开展设置就可以了。此例中的SMC 同时还控制flash 存储 器、LCD 液晶显示器和其它外设,所以使用片选存放器7,EP
11、1K 的内部工作频率是6MHz, 为了使读写同步,设置插入36 个等待周期。具体代码如下: 其中at91_sys_write( )函数在include/arch/hardware.h 中,而且是在linux2.6 内核中才出现的。 Linux 的字符设备驱动分为设备初始化函数和设备卸载函数,并由内核宏module_init() 和module_exit()行进管理。 设备初始化函数首先要做的事情就是获取一个或多个设备编号。linux2.6 内核中提供了 静态和动态分配。如果在已知所需设备编号情况下,静态分配不失为一种较好的工作方式, 但是所选定的设备号若已分配给其它设备,就会造成冲突和麻烦。因
12、此,建议采用动态分配 方式获取设备号。 同时使用 udev 在/dev/下动态生成设备文件,这样就防止使用命令或脚本创立设备文 件。管理类和类设备的相关内核函数: struct class * class_create (struct module * owner, const char * name); void class_destroy (struct class * cls ); struct class_device* class_device_create(structclass * cls, struct class_device* parent, dev_t devt, str
13、uct device * device, const char * fmt, .); void class_device_destroy (struct class * cls, dev_t devt); 注意,以上函数是2.6.13 开始有的,在2.6.13 之前,应当使用class_simple 接口。 设备初始化函数随后的工作是建立字符设备,并将与具体字符设备的相关数据构造注册 的设备中,如字符设备的文件操作接口file_operations。还有就是调用at91_sys_write( )函数 完成静态存储控制器 (SMC)的存放器配置和ioremap()函数完成设备地址到用户内存的映 射。设备卸载函数的工作就恰恰相反,它包括了管理类,类设备和字符设备的销毁,映射内 存和设备号的释放。 4 结束语 本文的设计应用于一个远程自动抄表系统,该系统由用户电能表和抄表基站以及 GSM 模块
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于房屋租赁托管的合同范本
- 2025关于担保公司借款合同范本
- 二零二五年度影视动画制作与版权转让合同
- 二零二五年度建筑工程用木材采购合同3篇
- 2025版高考数学一轮复习核心考点精准研析1.2命题充分条件与必要条件文含解析北师大版
- 感恩时代青春奋斗
- 二零二五年度房屋买卖合同附家具家电回购协议3篇
- 动脉瘤性蛛网膜下腔出血诊疗指导建议规范课件
- 二零二五年度建筑材料捐赠合同样本3篇
- 二零二五年度商业秘密不可撤销反担保协议3篇
- 农业装备与机械化的经济效益与社会效益
- (完整)中医症候积分量表
- 医疗团队管理技巧与策略
- 《功能点计算方法》课件
- GB/T 451.2-2023纸和纸板第2部分:定量的测定
- 工会提案培训课件
- 高空抛物法律知识讲座
- 射频工程师年终总结
- 2019统编版高中数学A版必修第二册教学计划含教学进度表(高一下学期数学教学计划)
- 抖音短视频运营部门薪酬绩效方案(短视频运营薪酬绩效考核方案)
- 增值税发票销货清单
评论
0/150
提交评论