基于fpga的串口通信

基于fpga的串口通信

ID:951301

大小:184.00 KB

页数:9页

时间:2017-10-07

基于fpga的串口通信_第1页
基于fpga的串口通信_第2页
基于fpga的串口通信_第3页
基于fpga的串口通信_第4页
基于fpga的串口通信_第5页
资源描述:

《基于fpga的串口通信》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一.设计要求:1.掌握FPGA的设计与使用。2.基于FPGA实现与PC机的串口通信。二.设计步骤:1.用VHDL语言设计逻辑电路,再通过QUARTUSII9.1软件,将各个模块的电路封装成器件,在顶层设计中通过连线,完成整个系统的设计。串行通信即串行数据传输,实现FPGA与PC的串行通信在实际中,特别是在FPGA的调试中有着很重要的应用。调试过程一般是先进行软件编程仿真,然后将程序下载到芯片中验证设计的正确性,目前还没有更好的工具可以在下载后实时地对FPGA的工作情况和数据进行分析。通过串行通信,可以向FPGA发控制命令让其执行相应的操作

2、,同时把需要的数据通过串口发到PC上进行相应的数据处理和分析,以此来判断FPGA是否按设计要求工作。这样给FPGA的调试带来了很大方便,在不需要DSP等其他额外的硬件条件下,只通过串口就可以完成对FPGA的调试。本文采用QuartusⅡ3.0开发平台,使用Altera公司的FPGA,设计实现了与PC的串行通信。总体设计主要设计思想:PC向串口发送命令,FPGA通过判断接收的控制字执行相应的操作,总体框图如图1所示。图1总体框图设计包括三部分:1、通过向I/O端口发送高低电平以达到控制外部硬件的要求。2、完成芯片内部逻辑的变化。3、将需要的

3、数据先存起来(一般采用内部或外部FIFO),然后通过串口将数据发送到PC,PC将接收的数据进行处理和分析。串口采用标准的RS-232协议,主要参数的选择:波特率28800bit/s、8位有效位、无奇偶校验位、1位停止位。控制模块主要实现的功能是:判断从PC接收的数据,根据预先设计的逻辑进行相应的状态转换。例如:给端口预置一个状态;送开始发送的标志位,送准备发送的数据;给DDS送配置信号,控制FIFO的读写。程序中状态机设计如图3所示。图3状态机变换设计中需要注意的问题波特率的选择对于串口通信是很重要的,波特率不应太大,这样数据才会更稳定。

4、整个发送接收过程中起始位的判别和发送是数据传输的前提。为了避免误码的产生,在FPGA设计中的串行输入和输出端口都应该加上一个数据锁存器。仿真结果clk是时钟信号(57600bit/s);start_xmit是开始发送标志位;sin是串行输入;datain是并行输出;read_bit是接收结束标志位;xmit_bit是发送结束标志位;sout是串行输出;dataout是并行输出;rcv_bit是接收位数寄存器。发送接收模块主要完成把从sin端口接收的串行数据变为并行数据送给dataout;把并行数据datain变成串行数据通过sout端口串

5、行发送。分频模块libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_arith.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityClk_DIVisport(clk:instd_logic;CLK_O:outstd_logic);endClk_DIV;architectureClk_DIV_archofClk_DIVissignalclk1,clk2:std_logic;signals1,s2:integerrange0to53;beginpro

6、cess(clk)beginifrising_edge(clk)thenifs1<53thens1<=s1+1;elses1<=0;endif;ifs1<28thenclk1<='1';elseclk1<='0';endif;endif;endprocess;process(clk)beginiffalling_edge(clk)thenifs2<53thens2<=s2+1;elses2<=0;endif;ifs2<28thenclk2<='1';elseclk2<='0';endif;endif;endprocess;CLK_O<=c

7、lk1orclk2;endClk_DIV_arch;设计中需要将3.6864MHz的时钟进行64分频变为57600波特作为其他模块的时钟基准。具体实现时采用一个6位计数器,将计数器的溢出作为时钟的输出即可实现整数分频。发送接收模块此模块是整个设计的核心部分。设计流程如图2所示。图2发送接收流程图libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;entityUART_RXisport(reset_

8、n:instd_logic;clk:instd_logic;RD_x:instd_logic;RD_x,接收数据线dout:outstd_logic_vector(7downto0);模块接收

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。