RS-232串口通信设计_第1页
RS-232串口通信设计_第2页
RS-232串口通信设计_第3页
RS-232串口通信设计_第4页
RS-232串口通信设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RS-232串口通信设计课程设计任务书CPLD/FPGA课程设计报告题 目: RS-232 串口通信设计院(系):信息科学与工程学院专业班级:通信工程11学生姓名:詹文魁学 号:指导教师:吴莉老师2014年06月09日至2014年6月20 日华中科技大学武昌分校制一、设计(调查报告/论文)题目RS-232串口通信设计二、设计(调查报告/论文)主要内容下述设计内容需由学生个人独立完成:1 理解电路原理图与工作过程;2 .掌握RS-232电气特性;3 掌握RS-232通信原理及串口通信数据格式,并编程完成串行数据的发送、接收和显示;4 能正确处理编程与调试过程中所遇到的问题。三、原始资料1. 通信

2、与电子系统实验指导书;2. CPLD/FPGA 实验箱。四、要求的设计(调查/论文)成果1 程序结构合理,语言简洁,格式规范,注释详细;2. 掌握RS-232的工作机制与原理;3. 格式为:1位起始位,8位数据位,1位停止位,无奇偶校验位,波特率设定为 300Baud。能 与计算机正常通信;4. 按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。五、进程安排第1天选题,课题讲解;第2-3天 课题分析,完成设计方案;第4-6天软件编程;第7-8天 软件调试,故障排查;第9天结果验收,评分;第10天撰写课设报告。六、主要参考资料1 陈曦.通信与电子系统实验指导书,武汉:华中科技大

3、学武昌分校.2 谭会生.EDA技术及应用,西安:西安电子科技大学出版社,2010.3 潘松,黄继业.EDA技术与VHDL北京:清华大学出版社,2009.指导教师(签名):20 年 月 日1. 课程设计的目的42. 课程设计题目描述和要求 43. 课程设计报告内容 43.1课题设计方案及基本原理 43.2软件设计73.3问题144. 总结155. 参考资料16附录程序清单171. 课程设计的目的:(1)学习RS-232串口通信数据结构,并编程完成串行数据的接收和显示。(2)掌握RS-232的工作机制与原理。(3)熟练掌握Quartus2软件的使用。(4)了解 CPLD/FPG/实验箱。2. 课程

4、设计题目描述和要求:(1)课程设计题目:基于FPGA的串口通信程序设计。(2)课程设计要求:下述设计内容需由学生个人独立完成:1 理解电路原理图与工作过程;2 .掌握RS-232电气特性;3 .掌握RS-232通信原理及串口通信数据格式,并编程完成串行数据的接收和显示;4 .能正确处理编程与调试过程中所遇到的问题 ;5.在FPGA中构造一个异步串行通信控制模块,完成PC机发送的接收,并设计显示模块,完成接收数据的显示(3)要求的设计成果:1 .程序结构合理,语言简洁,格式规范,注释详细;2. 掌握RS-232的工作机制与原理;3. 格式为:1位起始位,8位数据位,1位停止位,无奇偶校验位,波特

5、率设定 为300Bauc。能与计算机正常通信;4. 按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。3. 课程设计报告内容:3.1课程设计方案及基本原理:设计方案:利用实验箱上的MAX232芯片控制通过适当分频(分频的目的是为了达到要求的波 特率,控制数据传输速率)的串行输入信号,并将其转换为并行信号并通过实验箱上的 数码管的后两位显示从计算机中传输出来的16进制数。例如在计算机端输入(FF)则会在试验箱上看到(000000FF)的显示图示。基本原理:RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公 布的通信协议。它适合于数据传输速率在

6、 020000b/s范围内的通信。这个标准对串行 通信接口的有关问题,如信号线功能、电器特性都作了明确规定。EIA-RS-232C中+3V+15V之间的电平为 0, -3V-15V的电平为 1 与TTL以高 低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的 TTL器件连接, 必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。 实现这种变换的方法 可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488 SN75150芯片可完成TTL电平到EIA电平的转换,而 MC1489 SN75154可实现 EIA电平到TTL电平的转换。MAX

7、232E片可完成TTL EIA双向电平转换。1. 串口通信:(1)什么是串口通信:串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232 口。同时,串口通信协议也可以用于获取远程采集设备的数据。串行接口( Serial port )又称“串口”,主要用于串行式逐位数据传输。常见的有一 般电脑应用的RS-232(使用25针或9针连接器)和工业电脑应用的半双 RS-485 与全双工RS-422。(2)串口接口规格:串行接口按电气标准及协议来分,包括 RS-232-C、RS-422、RS4

