基于fpga设计与实现uart - search readpudncom

基于fpga设计与实现uart - search readpudncom

ID:18717961

大小:88.50 KB

页数:9页

时间:2018-09-20

基于fpga设计与实现uart - search readpudncom_第1页
基于fpga设计与实现uart - search readpudncom_第2页
基于fpga设计与实现uart - search readpudncom_第3页
基于fpga设计与实现uart - search readpudncom_第4页
基于fpga设计与实现uart - search readpudncom_第5页
资源描述:

《基于fpga设计与实现uart - search readpudncom》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于FPGA设计与实现UARTUART(即UniversalAsynchronousReceiverTransmitter通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。---串行外设用到RS-232异步串行接口,本实验室平台用的是MAXIM公司生产的MAX23。MAX232可以将串口设备需要发送的TTL/CMOS逻辑电平转换为RS-232逻辑电平,同时也可以将要接收的RS-232逻辑电平转换为TTL/CMOS逻辑电平。本实验通过编写VHDL语言程序,实现数据在实验平台与PC之间通过串口进行收发,

2、基于FPGA器件设计与实现UART。一UART基本知识UART是通过串行传送数据而实现通信的,它的帧格式如下:---包括线路空闲状态(高电平)、起始位(低电平‘0’)、5~8位数据位、可选的校验位和停止位(可为1、1.5、2位)。这种格式是由起始位和停止位来实现字符的同步。另外,UART在国际上有一标准的波特率系列,在本实验中采用的波特率为9600HZ。二管脚锁定及功能说明1、时钟clk锁定在4MHZ的频率,是本实验箱的28号管脚的第三个针脚;2、复位键reset锁在105号管脚,用来复位;3、数据输入端口din[7..0]为117——

3、124,实验8位数据输入;4、输入使能口trans_lock为57,按一次输入一位数据;5、接收数据dout[7..0]显示为85——96,显示接收的数据6、接收出错信号frame_erro锁在74,为1则表示接收有误;7、接收完毕frame_end信号为75,为1表示接收完毕为0则表示正在接收,不允许发送;8、发送完毕信号trans_end为76,为1表示发送完毕,为0则表示正在发送,不允许接收。9、串行数据输入口rxd锁在97,串行数据输出口txd锁在98,分别用来数据的输入与输出。三UART的设计与实现1、分频计:由于本实验采用的

4、波特率为9600HZ,它每隔16个时钟周期采样一个数据,因此实际输入的频率为9600HZ×16=153600HZ,实验平台上没有合适的时钟频率,因此在本实验中采用了4MHZ的时钟输入,对它进行了26分频(4000k/153.6k=26.42),接近了实验要求的时钟频率。它的源代码如下:--GeneratedbyQuartusIIVersion4.0(BuildBuild1901/28/2004)--CreatedonSunNov2017:09:412005--文件名:baud.vhd--功能:将外部输入的4MHz的信号分成频率为1536

5、00Hz=9600Hz×16的信号--26倍分频计libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitybaudisPort(clkb,resetb:instd_logic;clk_out:outstd_logic);endbaud;architectureBehavioralofbaudisbeginprocess(clkb,resetb)variablediv:integerran

6、ge0to26;beginifresetb='1'then--复位div:=0;clk_out<='0';elsifclkb'eventandclkb='1'then--设置分频系数div:=div+1;ifdiv=13then--一半的时候置0clk_out<='0';elsifdiv=26then--26的时候置1clk_out<='1';div:=0;endif;endif;endprocess;endBehavioral;2、UART接收器---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始

7、。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rbuf,最后输出数据dout。接收完毕时,数据接收标志信号frame_end置1,标志数据接收完毕,接收过程中为0,防止发送冲突。如果接收的过程中发生错误,则接收出错信号frame_error为1,平时此信号为0。接收器实现的源代码如下:--GeneratedbyQuartusIIVersion4.0(BuildBuild1901/28/2004)--Createdon

8、SunNov2017:09:412005--文件名:receive.vhd。--功能:UART接受器。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_L

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。