版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑CPLD的串口电路设计-设计应用一、硬件电路设计
本文选用CPLD是ALTERA公司的EPM240T100,结合MAX232接口芯片进行串口通信设计,框图如下图1所示。
图1CPLD串口通信模块硬件设计
二、VHDL程序模块设计及描述
使用VHDL对CPLD进行编程,设计3个模块,波特率发生模块,接收器,发送器。
1.波特率发生模块
波特率发生器实际是一个分频器,如前所述,本文设计的波特率为19.2kb/秒,设计使用的时钟频率为10MHz,所以计数器进行计数时计数到260进行翻转。
程序如下(关键部分保留,非必要部分用……代替):
……
ENTITYuartIS
GENERIC(d_len:INTEGER:=8);
PORT(
f10MHz:INSTD_LOGIC;--系统时钟
reset:INSTD_LOGIC;--复位信号
rxd:INSTD_LOGIC;--串行接收
txd:OUTSTD_LOGIC;--串行发送
);
ENDuart;
ARCHITECTUREbehavofuartIS
……
BEGIN
rxds=rxd;
PROCESS(f10MHz,reset)
--设置波特率发生器19200kb/s
VARIABLEclk19200hz:STD_LOGIC;
VARIABLEcount:INTEGERRANGE0TO260;
BEGIN
IFreset='0'THEN
count:=0;
clk19200hz:='0';
ELSIFf10MHz'EVENTANDf10MHz='1'THEN
IFcount=260THEN
count:=0;clk19200hz:=NOTclk19200hz;
ELSE
count:=count+1;
ENDIF;
ENDIF;
baud_rate=clk19200hz;
ENDPROCESS;
2.发送模块
发送部分采用状态机t_state进行编程,共设两个值:t-start和t_shift,分别表示发送开始以及发送保持状态。复位键按下时设置到t-start状态,并将发送数据位设为“1”,发送的数据位数计数为0,在t-start状态,状态机将处于这一个状态并等待波特率计数信号的电平上升沿到来。上升沿到来时,依据t_state状态的不同值做不同处理,如果是t-start开始状态则先读待发送的数据,并发送开始位“0”,然后将状态转到发送保持t_shift状态,在发送保持t_shift状态,不断判断发送的数据位数是否满8位,如果满了则回归t-start状态,否则继续发送,保持在t_shift状态,为避免干扰将其余情况下的状态自动跳转到t-start状态。程序如下:
PROCESS(baud_rate,reset,data)
--数据发送部分
VARIABLEt_no:INTEGERRANGE0TO8;
--发送的数据各位的位序号
VARIABLEtxds:STD_LOGIC;
VARIABLEdtmp:STD_LOGIC_VECTOR(7
DOWNTO0);
BEGIN
IFreset='0'THEN
t_state=t_start;
txds:='1';
t_no:=0;
ELSIFbaud_rate'eventANDbaud_rate='1'THEN
CASEt_stateIS
WHENt_start=
dtmp:=data;
txds:='0';--发送开始
t_state=t_shift;
WHENt_shift=IFt_no=d_lenTHEN
txds:='1';--发送结束
t_no:=0;
t_state=t_start;
ELSE
txds:=dtmp(t_no);--发送一字节数据
t_no:=t_no+1;
ENDIF;
WHENthers=t_state=t_start;
ENDCASE;
ENDIF;
txd=txds;
ENDPROCESS;
3.数据接收模块
接收部分采用状态机进行编程,共设两个状态:
r-start和r_shift分别表示接收开始以及接收保持状态;复位键按下时设置到r-start状态,并将待接收存放数据的data赋值为“00000000”,在r-start状态,接收状态机将处于这一个状态并等待波特率计数信号的电平上升沿到来。波特率发生模块的计数上升沿到来,依据状态的不同值做不同处理,如果是r-start接收开始状态则等待开始位信号,检测到rxds=‘0’的开始位信号好转到r_shift接收保持状态,r_shift接收保持状态会不断判断接收的数据位数是否满8位,如果满了则回归r-start状态,否则继续接收,保持在r_shift接收保持状态,为避免干扰将其余情况下的状态自动跳转到r-start接收开始状态,程序与发送部分类似,此处省略。
三、串口通信的VHDL程序仿真结果
串行口通信的仿真结果如图2所示。从图中可以看出,每发送完一个字节,即8位数据后,线路上将输出一个高电平,之后又开始传送下一个字节。
同样,仿真波形显示,有效数据到达接收管脚rxd之前,线路上保持为高电平,直到收到一个低电平起始位,将该起始位后的8位数据串行接收后依次送到保存接收结果的信号data的各位。
图2串行口通信仿真波形图
串口通信的硬件验证
将程序通过在系统编程入配套的CPLD电路板进行硬件验证,按照以下步骤进行。
(1)确定管脚对应关系:
串行接收管脚rxd与max232的12脚R1OUT对应;串行发送管脚txd与max232的11脚T1IN对应;复位信号reset与按键S1对应。
(2)由QUARTUSII进行管脚分配:
f10MHz在MAXII芯片上对应的管脚号为12;S1在MAXII芯片上对应的管脚号为21;rxd在MAXII芯片上对应的管脚号为89;txd在MAXII芯片上对应的管脚号为90。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赣州师范高等专科学校《房屋建筑学课程实践》2023-2024学年第一学期期末试卷
- 赣南医学院《语音信息处理》2023-2024学年第一学期期末试卷
- 赣南科技学院《中小学体能训练与评价》2023-2024学年第一学期期末试卷
- 《疟疾防治措施》课件
- 一次函数练习课课件
- 七年级语文上册第三单元11论语十二章教案新人教版
- 三年级数学上册4万以内的加法和减法二1加法练习课第1-2课时教学设计新人教版
- 三年级数学上册教材梳理统计与可能性新人教版
- 三年级科学下册第四单元磁铁第5课磁力大小会变化吗教学材料教科版
- 《如何制作专业化》课件
- 司法鉴定业务管理制度
- 2023乙型肝炎病毒标志物临床应用专家共识(完整版)
- 23J916-1:住宅排气道(一)
- 储能项目用户侧投资测算表
- 【解析】教科版(广州)2023-2023学年小学英语五年级上册分类专项复习卷:阅读
- 月日上午王一凡把问题当做教育的资源 优秀奖
- 脊柱四肢及肛门直肠检查
- 高中政治期末综合检测部编版选修1
- 铸造基础知识及常见铸造缺陷简介课件
- 历史(中职)PPT全套教学课件
- 药物分离技术教材吴昊课后参考答案
评论
0/150
提交评论