版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. “ 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
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技术及应用,:电子
3、科技大学,2010.3 松,黄继业.EDA技术与VHDL,:清华大学,2009.指导教师签名:20 年月日目录1. 课程设计的目的42. 课程设计题目描述和要求43.课程设计报告容43.1 课题设计方案及根本原理43.2 软件设计73.3 问题14总结15参考资料16附录程序清单17课程设计的目的:学习RS-232串口通信数据构造,并编程完成串行数据的接收和显示。掌握RS-232的工作机制与原理。熟练掌握Quartus2软件的使用。了解CPLD/FPGA实验箱。2.课程设计题目描述和要求:1课程设计题目:基于FPGA的串口通信程序设计。2课程设计要求:下述设计容需由学生个人独立完成: 1理解电
4、路原理图与工作过程; 2掌握RS-232电气特性; 3掌握RS-232通信原理及串口通信数据格式,并编程完成串行数据的接收和显示; 4能正确处理编程与调试过程中所遇到的问题; 5. 在FPGA中构造一个异步串行通信控制模块,完成PC机发送的接收,并设计显示模块,完成接收数据的显示3要求的设计成果: 1程序构造合理,语言简洁,格式规,注释详细; 2. 掌握RS-232的工作机制与原理; 3. 格式为:1位起始位,8位数据位,1位停顿位,无奇偶校验位,波特率设定为300Baud。能与计算机正常通信; 4. 按要求完成课程设计报告,格式符合学校规标准,字数不少于2000字。课程设计报告容: 3.1课
5、程设计方案及根本原理:设计方案:利用实验箱上的MA*232芯片控制通过适当分频分频的目的是为了到达要求的波特率,控制数据传输速率的串行输入信号,并将其转换为并行信号并通过实验箱上的数码管的后两位显示从计算机中传输出来的16进制数。例如在计算机端输入FF则会在试验箱上看到000000FF的显示图示。根本原理:RS-323C标准是美国EIA(电子工业联合会与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s围的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。EIA-RS-232C中+3V+15V之间的电平为0,-3V-15V的电
6、平为1;与TTL以上下电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进展电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MA*232芯片可完成TTLEIA双向电平转换。串口通信:1什么是串口通信:串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多G
7、PIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串行接口Serial port又称“串口,主要用于串行式逐位数据传输。常见的有一般电脑应用的RS-232使用 25 针或 9 针连接器和工业电脑应用的半双RS-485与全双工RS-422。串口接口规格:串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年开展起来的新型接口标准,主要应用于高速数据传输领域。串口通信原理:串口通信的概念非常简单,串口按位bi
8、t发送和接收字节。尽管比按字节byte的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比方IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:1地线,2发送,3接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。2.RS232芯片1电气特性: EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。在T*D和R*D上:逻辑
9、1(MARK)=-3V-15V 逻辑0(SPACE)=+315V 在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效接通,ON状态,正电压+3V+15V 信号无效断开,OFF状态,负电压=-3V-152RS232接口定义:RS232总线电平转换:RS232数据传输格式:串行通信中,线路空闲时,线路的TTL电平总是高,经反向RS232的电平总是低。一个数据的开场RS232线路为高电平,完毕时RS232为低电平。数据总是从低位向高位一位一位的传输。示波器读数时,左边是数据的低位。例如,对于16进制数据55H和aaH,当采用8位数据位、1位停位传输时位停顿位传输时:55H=01010101
10、B,上下位倒序后为10101010B,参加一个起始位0,一个停顿位1,55H的数据格式为0101010101。aaH=10101010B,上下位倒序后为01010101B,参加一个起始位0,一个停顿位1,aaH的数据格式为:0010101011RS232通信过程: = 1 * ROMAN * MERGEFORMAT I:开场通信时,信号线为空闲逻辑,当检测到由到的跳变时,开场对“接收时钟计数。 = 2 * ROMAN * MERGEFORMATII:当计到8个时钟时,对输入信号进展检测,假设仍为低电平,则确认这是“起始位,而不是干扰信号。 = 3 * ROMAN * MERGEFORMAT I
11、II:接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。假设为逻辑1, 作为数据位1;假设为逻辑0,作为数据位0。 = 4 * ROMAN * MERGEFORMAT IV:再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。.,直到全部数据位都输入。 = 5 * ROMAN * MERGEFORMAT V:检测校验位P如果有的话。 = 6 * ROMAN * MERGEFORMAT VI:接收到规定的数据位个数和校验位后,通信接口电路希望收到停顿位S(逻辑 1),假设此时未收到逻辑说明出现了错误在状态存放器中置“帧错误标志假设没假设此时未收到
12、逻辑1,说明出现了错误,在状态存放器中置“帧错误标志。假设没有错误,对全部数据位进展奇偶校验,无校验错时,把数据位从移位存放器中送数据输入存放器。假设校验错,在状态存放器中置奇偶错标志。 = 7 * ROMAN * MERGEFORMAT VII:本幀信息全部接收完把线路上出现的高电平作为空闲位。 = 8 * ROMAN * MERGEFORMAT VIII:当信号再次变为低时,开场进入下一帧的检测。3.2软件设计Quartus顶层设计如上图所示,整个顶层设计可以分为4个局部,1锁相环;作用是将输入的系统时钟信号(系统时钟50MHZ)转换为12MHZ的sysclk时钟,在进入RS232前先进展
13、第一次分频弥补RS232自身分频缺乏的特点。2核心模块RS232;作用是将计算机输入的串行数据转换为并行数据便于给前方的显示模块处理。3分频模块;作用是给显示模块提供所需的时钟,由于显示模块的本质是一个个显示,所以为了能同时显示故将输入频率调至1KHz以上让人眼无法一个个识别形成同时显示的效果。4显示模块;作用是将输入的并行信号8位分成4位一组,即两组进展处理后在试验箱的数码管上显示。(1-1)模块一分析:从上图可以看出:1.inclk=50MHz 2.DC=50% 3.Ratio=12/25 ,从而可以得出outclk=50MHz*12/25=24MHz,再通过D触发器2分频后得到12MHz
14、的输出系统时钟来弥补RS232模块分频缺乏的缺点。(1-2)模块二分析:上图所示的为RS232集成模块,经VHDL编译生成的模块文件。输入为sysclk=12MHz,r*d=计算机输入的串行数据串,disp为8位的并行数据段。程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs232 isport(sysclk: in std_logic; r*d: in std_logic; disp: out std_logic_vector(7 downto 0) );end rs23
15、2;分析:定义实体。输入信号,输入时钟信号为逻辑信号,输出信号disp为8位矢量信号,低位为0高位为7。architecture behv of rs232 is signal b: std_logic_vector(9 downto 0); signal r: std_logic_vector(3 downto 0); signal j: std_logic_vector(15 downto 0); signal fr*d,gt,gtclr,cclk,gate: std_logic;begin gate=gt and cclk; disp(7 downto 0)=b(8 downto 1);
16、 将串行数据段的1-8位数据位从b中取出至于disp中。 fr*d=not r*d;分析:定义机构体。先定义可信号b,r,j。其中的b作为数据转移的临时载体。R,j分别作为后续程序的计数单元,其中需要注意的是j的位数控制,因为当需要控制波特率的时候,由于输入的sysclk是固定的12MHz的系统时钟信号无法改变,故能改变的只有RS232中的分频系数,但由于分频的系数的改变,于是j作为计数信号其值也将随之改变。s1:process(sysclk,gt) begin if gt=0 then j0); elsif sysclkevent and sysclk=1 then if j=00000 t
17、hen j0); else j=j+1; end if; end if;end process;分析:s1的段码作用是用来计数,所记数为RS232的分频系数,上述代码中的为40000,通过计算12M/1250=9600,故可以得知波特率为9600b/s。通过改变j的值可以很方便的来设置所需要的波特率。s2:process(j)begin if j=111001 then cclk=1; else cclk=0; end if;end process;分析:s2的段码作用是当j计数到一定数值的时候产生一个脉冲,从而实现分频的作用。其中j值的设定关系到分频的占空比,只需要j 的值在分频系数之即可产
18、生分频的效果。s3:process(gate,gtclr)begin if gtclr=1 then r=0000; elsif gateevent and gate=1 then r=r+1; end if;end process;s4:process(gate,r)begin if r=1010 then gtclr=not gate; else gtclr=0; end if;end process;分析:s3,s4段码的作用是计数从0-10,即计数输入数据段的10位,0-起始位,1-8-数据位,9-终止位。s5:process(gate,r*d,b)begin if gateevent
19、 and gate=1 then b(9 downto 0)=r*d&b(9 downto 1); 将b的后9位并上r*d 的第一位组合成新的信号b。 end if;end process;分析:s5段码的作用是,将r*d的输入信号通过移位存放的方法将R*D中的数据一一取出移动到信号b中,然后再通过的b的移位从而将r*d中的数据段完整的转移到信号b中保存。s6:process(fr*d,gtclr)begin if gtclr=1 then gt=0; elsif fr*devent and fr*d=1 then gt=1; end if; end process;end behv;分析:s
20、6的段码的作用是用于判断起始位,gt做为标志位,当已经确定为开场时,将 gt的值置1。(1-3)模块三分析:分析:从上图可以看出其作用是作为分频,将50MHz的输入信号先通过PIN1MHZ模块将50MHZ分为1Mhz,再将1MHZ的信号输入到下一个分频信号中分为频率为:1HZ,488HZ,1953HZ, 7812HZ,31250HZ,125kHZ,500kHZ的信号。程序1:PIN1hzLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PIN1MHZ IS PORT(CLKIN:I
21、N STD_LOGIC; CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE TTEMP:INTEGER RANGE 0 TO 49;BEGIN IF CLKIN=1 AND CLKIN EVENT THEN IF TTEMP=49 THEN TTEMP:=0; ELSE IF TTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0; END IF; TTEMP:=TTEMP+1; END IF ; END IF;END PROCESS;END A;
22、分析:上述程序段中可以知道,使用变量VARIABLE做为计数,从0-49刚好为50个数,当小于25的时候赋值为1,其余为0,使得将50MHZ处理为1MHZ。当取值大于或等于50时复位为0。从而到达分频的目的。程序2:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityt isport(clk:in std_logic; freq1:out std_logic; freq488:out std_logic; freq1953:out std_logic; freq7812:out std_l
23、ogic; freq31250:out std_logic; freq125k:out std_logic; freq500k:out std_logic);endt;architecture behv oft is signal temp:std_logic_vector(19 downto 0);begin process(clk) begin if clk event and clk=1 then if temp=111 then temp=000; else temp=temp+1; end if; end if;end process; freq1=temp(19); freq488
24、=temp(10); freq1953=temp(8); freq7812=temp(6); freq31250=temp(4); freq125k=temp(2); freq500k=temp(0); end behv;分析:程序2的设计思路同样是使用计数,但和程序1的计数不完全一样,数由16进制表示,4为2进制组成1位16进制,所以从第0位开场可以计数2位,第一位可以计数4位,第二位可以计数8位,依次可以得出计数量为2的n+1次方个数,从而到达同时计数多个的目的从而产生多个时钟信号。(1-4)模块四分析:分析:显示模块由两局部组成,74138的外表作用是译码将输入的sel信号翻译出来并选中
25、制定的数码管。其实质作用是由输入的信号0-7计数为8的计数信号输入,来控制数码管的片选。而display的作用是来实现片选,将RS232输出的并行信号的两局部每局部4位组成一个 16进制数进展处理来实现段选。分析:上图为display模块的细节图。r*d中的信号分为两组输入,分别进入mu*er 的第0组和第1组。其余的组全部拉低,到达出去最低两位显示,其余为显示全0的目的,t8为0-7的计数,作用是控制mu*er进入led程序的顺序,而led是为了实现段选,点亮数码管的特定位来显示输入数值。程序1.library ieee;use ieee.std_logic_1164.all;use iee
26、e.std_logic_unsigned.all;entityt8 isport(clk:in std_logic; q:out std_logic_vector(2 downto 0);endt8;architecture behv oft8 issignal temp:std_logic_vector(2 downto 0);begin process(clk) begin if clk event and clk=1 then if temp=111 then temp=000; else temp=temp+1; end if; end if; end process; qdoutdo
27、utdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000; end case; end process;end behv;分析:程序led是完成段显,将输入的数值0-15翻译成对应的数码管编码。(1-5)接收模块分析:程序rsSedn作为承受模块,用于将232中发送的数据再次回写到到串口助手的接收端!要是程序完全正常的话发送什么就会在接收窗口接收到什么。3.3问题:如何真正的实现发送和承受同步,并且发送的和接收的完全一样?发送和接收波特率怎么弄?答:接收和显示的已经做出来了,但是发送的4.总结:参考文献1 通信
28、与电子系统实验指导书.:华中科技大学武昌分校.2 松.EDA技术与VHDL.:清华大学,2009.3 朱运利.EDA技术应用(第二版).:电子工业,2007.4 王行.EDA技术入门与提高.:电子科技大学,2009.5莉.电子设计自动化EDA.:中国电力,2009.附录程序清单:程序1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs232 isport(sysclk: in std_logic; r*d: in std_logic; disp: out std_logic_ve
29、ctor(7 downto 0) );end rs232;architecture behv of rs232 is signal b: std_logic_vector(9 downto 0); signal r: std_logic_vector(3 downto 0); signal j: std_logic_vector(15 downto 0); signal fr*d,gt,gtclr,cclk,gate: std_logic;begin gate=gt and cclk; disp(7 downto 0)=b(8 downto 1); fr*d=not r*d;s1:proces
30、s(sysclk,gt) begin if gt=0 then j0); elsif sysclkevent and sysclk=1 then if j=00000 then j0); else j=j+1; end if; end if;end process;s2:process(j)begin if j=111001 then cclk=1; else cclk=0; end if;end process;s3:process(gate,gtclr)begin if gtclr=1 then r=0000; elsif gateevent and gate=1 then r=r+1;
31、end if;end process;s4:process(gate,r)begin if r=1010 then gtclr=not gate; else gtclr=0; end if;end process;s5:process(gate,r*d,b)begin if gateevent and gate=1 then b(9 downto 0)=r*d&b(9 downto 1); end if;end process;s6:process(fr*d,gtclr)begin if gtclr=1 then gt=0; elsif fr*devent and fr*d=1 then gt
32、=1; end if; end process;end behv;程序2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PIN1MHZ IS PORT(CLKIN:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC);END PIN1MHZ;ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(CLKIN)VARIABLE TTEMP:INTEGER RANGE 0 TO 49;BEGIN IF CLKIN=1 AND CLKIN
33、EVENT THEN IF TTEMP=49 THEN TTEMP:=0; ELSE IF TTEMP25 THEN CLKOUT=1; ELSE CLKOUT=0; END IF; TTEMP:=TTEMP+1; END IF ; END IF;END PROCESS;END A;程序3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityt isport(clk:in std_logic; freq1:out std_logic; freq488:out std_logic; freq
34、1953:out std_logic; freq7812:out std_logic; freq31250:out std_logic; freq125k:out std_logic; freq500k:out std_logic);endt;architecture behv oft is signal temp:std_logic_vector(19 downto 0);begin process(clk) begin if clk event and clk=1 then if temp=111 then temp=000; else temp=temp+1; end if; end i
35、f;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;end behv;程序5:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityt8 isport(clk:in std_logic; q:out std_logic_vector(2 downto 0);endt8;architecture behv oft8 issignal temp:std_logic_vect
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河南省事业单位招聘考试《综合应用能力》真题
- 2025年中小学教师职称答辩试题(附答案)
- 3月思想报告2026(3篇)
- 2026涂料岗位面试题及答案
- 关于大学生思想动态及安全的舆情报告11月2026(3篇)
- 2026团员的面试题目及答案
- 2026网安常见面试题及答案
- 2026潍坊气象局面试题及答案
- 2026文旅热点面试题目及答案
- 2026西藏单招面试题目及答案
- 2026年二建《安全员B证》继续教育考试题库及答案
- 《校园农场:播种希望的四季》(小学三年级综合实践活动教案)
- 2024统编版八年级道德与法治下册期末复习知识点提纲
- 2026年高考全国卷物理真题试卷
- 2026年上海杨浦区事业单位考试题库公共基础知识真题及答案
- 祖国边防 勇敢守护 主题班会课件
- 手术病人术后肠梗阻预防与护理
- 2026广东中考地理押题必刷卷含答案
- GJB3206B-2022技术状态管理
- 苏教版四年级科学下册单元测试卷及答案(全册)
- 进制以和进制转换
评论
0/150
提交评论