基于FPGA设计与现UART.docVIP

  • 2
  • 0
  • 约9.47千字
  • 约 9页
  • 2017-05-08 发布于贵州
  • 举报
基于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)

1亿VIP精品文档

相关文档