NEXYS 3开发板练手--USB UART(一)
接上一篇文章,今天来讲讲这个USB UART串口发送机。
我们知道,当我们的微处理器(单片机、FPGA、DSP等)要和电脑进行通信的时候一般会采用串行通信方式,而最常用的串行通信协议的物理层接口是RS232串行口,这时候为满足RS232串行通信协议,常常需要一个电平转换芯片,比如MAX232\233等。但是这些年随着计算机技术的发展,RS232串行接口在好多电脑上已经找不到了,特别是笔记本电脑(我的本本上就已经找不到这种接口了),取代它的往往是更常见的USB口。但是这种异步串行通信协议简单啊,往往只要规定波特率,然后按它的数据格式收发就可以了,不像USB协议,据说需要厚厚的几百页书阐述,这种工作量可不是一般的开发人员能够胜任的。所以人们就开发出一种折中的方式--用USB接口来实现异步串行通信协议,个人认为这个就是所谓的USB UART。好了,闲话不多说,让我们就以NEXYS3这块板子为例来看看是怎么实现这两种协议的转换的。
老规矩,先上硬件原理图。这里要说明一下,我们在Digilent官网上能弄到两份pdf,一份叫NEXYS3_sch,这个是详细的硬件原理图,还有一个参考手册,叫Nexys3_rm,这里面的连接图往往是简化了的,但是也很重要,特别是对于一些比较复杂的器件的使用,会有一些文字上的描述。我们今天就用这份pdf做参考。
找到标题USB-UART Bridge,pdf上的描述很简单,短短的几行文字,再加上下面的这个图:

连接接口跟FPGA的是一块FT232,而文字描述第一句话的意思就是这块FT232允许PC与开发板之间通过标准的Windows COM端口进行通信。原来如此,就是这么一块小小的芯片帮助我们完成了串行通信协议到USB协议之间的转换。这块芯片具体的工作原理我们暂且不去深究,对于我们这个开发来说,我们只需要搞清楚怎么使用它。那到底接下来怎么继续呢?似乎不太有头绪,那就先连接上电脑再说吧!将J13跟电脑的USB口连接上去,会发现这时电脑正在安装一个驱动,就像一般的U盘这些USB设备第一次连接电脑一样。既然如此,那我们不妨打开电脑的设备管理器,看看它到底装了些什么。然后我们会发现,多了的东西并不在USB设备里,反而在端口处多了一个COM3,如下图所示:

这一下我们不妨大胆预测了--原来FT232是在我们的计算机上虚拟出了一个COM,然后利用USB端口完成数据的传输!后来经过查找FT232的相关资料验证了我这个想法,真相大白后一切就变的简单多了,原来我们虽然用的是USB口,但我们根本不用去理会USB协议,我们最后操作的还是异步串行传输协议!再看看FT232连接到FPGA上的端口,就两个--TXD\RXD,看来我们只需要在FPGA里实现一般串口的收发机就能完成与PC之间的通信了!
没想到光原理就废话了这么多,鉴于篇幅,具体怎么实现这个收发机,我将在下一篇文章中具体叙述。

