串口接收模块的verilog设计Word文档下载推荐.docx
- 文档编号:19652628
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:20
- 大小:773.93KB
串口接收模块的verilog设计Word文档下载推荐.docx
《串口接收模块的verilog设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《串口接收模块的verilog设计Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
FPGA的基本特点主要有:
1、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2、FPGA可做其它全定制或半定制ASIC电路的中试样片。
3、FPGA内部有丰富的触发器和I/O引脚。
4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5、FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式
当加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
当然FPGA存在于在某些场合选它而不是单片机的优势:
⑴FPGA运行速度快:
FPGA内部集成锁项环,可以把外部时钟倍频,核心频率可以到几百M,而单片机运行速度低的多。
在高速场合,单片机无法代替FPGA。
⑵FPGA管脚多,容易实现大规模系统:
单片机IO口有限,而FPGA动辄有数百个IO口,可以方便连接外设。
比如一个系统有多路AD、DA,单片机要进行仔细的资源分配,总线隔离,而FPGA由于丰富的IO资源,可以很容易用不同IO连接各外设。
⑶FPGA内部程序并行运行,有处理更复杂功能的能力:
单片机程序是串行执行的,执行完一条才能执行下一条,在处理突发事件时只能调用有限的中断资源;
而FPGA不同,逻辑可以并行执行,可以同时处理不同任务,这就导致了FPGA工作更有效率。
⑷FPGA有大量软核,可以方便进行二次开发:
FPGA甚至包含单片机和DSP软核,并且IO数仅受FPGA自身IO限制,所以FPGA又是单片机和DSP的超集,也就是说,单片机和DSP能实现的功能,FPGA一般都能实现。
2VerilogHDL简介
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL是目前世界上最流行的两种硬件描述语言之一,是在20世纪80年代中期开发出来的。
VerilogHDL这种硬件描述语言被用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
3串行通信系统
在计算机系统和微机网络的快速发展领域里,串行通信在数据通信及控制系统中得到广泛的应用。
UART(即UniversalAsynchronousReceiverTransmitter通用异步收发器)协议是数据通信及控制系统中广泛使用的一种全双工串行数据传输协议,在实际工业生产中有时并不使用UART的全部功能。
只需将其核心功能集成即可。
波特率发生器、接收器和发送器是UART的三个核心功能模块,利用Verilog-HDL语言对这三个功能模块进行描述并加以整合UART是广泛使用的串行数据传输协议。
UART允许在串行链路上进行全双工的通信。
串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。
如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。
或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。
使用VHDL或Veriolog-HDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。
本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。
3.1串行通信概念
计算机与计算机,计算机与外部设备进行数据交换也称为通信,一般有两种方式:
并行通信和串行通信。
信息的各位数据被同时传送的通信方法是并行通信,并行通信依靠I/O接口来实现。
并行通信中,数据有多少位就需要多少条信号传输线,这种通信方式快,但由于传输线较多,所以成本较高,仅适合近距离通信,通常传送距离小于30米,常用的并行通信协议有SPP、EPP、ECP等。
当距离大于30米时则多采用串行通信方式,串行通信是指外部设备和计算机间使用一根数据线(另外需要地线,可能还需要控制线)进行数据传输的方式。
数据在一根数据线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
与并行通信方式相比,有以下优点:
(1)传输距离长,可达数千公里。
(2)长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率比并行通信更容易提高。
(3)抗干扰力强,串行通信信号间的相互干扰完全可以忽略。
(4)通信成本低。
(5)传输线既传输数据,又传输联络信息。
因此串行通信得到广泛的应用。
在串行通信中,数据通常在发送器和接收器间进行双向传送,而这种传送又根据需要可分为单工通信、半双工通信和全双工通信。
通常情况下,根据信息传送格式,串行通信又分为两类:
异步串行通信和同步串行通信。
同步串行通信是按软件识别同步字符来实现数据传送的;
异步串行通信是一种利用字符再同步技术通信方式。
同步通信是以数据块的方式传送的,数据传输率高,适合高速率、大容量的数据通信。
同步通信在数据开始处用一个同步字符来指示。
同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。
在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收任意位的串行数据,同步通信具有较高的传输率,但对硬件要求较高。
异步通信是以字符为单位传送数据的,数据传送可靠性高,适合低速通信的场合。
异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。
然而本设计目的是在FPGA的基础上设计串口通信系统,而且本文采用的是RS-232C总线接口标准作为串行通信的交通工具,所以是采用按位传送的异步串行通信协议。
3.3RS-232总线
通信,当然就是接收信息/发送信息,在现实生活中人与人对话是通信,而传送他们信息的是空气这个媒介。
写信,电话,QQ都是通信工具,然而互相通信之间一定会有一个媒介,只是不同的通信方式,媒介不同而已。
计算机与计算机,计算机与外部设备之间的通信,一般有两种方式:
并行通信依靠I/O接口来实现,而串行通信就需要串行通信接口标准:
RS-232C、RS-499、RS-422、RS-423、RS-485等总线来实现。
当然本设计采用一般的微型计算机、计算机终端和一些外部设备都配有RS-232C串行接口作为本通信接口的标准。
RS232接口,就是普通电脑后面那个串口.一般为9针的,也有25针的.是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”(RS-232C,其中C表示此标准修改了三次)。
标准中包括了电气和机械方面的规定.该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定.后来随着设备的不断改进,成了目前大家普遍见到的9脚。
在不使用传输控制信号的情况下,用3根线就可以传输了9芯的是2收3发5地25芯的是2发3收7地。
两设备用RS232相连的时候为收——发,发——收,地——地。
3.3.1RS-232接口特性
(1)接口的电气特性:
在RS-232C中任何一条信号线的电压均为负逻辑关系。
即:
逻辑“1”,-5—-15V;
逻辑“0”+5—+15V。
噪声容限为2V。
即要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1”。
(2)接口的物理结构:
RS-232-C接口连接器一般使用型号为DB25的25芯插头座,通常插头在DCE端,插座在DTE端。
一些设备与PC机连接的RS-232C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。
所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。
(3)传输电缆长度由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应.50英尺.其实在一般应用中,传输距离小于50m,最大传输速率为20kbps。
由于RS-232-C接口标准出现较早,难免有不足之处,主要有以下四点:
(1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
(2)传输速率较低,在异步传输时,波特率为20Kbps。
(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。
由于RS-232C是用负电压来表示逻辑状态,与TTL以高低电平表示的逻辑状态的规定不同,所以在实际应用时,需要将TTL电平转换成RS-232电平,如图3-1所示。
RS232的接口芯片很多,因此使用时须加上适当的电平转换电路,最著名的当然是MAX公司的芯片MAX232。
图3-1MAX232结构图
3.3串行通信接口组成
由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此串行通信接口的基本功能是:
在发送时,把CPU送来的并行数据转换成串行数据,逐位地依次发送出去。
在接收时,把外部设备发送过来的串行数据逐位地接收,组装成并行数据,并行地送给CPU去处理。
实现这一功能的硬件电路叫做串行通信接口。
串行接口的组成图如图3-2所示。
图3-2串口接口的组成
在数据输入过程中,数据一位一位地从外部设备进入UART接口的“接收移位寄存器”,当“接受移位寄存器”中已接收完一个UART包的各位后,数据就从“接收移位寄存器”进入“数据输入寄存器”。
CPU从“数据输入寄存器”中读取接收到的数据(并行读取,即同时被读至累加器中)。
“接收移位寄存器”的移位速度由“接收时钟”确定。
在数据输出过程中,CPU把要输出的数据(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容被传输到“发送移位寄存器”,然后由“发送移位寄存器”通过移位操作,把数据一位一位地送到外设。
“发送移位寄存器”的移位速度有“发送时钟”确定。
“控制寄存器”用来保存与此接口有关的控制信息,这些控制信息决定接口的工作方式。
CPU可以通过修改“控制寄存器”的内容来控制串行通信接口的工作方式。
“状态寄存器”的各位称为“状态位”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误。
例如,用状态寄存器D5位为“1”表示“数据输出寄存器空用D0位表示“数据输入寄存器满”,用D2位表示“奇偶检验错”等。
3.4通信协议
在异步通信中,是以字符为单位传送数据,是从低位到高位逐位传送,一个字符表示一帧信息。
串行异步通信协议中字符代码传输格式如图2.3所示,通常UART的一帧数据由四部分组成:
一个起始位S(一般逻辑为“0”),后面是数据长度可变的数据位D0~D7(一般为6位到8位之间可变,数据的低位在前),一个可选的校验位PB(可选奇校验、偶检验或不需要检验),随后是一定长度的停止位P(可选1位、1.5位、或2位),停止位必须为逻辑“1”。
在没有数据被传输时,数据线会一直处于逻辑“1”状态。
一桢数据的组成图如图3-3所示。
图3-3一桢数据标准格式
a.起始位:
它是数据采样的第一个点,当接收模块检测串行输入数据管脚上的电平从“1”到“0”的跳变来确定一个UART包的起始位。
起始位检测8个连续脉冲的另一个更重要的原因是,采用16倍频采样的时钟,第8个采样脉冲所对应的数据波形正好是该位数据位波形的正中点(以时钟上升沿采样),在该处读写数据应该是最安全点。
b,数据位:
这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,奇偶校验位:
在串口通信中一种简单的检错方式。
有四种检错方式:
偶、奇、高和低。
当然没有校验位也是可以的。
对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶数个或者奇数个逻辑高位。
例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。
如果是奇校验,校验位位1,这样就有3个逻辑高位。
高位和低位不为真正的检查数据,简单置位逻辑高或者逻辑低校验。
这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
d,停止位:
用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
在UART协议中,数据的发送者与接收者不共享时钟信号,也就是说,在一次UART通信过程中,并没有一个时钟信号从发送端传输到接收端,因此,这个协议被称为异步方式。
由于没有共享时钟信号,因此在进行数据传输之前,收发双方必须协商好一个数据传输的波特率,也就是说,UART接收端应该知道发送端发送数据的波特率(相应的发送端也需要知道接收端的波特率)。
在大多数情况下,发送数据和接受数据的波特率是相同的。
UART发送端按照低位在前,高位在后的顺序移位输出数据。
一旦在初始化过程中,双方协商好了通信的波特率,收发双方的内部时钟都设定在同一波特率(但时钟的相位不同)。
在一个UART包传输开始,接收端将它的内部时钟调整到与发送端同步。
这样接收端就可以在每一位的中心位置对数据位进行采样,保证数据传输的正确性。
3.5系统整体结构
本设计以FPGA为基础来实现异步通信,而UART模块就为本设计关键所在,如图3-4所示,该模块主要有串行发送器、接收器以及波特率发生器三个模块组成。
波特率发生器模块:
在异步通信中,发送方和接受方必须保持相同的波特率才能实现正确的数据传送。
在本设计中,由于RS-232C传输必定是工作在某种波特率下,为了便于和RS-232C总线进行同步,需要产生符合RS-232C传输波特率的时钟。
图3-4系统整体结构图
串口通讯系统的完整的工作流程可以简单的分为数据接收和发送两个部分。
接收过程:
当UART模块检测到有新数据(RS-232C总线传输线的起始位)就会触发接收流程。
首先UART模块内部会重置波特率发生器和移位寄存器,控制逻辑使移位寄存器的工作模式为波特率模式,以准备数据接收,其次移位寄存器在波特率时钟的驱动下工作,不断的读取RS-232C串行总线上的输入数据,一位一位的接收,并且将数据保存到内部的数据寄存器内。
然后在进行串并转换,在通过CPU内部数据总线传送到数据I/O缓存器,最后被CPU内部采用。
发送过程:
当要发送数据出去时,先把要发送的CPU内部数据存储到数据I/O缓存器,传送到数据寄存器,然后进行串并转换。
UART模块内部会重置波特率发生器控制逻辑控制移位寄存器进入RS-232C串行发送的协议模式,并且使移位寄存器工作在波特率模式下,于是移位寄存器便在波特率时钟的驱动下依次将数据寄存器的数据一位一位发送到RS-232C的发送端TXD,这样就产生了RS-232C的数据发送时序。
4UART简介
UART是一种通用串行数据总线,用于异步通信。
该总线双向通信,可以实现全双工传输和接收。
在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器和其它器件。
因为计算机内部采用并行数据,不能直接直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:
CPU先把准备写入串行设备点的数据放到UART寄存器(临时内存块)中,再通过FIFO(FirstInputFirstOutput,先入先出列队)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。
它是用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
作为接口的一部分,UART还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流。
将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。
可以处理计算机与外部串行设备的同步管理问题。
一般而言UART和外界通信只需要两条信号线RXD和TXD,其中RXD是UART的接收端,TXD是UART的发送端,接收与发送是全双工形式。
由于可编程逻辑器件技术的快速发展,FPGA的功能日益强大,其开发周期短、可重复编程的优点也越来越明显,本设计就是在FPGA芯片上集成UART功能模块并和其他模块组合来实现一个能与其他设备进行串行通信的片上系统。
本系统设计硬件电路图如图4-1所示。
图4-1系统硬件原理图
模块名称:
uart_test
功能描述:
uart的测试顶层模块
moduleuart_test(
sys_clk,//系统时钟
uart_dataH,
uart_xmitH//uart接收与发送引脚
);
inputsys_clk;
//系统时钟(48MHz)
inputuart_dataH;
//uart接收引脚RXD
outputuart_xmitH;
//uart发送引脚TXD
reg[7:
0]senddata;
//发送一个字节的数据缓存区
regWR_R1,WR_R2,WR_R3;
//控制产生一个发送的写信号
wire[7:
0]recdata;
//接收缓存区
wireRI,TI,WR;
//接收、发送中断以及写控制信号
wireclksend,clkrec;
//发送和接收的时钟频率
always@(posedgeclksend)//通过RI接收中断产生一个写信号,维持时间为1个Clkbegin
WR_R1<
=RI;
WR_R2<
=WR_R1;
WR_R3<
=WR_R2
end
assignWR=(~WR_R3)&
(WR_R2)&
(WR_R1);
//控制写信号
always@(posedgeRI)//当接收了一个数据后,把数据加1后发回PC机,注意串口一个一个数据发
begin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 接收 模块 verilog 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)