首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术资料 > 嵌入式系统 > 实现FPGA与PC的串行通信
实现FPGA与PC的串行通信
类别:嵌入式系统  
 
        

    

    

    本文主要介绍了基于FPGA技术实现与PC串行通信的过程,给出了各个模块的具体实现方法,分析了实现结果,验证了串行通信的正确性。

    

    引言

    

    串行通信即串行数据传输,实现FPGA与PC的串行通信在实际中,特别是在FPGA的调试中有着很重要的应用。调试过程一般是先进行软件编程仿真,然后将程序下载到芯片中验证设计的正确性,目前还没有更好的工具可以在下载后实时地对FPGA的工作情况和数据进行分析。通过串行通信,可以向FPGA发控制命令让其执行相应的操作,同时把需要的数据通过串口发到PC上进行相应的数据处理和分析,以此来判断FPGA是否按设计要求工作。这样给FPGA的调试带来了很大方便,在不需要DSP等其他额外的硬件条件下,只通过串口就可以完成对FPGA的调试。本文采用QuartusⅡ3.0开发平台,使用Altera公司的FPGA,设计实现了与PC的串行通信。

    

    

    

    图1 总体框图

    

    

    

    图2 发送接收流程图

    

    

    

    图3 状态机变换

    

    总体设计

    

    主要设计思想:PC向串口发送命令,FPGA通过判断接收的控制字执行相应的操作,总体框图如图1所示。

    设计包括三部分:1、通过向I/O端口发送高低电平以达到控制外部硬件的要求。2、完成芯片内部逻辑的变化。3、将需要的数据先存起来(一般采用内部或外部FIFO),然后通过串口将数据发送到PC,PC将接收的数据进行处理和分析。串口采用标准的RS-232协议,主要参数的选择:波特率28800bit/s、8位有效位、无奇偶校验位、1位停止位。

    

    FPGA中各模块的实现

    

    分频模块

    

    设计中需要将3.6864MHz的时钟进行64分频变为57600 波特作为其他模块的时钟基准。具体实现时采用一个6位计数器,将计数器的溢出作为时钟的输出即可实现整数分频。

    

    发送接收模块

    

    此模块是整个设计的核心部分。设计流程如图2所示。

    

    在串行通信中,无论发送或接收,都必须有时钟脉冲信号对所传送的数据进行定位和同步控制,设计中采用的时钟频率是波特率的两倍(57600 bit/s)。接收过程:初始状态是等待状态,当检测到0时进入检验状态,在检验状态下如果再检测到0则进入接收数据状态,当接收完8位比特数后判断是否有停止位,如果有则结束接收过程重新进入等待状态。发送过程:初始状态是等待状态,当接收到开始发送的信号则进入发送过程,先发送起始位,再发送8位比特数,每位宽度为2个周期,当一个字节发送完毕后发送一个停止位,发送结束,重新回到等待状态。

    

    控制模块

    

    主要实现的功能是:判断从PC接收的数据,根据预先设计的逻辑进行相应的状态转换。例如:给端口预置一个状态;送开始发送的标志位,送准备发送的数据;给DDS送配置信号,控制FIFO的读写。程序中状态机设计如图3所示。

    

    设计中需要注意的问题

    

    波特率的选择对于串口通信是很重要的,波特率不应太大,这样数据才会更稳定。整个发送接收过程中起始位的判别和发送是数据传输的前提。为了避免误码的产生,在FPGA设计中的串行输入和输出端口都应该加上一个数据锁存器。

    

    

    

    图4 发送接收过程

    

    

    

    图5 发送控制字过程

    

    

    

    图6 从FIFO读数据的过程

    

    仿真结果

    

    基本的发送接收

    

    如图4所示,clk是时钟信号(57600 bit/s);start_xmit是开始发送标志位;sin是串行输入;datain是并行输出;read_bit是接收结束标志位;xmit_bit是发送结束标志位;sout是串行输出;dataout是并行输出;rcv_bit 是接收位数寄存器。发送接收模块主要完成把从sin端口接收的串行数据变为并行数据送给dataout;把并行数据datain变成串行数据通过sout端口串行发送。

    接收:判断接收的串行数据sin是否是连续的两个0,如果是则进入接收过程;每两个时钟周期接收1个比特的数据,依次接收到01101010,如果接收到停止位表明这个接收过程结束read_bit=1。根据串行通信协议,数据是按照先低位,后高位的顺序发送的,所以实际接收的是01010110。发送:待发送的并行数据为01010110,当start_xmit=1发送有效,进入发送过程;首先发送两个起始位0,保证长度为两个时钟周期,然后依次发送01101010,每两个时钟周期发送1比特,最后发送停止位,发送过程结束xmit_bit为1。

    

    发送控制字

    

    图5中clk是时钟信号;a是PC发来的16进制的控制字,也就是图4中的并行输出dataout; ma1cnt、ma2cnt、ma3cnt是三个寄存器;clrr是系统清零信号;ddsclr是DDS配置信号;fifo_clk,fifo_rd,fifo_wr,ram_rst是FIFO的时钟、读、写、清零信号;start_xmit是发送开始标志位;b是准备发送的数据。当接收a为1时,fifo_wr置1;当a为18时,把ma1cnt的值送到b。其他的操作类似,主要是端口的置位,FIFO读写状态的控制。

    从FIFO中读写数据

    图6中SER_CLOCK是系统时钟3.6864MHz,sa是分频后的频率57600bit/s;SIN是串行输入;data是准备输出的数据;SOUT是串行输出;fifoclk、fifowr、fiford是FIFO的读时钟、写、读使能。读过程:读使能有效,先产生6个读时钟,但是不往SOUT发送数据,因为FIFO的前6个周期不是有效数据。然后产生一个读时钟,将FIFO的数据送到data,按照通信协议通过SOUT发送出去,发送结束再产生一个读时钟,读取FIFO的数据,进行下一次串行输出。

    

    结语

    

    随着可编程器件的不断发展和广泛应用,FPGA与外围设备的通信也越来越多。本文介绍的串行通信的实现具有可复制性,只需改变系统时钟频率和控制模块就可以在其他场合下使用。

    

    参考文献

    

    1 褚振勇,瓮木云著.《FPGA的设计与应用》.西安电子科技大学出版社,2002.7

    

    2 Uwe Meyer-Baese著.刘凌,胡永生译.《数字信号处理的FPGA实现》.清华大学出版社,2003.1

    

    3 朱明程编. FPGA原理及应用设计.电子工业出版社,2001.10

    

    4 侯伯亭,顾新编.VHDL硬件描述语言及数字逻辑电路设计.西安电子科技大学出版社

    

    来源:电子设计应用

    

    作者:中国人民解放军装备指挥技术学院 陆海峰

    

    

 
