第1页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共4页用VHDL语言在CPLD上实现串行通信引言随着EDA技术得发展,CPLD已经在许多方面得到了广泛应用,而串行通信是实现远程测控的重要手段
本文利用VHDL语言在CPLD上实现了串行通信,完全可以脱离单片机使用,克服了单片机的许多缺点
串口结构及内容本设计所采用的是异步通信方式,可以规定传输的一个数据是10位,其中最低位为启动位(逻辑0低电平),最高位为停止位(逻辑1高电平),中间8位是数据位
为了方便对数据进行正确控制,选取发送(接受)每位数据用4个时钟周期
为了能够达到串行通信的波特率,例如4800B/s,则需把时钟频率设为19
系统结构如图1所示:图1系统原理第2页共4页第1页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共4页首先介绍串行通信发送器的工作原理
6位计数器用于判断发送的数据是否发送完毕及在发送完毕后装入新的数据,其VHDL语言程序如下:由于本设计中选取一位数据4个时钟周期,因此当计数到“100111”时,表示10位数据发送完毕;此时将加载信号“load”置1,则向移位寄存器加载10位数据
此计数器的时钟信号由3位计数器的进位信号提供,3位计数器程序为如下:当计数脉冲为3时,计数器清零并发出进位信号“carry”,“carry”既是6位计数器的时钟信号,又是移位寄存器的移位脉冲,移位寄存器实际上在发送器中是一个并串转换器,其程序为如下:第3页共4页第2页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共4页当加载信号高有效时,10位数据从外部寄存器中并行载入REG10,载入后在“carry”有效时,即每4个CLK周期右移一位进入锁存器,进而从TXD发出
发送器的仿真波形如图2所示
图2接收器的结构