• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > CPLD的串口通信设计

CPLD的串口通信设计

录入:edatop.com     点击:

一、硬件电路设计

本文选用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;

发送部分采用状态机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;

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

作者:Spring 来源:电子发烧友网

上一篇:WLAN芯片的指数回归技术
下一篇:SCTP在工业以太网通信技术中的应用研究

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图