IC课程设计报告(2)

2019-03-01 10:17

华中科技大学IC课程设计报告

1 绪论

1.1 本设计的意义和背景

随着半导体技术的发展, 专用集成电路的复杂度越来越高, 集成电路已经进入片上系统(SOC)时代。SOC 的出现将整个电子系统的功能集成到单一芯片中, 芯片规模和复杂度都有不同层次的增加。为了避免重复劳动, 需要把一些常用的功能模块设计成可修改参数的模块, 让其他用户可以直接调用这些模块, 即IP。IP 核的复用技术很大程度上提高了SOC 的设计效率, 缩短SOC 产品开发周期, 降低成本[1 ]。

通用异步接收发送器( UART universalasynchronous receiver and

transmitter) 主要用于控制设备之间的串行通信, 广泛应用于SOC 设计中。UART性能的优劣将直接影响相应电子系统的性能和指标。但由于专用的UART 芯片引脚多, 接口复杂,不便应用于嵌入式设计中。基于以上考虑, 本文探讨了利用Verilog HDL 设计紧凑、可修改配置的UART软核的方法[2 ]。

2 UART简介

2.1 UART基本结构

UART主要由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。功能包括微处理器接口, 发送缓冲器( THR) 、发送移位寄存器( TSR) 、帧产生、奇偶校验、并转串电路、数据接收缓冲器( RBR) 、接收移位寄存器( RSR) 、帧产生、奇偶校验、串转并电路等。UART电路的典型应用结构框图如图1所示。

图1UART电路典型应用框图

1

华中科技大学IC课程设计报告 2.2 UART帧格式 UART帧格式如图2所示。

图2 UART帧格式框图

UART帧格式中包括收发空闲状态(idle), 起始位(startbit),数据位(5~8bit,可选), 奇偶校验位(parity), 停止位(stopbit, 位数可为1、1.5、2位)。UART内部的配置寄存器可以配置数据位数( 5~8 bit) 、是否有校验位和校验的类型、停止位的位数( 1, 1.5, 2) 等设置。 2.3 UART基本工作原理

UART主要用来实现串行和并行数据流间的变换, 主要功能是: 从CPU 接收并行数据转换成串行数据输出; 或者是从串口读入外部数据, 将其转换为并行数据, 送往CPU。所谓异步收发, 是因为在UART 协议中, 接收、发送不使用统一参考时钟。收发双方取得同步的方法是采用固定的串行数据格式, 即在数据格式设置中分别加上起始位和停止位, 来标志一个数据帧的开始和结束[3-4 ]。其串行数据格式如上图所示, 包括1 位起始位, 5~8 位数据位, 1 位奇偶校验位(可选) , 1/ 115/ 2 位停止位。UART 的功能系统可划分为六个模块, 分别为: 波特率发生器、接口模块、发送模块、接收模块,本设计着重于UART 的核心模块设计, 包括波特率发生器、接收器和发送器。数据传输机理为: 没有数据传输时, 串行传输线维持高电位状态。一旦发现串行线由高变低, 接收器就认为是个起始位, 启动内部电路对数据流进行采样(16 倍的波特率) , 如果续八次采样都是低电平, 则认为是个正确的起始位(第八次采样时, 正好位于起始位中心) , 开始接收数据位。这样每隔一个波特率时钟, 就在数据的中心采样一次, 低位在前, 高位在后。数据位之后是奇偶校验位, 用来判断接收的数据位有无错误, 可以选择是奇校验、偶校验或无校验位。最后是停止位, 一般为高电平, 表示一帧的结束[5 ]。

2

华中科技大学IC课程设计报告 3 UART系统设计方案

3.1 设计要求

1. 阅读相关资料,了解UART的工作原理及传输时序。

2. 系统时钟为50MHz,自己设定波特率,并根据设定的波特率计算出分频系数,

设计相应的分频模块。

3. 用verilog实现UART的3个模块的设计:分频模块、发送模块、接收模块,

并用Modelsim软件进行功能仿真。

3.2 模块设计

根据设计要求,要实现UART最基本的功能需要分3个模块来进行设计,即发送模块、接收模块和分频模块,以下分别简单介绍3个模块的设计方法和功能分析。图3是整个系统的框架图。

