基于FPGA设计与现UART.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA设计与现UART

基于FPGA设计与实现UARTUART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。 ---串行外设用到RS232异步串行接口,本基于FPGA器件设计与实现UART。 一 UART UART是通过串行传送数据而实现通信的,它的帧格式-- -包括线路空闲状态(高电平)、起始位(低电平)、5~8位数据位、可选校验位和停止位(可为1、1.5、2位)。这种格式是由起始位和停止位来实现字符的同步。 UART的设计与实现-- Generated by Quartus II Version 4.0 (Build Build 190 1/28/2004) -- Created on Sun Nov 20 17:09:41 2005 --文件名:baud.vhd --功能:将外部输入的4MHz的信号分成频率为153600Hz=9600Hz×16的信号 --26倍分频计 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity baud is Port (clkb,resetb:in std_logic; clk_out:out std_logic); end baud; architecture Behavioral of baud is begin process(clkb,resetb) variable div:integer range 0 to 26; begin if resetb=1 then --复位 div:=0; clk_out=0; elsif clkb event and clkb=1 then--设置分频系数 div:=div+1; if div=13 then --一半的时候置0 clk_out=0; elsif div=26 then --26的时候置1 clk_out=1; div:=0; end if; end if; end process; end Behavioral; 2、 UART接收器 ---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器,最后输出数据dout。数据接收标志信号标志数据接收完-- Generated by Quartus II Version 4.0 (Build Build 190 1/28/2004) -- Created on Sun Nov 20 17:09:41 2005 --文件名:receive.vhd。 --功能:UART接受器。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity receive is Port (clkr:in std_logic; --采样时钟 resetr:in std_logic; --复位信号 rxd:in std_logic; --数据串行输入信号 r_lock:in std_logic; --接收锁存信号 frame_end:out std_logic;--一位接收完毕信号 frame_error:out std_logic;--接收出错信号 dout:out std_logic_vector(7 downto 0));--显示接收数据 end receive; architecture Behavioral of receive is begin pro:process(clkr,resetr,rxd) --接收信号进程 variable number:std_logic_vector(3 downto 0); --接收数据的位数计数 variable

文档评论(0)

aining + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档