您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于SOPC-的嵌入式高速串口设计
基于SOPC的嵌入式高速串口设计张慧敏,何伟(重庆大学通信工程学院,重庆400030)摘要:本文介绍一种基于SOPC的高速串口通信的实现方案,系统以Altera公司的NiosII嵌入式软核处理器为核心,采用RS485总线标准来传输数据,利用用户自定义VHDL模块实现高速串口数据通信。运用基于嵌入式SOPC(可编程逻辑芯片片上系统)的高速串口总线及其设计方法,满足实时控制要求,简化电路结构,提高传输速率和可靠性,增强与现有系统的兼容能力。关键词:高速串口数据通信NiosIIAvalon总线DesignofHighSpeedSerialPortBasedonSOPCZhangHuimin,HeWei(CollegeofCommunication,UniversityofChongQing,China,400030)Abstract:ThistextintroducesaschemeofimplementofthehighspeedserialportcommunicationbaseonSOPC.ThesystemusesembeddedprocessorNiosⅡasthekernel,transmitsdataaccordingtotheRS485Bus,makesuseofCustomLogicModuletoimplementhighspeedserialportcommunication.Thedesignmethodofhigh-speedserialbusbasedonembeddedSOPC(SystemonProgrammableChip)inreal-timesystemisanalyzedindetail,whichsatisfiestherequirementofreal-timecapabilityandsimplecircuitstructure,improvetransmissionspeedandreliability,andstrengthenthecompatibilitywithpresentsystems.KeyWord:HighSpeedSerialPortDataCommunicationNiosⅡAvalonBus高速串口数据通信在现代通信系统和控制系统中应用日益广泛,较之传统的基于RS232传输标准,具有更高的可靠性,更强的兼容性,更快的传输速率。由于不同的串口数据通信采用的方式各不相同,有异步模式、同步模式,而且数据传输格式也各不相同,有的采用传统SCI传输格式,有的采用自定义数据格式,有的采用帧长度固定方式,有的采用帧长度可变方式等,而且每一帧的数据长度可以从10bit到几千bit,所以高速串口的设计要求不同其实现方案也不同。本文重点介绍基于SOPC的高速异步串口通信系统的设计方法。【1】【2】目前的嵌入式处理器种类繁多。Altera公司的NiosII【3】处理器是用于可编程逻辑器件的可配置的软核处理器,与Altera的FPGA组合,具有很高的性能价格比。本系统采用NiosIIStratix嵌入式系统开发板,实现了一个嵌入式高速串口数据通信系统。1总体设计及系统架构高速串口数据通信系统采用双线平衡驱动,半双工同步传输或单向广播同步传输,线路传输速率为5Mbits/s,总线连接关系如图1所示:图1串行控制总线连接图系统中主机模块能调度总线上的数据帧收发,保持数据通信的实时性,数据传输时由主机模块发送数据帧。数据帧若为半双工同步传输帧,则数据帧只对其中一个外围模块有效,同时当外围模块收到数据后,应发送相应的应答信号;数据帧若为单向广播同步传输帧,则数据发向所有外围模块,而不需要任何应答信号。系统以固定的数据帧格式传送数据,不同于传统的SCI格式,帧长为7字节(共56bits),由2字节引导序列、1字节地址,3字节数据、1字节帧结束序列组成,如表1所示。帧的发送顺序:字节内低位先发,多字节内低字节先发。表1数据帧格式2字节引导序列E73E1字节地址3字节数据1字节帧结束序列E3主控模块控制模块采集模块FPGA软核CPU串口通信模块CPUFPGA软核CPU串口通信模块控制模块控制机构无论是主机模块还是外围模块均采用相同的串口通信设计,串口通信设计包含两个主要部分:通信接口部分和管理控制部分。通信接口部分主要完成数据帧结构的封装和解封装,并通过帧头的分析识别进行时隙定位,同时能让系统内的每一终端实现多机共享通信资源的通信机制,该模块由VHDL语言实现。管理控制部分由NiosII软核实现的,为了能在串行通信方式上实现时分复用,并进而实现多设备同时通信,本系统设计出一套完整而独特的控制帧格式,并通过这些帧格式控制实现建立连接,撤销连接和相应管理。因此,利用NiosII的特点,形成特殊的帧头判决、同步时钟提取、控制信息的判断、收发模式变换,这些都依赖专用模块的实施并靠高速执行速度来适应多终端下的高传输速率。鉴于以上系统架构和设计要求,串口通信采用模块化设计方法和思路,如图2所示:图2设计模块图Altera的NiosII软核CPU开发工具SOPCBuilder【4】提供简洁的操作方式,将用户的数字电路模块封装成标准的NiosII软核外设模块,这使得NiosII软核可以很容易地与用户逻辑结合,构成功能更加强大的SOC系统。在高速串口数据通信的设计中,既需要一个高速的处理器作为系统的控制管理核心,又有大量用户自定义的数字电路功能模块需要在FPGA芯片中实现,因此,采用Altera的FPGA芯片和NiosII软核CPU作为高速串口数据通信的硬件平台。2通信接口模块设计通信接口模块设计采用VHDL语言设计,由两部分组成:数据帧发送电路和数据帧接收电路。数据帧发送电路将NiosII要发送的数据、地址按照数据帧格式进行组帧,然后同步传输到总线上,这一部分设计的关键是NiosII发出的数据经过avalon总线后必须仍为并行数据。这就需要将并行数据转换为串行数据,同时还需考虑与要发送的时钟合拍,数据的发送输率为5Mbits/s,而FPGA的工通信接口模块用户自定义avalon总线接入模块NiosIICPU作时钟fclk为25MHz,所以对fclk进行5分频,获得ftxd为5MHz,当有数据要发送时,每来一个时钟即ftxd的上升沿到来时传送数据,先发送帧头2字节引导序列,即“1110011100111110”,然后发送串行数据。由于NiosII的内部数据宽度通常是32位,故将1字节地址和3字节数据由软件将其合并成一组32位宽度的数据,合并时地址在低位,数据在高位,这样才满足字节内低位先发,多字节内低字节先发,然后将要发送的32位数据缓存在一个32位宽度的矢量区间,引导序列结束后从低位到高位依次发送数据,即data[0]、data[1]……data[31],最后发送结束标志字节“1110011”,发送结束。发送电路将总线控制权转给接收电路。接收电路的设计重点考虑的问题是如何准确判断到数据帧头,然后解析地址,数据的速率为5Mbit/s,FPGA的工作时钟fclk为25MHz,参考RS232串口通信的设计思想【5】,用高倍时钟对接收的数据进行采样,即每5个fclk采样一个bit,此处可以先设计一个5进制计数器,每一次计数,保存采集的数据,在第2、3、4次采样时,若所采到的值相同,则判断这个bit为当前的采样值。在判断2字节引导序列时采用状态机设计法和序列检测器的设计思想,判断第1个bit是否为‘0’,如果是‘0’则继续判断下一bit是否为‘1’,如果是‘1’则一直等待在第1状态直到判断到‘0’才跳转,判断状态机如图3所示:‘0’‘1’‘1’‘1’‘1’S0S1S2S3S4‘0’‘0’‘0’‘0’‘1’S0S0S0S0图3判断帧头状态机图3用户定义的Avalon总线【6】模块设计Altera公司的NiosII是基于RISC技术的通用嵌入式处理器芯片软内核,它特别为可编程逻辑进行了优化设计,也为可编程单芯片系统设计了一套综合解决方案。Avalon总线是一种高效的总线结构,主要用于连接片内处理器NiosII和各种外设IPcore,以构成可编程单芯片上系统(SOPC)。数据帧发送电路和数据帧接收电路通过Avalon总线和NiosII处理器连接在一起,Avalon总线规范定义了主端口和从端口之间通过Avalon总线模块传输数据所需的信号和时序。设计时通信模块采用从端口传输模式,数据帧发送电路采用具有外设控制等待周期的从端口写传输模式,发送电路除串行数据输出线外,还必须提供符合Avalon总线传输要求的信号线,即Address、Writedata(31..0)、Write_n、Chipselect、Waitrequest,与NiosII工作同步的时钟信号clk,当cpu要发送数据时,将Address、Write_n信号有效,同时将要发送的32位数据装载到Writedata(31..0)上,而同步时钟clk一直处于工作状态,当clk上升沿判断到以上信号有效后,Avalon总线对Address译码,然后置Chipselect有效,而发送电路VHDL程序设计时必须判断Address、Chipselect是否有效,如果有效,则在下一个clk上升沿前将Waitrequest置为无效,数据传送电路就从Avalon总线获取Writedata数据,如果Waitrequest有效,则这个总线周期就成为等待周期,其他信号以及数据信号保持不变,但外设必须保证不会使Waitrequest无限期地保持有效,这样会使得一个从外设能够将Avalon总线永久“挂起”,其连接关系和时序关系如图4所示。同理,数据接收电路采用具有外设控制等待周期的从端口读传输模式,可以将串转并后的数据送入到NiosII中进行处理。图4具有外设控制等待周期的从端口写传输信号连接和时序4实验测试基于NiosII的C语言设计,可以采用单线程模式,也可采用由Altera公司提供的uc/OSII多任务操作系统。这里对接收和发送的数据处理主要采用以下指令实现,“IORD(base,1)”读指令,其中base就是需要读取的外设基地址,数据接收电路作为外设在建立SOPCBuilder时定义的名称为“user_uart_rxd”,则base应改为“user_uart_rxd_base”,而第2个参数‘1’表示其偏移地址;“IOWR(base,1,data)”写指令,其中base就是需要写入的外设基地址,数据发送电路作为外设在建立SOPCBuilder时定义的名称为“user_uart_txd”,则base应改为“user_uart_txd_base”,而第2个参数‘1’表示其偏移地址,第3个参数data是要发送的数据。实验测试通过两块NiosIIStratix开发板上实现,采用Altera公司的QuartusII设计软件和NiosII开发工具,由sopcbuiler工具生成的32位NiosII系统如图5所示。图5由sopcbuiler工具生成的32位NiosII系统计算机仿真波形如图6、图7所示:图6数据帧接收电路时序仿真波形图7数据帧发送电路时序仿真波形实验测试通过两块NiosIIStratix开发板通信实现。测试结果通信可靠,没有出现丢帧或错误帧出现,用数字示波器可以观察到数据通信波形,测试同步数据为5Mbit/s。5结论运用此5Mbit/s的UART进行通信,效果十分稳定、可靠性高,传输速度快,采用RS485接口模式传输距离远,同时不易被干扰以至出现误码、丢数据、丢帧等情况。因此采用sopc嵌入式系统设计技术可以实现系统设计的小型化、集成化和高可靠性,还可以减少风险、降低成本、缩短开发周期。参考文献:[1]魏毅,柯赓.基于NIOS软核CPU技术的多路电话计费系统的设计与实现.《现代电子技术》.2005年第9期[2]王彩云.嵌入式NIOS微处理器在FPGA中的开发应用.电子设计应用.2003.8[3]ALTERA.Corp.“NiosHardwareDevelopmentTutor
本文标题:基于SOPC-的嵌入式高速串口设计
链接地址:https://www.777doc.com/doc-1804921 .html