串行数据收发器课程设计(EDA)

合集下载

eda通信课程设计

eda通信课程设计

eda通信课程设计一、教学目标通过本章节的学习,学生将掌握EDA(电子设计自动化)通信课程的基本知识和技能,理解通信系统的原理和流程,能够运用EDA工具进行通信系统的仿真和优化。

具体目标如下:1.知识目标:学生能够理解通信系统的基本概念,掌握信号传输、调制解调、信道编码等基本知识。

2.技能目标:学生能够熟练使用EDA工具,如ModelSim、Vivado等,进行通信系统的仿真和实现。

3.情感态度价值观目标:学生能够认识到EDA技术在现代通信系统中的重要性,培养对通信技术的兴趣和热情。

二、教学内容本章节的教学内容主要包括以下几个部分:1.通信系统概述:介绍通信系统的基本概念、组成和分类。

2.信号传输与调制:讲解信号的传输过程,介绍调制解调的基本原理和分类。

3.信道编码与解码:讲解信道编码的目的、方法和常用编码方案。

4.EDA工具使用:介绍ModelSim、Vivado等EDA工具的使用方法,进行通信系统的仿真和实现。

三、教学方法为了提高学生的学习兴趣和主动性,本章节将采用多种教学方法:1.讲授法:讲解通信系统的基本概念、原理和方法。

2.案例分析法:通过分析实际案例,使学生更好地理解通信系统的应用。

3.实验法:引导学生使用EDA工具进行通信系统的仿真和实现,提高学生的实践能力。

4.讨论法:学生进行小组讨论,促进学生之间的交流与合作。

四、教学资源为了支持教学内容和教学方法的实施,本章节将准备以下教学资源:1.教材:《EDA通信课程教材》2.参考书:《通信原理》、《数字信号处理》等3.多媒体资料:教学PPT、视频教程等4.实验设备:计算机、示波器、信号发生器等以上教学资源将有助于丰富学生的学习体验,提高教学效果。

五、教学评估为了全面、客观地评估学生的学习成果,本章节将采用以下评估方式:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。

2.作业:布置相关的编程练习和通信系统设计任务,评估学生的理解和应用能力。

实验报告_串口收发器设计

实验报告_串口收发器设计

数字逻辑与处理器基础实验串口收发器设计实验报告姓名:学号:2012011250班级:无21组号:S2目录实验十:串口收发器设计 (3)一、实验目的 (3)二、实验内容 (3)(一) 设计方案 (3)1. 串口基本原理 (3)2. 实验设计原理 (3)3. 模块介绍 (4)(二) 关键代码 (4)(三) 仿真波形 (8)(四) 综合结果 (8)1. 综合电路图 (8)2. 综合情况 (9)3. 硬件调试情况 (11)三、实验总结 (11)实验十:串口收发器设计一、实验目的了解和掌握UART的工作原理二、实验内容(一)设计方案1.串口基本原理图1串口时序示意图图1表明在异步传送中串行发送一个数据字节的位定时关系(图中没有包括奇偶校验位)。

发送一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是8个数据位,然后是1个、1+1/2个或2个停止位逻辑“1”位,数据线空闲时呈现为高或“1”状态。

在字符的8位数据部分,先发送数据的最低位,最后发送最高位。

每位持续的时间是固定的,由发送器本地时钟控制,每秒发送的数据位个数,即为“波特率”。

起始位和停止位起着很重要的作用。

显然,他们标志每个字符的开始和结束,但更重要的是他们使接收器能把局部时钟与每个新开始接收的字符再同步。

异步通信没有可参照的时钟信号,发送器随时都可能发送数据,需要从任何边沿的出现时刻开始正确地采样紧接着的 10~11位(包括开始位、数据位和停止位)。

接收器的时钟与发送器的时钟不是同一个,因此,接收器采样点的间隔跟由发送器时钟所确定的位间隔时间不同,接收器设计不好会导致采样错误。

2.实验设计原理协议提取接收到的数据并发送给控制器。

