




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工业大学电子与信息工程学院 FPGA设计与应用 实验报告FPGA设计与应用串口通信实验报告班级: 1105102班姓名: 学号: 1110510216日期: 2014年 10月17 日实验性质:验证性 实验类型:必做开课单位:电信院 学时:2学时一、实验目的1、了解串口通信的基本原理;2、掌握锁相环的基本原理和使用方法;3、掌握起始位和停止位的含义及实现方法;4、掌握VHDL状态机的基本使用方法;5、掌握基本的接口设计和调试技巧;二、实验准备2.1 串口通信原理(1分)答:串口通信指口按位发送和接收字节。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。波特率表示每秒传输的位数,接受发送双方必须匹配。不发送数据时,连线上为高电平。发送数据时,要首先发送一个起始位,为低电平,然后按照协议发送需要的数据,八位或者九位(带有校验位),然后发送一个停止位,为高电平。接收时,要首先确定起始位,然后按照协议接受八位或者九位数据。接受完成后继续判断起始位,开始下一个接受周期。2.2 锁相环的基本原理(1分)答 锁相环的框图如上所示,主要包括:相器、环路滤波器、压控振荡器、分频器构成。鉴相器用来鉴别输入信号与输出信号之间的相位差,并输出误差电压Ud。Ud 中的噪声和干扰成分被低通性质的环路滤波器滤除,形成压控振荡器的控制电压Uc。Uc作用于压控振荡器的结果是把它的输出振荡频率拉向环路输入信号频率,当二者相等时,环路被锁定,称为入锁。维持锁定的直流控制电压由鉴相器提供,因此鉴相器的两个输入信号间留有一定的相位差。三、代码及测试3.1程序及分析(2分)/*串口发送源程序*/LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZXK_SC IS PORT( ZXK_CLK : IN STD_LOGIC; ZXK_OUT : OUT STD_LOGIC; ZXK_DATAIN : IN STD_LOGIC_VECTOR (3 DOWNTO 0);END ZXK_SC;ARCHITECTURE BEHAVIORAL OF ZXK_SC ISTYPE ZXK_STATE_TYPE IS (ZXK_STATE_IDLE,ZXK_STATE_START,ZXK_STATE_WAIT,ZXK_STATE_STOP);SIGNAL ZXK_BAUD:STD_LOGIC;SIGNAL ZXK_BAUDCNT: STD_LOGIC_VECTOR (9 DOWNTO 0);SIGNAL ZXK_STATE:ZXK_STATE_TYPE:=ZXK_STATE_IDLE;SIGNAL ZXK_DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ZXK_STOPCNT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINP1:PROCESS(ZXK_CLK) BEGIN IF ZXK_CLKEVENT AND ZXK_CLK=1 THEN IF ZXK_BAUDCNT216 THENZXK_BAUDCNT=ZXK_BAUDCNT+1;ZXK_BAUD=0;ELSIF ZXK_BAUDCNT433 THENZXK_BAUDCNT=ZXK_BAUDCNT+1;ZXK_BAUD=1;ELSE ZXK_BAUDCNT0);ZXK_BAUDZXK_OUT=1;ZXK_DATA (7 DOWNTO 4)=0001;ZXK_DATA (3 DOWNTO 0)=ZXK_DATAIN;ZXK_STATEZXK_OUT=0;ZXK_NUM:=0;ZXK_STATEZXK_OUT=ZXK_DATA(ZXK_NUM);IF ZXK_NUM7 THENZXK_NUM:=ZXK_NUM+1; ZXK_STATE=ZXK_STATE_WAIT;ELSEZXK_STOPCNT=X00;ZXK_STATEZXK_OUT=XAA THENZXK_STOPCNT=X00;ZXK_STATE=ZXK_STATE_IDLE;ELSEZXK_STOPCNT=ZXK_STOPCNT+1;ZXK_STATEZXK_STATE=ZXK_STATE_IDLE;END CASE;END IF;END PROCESS;END BEHAVIORAL;/*串口接收源程序*/LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZXK_RECEIVE ISPORT( ZXK_CLK : IN STD_LOGIC; ZXK_RXD : IN STD_LOGIC; ZXK_SEGW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); ZXK_SEGD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END ZXK_RECEIVE;ARCHITECTURE ZXK OF ZXK_RECEIVE ISSIGNAL ZXK_RCVDATA :STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL ZXK_BAUD8 : STD_LOGIC;SIGNAL ZXK_OUT : STD_LOGIC;SIGNAL ZXK_TEMP: STD_LOGIC:=0;SIGNAL ZXK_EN : STD_LOGIC;SIGNAL ZXK_COUNT1:STD_LOGIC;SIGNAL ZXK_COUNT2:STD_LOGIC;SIGNAL ZXK_NUM:STD_LOGIC_VECTOR (2 DOWNTO 0); SIGNAL ZXK_STOPCNT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ZXK_BAUD8CNT: STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL ZXK_SEGDATA: STD_LOGIC_VECTOR (8 DOWNTO 0);SIGNAL ZXK_CNTHEX : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL ZXK_TAP :STD_LOGIC:=0;SIGNAL ZXK_CQI : STD_LOGIC_VECTOR (25 DOWNTO 0);TYPE ZXK_RCVTYPE IS(ZXK_IDLE,ZXK_START,ZXK_STOP);SIGNAL ZXK_RCVSTATE : ZXK_RCVTYPE:=ZXK_IDLE;BEGINU1:PROCESS(ZXK_CLK) BEGIN IF ZXK_CLKEVENT AND ZXK_CLK=1 THEN IF ZXK_BAUD8CNT54 THENZXK_BAUD8CNT=ZXK_BAUD8CNT+1;ZXK_BAUD8=0;ELSIF ZXK_BAUD8CNT108 THENZXK_BAUD8CNT=ZXK_BAUD8CNT+1;ZXK_BAUD8=1;ELSE ZXK_BAUD8CNT0);ZXK_BAUD8=0;END IF; IF ZXK_CQI 6944444 THEN ZXK_CQI = ZXK_CQI + 1; ELSIF ZXK_CQI 27777778 THEN ZXK_CQI = ZXK_CQI + 1; ELSE ZXK_CQI 0); END IF;CASE ZXK_CNTHEX IS WHEN 0000=ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)ZXK_SEGD(6 DOWNTO 0)NULL; END CASE;END IF;END PROCESS;U2:PROCESS(ZXK_NUM)BEGIN IF ZXK_NUM=111 THEN ZXK_EN=1; ELSE ZXK_EN=0; END IF;END PROCESS;U3:PROCESS(ZXK_BAUD8) VARIABLE ZXK_NUM1:INTEGER RANGE 8 DOWNTO 0;BEGIN IF ZXK_BAUD8EVENT AND ZXK_BAUD8=1 THEN IF(ZXK_TEMP=1) THEN ZXK_NUM=ZXK_NUM+1; END IF; ZXK_COUNT1=ZXK_RXD; ZXK_COUNT2 ZXK_OUT=1; ZXK_TAP=0; IF (NOT ZXK_COUNT1 AND ZXK_COUNT2) =1 THEN ZXK_NUM = 000; ZXK_NUM1:=0; ZXK_TEMP=1; ZXK_OUT=ZXK_COUNT1; ZXK_RCVSTATE=ZXK_START; ELSE ZXK_RCVSTATE IF ZXK_EN=1 THEN IF ZXK_NUM18 THEN ZXK_SEGDATA(ZXK_NUM1)=ZXK_RXD; ZXK_NUM1:=ZXK_NUM1+1; ZXK_OUT=ZXK_RXD; ZXK_RCVSTATE=ZXK_START; END IF; IF ZXK_NUM1=8 THEN IF ZXK_RXD=1 THEN ZXK_OUT=ZXK_RXD; ZXK_RCVSTATE=ZXK_STOP; ZXK_TAP=1; ZXK_TEMP=0; ELSE ZXK_NUM = 000; ZXK_TEMP=0; ZXK_NUM1:=0; ZXK_RCVSTATE=ZXK_IDLE; END IF; END IF;ELSE ZXK_RCVSTATE ZXK_OUT=XAA THENZXK_STOPCNT=X00;ZXK_RCVSTATE=ZXK_IDLE;ELSEZXK_STOPCNT=ZXK_STOPCNT+1;ZXK_RCVSTATEZXK_RCVSTATEZXK_SEGW=0001; ZXK_CNTHEXZXK_SEGW=0010; ZXK_CNTHEXZXK_SEGW=0100; ZXK_CNTHEXZXK_SEGW=1000; ZXK_CNTHEX=0000; END CASE; END IF;END IF;END PROCESS;END ARCHITECTURE ZXK;分析:利用八倍波特率的信号ZXK_baud8采样接收信号的下降沿,当有下降沿出现时,进行时隙计数ZXK_num,当时隙满八个了说明扫描完一个波特率周期,接收下一个数,利用ZXK_num1统计接收数据的个数,当接收数据满八个了,判断停止位是否为高位1,如果不是说明接收数据错误,状态机返回空闲状态并清空之前所有数据,如果是高位那么接收成功将数据存入并利用数码管动态显示。3.2 SignalTap II
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年春季福建华南女子职业学院人才招聘15人考前自测高频考点模拟试题及答案详解(全优)
- 2025广西防城港市防城区政务服务监督管理办公室公开招聘1人考前自测高频考点模拟试题及一套参考答案详解
- Brand KPIs for clean beauty Saie in the United States-外文版培训课件(2025.9)
- 2025年甘肃科源电力集团有限公司高校毕业生招聘40人(第三批)模拟试卷及答案详解(历年真题)
- 2025江苏徐州选聘徐州泉山经济开发区投资发展有限公司总经理(四)考前自测高频考点模拟试题及参考答案详解一套
- 2025广西玉林市北流市清湾镇便民服务中心招聘公益性岗位模拟试卷附答案详解(黄金题型)
- 安全培训自评报告课件
- 2025贵州黔西南州教育局公益性岗位招聘4人模拟试卷参考答案详解
- 2025贵州黔东南州锦屏县医疗保障局聘请医疗保障社会义务监督员10人考前自测高频考点模拟试题及答案详解(全优)
- 2025湖南新宁县事业单位和县属国有企业人才引进降低开考比例岗位考前自测高频考点模拟试题及答案详解(全优)
- 肝病科医师晋升副主任医师职称病例分析专题报告(服氟康唑致严重肝损伤诊疗分析)
- 吉林省长春市2025年中考英语真题附真题答案
- 2025年放射学影像学诊断综合考试卷答案及解析
- 2025年宿州首创水务有限责任公司招聘15人笔试模拟试题及答案解析
- 2025浙江湖州市产业投资发展集团下属市飞英融资租赁有限公司招聘笔试历年参考题库附带答案详解
- 软件项目开发团队管理方案
- 教师招聘培训课件
- 招江西省交通投资集团有限责任公司招聘笔试真题2024
- 2025年智能可穿戴设备生物传感技术在高原病治疗监测中的创新应用报告
- dj打碟培训课件
- 医院药师培训课件
评论
0/150
提交评论