...《CPLD/FPGA》课程设计报告题目:RS-232串口通信设计院(系):信息科学与工程学院专业班级:通信工程11学生姓名:詹文魁学号:指导教师:吴莉老师2014年06月09日至2014年6月20日华中科技大学武昌分校制...RS-232串口通信设计课程设计任务书一、设计(调查报告/论文)题目RS-232串口通信设计二、设计(调查报告/论文)主要内容下述设计内容需由学生个人独立完成:1.理解电路原理图与工作过程;2.掌握RS-232电气特性;3.掌握RS-232通信原理及串口通信数据格式,并编程完成串行数据的发送、接收和显示;4.能正确处理编程与调试过程中所遇到的问题。三、原始资料1.通信与电子系统实验指导书;2.CPLD/FPGA实验箱。四、要求的设计(调查/论文)成果1.程序结构合理,语言简洁,格式规范,注释详细;2.掌握RS-232的工作机制与原理;3.格式为:1位起始位,8位数据位,1位停止位,无奇偶校验位,波特率设定为300Baud。能与计算机正常通信;4.按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。五、进程安排第1天选题,课题讲解;第2-3天课题分析,完成设计方案;第4-6天软件编程;第7-8天软件调试,故障排查;第9天结果验收,评分;第10天撰写课设报告。六、主要参考资料[1]陈曦.通信与电子系统实验指导书,武汉:华中科技大学武昌分校.[2]谭会生.EDA技术及应用,西安:西安电子科技大学出版社,2010.[3]潘松,黄继业.EDA技术与VHDL,北京:清华大学出版社,2009.指导教师(签名):20年月日...目录1.课程设计的目的………………………………………………………………………42.课程设计题目描述和要求……………………………………………………………43.课程设计报告内容……………………………………………………………………43.1课题设计方案及基本原理……………………………………………………………43.2软件设计………………………………………………………………………………73.3问题……………………………………………………………………………………144.总结………………………………………………………………………………………155.参考资料…………………………………………………………………………………16附录程序清单……………………………………………………………………………17...1.课程设计的目的:(1)学习RS-232串口通信数据结构,并编程完成串行数据的接收和显示。(2)掌握RS-232的工作机制与原理。(3)熟练掌握Quartus2软件的使用。(4)了解CPLD/FPGA实验箱。2.课程设计题目描述和要求:(1)课程设计题目:基于FPGA的串口通信程序设计。(2)课程设计要求:下述设计内容需由学生个人独立完成:1.理解电路原理图与工作过程;2.掌握RS-232电气特性;3.掌握RS-232通信原理及串口通信数据格式,并编程完成串行数据的接收和显示;4.能正确处理编程与调试过程中所遇到的问题;5.在FPGA中构造一个异步串行通信控制模块,完成PC机发送的接收,并设计显示模块,完成接收数据的显示(3)要求的设计成果:1.程序结构合理,语言简洁,格式规范,注释详细;2.掌握RS-232的工作机制与原理;3.格式为:1位起始位,8位数据位,1位停止位,无奇偶校验位,波特率设定为300Baud。能与计算机正常通信;4.按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。3.课程设计报告内容:3.1课程设计方案及基本原理:设计方案:利用实验箱上的MAX232芯片控制通过适当分频(分频的目的是为了达到要求的波特率,控制数据传输速率)的串行输入信号,并将其转换为并行信号并通过实验箱上的数码管的后两位显示从计算机中传输出来的16进制数。例如在计算机端输入(FF)则会在试验箱上看到(000000FF)的显示图示。基本原理:RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。EIA-RS-232C中+3V~+15V之间的电平为‘0’,-3V~-15V的电平为‘1’;与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL←→EIA双向电平转换。...1.串口通信:(1)什么是串口通信:串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串行接口(Serialport)又称“串口”,主要用于串行式逐位数据传输。常见的有一般电脑应用的RS-232(使用25针或9针连接器)和工业电脑应用的半双RS-485与全双工RS-422。(2)串口接口规格:串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。(3)串口通信原理:串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。2.RS232芯片(1)电气特性:EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。在TxD和RxD上:逻辑1(MARK)=-3V~-15V逻辑0(SPACE)=+3~+15V在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V信号无效(断开,OFF状态,负电压)=-3V~-15(2)RS232接口定义:...(3)RS232总线电平转换:(4)RS232数据传输格式:串行通信中,线路空闲时,线路的TTL电平总是高,经反向RS232的电平总是低。一个数据的开始RS232线路为高电平,结束时RS232为低电平。数据总是从低位向高位一位一位的传输。示波器读数时,左边是数据的低位。例如,对于16进制数据55H和aaH,当采用8位数据位、1位停位传输时位停止位传输时:55H=01010101B,高低位倒序后为10101010B,加入一个起始位0,一个停止位1,55H的数据格式为0101010101。aaH=10101010B,高低位倒序后为01010101B,加入一个起始位0,一个停止位1,aaH的数据格式为:0010101011(5)RS232通信过程:I:开始通信时,信号线为空闲(逻辑),当检测到由到的跳变时,开始对“接收时钟”计数。II:当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。III:接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1,作为数据位1;若为逻辑0,作为数据位0。IV:再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。V:检测校验位P(如果有的话)。VI:接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑说明出现了错误在状态寄存器中置“帧错误”标志若没若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。VII:本幀信息全部接收完把线路上出现的高电平作为空闲位。VIII:当信号再次变为低时,开始进入下一帧的检测。...3.2软件设计(1)Quartus顶层设计如上图所示,整个顶层设计可以分为4个部分,(1)锁相环;作用是将输入的系统时钟信号(系统时钟50MHZ)转换为12MHZ的sysclk时钟,在进入RS232前先进行第一次分频弥补RS232自身分频不足的特点。(2)核心模块RS232;作用是将计算机输入的串行数据转换为并行数据便于给后方的显示模块处理。(3)分频模块;作用是给显示模块提供所需的时钟,由于显示模块的本质是一个个显示,所以为了能同时显示故将输入频率调至1KHz以上让人眼无法一个个识别形成同时显示的效果。(4)显示模块;作用是将输入的并行信号(8位)分成4位一组,即两组进行处理后在试验箱的数码管上显示。(1-1)模块一分析:从上图可以看出:1.inclk=50MHz2.DC=50%3.Ratio=12/25,从而可以得出outclk=50MHz*12/25=24MHz,再通过D触发器2分频后得到12MHz的输出系统时钟来弥补RS232模块分频不足的缺点。(1-2)模块二分析:...上图所示的为RS232集成模块,经VHDL编译生成的模块文件。输入为sysclk=12MHz,rxd=计算机输入的串行数据串,disp为8位的并行数据段。程序1:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityrs232isport(sysclk:instd_logic;rxd:instd_logic;disp:outstd_logic_vector(7downto0));endrs232;分析:定义实体。输入信号,输入时钟信号为逻辑信号,输出信号disp为8位矢量信号,低位为0高位为7。architecturebehvofrs232issignalb:std_logic_vector(9downto0);signalr:std_logic_vector(3downto0);signalj:std_logic_vector(15downto0);signalfrxd,gt,gtclr,cclk,gate:std_logic;begingate=gtandcclk;disp(7downto0)=b(8downto1);将串行数据段的1-8位数据位从b中取出至于disp中。frxd=notrxd;分析:定义机构体。先定义可信号b,r,j。其中的b作为数据转移的临时载体。R,j分别作为后续程序的计数单元,其中需要注意的是j的位数控制,因为当需要控制波特率的时候,由于输入的sysclk是固定的12MHz的系统时钟信号无法改变,故能改变的只有RS232中的分频系数,但由于分频的系数的改变,于是j作为计数信号其值也将随之改变。s1:process(sysclk,gt)beginifgt='0'thenj=(others='0');elsifsysclk'eventandsysclk='1'thenifj=1001110001000000thenj=(others='0');...elsej=j+1;endif;endif;endprocess;分析