串口通信发送接口-LED

上传人:dus****log 文档编号:65560723 上传时间:2022-03-24 格式:DOC 页数:11 大小:967.50KB
返回 下载 相关 举报
串口通信发送接口-LED_第1页
第1页 / 共11页
串口通信发送接口-LED_第2页
第2页 / 共11页
串口通信发送接口-LED_第3页
第3页 / 共11页
点击查看更多>>
资源描述
硬件描述语言 设计报告 设计题目串行通信接收接口(LED) 学院 电子信息学院 班级 电子101 姓名 梁嘉诚 学号 1011002006 设计时间 2013年1月711日引言:随着计算机系统的应用和微机网络的开展,通信功能越来越显的重要。这里所说的通信是只计算机与外界的信息交换。因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的 网进行信息传送,因此,特别适合于远距离传输。对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU与接口之间仍按并行方式工作。RS-232C标准的全称是EIA-RS-232C标准(Electronic Industrial Associate-Recommended Standard 232C)是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。232标准与CCITT的V.24根本相同。 它适合于数据传输速率在020,000bit/s范围内、传输距离在15m以内的通信。由于通信设备厂商大都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机串行通信接口中广泛采用。 RS-232C标准最初是为远程通信连接数据终端设备DTE与数据通信设备DCE而制定的。因此,这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确地说,是计算机接口)与终端或外设之间的近端连接标准。很显然,这个标准的有些规定及定义和计算机系统是不一致的,甚至是相矛盾的。RS-232C标准中所提到的“发送和“接收,都是站在DTE的立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送或接收 通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。RS-232 标准规定的数据传输速率为每秒150、300、600、1200、2400、4800、9600、19200波特。 RS-232 标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;假设每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。设计原理: 串行通信是指使用一条数据线另外需要地线,可能还需要控制线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。 串行通信的特点是:数据传送按位顺序进行,最少值只需要一根传输线即可完成,节省传输线。与并行通信相比还有较为显著的优点,传输距离长,可以几米到几千米。在长距离内串行数据传送速率比并行数据传送速率快,串行通信的通信时钟频率容易提高,串行通信的干扰能力十分强,其信号间的互相干扰完全可以忽略。 正是由于串行通信的接线少、本钱低,因此它在数据采集和控制系统中得到了广泛的应用,产品也多种多样。串行通信的分类 串行传输中,数据时一位一位按照到达的顺序依次传输的,每位数据的发送的接受都需要时钟来控制,发送端通过发送时钟确定数据位的开始和结束,接受端需要在适当的时间间隔对数据流进行采样来正确的识别数据。接收端和发送端必须保持步调一致,否那么数据传输就会出现过失。为了解决以上问题,串行通信可采用以下两种方法:同步通信和异步通信。同步通信: 同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有假设干个数据字符。 它们均由同步字符、数据字符和校验字符CRC组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。 异步通信:串行异步通信即RS232通信,是主机与外部硬件设备的常用通讯方式。可以双向传输。 异步通信中,在异步通行中有两个比拟重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。 接收端检测到传输线上发送过来的低电平逻辑0即字符帧起始位时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知 道一帧字符已经发送完毕。 异步通信中典型的帧格式是:1位起始位,7位或8位数据位,1位奇偶校验位,2位停止位。串行通信的工作模式通过单线传输信息是串行数据通信的根底。三种传送模式:单工、半双工、全双工。1、单工形式:单工形式的数据传送是单向的。通信双方中,一方固定是发送端,另一方那么固定是接收端,使用一根传输线,如图1-2所示。单工形式2. 半双工形式:半双工通信使用同一根传输线,即可发送数据又可接受数据,但不能同时发送和接受。在任何时刻只鞥由其中的一方发送数据,另一方接受数据。因此半双工形式既可以使用 一条数据线,也可以使用两条数据线。如图1-3所示。半双工形式半双工通信中每个端口都需要有一个收/发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率较低。3、全双工形式:RS-232全双工数据通信分别由两根可以在两个不同的端点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作。如图1-4所示。全双工形式在全双工形式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。UART通信协议 在异步通信中,是以字符为单位传送数据,是从低位到高位逐位传送,一个字符表示一帧信息。串行异步通信协议中字符代码传输格式如图2.3所示,通常UART的一帧数据由四局部组成:一个起始位S一般逻辑为“0,后面是数据长度可变的数据位D0D7(一般为6位到8位之间可变,数据的低位在前),一个可选的校验位PB可选奇校验、偶检验或不需要检验,随后是一定长度的停止位P可选1位、1.5位、或2位,停止位必须为逻辑“1。在没有数据被传输时,数据线会一直处于逻辑“1状态。 由于没有共享时钟信号,因此在进行数据传输之前,收发双方必须协商好一个数据 传输的波特率,也就是说,UART接收端应该知道发送端发送数据的波特率相应的发送端也需要知道接收端的波特率。在大多数情况下,发送数据和接受数据的波特率是相同的。UART发送端按照低位在前,高位在后的顺序移位输出数据。一旦在初始化过程中,双方协商好了通信的波特率,收发双方的内部时钟都设定在同一波特率但时钟的相位不同。在一个UART包传输开始,接收端将它的内部时钟调整到与发送端同步。这样接收端就可以在每一位的中心位置对数据位进行采样,保证数据传输的正确性。设计内容:串行通信接收接口LED根本要求:掌握RS232串口的协议,运用DE2的串口进行接收PC的数据。波特率为9600,8位数据位,无奇偶校验,一个停止位。 硬件验证要求:在PC机通过“串行通信调试助手软件发送数据,DE2通过串口接收数据,完成接收数据后在LED上面进行显示。在完成根本要求的根底上,可以通过拨码开关来选择奇偶校验的类别。流程图: 接收模块流程图:程序:/分频模块 module clk_div (clk_in,nreset,clk_out); input clk_in; input nreset; output clk_out; reg clk_out=0; reg 8:0cnt=0; parameter T = 217; always (posedge clk_in or negedge nreset) begin if(nreset = 0) begin cnt = 0; clk_out = 0; end else if(cnt = T) begin clk_out = clk_out; cnt =0; end else cnt=cnt+1; endendmodule/接收模块module rx(clk,nreset,rxd,data);input clk,rxd,nreset; /clk=0.1152MHzoutput 7:0 data;reg 3:0 t;reg 3:0 s; reg 7:0 data0; reg 7:0 data; always (posedge clk or negedge nreset ) /baud=9600hzif(nreset =0) begin data = 8h00; s = 0; t = 0; data0 = 8h00; endelse begin case(s) 0:if(rxd=1)begin s=1;t=0;end 1:if(rxd=0)begin s=2;t=t+1;end 2:if(t=6) begin if(rxd=0) begin s=3;t=0;end else begin s=1;t=0; end end else t=t+1; 3:if(t=11) begin data00=rxd;t=0;s=4;end else t=t+1; 4:if(t=11) begin data01=rxd;t=0;s=5;end else t=t+1; 5:if(t=11) begin data02=rxd;t=0;s=6;end else t=t+1; 6:if(t=11) begin data03=rxd;t=0;s=7;end else t=t+1; 7:if(t=11) begin data04=rxd;t=0;s=8;end else t=t+1; 8:if(t=11) begin data05=rxd;t=0;s=9;end else t=t+1; 9:if(t=11) begin data06=rxd;t=0;s=10;end else t=t+1; 10:if(t=11) begin data07=rxd;t=0;s=11;end else t=t+1; 11: begin if(t=11) begin if(rxd=1) begin t=0;s=0; data=data0;end else begin t=0;s=0;end end else t=t+1; end default:begin t=0;s=0;end endcase end endmodule /显示模块 module HEX(SW,HEX1,HEX0); input 7:0SW; output reg6:0HEX1,HEX0; parameter seg0 = 7b1000000, seg1 = 7b1111001, seg2 = 7b0100100, seg3 = 7b0110000, seg4 = 7b0011001, seg5 = 7b0010010, seg6 = 7b0000010, seg7 = 7b1111000, seg8 = 7b0000000, seg9 = 7b0010000, sega = 7b0001000, segb = 7b0000011, segc = 7b1000110, segd = 7b0100001, sege = 7b0000110, segf = 7b0001110; always (*)begincase(SW7:4)4h0: HEX16:0 = seg0; 4h1: HEX16:0 = seg1; 4h2: HEX16:0 = seg2; 4h3: HEX16:0 = seg3; 4h4: HEX16:0 = seg4; 4h5: HEX16:0 = seg5; 4h6: HEX16:0 = seg6;4h7: HEX16:0 = seg7; 4h8: HEX16:0 = seg8; 4h9: HEX16:0 = seg9; 4ha: HEX16:0 = sega; 4hb: HEX16:0 = segb; 4hc: HEX16:0 = segc; 4hd: HEX16:0 = segd; 4he: HEX16:0 = sege; 4hf: HEX16:0 = segf; default:HEX16:0 = seg0; endcase case(SW3:0)4h0: HEX06:0 = seg0; 4h1: HEX06:0 = seg1; 4h2: HEX06:0 = seg2; 4h3: HEX06:0 = seg3; 4h4: HEX06:0 = seg4; 4h5: HEX06:0 = seg5; 4h6: HEX06:0 = seg6;4h7: HEX06:0 = seg7; 4h8: HEX06:0 = seg8; 4h9: HEX06:0 = seg9; 4ha: HEX06:0 = sega; 4hb: HEX06:0 = segb; 4hc: HEX06:0 = segc; 4hd: HEX06:0 = segd; 4he: HEX06:0 = sege; 4hf: HEX06:0 = segf; default:HEX06:0 = seg0; endcaseendendmodule/主模块module rx_top(CLOCK_50,KEY,UART_RXD,HEX1,HEX0);input CLOCK_50;input KEY; input UART_RXD; output 6:0HEX1,HEX0;wire clk_out; clk_div u1 (.clk_in(CLOCK_50),.nreset(KEY),.clk_out(clk_out);wire 7:0data; rx u2 (.clk(clk_out),.nreset(KEY),.rxd(UART_RXD),.data(data); HEX u3 (.SW(data),.HEX1(HEX1),.HEX0(HEX0); Endmodule波形图:实验结果把实验板上电,下载完成后在PC上翻开串口调试助手,实现的功能如下图,这就是FPGA里实现从PC发送数据,使用的是串口UART协议进行收发数据。用串口调试助手,如下:总结由于理论知识的缺乏, 而且平时没有什么设计经验,开始时手忙脚乱,不知从何入手。在同学的帮助下,我完成了设计。在这次的实践过程中我学到了一些除理论知识以外的其他东西,网上学习也非常重要。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!