使用CPLD器件和VHDL语言实现USB收发模块的硬件功能设计.docx
《使用CPLD器件和VHDL语言实现USB收发模块的硬件功能设计.docx》由会员分享,可在线阅读,更多相关《使用CPLD器件和VHDL语言实现USB收发模块的硬件功能设计.docx(5页珍藏版)》请在第一文库网上搜索。
1、使用CP1D器件和VHD1语言实现USB收发模块的硬件功能设计引言当前,高密度可编程逻辑器件CPID由于具有巨大的灵活性而广泛应用于状态机、同步、译码、解码、计数、总线接口、串并转换等很多方面,而且在信号处理领域的应用也活跃起来。通用串行总线(U郅,Universa1Seria1Bus)接口既是一种快速、双向、廉价、可以进行热插拔的串行接旦技术,也是一种体系完备的通值协议,已逐渐成为计算机的主流接口。USB接口的收发模块用于进行数据编码和与外部相连。本文主要介绍使用CP1D实现通用串行总线(USB)接口收发模块。1、USB收发模块的数据规范和通信协议1.1USB的数据编码方式USB系统在进行串
2、行数据传输时,使用一种NRZ1(NoneReturnZeroInvert,即不归零反向码)的编码方案。在该编码方案中,“1”表示电平不变,“0”表示电平改变。图1uaa0|111o11o1IOOo1IOO111|_oNRZI-1I1图1的据波及!NRZI堀以给出了一个数据流和它的NRZI编码。如果直接使用这样的编码方式会遇到一个很严重的问题:若重复相同的“1”信号持续进入时,就会使电平长时间无法转换,逐渐积累从而导致读取数据产生严重的脱节。为了确保信号发送的准确性,当在USB总线上发送一个数据包时,传输设备就要进行位插入操作。所谓位插入操作是指在数据被编码前,在数据流中每6个连续的“1”后面插
3、入一个“0”,从而强迫NRZ1码发生变化。位插入操作如图2所示。USB数据的传送是由低位到高位。每包数据的开始是一个同步格式,同步格式固定为80H。从同步格式开始,位插入操作贯穿于整个数据传输过程,在同步格式后的数据“1”作为真正数据流的第一位。位插入操作是由传输端强制执行的。1包数品插入11一I包敢IV1NRz1泗数据1UT1r同步格式图2位插入示意图Fig.2Sketchdiagramofbitinsert1. 2USB收发模块工作过程USB收发模块的发送单元由串行化、位插入、NRZ1编码等几部分组成;接收单元由NRZ1解码、反位插入、并行化等组成。整个收发单元的工作过程如下:发送端在数据
4、发送前,首先要将并行数据串行化,然后进行位插入,最后进行NRZ1编码;接收端在接收数据前就必须先执行NRZI解码,然后进行反位插入,最后进行串行数据并行化。2、USB收发模块的设计流程使用VHD1语言进行USB收发模块的设计采用自下而上的设计方法,即先设计其各部分功能单元,再编写顶层文件调用各功能单元以实现其总体功能。根据USB收发模块的工作过程可以确定其设计流程。下面以发送模块为例,介绍各模块的具体实现。2.1串行化部分的设计USB收发模块传输的数据都是串行数据,一个串行数据由10位组成:1位启动位,8位数据位,1位停止位。由于系统内部处理的都是并行数据,所以在发送之前应该进行并行数据串行化
5、处理。串行化的过程是将输入的并行数据按由低位到高位的顺序存入一个有序数组中,并按串行数据格式进行编码。根据这一原理可以编写VHD1程序实现串行化功能。2. 2位插入部分的设计在位插入部分的设计中,最关键的步骤是计数器的设置和使用。位插入的进行与否由计数器的值决定,而计数器的值则由输入串行数据的状态直接决定。由于只有在连续输入6个“1”之后,即计数器的值为6时才进行一次位插入,而在计满6个数之前,只要有一位输入的串行数据为“0”,则计数器立即清零。因此,在每读入一位数据之后,就要判断其是否为“1”,以决定计数器加一还是清零。正是由于计数器状态极易发生改变,所以增加了编程的复杂性。2. 3NRZI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 CPLD 器件 VHDL 语言 实现 USB 收发 模块 硬件 功能设计