每当串口接收器收到一个完整的数据,在RX_STATUS 上输出一个高电平指示脉冲,并同时在RX_DATA 上输出接收到的有效数据,RX_DATA 上的接收数据一致有效到下一个RX_STATUS 脉冲位置。

由于串行数据帧与接收时钟是异步的,所以接收器功能实现中的关键是接收器时钟与每个接收字符的同步。

eda课程设计5篇[修改版]

eda课程设计5篇[修改版]

第一篇:eda课程设计数字钟一、设计要求设计一个数字钟,具体要求如下:1、具有时、分、秒计数显示功能,以24小时循环计时。

2、具有清零、校时、校分功能。

3、具有整点蜂鸣器报时以及LED花样显示功能。

二、设计方案根据设计要求,数字钟的结构如图8-3所示,包括:时hour、分minute、秒second计数模块,显示控制模块sel_clock,七段译码模块deled,报时模块alert。

三、VHDL程序library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; useIEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;--use UNISIM.VComponents.all;entityddz is port(rst,clk: in std_logic; hour_h: out std_logic_vector( 6 downto 0); hour_l: outstd_logic_vector( 6 downto 0); min_h: out std_logic_vector( 6 downto 0);min_l: out std_logic_vector( 6 downto 0);sec_h: out std_logic_vector( 6 downto 0);sec_l: out std_logic_vector( 6 downto 0)); endddz;architecture Behavioral of ddz is signalcnt: std_logic_vector(15 downto 0); signalsec_h_in: std_logic_vector( 3 downto 0); signalsec_l_in: std_logic_vector( 3 downto 0); signalmin_h_in: std_logic_vector( 3 downto 0); signalmin_l_in: std_logic_vector( 3 downto 0); signalhour_h_in: std_logic_vector(3 downto 0); signalhour_l_in: std_logic_vector(3 downto 0);signalclk_s,clk_m,clk_h: std_logic; begin process(rst,clk) begin if rst='0' then sec_h_in'0');sec_l_in'0');clk_msec_l_inifsec_h_in=5 thensec_h_inclk_melsesec_h_inclk_mend if; else sec_l_inclk_mend if; end if; end process;process(rst,clk_m) begin if rst='0' then-- min_h_in'0');min_l_in'0'); -- clk_hmin_l_inmin_h_inclk_mend if; else min_l_inend if; end if; end process;process(rst,clk_n) begin if rst='0' then-- hour_h_in'0');hour_l_in'0'); -- clk_hhour_l_inhour_h_inclk_nend if; else hour_l_inend if; end if; end process;process(sec_l_in) begin casesec_l_in iswhen "0000" =>sec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lprocess(sec_h_in) begin casesec_h_in iswhen "0000" =>sec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hprocess(min_l_in) begin casemin_l_in iswhen "0000" =>min_lmin_lmin_lwhen "0011" =>min_lmin_lmin_lmin_lmin_lmin_lmin_lmin_lprocess(min_h_in) begin casemin_h_in iswhen "0000" =>min_hmin _h min _hmin _hmin _h min _hmin _hmin _hmin _hmin _hmin _hend case; end process;process(hour_l_in) begin casehour_l_in iswhen "0000" =>hour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lprocess(hour_h_in) begin casehour_h_in iswhen "0000" =>hour_hhour_hhour_hhour_h hour _h hour _h hour _h hour _h hour _hhour_h hour _h四、VHDL仿真结果五、课程设计心得通过这次课程设计,有效得巩固了课本所学的知识,而且通过上机仿真不断发现问题并及时改正,加深了我们对该课程设计的印象。

EDA课设序列信号发生器设计

EDA课设序列信号发生器设计

绪论本次课程设计通过利用quartusII软件实现序列发生器。

从而对EDA进一步的熟悉,了解,和掌握。

通过本课程的学习,可以了解硬件描述语言编程方法 ,掌握VHDL编程方法,掌握序列发生器的形成。

EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。

典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。

综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。

综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。

