以下内容均以Xilinx的Nexys3作为开发板
1. UART简介
UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。 
串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。
以上内容摘自某位网友的热心博文。
就我个人而言,UART就是一个异步串行接口,见过最多的就是RS232。而我们的开发板则是一个Mircro USB来模拟这样一个接口,电路图如下:
 
 
根据manual的介绍,我们可以通过指令来通过这个接口首发数据。Mircroblaze提供了这一接口的控制器,官网上也有着一接口的VHDL语言Demo。所以原理内容本人就不再赘述,主要还是注意串行异步通信协议,如下图所示。
 
 
道理很简单,但是这个Demo笔者却研究了很久时间,因为我一直使用Verilog语言,VHDL语言和Verilog区别还是挺大的,为了方便其他使用Verilog研究本Demo,笔者现将Xilinx网站上的GPIO_UART Demo改写为Verilog。
该Demo采用单工方式,开发板最为发送器,PC最为接收器。同时,该Demo还兼具了按键消抖,7段数码管显示等模块,笔者也进行了改写,但此处不做详细介绍。
由于该源代码注解较为详细,现仅将功能介绍:其实由switch控制led显示,同时switch[0]作为系统复位端。五个按键的中间按键也可作为复位端。程序烧录后,启动系统,系统将自动向PC发送27个16位字符串;当按其他按键时,开发板也将向PC发送24个16位字符串。字符串内容相同,但数据不同。其中笔者认为该程序按键消抖部分不是很好,但是本人并未修改,毕竟只是改写人家的源代码。Xilinx官网的大部分都是VHDL程序,看起来真的是很费力,希望对感兴趣的同学有帮助吧。 
 
2.程序源代码介绍
                
  其中,笔者使用IPcore生成rom,按键发送和初始发送的数据内容相同,但长度不同,作为测试依据。源码打包在最后面。
 
 
3.实验截图
(1)状态机截图
 
                图1 顶层文件状态机
 
 
          图2 子层状态机
 
(2)测试截图
        验证工具为网上下载的小工具——串口调试器。打开该工具前需要保证开发板已经与PC相连,否则无法找到串口COM3。测试前,别忘记将选择串口选为COM3,波特率9600,数据位8,校验位无,停止位1,单击打开串口即可测试。如图。
  
 
4.附件
(1)源代码
       uart.rar
 

(2)串口调试器

 
以上内容均可以在百度网盘下载http://pan.baidu.com/share/link?shareid=940132753&uk=1092766566

【原创】FPGA开发手记(一) UART接口的更多相关文章

  1. 【原创】FPGA开发手记(二) VGA接口

    以下内容均以Xilinx的Nexys3作为开发板 1.VGA接口介绍 首先,先看电路图(3*5为例): 标准VGA一共15个接口,但是实际应用的接口信号只用五个:HSYNC,行同步信号:VSYNC,场 ...

  2. Cypress的开发板的UART接口打印调试信息

    说实话,在官方论坛现在还没有找到相关有用的消息,因为我们这个开发板的UART没引出来. http://www.cypress.com/?app=forum&id=167&rID=527 ...

  3. 【原创】FPGA开发手记(三) PS/2键盘

    以下内容均以Xilinx的Nexys3作为开发板   1.PS/2键盘简介 虽然Nexys3开发板是利用USB接口搭载键盘,但是其原理与PS/2键盘完全相同,现在就仅以PS/2键盘为例讲解如何将键盘搭 ...

  4. FPGA开发板

    kingst.cnblogs.com 各种应用需要的接口不同: 做数字信号处理的,需要有AD/DA, 做图像处理,需要有图像接口.如果是通信的,需要有通信的接口,例如PCI/LVDS等.... 然后根 ...

  5. GVIM与模板——让FPGA开发变得更简单

    还在使用FPGA开发环境自带的代码编辑器?还在逐个字母敲击冗长重复的代码?明德扬至简设计法让你快速提高代码编写效率!利用GVIM这一高效的编辑工具并添加自定义模板,通过简短的脚本命令即可自动生成所有常 ...

  6. FPGA开发随笔汇总

    点击标题即可进入相关随笔. DE-SOC开发板VrilogHDL开发相关部分: (本过程需要Verilog HDL 的基本语言基础) 1.FPGA的发展史及FPGA 的基础架构 2.首先看一下友晶DE ...

  7. Arduino与Air800开发板使用UART通信:传输DHT22传感器数据

    硬件介绍 Arduino Leonardo在数字引脚0(RX)和1(TX)进行串口通信时是使用“Serial1”,USB的串口通信使用的是“Serial”.在数字引脚0(RX)和1(TX)与USB是相 ...

  8. FPGA开发流程1(详述每一环节的物理含义和实现目标)

    要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体 ...

  9. FPGA开发流程

    需求说明:Verilog设计 内容       :FPGA开发基本流程及注意事项 来自       :时间的诗 原文来自:http://www.dzsc.com/data/2015-3-16/1080 ...

随机推荐

  1. C语言经典案例

    题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40万 ...

  2. POJ3368(RMQ)

    Frequent values Description You are given a sequence of n integers a1 , a2 , ... , an in non-decreas ...

  3. async:false同步请求,浏览器假死

    // 异步请求导致数据错乱 // function get_num(){ // $("input[name='monitor']").eq(1).attr('checked',tr ...

  4. mysql主配置文件my.cnf详细说明

    MySQL配置文件my.cnf 例子最详细翻译,可以保存做笔记用[转载]#BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 ...

  5. 七牛云覆盖上传 php

    使用七牛云过程中遇到了需要上传覆盖的情况,最终解决,分享给大家. 七牛云sdk上传示例中是这样写的 <?php require_once 'path_to_sdk/vendor/autoload ...

  6. win7 64位。未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    win7或win8 64位调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/” ...

  7. (转载)delphi checklistbox用法

    delphi checklistbox用法 在Delphi中checklistbox中高亮选中(不论是否Checked)能够进行操作么?删除,上下移动等等 删除:CheckListBox.Delete ...

  8. python上下文管理器及with语句

    with语句支持在一个叫上下文管理器的对象的控制下执行一系列语句,语法大概如下: with context as var: statements 其中的context必须是个上下文管理器,它实现了两个 ...

  9. SQL函数说明大全 (转)

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  10. This transaction has been rolled back, rather than only the current.

    今天上午,收到运维组同事反映某应用系统的其中一个功能报错,不是偶然性事件,每个使用该功能的用户都报错.报错内容为:This transaction has been rolled back, rath ...