• 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成串口监视系统设计并观察调试结果。
  • 要求:设计串口监视系统,实时监控串口(UART)接收数据,并将数据显示在底板的8位数码管上(仅限数字0~9)。
  • 解析:通过FPGA编程驱动底板上的CP2102串口通信模块,接收来自PC(串口调试助手)或其他串口设备的数据,经过处理,最后通过驱动8位扫描式数码管模块,将接收到的数据显示在底板数码管上。

本实验主要学习串口(UART)总线工作原理、协议及相关知识,练习如何使用FPGA驱动CP2102模块实现串口通信设计,同时复习上节中扫描式数码管模块的实例化应用。

  • 熟悉串口(UART)总线工作原理及通信协议
  • 完成基于FPGA的串口通信模块设计
  • 完成串口监视系统设计实现

根据前面的实验解析我们可以得知,该设计可以拆分成三个功能模块实现,

  • UartBus: UART串口通信设计,实现串口通信数据传输。 * Decoder:将UART模块接收到的数据转换成用于数码管显示的BCD码。 * Segmentscan:通过驱动底板扫描式数码管将串口接收的数据显示出来。

顶层模块DisplayCtl通过实例化两个子模块并将对应的信号连接,最终实现串口监视系统的总体设计。UART通信是全双工的,接收和发送是两个独立的设计,本实验只需要接收数据,串口通信有两个关键因素:传输格式和传输速率,我们可以用两个模块分别实现: * Baud:控制UART通信数据传输速率。 * UartRx:根据数据传输速率节拍控制UART通信数据格式。

Top-Down层次设计模块结构设计

UART接口介绍

UART通信接口

在嵌入式领域里说的串口一般就是说的UART接口,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

RS232串行通信接口

在系统或计算机中说的串口一般就是说的RS232接口,也叫COM口,也叫DB9,老式的电脑和台式机上一般都有这个接口,接口有9个引脚,最重要的三个引脚:TXD、RXD、GND,基本通信逻辑与UART完全一致,为了增加串口通信的抗干扰能力,RS232串行通信接口定义了自己的电平标准,采用负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,相当于在UART的基础上增加驱动器,将原来UART通信电平标准调整为RS232的电平标准,通信原理如下:

RS232串口通信

随着技术的发展,各种通信接口种类越来越多,方案越来越稳定,成本越来越低,体积越来越小巧,RS232串口通信接口方案逐渐被抛弃,取而代之的是各种更高速,更稳定,更小巧的接口,USB就是其中应用较广的,为了实现UART通信,一种USB转UART的方案被广泛应用,常用的USB转UART方案有CP2102、FT232、CH340等等

USB转UART通信

我们STEP BaseBoard V3.0底板集成的UART通信模块就是采用CP2102方案,FPGA通过UART总线驱动CP2102实现USB和UART之间的数据通信,最终实现FPGA与电脑之间的数据传输,UART通信的时序如下。

UART通信时序

  • 起始位:先发出一个逻辑 0 信号,表示传输字符的开始。
  • 数据位:可以是5~8位逻辑 0 或 1 。如ASCII码( 7位) ,扩展BCD码( 8位) 。
  • 校验位:数据位加上这一位后,使得 1 的位数应为偶数(偶校验)或奇数(奇校验)。
  • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
  • 空闲位:处于逻辑 1 状态,表示当前线路上没有资料传送。

UART模块连接

STEP BaseBoard V3.0底板上的基于CP2102方案的UART通信模块电路图如下:

UART通信模块电路

上图为基于CP2102方案的UART通信模块电路图,可以看到CP2102方案非常简洁,无需外置USB通信时钟晶体(内部集成),CP2102芯片TXD和RXD分别与FPGA芯片RXD和TXD连接,同时两个信号都连接了LED灯,这样当UART通信时,随着数据传输对应LED灯也会快速闪烁,起到UART通信指示灯的作用。CP2102芯片DTR和RTS通过两个三极管搭建流控电路,连接WIFI模块ESP8266-12F,使用UART模块烧写ESP8266模块的固件时就无需手动进入固件烧写模式了,这个会在后续涉及WIFI通信的实验中详细介绍,这里可以不用理会。

UART驱动实现

串行总线对比

SPI、I2C、UART总线对比表:

SPI总线 I2C总线 UART总线
SS SCL TXD
SCK SDA RXD
MOSI/MISO

系统总体实现

  1. 双击打开Quartus Prime工具软件;
  2. 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择);
  3. 新建文件:File → New → Verilog HDL File,键入设计代码并保存;
  4. 设计综合:双击Tasks窗口页面下的Analysis & Synthesis对代码进行综合;
  5. 管脚约束:Assignments → Assignment Editor,根据项目需求分配管脚;
  6. 设计编译:双击Tasks窗口页面下的Compile Design对设计进行整体编译并生成配置文件;
  7. 程序烧录:点击Tools → Programmer打开配置工具,Program进行下载;
  8. 观察设计运行结果。