首页 AVR单片机 8051单片机 PIC单片机 msp430应用 motorola单片机 C166单片机 开关电源 电源设计 电源技术应用 电磁兼容
ARM芯片开发 DSP开发技术 PowerPC处理器 RABBIT单片机 嵌入式系统设计 工业控制 控制电路 PLC编程 机器人技术 电机原理
vhdl语言学习 asic芯片技术 fpga培训 cpld编程 verilog hdl Vxworks开发 wince开发教程 嵌入式linux uclinux开发 ucos入门

首页->可编程逻辑器件->cpld编程设计->正文

用VHDL语言在CPLD上实现串行通信

作者:  来源:51mcu 

上篇:cpld技术及其应用
下篇:FPGA-CPLD设计工具—Xilinx ISE使用

 

串口通讯不是什么热门的技术,也不是很难的技术,但是串口通讯却非常常用(不管是进行程序下载,软件调试,还是嵌入式开发都离不开这个串口),串口很早就存在在计算机上,而且会很长时间的存在。更多串口通讯技术!
摘 要: 串行通信是实现远程测控的重要手段。采用VHDL语言在CPLD上实现了串行通信,完全可以脱离单片机使用。
关键词: CPLD;VHDL;串行通信
引言

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

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


process(carry)
begin
if carry''event and carry=''1''then
if counter40="100111"then
load<=''1'';
counter40<="000000";
else counter40<=counter40+1;
load<=''0'';
end if;
end if;
end process;


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

process(clk)
begin
if clk''event and clk=''1''then
if counter4="0011"then
counter4<="0000";
carry<=''1'';
else counter4<=counter4+1;
carry<=''0'';
end if;
end if;
end process;

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

process(load,carry)
begin
if load=''1''then
reg10(9 downto 0)<=regin(9 downto 0);
else
if carry''event and carry=''1'' then
din<=reg10(0);
reg10(8 downto 0)<=reg10(9 downto 1);
end if;
end if;
end process;

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

接收器的结构与模块的功能与发送器相似。通过判断接收锁存器中的起始位是否为零,来确定接收与否。若有效时,3位计数器开始计数,将锁存器中的数据逐位右移到移位寄存器中,6位计数器同样计数到“100111”,此时表示已接收10位数据, 发出信号把移位寄存器中的数据并行读出。接收器中的移位寄存器其实是一个串并转换器。

结论
以上就是串行通信的基本结构和原理,在工程中可能对波特率的要求不同。可以利用 CPLD的在线可编程功能,通过修改发送(接收)每一位的时间来控制波特率,比如把一位数据每4个CLK改为2个CLK,则在时钟频率19.2kHz时, 波特率为9600bps。除此之外,还可以通过增加时钟频率来增大波特率。

参考文献
1 胡汉才. 单片机原理及其接口技术.清华大学出版社
2 赵俊超等. 集成电路设计VHDL教程. 希望电子出版社

相关资料:
Quartus II 用户指南FPGA-CPLD设计工具—Xilinx ISE使用
cpld技术及其应用单片机与CPLD综合应用技术
HDL编码风格与编码指南用CPLD实现单片机读写模块
FPGA与CPLD的区别Verilog HDL语言在FPGA/CPLD开发中的应用
什么是CPLD?


网站地图 | 联系我们 | 免责声明 | 招聘信息 | 友情链接
Copyright © 2005 - 2006 单片机设计网