图3 系统整体框图 3.2.1 分频模块

分频功能主要由16 位二进制除数锁存器和16 位计数器完成。除数锁存器包括8 位二进制除数高字节锁存器(MSB) 和除数低字节锁存器(LSB) , 在地址选择信号作用下, 依次写入计数器中。计数器每次计数至除数的一半时, 分频输出信号为

3

华中科技大学IC课程设计报告 高电平, 计数溢出后变为低电平。通过除数的设置, 可以对系统时钟进行任意数(最大为216 - 1)分频, 其中, 除数= 系统时钟/ (16 倍波特率) 。取系统时钟为50MHz, 假设数据的波特率为p,则所需时钟的频率为16*p。以波特率p 为115200 为例,系统时钟为50MHz,则分频系数为50000000/(16*115200) = 27.127,取整为27,采用普通分频方法就可以达到目标。 3.2.2 接收模块

串行数据接收模块主要由移位寄存器、位计数器、16 分频电路、起始位检测电路。移位寄存器实现数据的并2串转换,位计数器用来记录已经接收的数据位的数目,起始位检测电路检测正确的起始位, 滤除噪声信号。16 分频电路用来产生数据接收的时钟信号(波特率频率) , 其与发送时钟之间的同步由内部时钟使能信号EN CLK控制。有空闲、起始位确认、移位、数据校验、无效等5 个状态。状态机处于空闲态时, 不断监视串行输入线RXD。如果RXD 出现由高到低的电平变化, 就认为是一个起始位的开始,立刻启动16 分频电路, 并转入起始位确认态。在起始位确认态时, 在RXD 出现低电平的同时, 启动起始位检测电路, 以16 倍的波特率频率对输入信道采样, 连续采样8 次(正好是半个波特率时钟周期) , 其间RXD 如果出现高电平, 则认为是噪声干扰, 关闭分频电路, 转入空闲态。如果连续8 次采样都是低电平, 则认为是个正确的起始位, 转入移位态。在移位态, 对串口输入数据按照一个比特时间(波特率时钟周期) 采样一次, 每次采样均位于数据位的中心, 通过ENOCLK达到同步。同时启动位计数器, 用来控制数据接收的位数。先是数据的低位后是高位。数据位接收完后, 转入数据校验态。在此状态对奇偶校验位、停止位进行检验, 若有误, 则发送错误报告。与此同时, 进行无效状态检测, 若有误, 则该次数据无效(数据位、校验位和停止位均为“0”) , 并发起中断, 状态机转入无效态, 直到串行线出现高电平, 才回到空闲态, 等待下一次的接收任务。否则, 将RSR 中的数据组装成一个字节, 并行移入接收FIFO 中, 并令DATARDY为“1”, 通知CPU 准备接收数据[6 ]。图4是接收模块框图。

图4 接收模块框图

4

华中科技大学IC课程设计报告 3.2.3 发送模块

UART发送器模块将8 位并行数据串行发出, 用wr 写信号装载并行进来的8 位数据到9 位移位寄存器(shift_reg)的低8 位, 最高位置为0, 表示数据的起始位, 数据发送完后发送1。数据发送前先发送1 表示等待数据的到来。等待16 个

clk16x 之后, 先发送一个1, 再过16 个clk16x 之后, 发送起始位0; 以后每过16 个clk16x, 发送一位数据, 直到数据发送完。16个clk16x 用计数器设计, 数据发送用状态机实现。为了避免时序问题以及保证可测试性, 采用单时钟沿同步触发, 在15 个clk16x 到来时, 将clk1x 置1, 在下一个clk16x 时钟的上升沿到来后发送一位数据, 由于clk1x 为高电平持续时间为一个clk16时钟周期, 也就是在clk1x 的下降沿把一位数据发送出去。图5为接收模块的框图

图5 接收模块框图

4 本人所做工作

我在整个工程设计中负责发送模块的设计,Modelsim软件使用资料的查找,对Tesetbench语法结构进行分析、研究。 4.1 发送模块的要求

1、具有空闲、起始、移位、奇偶校验、停止等5 个状态,状态机在空闲态的时候, 不

5


IC课程设计报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《紫藤萝瀑布》同步练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: