当前位置:首页 > 通信技术 > 通信技术
[导读]一、硬件电路设计  本文选用CPLD 是ALTERA 公司的EPM240T100,结合MAX232 接口芯片进行串口通信设计,框图如下图1 所示。     图1 CPLD串口通信模块硬件设计  二、VHDL程序模块设计及描述  使用VHDL 对CPL

一、硬件电路设计

  本文选用CPLD 是ALTERA 公司的EPM240T100,结合MAX232 接口芯片进行串口通信设计,框图如下图1 所示。

  

 

  图1 CPLD串口通信模块硬件设计

  二、VHDL程序模块设计及描述

  使用VHDL 对CPLD 进行编程,设计3 个模块,波特率发生模块,接收器,发送器。

  1. 波特率发生模块

  波特率发生器实际是一个分频器,如前所述,本文设计的波特率为19.2kb/ 秒,设计使用的时钟频率为10MHz,所以计数器进行计数时计数到260进行翻转。

  程序如下(关键部分保留,非必要部分用……代替):

  ……

  ENTITY uart IS

  GENERIC(d_len:INTEGER:=8);

  PORT (

  f10MHz:IN STD_LOGIC;-- 系统时钟

  reset:IN STD_LOGIC;-- 复位信号

  rxd:IN STD_LOGIC; -- 串行接收

  txd:OUT STD_LOGIC;-- 串行发送

  );

  END uart;

  ARCHITECTURE behav of uart IS

  ……

  BEGIN

  rxds<=rxd;

  PROCESS(f10MHz,reset)

  -- 设置波特率发生器 19200kb/s

  VARIABLE clk19200hz: STD_LOGIC;

  VARIABLE count:INTEGER RANGE 0 TO 260;

  BEGIN

  IF reset='0' THEN

  count:=0;

  clk19200hz:='0';

  ELSIF f10MHz'EVENT AND f10MHz='1' THEN

  IF count=260 THEN

  count:=0;clk19200hz:= NOT clk19200hz;

  ELSE

  count:=count+1;

  END IF;

  END IF;

  baud_rate<=clk19200hz;

  END PROCESS;发送模块e#2. 发送模块

 

  发送部分采用状态机t_state 进行编程,共设两个值:t-start 和t_shift,分别表示发送开始以及发送保持状态。复位键按下时设置到t-start 状态,并将发送数据位设为“1”, 发送的数据位数计数为0,在t-start 状态,状态机将处于这一个状态并等待波特率计数信号的电平上升沿到来。上升沿到来时,依据t_state 状态的不同值做不同处理,如果是t-start 开始状态则先读待发送的数据,并发送开始位“0”,然后将状态转到发送保持t_shift 状态,在发送保持t_shift 状态,不断判断发送的数据位数是否满8 位,如果满了则回归t-start 状态,否则继续发送,保持在t_shift 状态,为避免干扰将其余情况下的状态自动跳转到t-start 状态。程序如下:

  PROCESS(baud_rate,reset,data)

  -- 数据发送部分

  VARIABLE t_no:INTEGER RANGE 0 TO 8;

  -- 发送的数据各位的位序号

  VARIABLE txds:STD_LOGIC;

  VARIABLE dtmp:STD_LOGIC_VECTOR(7

  DOWNTO 0);

  BEGIN

  IF reset='0' THEN

  t_state<=t_start;

  txds:='1';

  t_no:=0;

  ELSIF baud_rate'event AND baud_rate='1' THEN

  CASE t_state IS

  WHEN t_start=>

  dtmp:=data;

  txds:='0'; -- 发送开始

  t_state<=t_shift;

  WHEN t_shift=> IF t_no=d_len THEN

  txds:='1'; -- 发送结束

  t_no:=0;

  t_state<=t_start;

  ELSE

  txds:=dtmp(t_no); -- 发送一字节数据

  t_no:=t_no+1;

  END IF;

  WHEN thers=>t_state<=t_start;

  END CASE;

  END IF;

  txd<=txds;

  END PROCESS;

  3. 数据接收模块

  接收部分采用状态机进行编程,共设两个状态:

  r-start 和r_shift 分别表示接收开始以及接收保持状态;复位键按下时设置到r-start 状态,并将待接收存放数据的data 赋值为“00000000”, 在r-start状态,接收状态机将处于这一个状态并等待波特率计数信号的电平上升沿到来。波特率发生模块的计数上升沿到来,依据状态的不同值做不同处理,如果是r-start 接收开始状态则等待开始位信号,检测到rxds=‘0’的开始位信号好转到r_shift 接收保持状态,r_shift 接收保持状态会不断判断接收的数据位数是否满8 位,如果满了则回归r-start 状态,否则继续接收,保持在r_shift 接收保持状态,为避免干扰将其余情况下的状态自动跳转到r-start 接收开始状态,程序与发送部分类似,此处省略。三、串口通信的VHDL程序仿真结果

 

  串行口通信的仿真结果如图2 所示。从图中可以看出,每发送完一个字节,即8 位数据后,线路上将输出一个高电平,之后又开始传送下一个字节。

  同样,仿真波形显示,有效数据到达接收管脚rxd之前,线路上保持为高电平,直到收到一个低电平起始位,将该起始位后的8 位数据串行接收后依次送到保存接收结果的信号data 的各位。

  

 

  图2 串行口通信仿真波形图

  串口通信的硬件验证

  将程序通过在系统编程下载入配套的CPLD 电路板进行硬件验证,按照以下步骤进行。

  (1)确定管脚对应关系:

  串行接收管脚rxd 与max232 的12 脚R1OUT对应; 串行发送管脚txd 与max232 的11 脚T1IN对应;复位信号reset 与按键S1 对应。

  (2)由QUARTUS II 进行管脚分配:

  f10MHz 在MAXII 芯片上对应的管脚号为12 ;S1 在MAXII 芯片上对应的管脚号为21 ; rxd 在MAXII 芯片上对应的管脚号为89; txd 在MAXII 芯片上对应的管脚号为90。

  (3)电平定义:

  按键S1 按下时表示输入信号为低电平。

  应用“ 串口调试助手” 进行验证, 在发送窗口随机输入需要发送的字符,可以发现由PC 机发给CPLD 的字符被CPLD 传送回来并在接收窗口显示出来。在批量随机数据发送后分析:在传输时19.2kb/s 传输速率下,误码率达10-8。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

正弦信号发生器是一种用于产生正弦波信号的电子设备,广泛应用于通信、测试和测量等领域。该发生器主要由两部分组成:正弦波信号发生器和调频、调相、键控等信号产生部分。

关键字: 正弦波信号发生器 CPLD

上位机串口通信是指在上位机(通常是计算机或微控制器)与外部设备之间通过串行通信协议进行数据传输和通信的过程。在串口通信中,数据以位为单位按顺序传送,通常使用一个或两个物理线路(通常是两条线)来实现数据的发送和接收。

关键字: 上位机 串口通信

串口通信(Serial Communication)是一种常用的数据传输方式,它通过串行数据线逐位传输数据,具有成本低、简单易用、可靠性高等优点。在工业控制、通信设备、嵌入式系统等领域得到广泛应用。

关键字: 串口通信 嵌入式系统

串口通信是一种常见的通信方式,用于在不同设备之间传输数据。它通过串行数据线(通常是一对TXD和RXD线)在设备之间进行通信。串口通信具有简单、可靠、成本低等优点,因此在工业控制、嵌入式系统、数据采集等领域得到广泛应用。

关键字: 串口通信 串口编程

串口通信是一种常见的通信方式,主要应用于计算机和其他设备之间的数据传输。它的主要原理是利用串行数据传输的方式,将数据一位一位地按顺序传输,而不是同时传输所有的数据。下面我们来看看串口通信的主要原理以及如何提高其传输速度。

关键字: 串口通信 串口速度

串口通信是一种常见的通信方式,它通过串行方式传输数据。串口通信的原理相对简单,主要涉及到数据位的传输和接收。在串口通信中,数据按照一定的波特率(baud rate)逐位传输。通常,一个字节的数据由8位组成,所以传输一个字...

关键字: 串口通信 波特率

RS 232串口通信是一种常见的串行通信协议,广泛应用于计算机和其他设备之间的数据传输。它是由美国电子工业协会(EIA)制定的一种标准,规定了数据传输的物理层和部分数据链路层的规范。

关键字: RS 232 串口通信

虽然 USB 几乎完全取代那些旧电缆和连接器,但 UART 绝对不会成为过去。您会发现许多 DIY 电子项目都使用 UART。

关键字: UART 串口通信 USB

STM32是一款由STMicroelectronics生产的微控制器系列,具有高性能、低功耗和丰富的外设资源。其中,串口通信是一种常用的通信方式,可以实现与其他设备之间的数据传输。

关键字: STM32 串口通信 微控制器

伴随物联网、车联网、人工智能等新兴应用领域的拓展和深化,智能家居、智慧楼宇、智慧城市和智能工业等行业快速发展,带动物联网无线模组需求释放,进而带动串口WiFi模块,BLE蓝牙模块以及ZigBee模块的需求增长

关键字: uart 串口通信 物联网
关闭
关闭