FPGA通用异步收发器课程设计

合集下载

通用异步收发器

通用异步收发器

通用异步收发器专业:电子信息科学与技术学号:200811526姓名:袁朝阳一实验目的:学习用vhdl语言设计通用异步收发器。

二实验仪器:pc平台,Quartus II8.0软件,EDA6000实验箱。

三实验原理:通用异步收发器由三部分组成。

1 波特率发生器UART波特率是指每个数据位的宽度,UART电路内部的工作时钟是波特率的16倍。

当波特率位2400时,内部时钟位2400*15=38.4k。

2 发送电路当启动发送电路后,发送电路发送出10位串行数据:起始位“0”,D0,D1,D2,D3,D4,D5,D6,D7,停止位“1”3 接受电路当接受到起始位“0”后,每隔一个波特率接受一位行数据。

在rxd输入端还应加有滤波电路。

四实验内容及操作步骤:1 对Quartus II8.0进行破解,操作步骤参考实验一。

2创建工程:选择菜单File->New Preject Wizard命令,即弹出“工程设置”对话框。

设置后在编辑对话框中输入Vhdl代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX25 ISPORT(clk : IN STD_LOGIC; -- IO30(P125) 1M clock inputrst : IN STD_LOGIC; -- IO40(P118)rxd : IN STD_LOGIC; -- IO00(P37)xmit_cmd : IN STD_LOGIC; -- IO41(P119)tbuf : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO55..IO48 (P13, P12, P10, P9 , P8 , P137, P136, P135)bclk : OUT STD_LOGIC; -- IO03(P41) 2400 baudrate, 1s / (2400x16) = 26usrec_ready: OUT STD_LOGIC; -- IO04(P43)rbuf : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO15..IO08 (P64, P63, P62, P60, P59, P51, P49, P48)txd : OUT STD_LOGIC; -- IO01(P38)xmit_done: OUT STD_LOGIC -- IO05(P44);END EX25;ARCHITECTURE behv OF EX25 ISSIGNAL rxd_sync: STD_LOGIC;SIGNAL baud_clk: STD_LOGIC;SIGNAL rxd_shift: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL rxcnt16 : INTEGER RANGE 0 TO 15;SIGNAL rxd_cnt : INTEGER RANGE 0 TO 9;SIGNAL txd_shift: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL txcnt16 : INTEGER RANGE 0 TO 15;SIGNAL txd_cnt : INTEGER RANGE 0 TO 10;SIGNAL txd_done : STD_LOGIC;BEGIN-- 生成波特率时钟每个字符位含16个脉冲,2400波特率时每个脉冲宽度为26us-- 基准时钟为1M,将1M时钟26分频即可得到。

实例分析EDA技术下的通用异步收发器设计

实例分析EDA技术下的通用异步收发器设计

实例分析EDA技术下的通用异步收发器设计数据通信系统中,通过串行通信来达到交换信息数据的目的是经常采用的方式。

异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于PC机和外设的数据交换。

通常都由通用异步收发器UART(Universal Asynchronous Receiver/Transmitter)来实现该功能。

同时在电子设计领域中,SOC片上系统技术日趋成熟,设计者可以在单块或极少数的几块芯片中实现整个系统的功能,将UART的功能模块集成到可编程逻辑器件FPGA (Field Programmable Gate Array)中。

利用EDA(Electronic Design Automation)技术优点来设计串行通信接口,不仅可以直观的让同学们了解到数据链路层的工作原理,还可以在分工协作中深刻领会EDA技术在网络通信中的实际应用。

1 UART工作原理和流程通过对UART工作原理的分析,我们把整个系统模块可划分波特发生器,內核,信号检测器,移位寄存器,奇偶校验器,总线选择器和计数器等。

UART的工作流程可以分为发生和接收两个过程。

1.1 接收过程当UART信号监测器模块的输入口侦测到数据时,即输入口由高电平变为低电平,UART读取串行数据并且将数据并行输给计算机。

首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的时钟为波特率时钟,以准备接收串行数据。

接着,移位寄存器模块在波特率时钟的驱动下,不断读取串行总线的输入数据,并将串行数据保存在内部的寄存器中。

接收完毕,UART内核会对已接收的数据进行奇偶校验并输出校验结果。

同时,UART内核会复位信号监测器,以准备进行下一次数据接收。

1.2 发送过程由加载Load和发送Send两个部分组成,如图3所示。

加载是内核依串行发送的顺序将起始位、数据位和奇偶校验位依次加载到移位寄存器内,这个过程移位寄存器工作在系统时钟下,相对于外部总线传输速度来说非常快。

基于FPGA的异步收发器程序设计

基于FPGA的异步收发器程序设计

毕业设计设计题目基于FPGA的异步收发器设计学院:物理科学与工程技术学院专业:电子信息工程年级:10级姓名:陈淑珍指导教师:王永祥职称:副教授(2013年 6月)宜春学院教务处制宜春学院物理科学与工程技术学院电子信息工程李扬指导老师:王永祥摘要:文章简要介绍了UART的基本功能,采用Verilog HDL语言作为硬件功能的描述,运用模块化设计方法设计了通用异步收发器的发送模块、接收模块和波特率发生器。

实现了基于FPGA的UART基本功能设计,并给出了UART的软件编程实例.关键字:Verilog HDL;FPGA;UARTBased on SCM ultrasonic ranging system Design( YiChun University Physical science and engineering institute of technology Li Yang)Abstract: this paper briefly introduces the basic function of UART, the Verilog HDL language as a description of the hardware function, using modular design method to design the general asynchronous transceiver module, receive send the module and baud rate generator. Realized the basic function of UART which based on FPGA , and gives the UART software programmingexamples. Key word: Verilog HDL; FPGA; UART; A引言 (2)1 . UART简介 (2)1.1 UART结构 (2)1.2 UART的帧格式 (2)1.3 UART的基本原理 (2)2 UART的设计与实现 (3)2.1 UART发送器 (3)2.2 UART接收器 (4)2.3数码管动态显示 (5)2.4 波特率发生器 (6)2.5 UART设计总模块 (6)3.FPGA UART系统组成 (7)4.模块设计 (8)4.1. 顶层模块 (8)4.2波特率发生器 (10)4.3 UART发送器 (11)4.4 UART接收器 (15)5.结语 (17)6..参考文献 (18)1引言由于微电子学和计算机科学的迅速发展,给EDA(电子设计自动化)行业带来了巨大的变化。

基于FPGA的UART设计综述

基于FPGA的UART设计综述

四川师范大学本科毕业设计基于FPGA的UART设计学生姓名院系名称专业名称班级学号指导教师完成时间基于FPGA的UART设计电子信息工程专业摘要:UART(通用异步收发器)是一种应用广泛,协议简单,易于调试的串行传输接口。

FPGA是能高密度,低消耗完成所需要的逻辑功能的一种在线可编程器件,是现在业内提高系统集成度最佳技术之一,其可反复配置,且使用灵活。

VHDL 是描述电路功能或行为的一种硬件语言。

本文首先阐述了运用FPGA实现UART接口的意义。

接着介绍了UART的波特率发生器,发送功能和接收三大核心功能的理论知识。

FPGA的工作原理,配置模式以及VHDL语言实现状态机的相关理论基础。

给出了运用VHDL语言将UART三大功能嵌入在FPGA上的模块化设计方法。

设计包括四大模块:顶层模块,波特率发生器,UART接收器,UART发生器。

在FPGA片上集成UART主要功能,减少了电路板体积,同时电路也增加了可移植和反复配置功能,有效提高了电路的集成度和灵活性。

最后运用Quartus ii 9.1实现了其功能仿真。

关键词:FPGA UART VHDL 有限状态机The Design of Universal Asynchronous Receiver Transmitter Based on FPGAAbstract:UART (Universal Asynchronous Receiver Transmitter) is a widely used, simple protocol, easy to debug serial transmission interface. FPGA is capable of high-density, low-cost needed to complete a line of programmable logic devices, is now one of the industry's best technologies to improve system integration, which can be repeated to configure and use and flexible. VHDL description of the circuit function or behavior is a hardware language. This paper first describes the use of FPGA to realize the significance of the UART interface. Then introduced the theory of knowledge UART baud rate generator, sending and receiving three core functions. FPGA works, configuration mode and the VHDL-based state machine theory. Gives the UART using VHDL language to three functions embedded in the FPGA design. Design includes four modules: the top-level module, baud rate generator, UART receivers, UART generator. Integrated on-chip UART FPGA basic functions, reducing board space, the circuit also increases the portability and repeated configuration capabilities, improve the integration and flexibility of the circuit. Finally, the use of Quartus ii 9.1 implements its functional simulation.Key Words:FPGA ;UART ;VHDL;FSM目录摘要: (I)Abstract: (II)1 绪论 (1)1.1 课题背景 (1)1.2 课题研究现状 (2)1.3 课题研究内容与主要工作 (3)1.4 课题内容结构 (3)2 UART理论基础 (4)2.1 接口技术简介 (4)2.2 UART基本结构 (4)2.3 UART数据帧格式 (5)2.4 涉及到的理论计算 (6)3 设计工具 (7)3.1 课题硬件平台——FPGA (7)3.2 设计工具QuartusII简介与使用 (7)3.3 VHDL语言简介 (7)4 UART实现方案 (8)4.1 系统总体结构 (8)4.2 顶层模块设计 (8)4.3 波特率发生模块设计 (9)4.4 接收模块 (10)4.5 发送模块设计 (12)5 UART设计的仿真与验证 (15)5.1波特率发生模块仿真 (15)5.2 接收模块仿真 (15)5.3 发送模块仿真 (16)6 总结 (17)参考文献 (18)致谢 (19)附录 (20)基于FPGA的UART设计1 绪论在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:(1)速度不匹配。

基于FPGA的通用异步收发传输器控镦FLASH存储系统设计

基于FPGA的通用异步收发传输器控镦FLASH存储系统设计

1 总体 方案 设 计
在V S P存储 系统 中 , 测井 数 据 由井 下 的采 集 节 点传输给井上的采集站再通过有线 网络传 输给 P c 机 。所 得 到 的 测 井 数 据 通 过 串 口从 P C机 发 送 给 F P G A, 再由 F L A S H 写 控 制 器 将 测 井 数 据 写 入 F L A S H, 最后 F L A S H读控制器将烧写到 F L A S H 中 的数据 读 出并通 过 串 口发 送 到 P c机 与 原 始测 井 数 据进 行 比较 。如图 1所示 。 系统 以 F P G A为 核心 , 实现 串 口收发、 F L A S H 的读 、 写、 擦 除操 作 以及 整个 系 统 的控 制 协 调 功 能 。 首先 P c机 控制 开关 选择器 产生 F L A S H擦 除命令 使 能信 号并通 过 擦 除模 块 完 成 F L A S H 擦 除 操作 。 当 P c机 接 收到测 井 数 据并 以字 节 形式 完 成 串 口数 据 的发送 后 , 开关 选 择 器启 动 U A R T接 收模 块 和 写 模 块将 接 收 到 的测 井 数 据 写 入 F L A S H。为 了检 验 烧 写到 F L A S H 中 的测 井 数 据 是 否 正 确 , F L A S H 写 模 块将 测井 数据 写入 F L A S H后 , 开关 选择器 启 动读 模 块并将 从 F L A S H 读 取 到 的测 井 数 据 通 过 U A R T发 送模块 发送 给 P c机 。最后 通 过 串 口调 试 工具 将 接 收到 的测井 数据 与 原始 测 井 数 据 进行 比较 , 以保 证 测井 数据 正确 写入 。

2 0 1 4 S c i . T e c h . E n g r g .

基于FPGA的通用异步收发传输器控制FLASH存储系统设计

基于FPGA的通用异步收发传输器控制FLASH存储系统设计

基于FPGA的通用异步收发传输器控制FLASH存储系统设计柳炳琦;庹先国;李怀良;刘明哲;黄辉【摘要】为了解决测井数据文件的存储问题,提出了一种基于FPGA实现通用异步收发传输器(UART)控制FLASH存储系统设计的方法.以FPGA作为核心控制器对系统结构进行了模块化分解,以适应自顶向下的设计方法.在Quartus Ⅱ开发平台中采用Verilog硬件描述语言利用有限状态机,实现了UART控制FLASH的读、写、擦除操作;并给出了UART控制FLASH的数学模型.采用Spansion公司的S29AL016D系列FLASH结合FPGA和UART设计了接口电路.最后在Modelsim 环境下进行仿真,验证了该存储系统设计的正确性和可靠性.【期刊名称】《科学技术与工程》【年(卷),期】2014(014)007【总页数】5页(P223-226,232)【关键词】垂直地震创面(VSP);通用异步收发传输器(UART);FPGA;FLASH;有限状态机【作者】柳炳琦;庹先国;李怀良;刘明哲;黄辉【作者单位】成都理工大学,成都610059;西南科技大学,绵阳621010;西南科技大学,绵阳621010;成都理工大学,成都610059;电子科技大学,成都620059【正文语种】中文【中图分类】TP333.2VSP(vertical seismic profiling,垂直地震剖面)[1]作为一种新型井中地震观测方法被广泛地应用于地震勘探领域,其中测井数据的存储问题在该系统中占有重要地位。

随着电子计算机技术,尤其是嵌入式技术的大力发展,UART(universal asynchronous receiver/transmitter,通用异步收发传输器)和FLASH 得到了广泛的应用[2,3],在对存储数据处理速度要求不高的场合,FLASH的读写控制一般可以通过单片机等处理器实现[4],但是在高速数据处理领域,利用FPGA(field-programmable gate array,现场可编程门阵列)实现FLASH存储系统控制的工程应用相当广泛。

FPGA通用异步收发器课程设计

FPGA通用异步收发器课程设计

F PG A通用异步收发器课程设计(总24页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--课程设计任务书学生姓名:瞿子敬专业班级:通信1104 指导教师:陈适工作单位:信息工程学院题目:FPGA通用异步收发器设计课程设计目的:1.熟练使用VHDL语言进行电路设计;2.能够运用相关软件进行模拟分析;3.掌握基本的文献检索和文献阅读的方法;4.提高正确的撰写论文的基本能力。

课程设计内容和要求1.内容:FPGA通用异步收发器设计2.要求:使用VHDL语言完成电路设计,并在此基础上进行仿真,得到正确结果。

初始条件QuartusⅡ仿真平台时间安排1.方案设计,1天;2.软件设计,2天;3.系统调试,1天;4.答辩,1天。

指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要................................................................................................ 错误!未定义书签。

Abstract .......................................................................................... 错误!未定义书签。

1. UART简介.................................................................................. 错误!未定义书签。

UART基本特点..................................................................... 错误!未定义书签。

FPGA URAT系统组成 ........................................................... 错误!未定义书签。

《数字电路与EDA设计》课件第12章 通用异步接收发送器的设计和实现

《数字电路与EDA设计》课件第12章 通用异步接收发送器的设计和实现
UART的设计和实现-原理和设计描述
UART设计主要包括两部分:并行数据转化成串行数 据,串行数据转换成并行数据。 UART设计的接收端口将接收到的串行数据转换成 并行数据,同时UART的发送端口负责并行数据转换成串 行数据。 测试代码完成对UART设计的验证,该验证已经在 Xilinx大学计划提供的开发平台进行了验证,该设计也很 容易的移植到其它的EDA平台上。
UART的设计和实现-发送模块的状态机
在delay状态下,发送数据按照正确的波特率发送数 据。当tdelayctr与波特率常数一样时,结束该状态。进 入到Shift状态。一旦进入到waitwrite状态,结束发送过 程。在这个状态需要确认WR信号为高,才能开始发送 过程。
UART的设计和实现 -发送模块的状态机内部结构
对接收数据进行采样的时序的描述
UART的设计和实现-差错控制的实现
差错控制寄存器分析接收到的数据,并对三种错误进 行判断:奇偶错、帧错误和溢出错误。 奇偶错误指接收数据的得到的校验和与接收到的Par不 一样。当进行偶校验的时候,D0到D7的和应该是偶数, 否则是奇校验。该设计中缺省设置为偶校验。当奇偶校验 错误时,PE端口为高。 帧错误是指UART在给定的时序没有正确的读到数 据。当停止位不为1时,表示帧错误,此时FE端口为1。 溢出错误是指,当前帧接收完,但还没有读时下一帧 数据就到了的情况。当单字节的串行数据可读时RDA为 高,移位后的并行数据放在DBOUT端口。一旦RDA端口 为高,且此时数据仍在DBOUT端口时,OE溢出错误标志 为高。
UART的设计和实现-接收模块状态机原理
这两个状态保证有足够的延迟保证读取采样数据的 正中间。当计数器计数到10(8个数据位、一个奇偶位 和一个停止位),然后进入到CheckStop状态。这个状 态进行奇偶校验。当该状态结束后,进入到idle状态。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书学生:瞿子敬专业班级:通信1104指导教师:适工作单位:信息工程学院题目:FPGA通用异步收发器设计课程设计目的:1.熟练使用VHDL语言进行电路设计;2.能够运用相关软件进行模拟分析;3.掌握基本的文献检索和文献阅读的方法;4.提高正确的撰写论文的基本能力。

课程设计容和要求1.容:FPGA通用异步收发器设计2.要求:使用VHDL语言完成电路设计,并在此基础上进行仿真,得到正确结果。

初始条件QuartusⅡ仿真平台时间安排1.方案设计,1天;2.软件设计,2天;3.系统调试,1天;4.答辩,1天。

指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)Abstract (II)1. UART简介 (1)1.1 UART基本特点 (1)1.2 FPGA URAT系统组成 (2)2. 模块设计 (3)2.1 顶层模块 (3)2.1 波特率发生器 (4)2.3 UART接收器 (4)2.3.1 接收器简介 (4)2.3.2 UART接收器的接收状态机 (5)2.4 URAT发送器 (7)2.4.1 发送器简介 (7)2.4.2 发送状态机 (7)3. 程序设计与仿真 (9)3.1 顶层程序 (9)3.2 波特率发生器程序 (11)3.3 UART发送器程序 (13)3.4 UART接收器程序 (17)4. 心得体会 (22)5. 参考文献 (23)摘要UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。

常常用于短距离、低速、低成本的通讯中。

8250、8251、NS16450等芯片都是常见的UART器件。

基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。

TXD是UART发送端,为输出;RXD是UART接收端,为输入。

关键词:UART,FPGA,VHDL,电路通信AbstractUART (Universal Asynchronous Receiver Transmitter) is a kind of widely used short serial transmission interface. Often used in short distance, low speed, low cost of communications. 8250, 8251, NS16450, etc are common UART chip devices.Basic UART communication only need two signal lines (RXD, TXD) can complete data communication, sending and receiving is full duplex form. TXD is UART transmitter for output; RXD is UART receiver for input.Keywords:UART,FPGA,VHDL,Circuit Communication1. UART简介1.1 UART基本特点(1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。

在发送器空闲时,数据线应该保持在逻辑高电平状态。

(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。

(3)数据位(Data Bits):起始位之后就是传送数据位。

数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。

(4)校验位(parity Bit):可以认为是一个特殊的数据位。

校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。

在使用中,该位常常取消。

(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。

(6)位时间:即每个位的时间宽度。

起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。

(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。

(8)波特率:UART的传送速率,用于说明数据传送的快慢。

在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。

如波特率9600=9600bps(位/秒)。

UART的数据帧格式为:1.2 FPGA URAT系统组成FPGA UART由三个子模块组成:(1)波特率发生器;(2)接收模块;(3)发送模块;模块分布如图所示:图1.1 UART模块2. 模块设计模块设计分为顶层模块、波特率发生器、UART接收器、UART发送器四部分。

2.1 顶层模块异步收发器的顶层模块由波特率发生器、UART接收器和UART发送器构成。

UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。

UART接收器接收RXD串行信号,并将其转化为并行数据。

波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。

顶层模块电路图:图2.1 顶层模块电路2.1 波特率发生器波特率发生器实际上就是一个分频器。

可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数。

波特率分频因子可以根据不同的应用需要更改。

2.3 UART接收器2.3.1 接收器简介由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。

然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。

由于部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。

如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样2.3.2 UART接收器的接收状态机图2.2 接受状态机状态图五个状态分别为R_START(等待起始位),R_CENTER(求中点),R_WAIT (等待采样),R_SAMPLE(采样),R_STOP(停止位接收)。

R_START状态:当UART接收器复位后,接收状态机将处于这一个状态。

在此状态,状态机一直在等待RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态。

状态图中的RXD_SYNC信号是RXD的同步信号,因为在进行逻辑1或逻辑0判断时,不希望检测的信号是不稳定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYNC信号。

R_CENTE状态:对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差较小,显然在每位的中点检测是最为理想的。

在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。

另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。

这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的信号一定是起始位。

R_WAIT状态:当状态机处于这一状态,等待计满15个bclk,在第16个bclk是进入R_SAMPLE状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧的长度(FRAMELEN),如果到来,就说明停止位来临了。

FRAMELEN在设计时是可更改的(使用了Generic),在本设计中默认为8,即对应的UART工作在8位数据位、无校验位格式。

R_SAMPLE状态:即数据位采样检测,完成后无条件状态机转入R_WAIT 状态,等待下次数据位的到来。

R_STOP状态:无论停止位是1还是1.5位,或是2位,状态机在R_STOP 不具体检测RXD,只是输出帧接收完毕信号(REC_DONE<=‘1’),停止位后状态机转回到R_START状态,等待下一个帧的起始位。

2.4 URAT发送器2.4.1 发送器简介发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,第8位是停止位。

在本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式。

2.4.2 发送状态机五个状态分别为X_IDLE(空闲),X_START(起始位),X_WAIT(移位等待),X_SHIFT(移位),X_STOP(停止位)。

X_IDLE状态:当UART被复位信号复位后,状态机将立刻进入这一状态。

在这个状态下,UART的发送器一直在等待一个数据帧发送命令XMIT_CMD。

XMIT_CMD_P信号是对XMIT_CMD的处理,XMIT_CMD_P是一个短脉冲信号。

这时由于XMIT_CMD是一个外加信号,在FPGA之外,不可能对XMIT_CMD 的脉冲宽度进行限制,如果XMIT_CMD有效在UART发完一个数据帧后仍然有效,那么就会错误地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。

在此对XMIT_CMD进行了脉冲宽度的限定,XMIT_CMD_P就是一个处理后的信号。

当XMIT_CMD_P=‘1’,状态机转入X_START,准备发送起始位。

X_START状态:在这个状态下,UART的发送器一个位时间宽度的逻辑0信号至TXD,即起始位。

紧接着状态机转入X_WAIT状态。

XCNT16是bclk的计数器X_WAIT状态:同UART接收状态机中的R_WAIT状态类似。

X_SHIFT状态:当状态机处于这一状态时,实现待发数据的并串转换。

转换完成立即回到X_WAIT状态。

X_STOP状态:停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发送16个bclk周期的逻辑1信号,即1位停止位。

状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。

图2.3 发送状态机状态图3. 程序设计与仿真3.1 顶层程序--文件名:top.vhd。

--功能:顶层映射。

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort (clk32mhz,reset,rxd,xmit_cmd_p_in:in std_logic;--总的输入输出信号的定义rec_ready,txd_out,txd_done_out:out std_logic;txdbuf_in:in std_logic_vector(7 downto 0); --待发送数据输入rec_buf:out std_logic_vector(7 downto 0)); --接收数据缓冲end top;architecture Behavioral of top iscomponent recieverPort (bclkr,resetr,rxdr:in std_logic;r_ready:out std_logic;rbuf:out std_logic_vector(7 downto 0));end component;component transferPort (bclkt,resett,xmit_cmd_p:in std_logic;txdbuf:in std_logic_vector(7 downto 0);txd:out std_logic;txd_done:out std_logic);end component;component baudPort (clk,resetb:in std_logic;bclk:out std_logic);end component;signal b:std_logic;beginu1:baud port map(clk=>clk32mhz,resetb=>reset,bclk=>b); --顶层映射u2:recieverport map(bclkr=>b,resetr=>reset,rxdr=>rxd,r_ready=>rec_ready,rbuf=>rec_buf);u3:transferport map(bclkt=>b,resett=>reset,xmit_cmd_p=>xmit_cmd_p_in,txdbuf=>txdbuf_in,txd=>txd_out,txd_done=>txd_done_out);end Behavioral;顶层程序仿真:图3.1 顶层程序仿真3.2 波特率发生器程序--文件名:baud.vhd.--功能:将外部输入的32MHz的信号分成频率为153600Hz的信号。

相关文档
最新文档