下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府办公楼连廊建设协议
- 地铁安全出口盾构机租赁合同
- 装修咨询合同范本
- 城镇市容环境卫生管理规定
- 工业厂区道路改造路面施工合同
- 医疗项目负责人聘用合同书
- 航空航天设备租赁合同协议
- 畜牧兽医院校校长聘用合同
- 电动滑板车租赁合同内容
- 物流仓储聘用合同证明
- 小学体育水平一《走与游戏》教学设计
- 秋日私语(完整精确版)克莱德曼(原版)钢琴双手简谱 钢琴谱
- 办公室室内装修工程技术规范
- 盐酸安全知识培训
- 万盛关于成立医疗设备公司组建方案(参考模板)
- 消防安全巡查记录台帐(共2页)
- 科技特派员工作调研报告
- 中波广播发送系统概述
- 县疾控中心中层干部竞聘上岗实施方案
- 急性心肌梗死精美PPt完整版
- 物业日常巡查记录表.doc
评论
0/150
提交评论