VHDL设计的串口通信程序

[09-12 18:30:53]   来源:http://www.88dzw.com  EDA/PLD   阅读:8432

文章摘要:本模块的功能是验证实现和PC机进行基本的串口通信的功能。需要在PC机上安装一个串口调试工具来验证程序的功能。程序实现了一个收发一帧10个bit(即无奇偶校验位)的串口控制器,10个bit是1位起始位,8个数据位,1个结束位。串口的波特律由程序中定义的div_par参数决定,更改该参数可以实现相应的波特率。程序当前设定的div_par 的值是0x104,对应的波特率是9600。用一个8倍波特率的时钟将发送或接受每一位bit的周期时间划分为8个时隙以使通信同步。程序的工作过程是:串口处于全双工工作状态,按动key2,CPLD向PC发送皐elcome"字符串(串口调试工具设成按ASCII码

VHDL设计的串口通信程序,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  本模块的功能是验证实现和PC机进行基本的串口通信的功能。需要在PC机上安装一个串口调试工具来验证程序的功能。程序实现了一个收发一帧10个bit(即无奇偶校验位)的串口控制器,10个bit是1位起始位,8个数据位,1个结束位。串口的波特律由程序中定义的div_par参数决定,更改该参数可以实现相应的波特率。程序当前设定的div_par 的值是0x104,对应的波特率是9600。用一个8倍波特率的时钟将发送或接受每一位bit的周期时间划分为8个时隙以使通信同步。

  程序的工作过程是:串口处于全双工工作状态,按动key2,CPLD向PC发送皐elcome"字符串(串口调试工具设成按ASCII码接受方式);PC可随时向CPLD发送0-F的十六进制数据,CPLD接受后显示在7段数码管上。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY UART IS
   PORT (
      clk                     : IN std_logic;  
      rst                     : IN std_logic;  
      rxd                     : IN std_logic;   串行数据接收端
      txd                     : OUT std_logic; 串行数据发送端 
      en                      : OUT std_logic_vector(7 downto 0); 数码管使能
      seg_data                : OUT std_logic_vector(7 DOWNTO 0); 数码管数据 
      key_input               : IN std_logic  按键输入
      );
END UART;

ARCHITECTURE arch OF UART IS
   //////////////////inner reg////////////////////
   SIGNAL div_reg                  :  std_logic_vector(15 DOWNTO 0);分频计数器,分频值由波特率决定。分频后得到频率8倍波特率的时钟  
   SIGNAL div8_tras_reg            :  std_logic_vector(2 DOWNTO 0);该寄存器的计数值对应发送时当前位于的时隙数  
   SIGNAL div8_rec_reg             :  std_logic_vector(2 DOWNTO 0);  寄存器的计数值对应接收时当前位于的时隙数
   SIGNAL state_tras               :  std_logic_vector(3 DOWNTO 0);  发送状态寄存器
   SIGNAL state_rec                :  std_logic_vector(3 DOWNTO 0); 接受状态寄存器
   SIGNAL clkbaud_tras             :  std_logic; 以波特率为频率的发送使能信号 

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]  下一页


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行