8、85 USB等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输 领域。(3)串口通信原理:串口通信的概念非常简单,串口按位(bit )发送和接收字节。尽管比按字节(byte) 的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 它很简单并且能够实现远距离通信。比如 IEEE488定义并行通行状态时,规定设 备线总长不得超过20米,并且任意两个设备间的长度不得超过 2米;而对于串口 而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根

9、 线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在 一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须 的。2. RS232 芯片(1)电气特性:EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。在 TxD和 RxD上:逻辑 1(MARK)=-3V-15V逻辑 0(SPACE)=+4+ 15V在RTS CTS DSR DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V+15V信号无效(断开,OFF犬态,负电压)=-3 V-15(2)RS232接 口定义:馆号1CD2RXD接收3TXD发送4OTR数粥终端准备

10、好5GND信号地6OSR趙信垃备准备好7RTS请求发送$CTS允许发送9R)(3)RS232总线电平转换:RS232il!平和TTLLZ间需娶转换,常用转换芯片为MAX232 .MAX2322 33)、SP3232 3 3V)等.F:i3 :%磁:dC.UTLcwfTLatTinKtbftIM*妣(4)RS232数据传输格式:串行通信中,线路空闲时,线路的 TTL电平总是高,经反向RS232的电平总是低。 一个数据的开始RS232线路为高电平,结束时RS232为低电平。数据总是从低位向高位 一位一位的传输。示波器读数时,左边是数据的低位。例如,对于16进制数据55H和aaH,当采用8位数据位、

11、1位停位传输时位停止位传输时:55H=01010101B高低位倒 序后为10101010B加入一个起始位0, 一个停止位1,55H的数据格式为0101010101 aaH=10101010B高低位倒序后为 01010101B加入一个起始位 0,一个停止位1,aaH 的数据格式为:0010101011(5)RS232通信过程:I :开始通信时,信号线为空闲(逻辑),当检测到由到的跳变时,开始对“接收 时钟”计数。II:当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。III:接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数

12、据。若为逻辑1,作为数据位1;若为逻辑0,作为数据位0。IV:再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。.,直到全部数据位都输入。V:检测校验位P (如果有的话)。VI:接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位 S(逻辑1),若此时未收到逻辑说明出现了错误在状态寄存器中置“帧错误”标志若没 若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若 没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器 中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。VII :本幀信息全部接收完把线路上出现的高电平作为空闲位。VI

13、II :当信号再次变为低时,开始进入下一帧的检测。3.2软件设计(1) Quartus顶层设计曲X艮司dMfi ;|4IMCG 1H12J3YtIMCT廿4aiy+HYW4莅-如上图所示,整个顶层设计可以分为 4个部分,(1)锁相环;作用是将输入的系统 时钟信号(系统时钟50MHZ转换为12MHZ勺sysclk时钟,在进入RS232前先进行第一次 分频弥补RS232自身分频不足的特点。(2)核心模块RS232作用是将计算机输入的串行 数据转换为并行数据便于给后方的显示模块处理。(3)分频模块;作用是给显示模块提 供所需的时钟,由于显示模块的本质是一个个显示,所以为了能同时显示故将输入频率 调至

14、1KHz以上让人眼无法一个个识别形成同时显示的效果。(4)显示模块;作用是将输入的并行信号(8位)分成4位一组,即两组进行处理后在试验箱的数码管上显示。 (1-1)模块一分析:pHmclkOcikRatioPh(og)Td阳DCco12/250 000.0050.00inelkO frequency 50.000 MHz Operat i on f.lode N orm alinstninst5Cyclone i从上图可以看出:1.i nclk=50MHz 2.DC=50% 3.Ratio=12/25,从而可以得出outclk=50MHz*12/25=24MHz,再通过D触发器2分频后得到12

15、MHZ的输出系统时钟来弥 补RS232模块分频不足的缺点。(1-2)模块二分析:15232sysclkdisp7,.O 叩一 0I.4fadrxdBrniB:inst3|ra .j h :ld4a上图所示的为 RS232集成模块,经 VHDL编译生成的模块文件。输入为 sysclk=12MHz , rxd= 计算机输入的串行数据串,disp为8位的并行数据段。程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity rs232 isport(sysclk: in std_log

16、ic;rxd:in std_logic;disp:out std_logic_vector(7 dow nto 0);end rs232;分析:定义实体。输入信号,输入时钟信号为逻辑信号,输出信号disp为8位矢量信号,低位为 0高位为7。architecture behv of rs232 issig nal b: std_logic_vector(9 dow nto 0);sig nal r: std_logic_vector(3 dow nto 0);sig nal j: std_logic_vector(15 dow nto 0);sig nal frxd,gt,gtclr,cclk,

17、gate: std_logic;begingate=gt and cclk;disp(7 downto 0)=b(8 downto 1);将串行数据段的 1-8位数据位从 b中取出至于 disp中。frxd=not rxd;分析:定义机构体。先定义可信号 b,r,j。其中的b作为数据转移的临时载体。R,j分别作为后续程序的计数单元,其中需要注意的是j的位数控制,因为当需要控制波特率的时候,由于输入的sysclk是固定的12MHz的系统时钟信号无法改变,故能改变的只有 RS232中的分频系 数,但由于分频的系数的改变,于是j作为计数信号其值也将随之改变。s1:process(sysclk,gt)

18、beginif gt=0 then j0);elsif sysclkeve nt and sysclk=1 the nif j=1001110001000000 then j0);else j=j+1;end if;end if;end process;分析:si的段码作用是用来计数,所记数为RS232的分频系数,上述代码中的10011100010为40000,通过计算12M/1250=9600,故可以得知波特率为9600b/s。通过改变j的值可以很方便的来设置所需要的波特率。s2:process(j)beginif j=111001 then cclk=1;else cclk=0;end i