也就是说,综合器是软件描述与硬件实现的一座桥梁。

综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD 相映射的网表文件。

适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。

适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。

硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。

HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。

设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。

串行通信系统课程设计

串行通信系统课程设计

串行通信系统课程设计一、课程目标知识目标:1. 让学生理解串行通信系统的基本原理,掌握其与并行通信的区别;2. 学会使用相关编程语言实现串行通信,了解串行通信接口和协议;3. 掌握串行通信系统的数据传输速率、误码率等性能指标的计算方法。

技能目标:1. 培养学生运用所学知识解决实际问题的能力,能够独立设计简单的串行通信系统;2. 提高学生的编程实践能力,熟练使用相关开发工具进行串行通信程序设计;3. 培养学生的团队协作和沟通能力,能够就串行通信系统设计方案进行讨论和改进。

情感态度价值观目标:1. 培养学生对通信技术发展的关注,激发学习兴趣,提高学习积极性;2. 培养学生的创新意识,鼓励学生尝试不同的设计方案,勇于克服困难;3. 增强学生的环保意识,认识到通信技术在环境保护中的重要作用。

课程性质:本课程为电子信息类学科的专业课程,旨在让学生掌握串行通信系统的基本原理和实际应用。

学生特点:学生已具备一定的电子技术和编程基础,对通信技术有一定的了解,但实践经验不足。

教学要求:结合学生特点和课程性质,采用理论教学与实践教学相结合的方式,注重培养学生的实际操作能力和团队协作能力。

通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程和实际工作打下坚实基础。

二、教学内容1. 串行通信系统基本原理:介绍串行通信与并行通信的区别,分析串行通信的优缺点,探讨串行通信在现实生活中的应用。

- 教材章节:第一章 串行通信概述- 内容:串行通信原理、串行通信接口、串行通信协议。

2. 串行通信编程实践:讲解使用C语言、Python等编程语言实现串行通信的方法,分析串行通信接口的编程接口和函数库。

- 教材章节:第二章 串行通信编程- 内容:编程环境搭建、串行通信接口编程、数据发送与接收、常见问题及解决方法。

3. 串行通信系统性能分析:介绍串行通信系统的数据传输速率、误码率等性能指标,分析影响性能的因素。

- 教材章节:第三章 串行通信性能分析- 内容:数据传输速率、误码率、性能优化方法。

基于EDA技术的通用异步收发器设计

基于EDA技术的通用异步收发器设计

基于EDA技术的通用异步收发器设计作者:张雪来源:《中国新通信》2016年第22期【摘要】 EDA技术属于现代电子设计技术的核心内容,随着时代的发展在通信领域、电子信息领域均逐渐得到了广泛的应用。

另外,信息网络技术时电子信息技术的重要组成部门,掌握信息网络技术的情况下能够获得更加完整的数据、计算机通信概念,便于更好的从事计算机通信、数据通信工作。

本文在将EDA技术作为基础技术的情况下,重点分析了通用亦不收发器中多个层面的设计,希望能够更好的应用EDA技术。

【关键词】 EDA技术通用异步收发器数据通信前言:在数据通信系统当中,经常采用串行通信以促使信息数据交换。

异步串行通信具有比较高的可靠性,且传输线比较少,能够进行远距离的传输,当前已经能够在计算机以及外设的数据交换方面得到广泛应用。

其进行数据传输时一般均需要利用通用异步收发器。

与此同时,恰当的利用EDA技术优势对串行通信接口进行设计,能够便于人们更加直观的了解到数据链路层的工作原理,亦能够更加恰当的将其应用到实际当中。

一、EDA技术与通用异步收发器概述EDA技术即是指电子设计自动化技术,属于将计算机技术恰当应用于电子设计过程的新技术和,已经能够在电子电路设计与方针、集成电路板图设计、可编程器件的编程以及印刷电路板设计等领域得到广泛应用。

通用异步收发器简称UART,是一种通用串行数据总线,能够进行双向通信并实现全双工传输和接收。