NEXYS 3开发板练手--USB UART(一)的更多相关文章
- NEXYS 3开发板练手--USB UART(三)
接着上一篇,今天我们来建立一个能用于实际工程中的DEMO. 首先,为了使我们的发送机不像上一个DEMO一样无节制的循环发送,我们需要修改代码,增加使发送机停止发送的控制部分,修改后的代码如下: `ti ...
- NEXYS 3开发板练手--USB UART(二)
上一篇文章中提到实际上我们操作的只是一个“伪”USB协议,我们真正需要完成的收发机遵循的协议应该是异步串行通信协议.这个协议对于大家来说应该是再熟悉不过了,在这里我就不多废话了.需要说明的是,我在这个 ...
- NEXYS 3开发板练手--LED与数码管时钟
做科研的时候从学校拿到一块基于Xilinx公司Spartan-6主芯片的FPGA开发板,因为之前一直在用Altera公司的FPGA,一开始接触它还真有点不太习惯.但毕竟核心的东西还是不会变的,于是按照 ...
- 基于STM32L476开发板的USB音频设备
现代音频设备中有很多知识产权. 我想研究创建一个与手机交互的算法设备(运行non-trivial算法的嵌入式设备). 我发现创建一个Lightning设备比创建一个连接到Android手机的的USB设 ...
- ESP-EYE V2.1 开发板 WINDOWS 10 开发入门
准备工作 1 × ESP-EYE V2.1 开发板 1 × Micro USB B 电缆 1 × PC(Windows10) 简介 ESP-EYE 是一款面向人脸识别和语音识别市场的开发板,搭载 ES ...
- MDK972-EK开发板裸调试设置和裸机程序烧写(转)
硬件平台:MDK972-EK开发板编译调试软件:KEIL uVision4仿真工具:JLINK V7/V8 本例子从串口输出信息,如图: KEIL uVision4调试设置如图所示: ...
- 用Java开发的【智能语音开发板MEGA ESP32AI】
有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? MEGA E ...
- 基于Neptune开发板的键盘蓝牙模块DIY指南
目录: 1.下载开发板程序2.安装USB串口(CH340)驱动3.安装烧写工具4.烧写开发板程序 本期我们带来基于润和Neptune开发板(以下简称Neptune开发板)的键盘蓝牙模块DIY指南,利用 ...
- 小白自制Linux开发板 二. u-boot移植
上一篇:小白自制Linux开发板 一. 瞎抄原理图与乱画PCB 中我们做了一个小型而没用的开发板,用的是Licheepi Nano的镜像,那从本篇开始我们开始自己构建它的灵魂吧. 我们都知道,PC在 ...
随机推荐
- shell综合
既可恶又不得不注意的地方: 1.if 与[ 之间必须有空格, 2.[ ]与判断条件之间也必须有空格, 3.]与; 之间不能有空格, 4.变量赋值的时候,等号两边不能有空格, 调试:sh -x xxx. ...
- UITabBarController 的配置
UITabBarController --> UITabBar Customizing Appearance backgroundImage 背景图片 selectedImageTintCol ...
- 飘逸的python - 使用reload进行热更新
一开始我们的游戏商城配置是从txt读取解析的. 后来为了方便运营修改配置,改成从数据库读取并提供后台可视化编辑配置. 如果为了使配置生效而重启游戏进程那太麻烦了. 这时候reload就派上用途了. 下 ...
- uni-app 生命周期
生命周期分为:页面生命周期和应用生命周期 生命周期可参考:uni-app官方API 注意平台支持,仅某个平台支持会显示,5+App是超HTML5+的App方案. 例如分享:只有小程序支持.这时我们就要 ...
- Java从零开始学十二(构造方法)
一.构造方法 构造方法的主要目的是为类中的属性初始化 二.构造方法的定义格式 class 类名称{ 访问权限 类名称(类型1 参数1,类型2 参数2,…){ 程序语句 ; … // 构造方法没有 ...
- 从零开始学JavaScript四(数据类型)
一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) ...
- 通过Js对电话和姓名身份证等进行部分隐藏处理
在进行web前端页面开发中,有时需要从后台获取用户数据来显示在前台页面,但是考虑到用户信息安全的问题,就需要对这些信息进行处理,使其不完全显示出来,例如姓名,两个字的显示姓,名字用*代替,电话前三位和 ...
- HDU 1023 Train Problem II 大数打表Catalan数
一个出栈有多少种顺序的问题.一般都知道是Catalan数了. 问题是这个Catalan数非常大,故此须要使用高精度计算. 并且打表会速度快非常多.打表公式要熟记: Catalan数公式 Cn=C(2n ...
- Design Pattern Bridge 桥设计模式
桥设计模式事实上就是一个简单的has a relationship.就是一个类拥有还有一个类,并使用还有一个类实现须要的功能. 比方遥控器和电视之间能够使用桥设计模式达到能够使用同一个遥控器控制多台电 ...
- vim删除文件第n行到结尾、或某段内容
1. 编辑文件 vim myShell.sh 2. 转到文件末尾 G 3. 或者转到删除内容最后的行 :set nu #显示行号,便于确定哪行 200G #光标定到200行,表示要删除n-200行的内 ...