下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【Word版本下载可任意编辑】 VHDL设计的串口通信程序 本模块的功能是验证实现和PC机开展基本的串口通信的功能。需要在PC机上安装一个串口调试工具来验证程序的功能。程序实现了一个收发一帧10个bit(即无奇偶校验位)的串口控制器,10个bit是1位起始位,8个数据位,1个结束位。串口的波特律由程序中定义的div_par参数决定,更改该参数可以实现相应的波特率。程序当前设定的div_par 的值是0 x104,对应的波特率是9600。用一个8倍波特率的时钟将发送或承受每一位bit的周期时间划分为8个时隙以使通信同步。 程序的工作过程是:串口处于全双工工作状态,按动key2,CPLD向PC发送
2、皐elcome字符串(串口调试工具设成按ASCII码承受方式);PC可随时向CPLD发送0-F的十六进制数据,CPLD承受后显示在7段数码管上。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY UART IS PORT ( clk : IN std_logic; rst : IN std_logic; rxd : IN std_logic; 串行数据接收端 txd : OUT std_logic; 串行数据发送端 en
3、 : OUT std_logic_vector(7 downto 0); 数码管使能 seg_data : OUT std_logic_vector(7 DOWNTO 0); 数码管数据 key_input : IN std_logic 按键输入 ); END UART; ARCHITECTURE arch OF UART IS /inner reg/ SIGNAL div_reg : std_logic_vector(15 DOWNTO 0);分频计数器,分频值由波特率决定。分频后得到频率8倍波特率的时钟 SIGNAL div8_tras_reg : std_logic_vector(2 D
4、OWNTO 0);该存放器的计数值对应发送时当前位于的时隙数 SIGNAL div8_rec_reg : std_logic_vector(2 DOWNTO 0); 存放器的计数值对应接收时当前位于的时隙数 SIGNAL state_tras : std_logic_vector(3 DOWNTO 0); 发送状态存放器 SIGNAL state_rec : std_logic_vector(3 DOWNTO 0); 承受状态存放器 SIGNAL clkbaud_tras : std_logic; 以波特率为频率的发送使能信号 SIGNAL clkbaud_rec : std_logic; 以
5、波特率为频率的承受使能信号 SIGNAL clkbaud8x : std_logic; 以8倍波特率为频率的时钟,它的作用是将发送或承受一个bit的时钟周期分为8个时隙 SIGNAL recstart : std_logic; 开始发送标志 SIGNAL recstart_tmp : std_logic; 开始承受标志 SIGNAL trasstart : std_logic; SIGNAL rxd_reg1 : std_logic; 接收存放器1 SIGNAL rxd_reg2 : std_logic; 接收存放器2,因为接收数据为异步信号,故用两级缓存 SIGNAL txd_reg : s
6、td_logic; 发送存放器 SIGNAL rxd_buf : std_logic_vector(7 DOWNTO 0);承受数据缓存 SIGNAL txd_buf : std_logic_vector(7 DOWNTO 0);发送数据缓存 SIGNAL send_state : std_logic_vector(2 DOWNTO 0);每次按键给PC发送Welcome字符串,这是发送状态存放器 SIGNAL cnt_delay : std_logic_vector(19 DOWNTO 0);延时去抖计数器 SIGNAL start_delaycnt : std_logic; 开始延时计数标
7、志 SIGNAL key_entry1 : std_logic; 确定有键按下曛? SIGNAL key_entry2 : std_logic; 确定有键按下标志 / C*TANT div_par : std_logic_vector(15 DOWNTO 0) := 0000000100000100; 分频参数,其值由对应的波特率计算而得,按此参数分频的时钟频率是波倍特率的8倍,此处值对应9600的波特率,即分频出的时钟频率是9600*8 SIGNAL txd_xhdl3 : std_logic; BEGIN en 发送起始位 IF (NOT trasstart=1) AND (send_st
8、ate 发送第1位 IF (clkbaud_tras = 1) THEN txd_reg 发送第2位 IF (clkbaud_tras = 1) THEN txd_reg 发送第3位 IF (clkbaud_tras = 1) THEN txd_reg 发送第4位 IF (clkbaud_tras = 1) THEN txd_reg 发送第5位 IF (clkbaud_tras = 1) THEN txd_reg 发送第6位 IF (clkbaud_tras = 1) THEN txd_reg 发送第7位 IF (clkbaud_tras = 1) THEN txd_reg 发送第8位 IF (clkbaud_tras = 1) THEN txd_reg 发送停止位 IF (clkbaud_tras = 1) THEN txd_reg IF (clkbaud_tras = 1) THEN state_tras txd_buf txd_buf txd_buf IF (clkbaud_tras = 1) THEN state_tras = 0001 AND state_rec seg_data seg_data seg_data seg_data seg_data seg_data seg_da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版九年级化学上册单元教案
- 堤防工程维修养护手册
- 家政技能大赛培训大纲
- 《应急救护队伍服务质量管控规范》
- 河道清淤整治工程竣工验收报告
- 生鲜冷链仓储管理制度
- 工业废水治理工程监理规划
- 2025年河北省黄骅市小学二年级下册道德与法治期末考试考试卷含答案详解
- 搅拌机安装技术交底培训课件
- (2026秋新版)教研组校本教研实施方案
- 2025-2026学年成都市成华区八年级下英语期末零诊试题(含答案)
- TCABEE 056-2023《数据中心锂离子电池室设计标准》
- 2026年共青团入团团课学习知识考试题库附答案
- 中国冠心病诊疗指南(2025版)
- 2026年IHC希望杯数学培训100题-5年级+答案
- 2026年一级建造师之一建建筑工程实务题库附参考答案详解(黄金题型)
- 重症医学科工作制度汇编
- 华润万家会员等级运营
- 危险作业安全培训
- X光异物检测机辐射安全及图像识别记录安全台账
- 2026及未来5年中国线雕行业市场行情监测及未来趋势研判报告
评论
0/150
提交评论