我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术资料
·AT89C51单片机在数控..  2008-1-17
·AT89C51单片机在数控..  2008-1-17
·嵌入式电脑控制系统在纺织行..  2008-1-17
·基于嵌入式技术的网络视频监..  2008-1-2
·威达电P4嵌入式平台NOV..  2007-12-27
·NORCO硬件平台在大型国..  2007-12-27
·UGM 嵌入式影像模組新標準  2007-12-20
·嵌入式系统设计的核心技术  2007-12-17
·发展基于嵌入式计算机的控制..  2007-12-10
·基于RT-Linux的嵌入..  2007-11-15
·嵌入式实时操作系统TRON..  2007-11-12
·基于RT-Linux的嵌入..  2007-11-1
·Windows 9X内核模..  2007-8-9
·一种新型编码芯片及其驱动程..  2007-8-9
·把网络引进嵌入式控制系统  2007-8-9
·Windows NT4.0..  2007-7-29
·嵌入式系统的开发利器─Wi..  2007-7-29
·基于驱动程序的协议栈设计  2007-7-29
·具有DSP功能的16位微控..  2007-8-9
·微控制器的抗干扰软件编程方法  2007-8-9
 
 热门IC
HM1-7643A-5  UPD424400-70  74HCT4059D  KSC1008YTA  28F020  F9410  3572AM  SN74199N  MACH130  STV0119A  AN2050FB  UPB6302B-080  SN75LVDS386DGG  THS4021ID  INT200  IT8708F-A  N82S135D  BA7258AS  CD4070BCM  HD64646FS  DAC8531IDRBT  AM27128A-2DC  T74LS273B1  54LS273J  AD707SQ  UPD26411GZ-803-KJH  PCF50606HN  AD7524CQ  MAX206EAG  SN74F21D  KUFX780-10  STK441  MRF175LU  AD976AARS  DP8462N-3  F5E1  XC5206-6PC84C  XC3190A-2TQ176C  CS16312EN  SN75107BD  ADG704BRMZ  TC620CCOA  M63050FP  MB8464C-10LL  MAX812MEUS-T  MAX919ESA  TLC2274MD  MSP430F112IPW  NTQD6866R2  XC4085XLA-09HQ208C