当前,在嵌入式设计当中,通用异步收发器主要用于与计算机进行通信。

通用异步收发器在工作当中基本上分为发生和接收两个过程,并且会涉及到奇偶校验位发生器、波特率发生器、顶层模块等模块。

二、基于EDA技术的通用异步收发器的具体设计2.1奇偶校验位发生器设计基于EDA技术的通用异步收发器奇偶校验位发生器设计,必须要能够满足以下几个方面的功能:首先,所设计的奇偶校验位发生器,要能够根据奇偶校验规则,即奇校验为ODD,偶校验为EVEN,进行恰当选定后输入相应的串行二进制数据,将校验位进行准确的计算,并且与输入的串行数据校验位进行比较,由此判断数据的正确或者错误。

c串行通信课程设计

c串行通信课程设计

c 串行通信课程设计一、课程目标知识目标:1. 学生能理解串行通信的基本概念,掌握其工作原理和通信协议;2. 学生能掌握串行通信接口的硬件连接和编程方法;3. 学生能了解串行通信在现实生活中的应用场景。

技能目标:1. 学生能够使用编程软件进行串行通信编程,实现数据的发送和接收;2. 学生能够通过实验,学会使用串行通信模块与其他设备进行数据交换;3. 学生能够分析并解决串行通信过程中出现的问题。

情感态度价值观目标:1. 学生通过学习串行通信,培养对通信技术的兴趣和好奇心,增强学习动力;2. 学生在实验过程中,培养团队协作能力和解决问题的耐心;3. 学生能够认识到串行通信技术在现实生活中的重要作用,增强对科技进步的认识。

课程性质:本课程为电子信息类学科的专业课程,旨在帮助学生掌握串行通信技术的基本原理和实际应用。

学生特点:学生处于高年级阶段,已具备一定的电子技术和编程基础,具备独立思考和解决问题的能力。

教学要求:结合课程性质和学生特点,注重理论与实践相结合,提高学生的实际操作能力和创新能力。

在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 串行通信基本概念:介绍串行通信的定义、特点及其与并行通信的对比。

教材章节:第一章 串行通信概述2. 串行通信工作原理:讲解串行通信的信号线、波特率、停止位、校验位等关键参数及其作用。

教材章节:第二章 串行通信原理3. 串行通信协议:学习常见的串行通信协议,如RS-232、RS-485、I2C、SPI 等。

教材章节:第三章 串行通信协议4. 串行通信接口硬件连接:介绍串行通信接口的硬件设计,包括电路原理、器件选型等。

教材章节:第四章 串行通信接口设计5. 串行通信编程方法:学习基于C语言的串行通信编程,包括API函数的使用、数据发送接收等。

教材章节:第五章 串行通信编程6. 串行通信应用案例分析:分析实际应用中的串行通信案例,了解其设计思路和实现方法。

uart课程设计报告eda

uart课程设计报告eda

uart课程设计报告eda一、教学目标本课程的教学目标是使学生掌握UART(通用异步收发传输器)的基本原理、工作方式和应用方法。

通过本课程的学习,学生将能够:1.理解UART的通信原理和协议;2.掌握UART的硬件设计和软件编程方法;3.能够运用UART实现简单的数据通信;4.培养学生的动手实践能力和团队协作精神。

二、教学内容本课程的教学内容主要包括以下几个部分:1.UART的基本原理:介绍UART的通信协议、工作方式和工作原理;2.UART的硬件设计:讲解UART的电路组成、接口信号和硬件设计方法;3.UART的软件编程:介绍UART的驱动程序编写、数据传输控制和错误处理;4.UART的应用案例:分析UART在实际应用中的典型案例,如串口通信、蓝牙模块等。

三、教学方法为了达到本课程的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解UART的基本原理、硬件设计和软件编程方法,使学生掌握UART的相关知识;2.案例分析法:分析UART在实际应用中的典型案例,帮助学生理解UART的应用场景;3.实验法:安排实验环节,让学生动手实践,加深对UART的理解和应用能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料;2.多媒体资料:制作PPT、视频等多媒体资料,丰富学生的学习体验;3.实验设备:准备UART开发板、调试工具等实验设备,为学生提供动手实践的机会。

