My title page contents

uart串口收发器设计VHDL代码Quartus仿真

名称:uart串口收发器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

uart串口收发器设计
1、输入的8位并行数据使用UART协议串行输出
2、可以接收UART协议信号,并将其并行输出(8位)
3、波特率为9600bit/s
4、带有奇偶校验位(奇校验或者偶检验)


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1.工程文件


2.程序文件







3.程序编译


4.RTL图


5.仿真图

整体仿真图


波特率模块


发送模块


接收模块


部分代码展示:

--uart串口收发器设计
--1、输入的8位并行数据使用UART协议串行输出
--2、可以接收UART协议信号,并将其并行输出(8位)
--3、波特率为9600bit/s
--4、带有奇偶校验位(奇校验或者偶检验)
LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
   USE ieee.std_logic_arith.all;
--接收模块
ENTITY uart_rx IS
   PORT (
      clk                  : IN STD_LOGIC;--时钟
      rst_n                : IN STD_LOGIC;--复位
      baud16_tick          : IN STD_LOGIC;--波特率*16
      uart_rx_buf_wr_en    : OUT STD_LOGIC;--接收使能
      uart_rx_buf_wr_data  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--接收数据
      uart_rx_err          : OUT STD_LOGIC;--校验错误
      uart_rxd             : IN STD_LOGIC--接收串行数据
   );
END uart_rx;
ARCHITECTURE trans OF uart_rx IS
   
   SIGNAL   data_len             :  STD_LOGIC_VECTOR(3 DOWNTO 0);--数据长度-- 5~8
   SIGNAL   stop_len             :  STD_LOGIC_VECTOR(1 DOWNTO 0);--停止位长度-- 1~2
   SIGNAL   check_len            :  STD_LOGIC;--校验位长度-- 0~1
   SIGNAL   check_mode           :  STD_LOGIC;--奇偶-- 0~1
   
   SIGNAL uart_rxd_bit_inv          : STD_LOGIC;
   
   SIGNAL Bau16_Tick_shift_r        : STD_LOGIC_VECTOR(1 DOWNTO 0);
   SIGNAL Bau16_Tick_rising         : STD_LOGIC;
   
   SIGNAL state                     : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL next_state                : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL cnt_baud16_tick           : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL cnt_rx_bit                : STD_LOGIC_VECTOR(3 DOWNTO 0);
   
   SIGNAL rx_shift_reg              : STD_LOGIC_VECTOR(8 DOWNTO 0);
   
   SIGNAL rx_check_sum              : STD_LOGIC;
   SIGNAL local_check_sum           : STD_LOGIC;
   SIGNAL uart_rx_buf_wr_data_buf : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
   data_len<="1000";--8位数据位
stop_len<="01";--1位停止位
check_len<='1';--1位校验位
check_mode<='0';--奇校验
   -- Drive referenced outputs
   uart_rx_buf_wr_data <= uart_rx_buf_wr_data_buf;--输出接收数据
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         uart_rxd_bit_inv <= uart_rxd;--同步到时钟下
      END IF;
   END PROCESS;
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         Bau16_Tick_shift_r <= (Bau16_Tick_shift_r(0) & baud16_tick);
      END IF;
   END PROCESS;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » uart串口收发器设计VHDL代码Quartus仿真

发表评论

加载中~

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员