19、f;end process;分析:s2的段码作用是当j计数到一定数值的时候产生一个脉冲,从而实现分频的作用。其中j值的设定关系到分频的占空比,只需要j的值在分频系数之内即可产生分频的效果。s3:process(gate,gtclr)beginif gtclr=1 then r=0000;elsif gateeve nt and gate=1 the nr=r+1;end if;end process;s4:process(gate,r)beginif r=1010 then gtclr=not gate;else gtclr=0;end if;end process;分析:s3,s4段码的作用

20、是计数从0-10,即计数输入数据段的10位,0-起始位,1-8-数据位,9-终止位。s5:process(gate,rxd,b)beginif gateeve nt and gate=1 the nb(9 downto 0)=rxd&b(9 downto 1);将b的后9位并上rxd 的第一位组合成新的信号b。end if;end process;分析:s5段码的作用是,将rxd的输入信号通过移位寄存的方法将RXD中的数据一一取出移动到信号b中,然后再通过的b的移位从而将rxd中的数据段完整的转移到信号b中保存。s6:process(frxd,gtclr)beginif gtclr=1 the

21、n gt=0;elsif frxdeve nt and frxd=1 the ngt=1;end if;end process;end behv;分析:s6的段码的作用是用于判断起始位,gt做为标志位,当已经确定为开始时,将 gt 的值置1(1-3)模块三分析:分析:从上图可以看出其作用是作为分频,将50MHz的输入信号先通过 PIN1MHZ莫块将50MHZ分为1Mhz,再将1MHZ的信号输入到下一个分频信号中分为频率为:1HZ 488HZ, 1953HZ,7812HZ,31250H乙 125kHZ,500kHZ 的信号。程序 1: PIN1hzLIBRARY IEEE;USE IEEE.ST

