用VHDL语言在CPLD上实现串行通信 用VHDL语言在CPLD上实现串行通信 摘 要: 串行通信是实现远程测控的重要手段。采用VHDL语言在CPLD上实现了串行通信,完全可 以脱离单片机使用。 关键词: CPLD;VHDL;串行通信 引言 随着EDA技术得发展,CPLD已经在许多方面得到了广泛应用,而串行通信是实现远程测控 的重要手段。本文利用VHDL语言在CPLD上实现了串行通信,完全可以脱离单片机使用, 克服了单片机的许多缺点。 串口结构及内容 本设计所采用的是异步通信方式,可以规定传输的一个数据是10位,其中最低位为启动 位(逻辑0低电平),最高位为停止位(逻辑1高电平),中间8位是数据 位。为了方便对数据进行正确控制,选取发送(接受)每位数据用4个时钟周期。为了能够 达到串行通信的波特率,例如4800B/s,则需把时钟频率设为 19.2kHz。系统结构如图1所示: [pic] 图1 系统原理 首先介绍串行通信发送器的工作原理。6位计数器用于判断发送的数据是否发送完毕及在 发送完毕后装入新的数据,其VHDL语言程序如下: process(carry) begin if carry'event and carry='1'then if counter40="100111"then load counter40 else counter40 load end if; end if; end process; 由于本设计中选取一位数据4个时钟周期,因此当计数到“100111”时,表示10位数据发送 完毕;此时将加载信号“load”置1,则向移位寄存器加载10位数据。此计数器……