通过以上教学目标和教学资源的选择与准备,相信能够帮助学生更好地掌握UART的知识和技能,提高他们的实践能力。

五、教学评估本课程的教学评估将采用多元化的评价方式,全面客观地评估学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:布置相应的作业,评估学生的理解和应用能力;3.实验报告:评估学生在实验过程中的操作技能和问题解决能力;4.考试:期末进行闭卷考试,评估学生对课程知识的掌握程度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号********天津城建大学EDA技术及应用设计说明书题目串行数据收发器设计起止日期:2014年12 月22日至2014年12 月26日学生姓名杨棋焱班级11电信2班成绩指导教师(签字)计算机与信息工程学院天津城建大学课程设计任务书2012 —2013 学年第1 学期电子与信息工程系电子信息工程专业课程设计名称:EDA技术及应用设计题目:串行数据收发器设计完成期限:自2014 年12月22 日至2014 年12 月26 日共 1 周一.课程设计依据在掌握常用数字电路原理和技术的基础上,利用EDA技术和硬件描述语言,EDA开发软件(Quartus Ⅱ)和硬件开发平台(达盛试验箱CycloneⅡFPGA)进行初步数字系统设计。

二.课程设计内容采用状态机结构设计简易全双工串行数据收发器,串行数据收发速率为9600bit/s,数据帧为RS232标准:1个起始位,8位数据,1位校验位,1.5位停止位。

要求把数据发送、接收结果分别在2对数码管上以16进制显示出来。

要求采用状态机或计数器设计,具有奇偶校验功能,接受错误时显示- - - -,并编写串行数据测试程序进行仿真。

扩展设计:采用16倍超采样频率方法,实现串行数据接收和发送。

三.课程设计要求1. 要求独立完成设计任务。

2. 课程设计说明书封面格式要求见《天津城建大学课程设计教学工作规范》附表13. 课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。

4. 测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。

5. 课设说明书要求:1) 说明题目的设计原理和思路、采用方法及设计流程。

2) 对各子模块的功能以及各子模块之间的关系作明确的描述。

3) 对实验和调试过程,仿真结果和时序图进行说明和分析。

4) 包含系统框图、电路原理图、HDL设计程序、仿真测试图。

指导教师(签字):教研室主任(签字):批准日期:2014 年12 月18 日目录第一章设计方案 (1)1.1 设计原理 (1)1.1.1 UART介绍 (1)第二章设计内容 (2)2.1模块组成 (2)2.2模块设计 (2)2.2.1 顶层模块 (3)2.2.2 波特率发生器 (3)2.2.3 UART接收器 (3)2.2.4 UART发送器 (4)第三章实验仿真及调试 (6)3.1创建工程文件 (6)3.2子模块电路设计 (6)3.2.1波特率发生器 (6)3.2.2 UART接收器 (15)3.2.3 其它功能模块 (17)3.2.4顶层文件设计 (19)3.2.5器件管脚分配 (20)3.2.6硬件下载及调试 (21)第四章总结 (21)第一章设计方案1.1 设计原理由任务书要求可知道全双工串行数据收发器由FPGA UART系统组成:波特率发生器;接收模块;发送模块,本次实验通过通用异步收发器实现简易全双工串行数据收发器的设计。

图1 设计总体框图1.1.1 UART介绍UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。

常常用于短距离、低速、低成本的通讯中。

8250、8251、NS16450等芯片都是常见的UART器件。

基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。

TXD是UART发送端,为输出;RXD是UART接收端,为输入。

