一、硬件电路设计
本文选用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;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)