22、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PIN1MHZ ISPORT(CLKIN:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGINIF CLKIN=1 AND CLKIN EVENT THENIF CNTTEMP=49 THEN CNTTEMP:=0;ELSEIF CNTTEMP25 THEN CL

23、KOUT=1;ELSE CLKOUT=0;END IF;CNTTEMP:=CNTTEMP+1;END IF ;END IF;END PROCESS;END A;分析:上述程序段中可以知道,使用变量 VARIABLE做为计数,从0-49刚好为50个数, 当小于25的时候赋值为1,其余为0,使得将50MHZ处理为1MHZ当取值大于或 等于50时复位为0。从而达到分频的目的。程序2:library ieee;use ieee.stdo gic_1164.all;use ieee.std_logic_ un sig ned.all;en tity ent isport(clk:in std_logic

24、;freq1:out std_logic;freq488:out std_logic;freq1953:out stdo gic;freq7812:out std_logic;freq31250:out std_logic;freq125k:out std_logic;freq500k:out std_logic);end ent;architecture behv of ent issig nal temp:stdo gic_vector(19 dow nto 0);beg inprocess(clk)beg inif clk eve nt and clk=1 the nif temp=11

25、110100001000111111 then temp=00000000000000000000; elsetempv=temp+1;end if;end if;end process;freq1=temp(19);freq488=temp(10);freq1953=temp(8);freq7812=temp(6);freq31250=temp(4);freq125k=temp(2);freq500kdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000;end case;end process

26、;end behv;分析:程序led是完成段显,将输入的数值0-15翻译成对应的数码管编码(1-5)接收模块分析:程序rsSedn作为接受模块,用于将232中发送的数据再次回写到到串口助手的 接收端内!要是程序完全正常的话发送什么就会在接收窗口接收到什么。3.3问题:如何真正的实现发送和接受同步,并且发送的和接收的完全一样?发送和接收波特率怎 么弄?答:接收和显示的已经做出来了,但是发送的4. 总结:参考文献1 通信与电子系统实验指导书武汉:华中科技大学武昌分校2 潘松.EDA技术与VHDL北京:清华大学出版社,2009.3 朱运利.EDA技术应用(第二版).北京:电子工业出版社,2007.4

27、 王行.EDA技术入门与提高.西安:西安电子科技大学出版社,2009. 李莉电子设计自动化(EDA .北京:中国电力出版社,2009.附录程序清单:程序1:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_u nsig ned.all; en tity rs232 is port(sysclk: in std_logic;rxd:in std_logic;disp:out std_logic_vector(7 dow nto 0);end rs232;architecture behv of rs232 issig nal

28、 b: std_logic_vector(9 dow nto 0);sig nal r: std_logic_vector(3 dow nto 0);sig nal j: std_logic_vector(15 dow nto 0);sig nal frxd,gt,gtclr,cclk,gate: std_logic;begingate=gt and cclk;disp(7 dow nto 0)=b(8 dow nto 1);frxdO);elsif sysclkeve nt and sysclk=1 the nif j=1001110001000000 then j0);else j=j+1

29、;end if;end if;end process;s2:process(j)beginif j=111001 then cclk=1;else cclk=0;end if;end process;s3:process(gate,gtclr)beginif gtclr=1 then r=0000;elsif gateeve nt and gate=1 the n=叶1;end if;end process;s4:process(gate,r)beginif r=1010 then gtclr=not gate;else gtclr=0;end if;end process;s5:proces

30、s(gate,rxd,b)beginif gateeve nt and gate=1 the nb(9 dow nto 0)=rxd&b(9 dow nto 1);end if;end process;s6:process(frxd,gtclr)beginif gtclr=1 then gt=0;elsif frxdeve nt and frxd=1 the ngt=1:end if;end process;end behv;程序2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY P

31、IN1MHZ ISPORT(CLKIN:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49;BEGINIF CLKIN=1 AND CLKIN EVENT THENIF CNTTEMP=49 THEN CNTTEMP:=0;ELSEIF CNTTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0;END IF;CNTTEMP:=CNTTEMP+1;END IF ;E

32、ND IF;END PROCESS;END A;程序3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u nsig ned.all;en tity ent is port(clk:in std_logic;freq1:out std_logic; freq488:out std_logic;freq1953:out stdogic;freq7812:out stdogic; freq31250:out std_logic;freq125k:out std_logic;freq500k:out std_logic); en

33、d cnt;architecture behv of cnt issig nal temp:std_logic_vector(19 dow nto 0); beginprocess(clk)beginif clk eve nt and clk=1 the nif temp=11110100001000111111 then tempv=OOOOOOOOOOOOOOOOOOOO;else tempv=temp+1;end if;end if;end process; freq1=temp(19); freq488=temp(10); freq1953=temp(8); freq7812=temp

34、 (6); freq31250=temp(4); freq125k=temp(2); freq500kdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000;end case;end process;end behv;程序5:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u nsig ned.all;en tity cnt8 isport(clk:in std_logic;q:out std_logic_vector(2 d

35、ow nto 0); end cn t8;architecture behv of cnt8 issig nal temp:std_logic_vector(2 dow nto 0);beginprocess(clk)beginif clk eve nt and clk=1 the nif temp=111 the ntemp=000;elsetempv=temp+1;end if;end if;end process;q=temp;end behv;程序6:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论