1.UART的基本特点是:(1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。

在发送器空闲时,数据线应该保持在逻辑高电平状态。

(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。

(3)数据位(Data Bits):起始位之后就是传送数据位。

数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。

(4)校验位(parity Bit):可以认为是一个特殊的数据位。

校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。

在使用中,该位常常取消。

(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。

(6)位时间:即每个位的时间宽度。

起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。

(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。

(8)波特率:UART的传送速率,用于说明数据传送的快慢。

在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。

如波特率9600=9600bps(位/秒)。

2.UART的数据帧格式为:表1UART的数据帧格式表第二章设计内容2.1模块组成FPGA UART系统组成:如下图所示,FPGA UART由三个子模块组成:波特率发生器;接收模块;发送模块。

2.2模块设计系统由四部部分组成:顶层模块;波特率发生器;UART接收器; UART发送器2.2.1 顶层模块异步收发器的顶层模块由波特率发生器、UART接收器和UART发送器构成。

UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。

UART接收器接收RXD串行信号,并将其转化为并行数据。

波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。

2.2.2 波特率发生器波特率发生器实际上就是一个分频器。

可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数。

波特率分频因子可以根据不同的应用需要更改。

2.2.3 UART接收器1. 由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。

然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。

由于内部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。

如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。

UART接收器的接收状态机:图2UART接收器的接收状态机接收状态机一共有5个状态: R_START(等待起始位);R_CENTER(求中点);R_WAIT(等待采样);R_SAMPLE(采样);R_STOP(停止位接收)。

(1) R_START状态当UART接收器复位后,接收状态机将处于这一个状态。

在此状态,状态机一直在等待RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态。

状态图中的RXD_SYNC信号是RXD的同步信号,因为在进行逻辑1或逻辑0判断时,不希望检测的信号是不稳定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYNC信号。

(2)R_CENTER状态对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差较小,显然在每位的中点检测是最为理想的。

在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。

另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。

这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的信号一定是起始位。

(3)R_WAIT状态当状态机处于这一状态,等待计满15个bclk,在第16个bclk是进入R_SAMPLE状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧的长度(FRAMELEN),如果到来,就说明停止位来临了。

FRAMELEN在设计时是可更改的(使用了Generic),在本设计中默认为8,即对应的UART工作在8位数据位、无校验位格式。

(4)R_SAMPLE状态即数据位采样检测,完成后无条件状态机转入R_WAIT状态,等待下次数据位的到来。

(5)R_STOP状态无论停止位是1还是1.5位,或是2位,状态机在R_STOP不具体检测RXD,只是输出帧接收完毕信号(REC_DONE<=‘1’),停止位后状态机转回到R_START状态,等待下一个帧的起始位。

2.2.4 UART发送器1. 发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,最后一位是停止位。

在本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式。

2.发送状态机图3发送状态机的状态图发送状态机一共有5个状态:X_IDLE(空闲);X_START(起始位);X_WAIT(移位等待);X_SHIFT(移位);X_STOP(停止位)。

(1)X_IDLE状态:当UART被复位信号复位后,状态机将立刻进入这一状态。

在这个状态下,UART的发送器一直在等待一个数据帧发送命令XMIT_CMD。

XMIT_CMD_P信号是对XMIT_CMD的处理,XMIT_CMD_P是一个短脉冲信号。

这时由于XMIT_CMD 是一个外加信号,在FPGA之外,不可能对XMIT_CMD的脉冲宽度进行限制,如果XMIT_CMD有效在UART发完一个数据帧后仍然有效,那么就会错误地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。

在此对XMIT_CMD进行了脉冲宽度的限定,XMIT_CMD_P就是一个处理后的信号。

当XMIT_CMD_P=‘1’,状态机转入X_START,准备发送起始位。

(2)X_START状态:在这个状态下,UART的发送器一个位时间宽度的逻辑0信号至TXD,即起始位。

紧接着状态机转入X_WAIT状态。

XCNT16是bclk的计数器(3)X_WAIT状态同UART接收状态机中的R_WAIT状态类似。

(4)X_SHIFT状态当状态机处于这一状态时,实现待发数据的并串转换。

转换完成立即回到X_WAIT状态。

(5)X_STOP停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发送16个bclk周期的逻辑1信号,即1位停止位。

状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。

相关文档
最新文档