"); //-->
引言
随着EDA技术得发展,CPLD已经在许多方面得到了广泛应用,而串行通信是实现远程测控的重要手段。本文利用VHDL语言在CPLD上实现了串行通信,完全可以脱离单片机使用,克服了单片机的许多缺点。
串口结构及内容
本设计所采用的是异步通信方式,可以规定传输的一个数据是10位,其中最低位为启动位(逻辑0低电平),最高位为停止位(逻辑1高电平),中间8位是数据位。为了方便对数据进行正确控制,选取发送(接受)每位数据用4个时钟周期。为了能够达到串行通信的波特率,例如4800B/s,则需把时钟频率设为 19.2kHz。系统结构如图1所示:

图1
系统原理
首先介绍串行通信发送器的工作原理。6位计数器用于判断发送的数据是否发送完毕及在发送完毕后装入新的数据,其VHDL语言程序如下:

由于本设计中选取一位数据4个时钟周期,因此当计数到“100111”时,表示10位数据发送完毕;此时将加载信号“load”置1,则向移位寄存器加载10位数据。此计数器的时钟信号由3位计数器的进位信号提供,3位计数器程序为如下:

当计数脉冲为3时,计数器清零并发出进位信号“carry”,“carry”既是6位计数器的时钟信号,又是移位寄存器的移位脉冲,移位寄存器实际上在发送器中是一个并串转换器,其程序为如下:

当加载信号高有效时,10位数据从外部寄存器中并行载入REG10,载入后在“carry”有效时,即每4个CLK周期右移一位进入锁存器,进而从TXD发出。发送器的仿真波形如图2所示。

图2
接收器的结构与模块的功能与发送器相似。通过判断接收锁存器中的起始位是否为零,来确定接收与否。若有效时,3位计数器开始计数,将锁存器中的数据逐位右移到移位寄存器中,6位计数器同样计数到“100111”,此时表示已接收10位数据,发出信号把移位寄存器中的数据并行读出。接收器中的移位寄存器其实是一个串并转换器。
结论
以上就是串行通信的基本结构和原理,在工程中可能对波特率的要求不同。可以利用CPLD的在线可编程功能,通过修改发送(接收)每一位的时间来控制波特率,比如把一位数据每4个CLK改为2个CLK,则在时钟频率19.2kHz时,波特率为9600bps。除此之外,还可以通过增加时钟频率来增大波特率。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
过程控制演示
三星电子:2nm良率爬坡好于预期,泰勒厂预计年底完成首批流片
我国今年将加强人工智能等领域立法研究
美国初创企业计划在海上风力涡轮机内建数据中心
FPGA/CPLD开发简明教程
FPC全制程技术讲解
十六路遥控电路(T998C)
Microchip推出LX4580高集成度24通道混合信号IC,专为航空与防务执行系统 设计
ADI IIC-China 2012现场花絮
霍尔木兹海峡危机或冲击全球芯片产业链
FPC的最新技术动向
ADI在线研讨会:您不知道的关于DAC的五件事
彻底不装了!安世荷兰禁用中国员工账号试图夺控制权
Bluetechnix演示即插即用摄像机系统
遥控接收解码组件TH9738
FPC相关文章(两篇)
一头雾水
四路遥控接收器(CS902)
中国 GPU 赛道竞争白热化:寒武纪2025实现盈利,摩尔线程、元心科技亏损收窄
2030年电动汽车用磁体市场规模将达95亿美元
关于定时器的问题
(求助)有谁做过POE的东东
欢迎大家光临ARM beginner 提供资料 下载
美国AI芯片新管制酝酿中 防止第三地走私为首要目标
接口与隔离演示
SB-50ALTX接收机
六路遥控接收电路(CS902)
OpenAI 巨型 “星门” 数据中心扩建计划告吹
FPC设计规范文献
一个移植uclinux的问题,请各位帮忙!!!