《DSP与FPGA实时信号处理系统介绍.docx》由会员分享,可在线阅读,更多相关《DSP与FPGA实时信号处理系统介绍.docx(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DSP与FPGA实时信号处理系统介绍实时信号处理系统 摘要:简要表达了常用的信号处理系统的类型与处理机结构,介绍了正逐步得到广泛应用的处理机结构,在此基础上提出了一种实时信号处理的线性流水阵列,并举例说明了该结构的具体实现,最后分析说明了此结构的优越性。 关键词:实时信号处理 处理机结构 线性流水阵列 实时信号处理系统要求必须具有处理大数据量的能力,以保证系统的实时性;其次对系统的体积、功耗、稳固性等也有较严格的要求。实时信号处理算法中经常用到对图象的求和、求差运算,二维梯度运算,图象分割及区域特点提取等不同层次、不同种类的处理。其中有的运算本身结构比较简单,然而数据量大,运算速度要求高;有些
2、处理对速度并没有专门的要求,但运算方式和操纵结构比较复杂,难以用纯硬件实现。因此,实时信号处理系统是对运算速度要求高、运算种类多的综合性信息处理系统。 信号处理系统的类型与常用处理机结构 依照信号处理系统在构成、处理能力以及运算问题到硬件结构映射方法的不同,将现代信号处理系统分为三大类: 指令集结构系统。在由各种微处理器、处理器或专用指令集处理器等组成的信号处理系统中,都需要通过系统中的处理器所提供的指令系统或微代码来描述各种算法,并在指令部件的操纵下完成对各种可运算问题的求解。 硬连线结构系统。要紧是指由专用集成电路构成的系统,其差不多特点是功能固定、通常用于完成特定的算法,这种系统适合于实
3、现功能固定和数据结构明确的运算问题。不足之处要紧在于:设计周期长、成本高,且没有可编程性,可扩展性差。 可重构系统。差不多特点是系统中有一个或多个可重构器件如,可重构处理器之间或可重构处理器与结构处理器之间通过互连结构构成一个完整的运算系统。 从系统信号处理系统的构成方式来看,常用的处理机结构有下面几种:单指令流单数据流、单指令流多数据流、多指令流多数据流。 结构通常由一个处理器和一个存贮器组成,它通过执行单一的指令流对单一的数据流进行操作,指令按顺序读取,数据在每一时刻也只能读取一个。弱点是单片处理器处理能力有限,同时,这种结构也没有发挥数据处理中的并行性潜力,因此在实时系统或高速系统中,专
4、门少采纳结构。 结构系统由一个操纵器、多个处理器、多个存贮模块和一个互连网络组成。所有活动的处理器在同一时刻执行同一条指令,但每个处理器执行这条指令时所用的数据是从它本身的储备模块中读取的。对操作种类多的算法,当要求存取全局数据或关于不同的数据要求做不同的处理时,它是无法独立胜任的。另外, 一样都要求有较多的处理单元和极高的吞吐率,假如系统中没有足够多的适合 处理的任务,采纳 是不合算的。 结构确实是通常所指的多处理机,典型的系统由多台处理机、多个储备模块和一个互连网络组成,每台处理机执行自己的指令,操作数也是各取各的。结构中每个处理器都能够单独编程,因而这种结构的可编程能力是最强的。但由于要
5、用大量的硬件资源解决可编程问题,硬件利用率不高。 结构 随着大规模可编程器件的进展,采纳结构的信号处理系统显示出了其优越性,正逐步得到重视。与通用集成电路相比,芯片具有体积小、重量轻、功耗低、可靠性高等几个方面的优势,而且在大批量应用时,可降低成本。 现场可编程门阵列是在专用的基础上进展出来的,它克服了专用不够灵活的缺点。与其他中小规模集成电路相比,其优点要紧在于它有专门强的灵活性,即其内部的具体逻辑功能能够依照需要配置,对电路的修改和爱护专门方便。目前,的容量差不多跨过了百万门级,使得成为解决系统级设计的重要选择方案之一。 结构最大的特点是结构灵活,有较强的通用性,适于模块化设计,从而能够提
6、高算法效率;同时其开发周期较短,系统易于爱护和扩展,适合于实时信号处理。 实时信号处理系统中,低层的信号预处理算法处理的数据量大,对处理速度的要求高,但运算结构相对比较简单,适于用进行硬件实现,如此能同时兼顾速度及灵活性。高层处理算法的特点是所处理的数据量较低层算法少,但算法的操纵结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的芯片来实现。 线性流水阵列结构 在我们的工作中,设计并实现了一种实时信号处理结构。它采纳模块化设计和线性流水阵列结构(图)。 这种线性流水阵列结构具有如下特点: 接口简单。各处理单元之间采纳统一的外部接口。 易于扩充和爱护。各个的内部结构完全相同,而且外部接口统
7、一,因此系统专门容易依照需要进行硬件的配置和扩充。当某个模块显现故障时,也易于更换。 处理模块的规范结构能够支持多种处理模式,能够适应不同的处理算法。 每个的核心由芯片和可重构器件组成,另外还包括一些外围的辅助电路,如储备器、先进先出器件及 等图。可重构器件电路与处理器相连,利用处理器强大的功能实现单元电路内部和各个单元之间的通信。从的角度来看,可重构器件相当于它的宏功能协处理器。 中的其他电路辅助核心电路进行工作。和各自带有,用于存放处理过程所需要的数据及中间结果。 中储备了的执行程序和的配置数据。先进先出器件那么用于实现信号处理中常用到的一些操作,如延时线、顺序储备等。每个单独做成一块,各
8、级之间通过插座与底板相连。底板的结构专门简单,要紧由几个串连的插座构成,其作用是向各个提供通信通道和电源供应。能够依照需要安排底板上插座的个数,组成多级线性阵列结构。这种模块化设计的突出优点在于,它使得对系统的功能扩充和爱护变得专门简单。需要时,只要插上或更换电路板,就能够实现系统的扩展和故障的排除。每一级中的都有通信端口与前级和后级电路板相连,能够专门方便地操纵和和谐它们之间的工作。 应用实例 我们应用上述线性流水阵列结构实现了一个实时目标检测系统,该系统的任务要紧是接收摄像头输出的灰度图象,经预处理、编码、直线拟合和目标识别后,输出结果到机显示。在那个任务中,预处理模块包括抽样、卷积和编码
9、等步骤,属于低层的处理,其运算数据量大,但运算结构较规那么,适于用进行纯硬件实现;而直线拟合及目标识别等高层图象处理算法,所处理的数据量相对较少,但要用到多种数据结构,其操纵也复杂得多,我们用编程来实现。 重构处理模块采纳的是公司的系列芯片。这是一种基于的现场可编程门阵列。表给出了 系列的一些参数。表1 XC5200系列FPGA的一些参数器件XC5204XC5206XC5210XC5215逻辑单元48078412961936最大逻辑门6000100001600023000多功能块1012141418182222CLB120196324484触发器48078412961936I/O1241481
10、96244 系列逻辑功能的实现由内部规那么排列的逻辑单元阵列来完成,它是的要紧部分。的核心是可重构逻辑块,四周是一些输入输出块。和之间通过片内的布线资源相连接。由配置代码驱动,和的具体逻辑功能及它们的互联关系由配置数据决定。整个模块的设计实现在公司的 开发平台上完成。该系统支持设计输入、逻辑仿真、设计实现设计综合和时序仿真等系统开发全过程。 在选用芯片时,要紧应考虑性能能否满足快速判读算法的要求,具体说确实是要求选择那些指令周期短、数据吞吐率高、通信能力强、指令集功能完备的处理器,同时也要兼顾功耗和开发支持环境等因素。表列出了一些常用微处理器的性能参数。 我们选择的是应用广泛、性价比较高的芯片
11、。它是美国公司推出的为满足并行处理需求的位浮点。要紧特性如下:表2 常用微处理器对比表处理器类型DSPMotorola)ADSPTMS3209600256156210202101C30C40C50字长/bit32163216323216指令周期/ns505050603325501024浮点FFT时刻/ms1.042.330.962.072.361.933.42 外部时钟,内部时钟,所有指令均单周期完成,处理器内部采纳高度并行机制,可同时进行多达项各类操作。 两套相同的外部数据、地址总线,支持局部储备器和全局共享储备器。 个高速并行通信口,采纳异步传输方式,最大速率可达。通过令牌传递可灵活实现数
12、据双向传输,这种结构专门适合之间的互连。 个通道,每个通道的最大速率可达。内部总线与的地址、数据、指令总线完全分开,躲开了总线使用上的瓶颈。 从结构和功能上看,专门适合与可重构器件互相配合起来构成高速、高精度的实时信息处理系统,并完全能够胜任图像信息的实时处理任务;此外,的开发系统也比较完备,支持语言和汇编语言编程,能够方便地进行算法移植和软硬件的协同设计。 衡量系统的整体性能不仅要看所使用的器件和所能完成的功能,还要看器件之间采纳如何样的互连结构。能够完成模块级的任务,起到的协处理器的作用。它的可编程性使它既具有专用集成电路的速度,又具有专门高的灵活性。内部结构的要紧优势是:所有指令的执行时
13、刻差不多上单周期,指令采纳流水线,内部的数据、地址、指令及总线分开,有较多的寄存器。这些特点使它有较高的处理速度。具有硬件的高速性,而具有软件的灵活性,从器件上考察,能够满足处理复杂算法的要求。同时,的个通信口和个通道使其能够在不被中断的情形下比较镇定地应对与外界大量的数据交换。 从内部互连来看,使用了专用的通信口完成与的互连,能够保证在任何情形下与的数据通道的畅通。另外,和各自都有输入端口,使得系统的处理结构多样化。比如,能够作为处理流程中的一个模块,独立完成某项功能,也能够作为的协处理器,通过的调用来完成特定的子函数。底板将互连性延伸到之间,使得多个电路板能够组成多处理机系统。前级的既能够
14、与下一级的通信,也能够将数据发送到下一级的。 综上所述,本文提出的基于的线性流水阵列结构,为设计中如何处理软硬件的关系提供了一个较好的解决方案。同时,该系统具有灵活的处理结构,对不同结构的算法都有较强的适应能力,专门适合实时信号处理任务。在测控系统中用IP核实现D/A转换 摘要:采纳数字化技术、在测控系统中用IP核实现D/A转换,同时在1片可编程逻辑器件中实现。它不受温度的阻碍,既可保持高辨论率,又可降低对电路精度和稳固度的要求,并减少元件的数量。 关键词:IP D/A VHDL 可编程逻辑器件在各类电子系统中,数字电路所占比重越来越大。这要紧是因为数字电路相关于模拟电路有一些突出的优点,例如
15、:*数字电路中的有源器件工作在饱和区与截止区,工作状态稳固;*数字电路处理的是二值信号,易于储备和再生;*数字电路是由大量相同的差不多单元,如门、触发器等所组成,易于大规模集成,易于自动化设计工具的应用等。由于数字电路的以上特点,再加上数字运算机和数字信号处理技术的迅速进展,使得数字电路从集成规模、应用范畴及设计自动化程度等方面大大超过了模拟电路,越来越多的由模拟电路实现的功能转由数字电路实现,进入了电子系统数字化的时代。在测控系统采纳数字化技术,将原先由模拟电路实现的D/A由数字电路实现。1 IP核介绍IP知识产权核将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器、SDRAM操纵器
16、、PCI接口等设计成可修改参数的模块。IP核的重用是设计人员赢得迅速上市时刻的要紧策略。随着CPLD/FPGA的规模越来越大,设计越来越复杂IC的复杂度以每年55%的速率递增,而设计能力每年仅提高21%,设计者的要紧任务是在规定的时刻周期内完成复杂的设计。调用IP核能幸免重复劳动,大大减轻工程师的负担,因此使用IP核是一个进展趋势。IP核包括硬IP与软IP。可配置IP是参数化后的可重定目标IP,其优点是能够对功能加以裁剪,以符合特定的应用。这些参数包括总线宽度、储备器容量、使能或禁止功能块。硬IP最大的优点是确保性能,如速度、功耗等。然而,硬IP难以转移到新工艺或集成到新结构中,是不可重配置的
17、。软IP是以综合形式交付的,因而必须在目标工艺中实现,并由系统设计者验证。其优点是源代码灵活,可重定目标于多种制作工艺,在新功能级中重新配置。只是目前大多数库是收费的,但也能够从网上下载一些免费的IP核。2 用IP核实现的D/A转换器的功能及特点数字到模拟转换器DACs将一个二进制数转换为与之对应的电压值,目前常用的D/A转换器差不多上由电阻或电容加权网络、受码元操纵的开关和基准电压或电流源组成。当D/A转换器需要转换的信号每次取样字长专门长时,对这些电路的精度要求专门高,同时还必须在整个温度范畴和整个使用寿命期间内保持电路参数的稳固。例如,一个16位的D/A转换器,其MSB的精度必须在1/2
18、 16以内,这是专门困难的。因此,需寻求一种中保持高辨论率又可降低对电路精度和稳固度要求的方法。可综合的Delta-Sigma DAC术语Delta-Sigma分别指算术差与和,即-DAC,是Xilinx公司提供的免费IP核,可从网上下载得到。Delta-Sigma DAC使用数字技术,因而它不温度的阻碍,同时能在一片可编程逻辑器件中实现。幸免在D/A转换器中使用匹配电阻,不仅能更廉价,而且,其转换是线性的。Delta-Sigma DAC实际上是高速单个位的DAC,用数字反馈技术,在输出端产生一串脉冲。脉冲串中信号为高电平的时刻部分与二进制输入成比例,当那个脉冲串通过一个模拟低通滤波器后就得到
19、一个模拟输出信号。图1是一个典型的可编程逻辑器件实现的DAC的顶层电路图,输入信号有复位信号、时钟信号以及二进制数据总线。输出DACoutDrvr驱动一个外部的低通滤波器Vout能从0VVcco。那个地点Vcco是FPGA I/O块的供电电压。输入/输出详细说明如表1所列。表1 输入输出描述表信 号方 向描 述DACOUT输出驱动外部低通滤波器的脉冲串通过一个输出驱动器DACIN输入数字输入总线,值必须设置成钟的正沿clk输入正沿有效Reset输入复位信号初始化SigmaLatch和输出D触发器 DAC的二进制输入是一个无符号数。0”代表最低电压,输出的模拟电压也只有正的。0”输入产生0V输出
20、,输入端全1”,那么输出近似达到Vcco。图2是Delta-Sigma DAC的原理框图,二进制输入的位宽是可变的。为简单起见,电路原理图描述了一个8位二进制输入的DAC。在那个器件中,二进制加法器用来产生和,也用来产生差。尽管Delta Adder的输入是无符号数,两个加法器的输出却差不多上有符号数。Delta Adder运算DAC输入和当前DAC输出的差,并用一个二进制数表示。因为DAC的输出是一个单个的位,因此它不是1确实是0。如图2所示,当输入加上由Sigma Latch的输出的两个拷贝与0构成的10位数,就产生差值,这也补偿了DACIN是无符号数的事实。Sigma Adder将它原先
21、的输出储存在Sigma Latch中与当前的Delta Adder的输出相加。图1中输出电压与输入电压的关系为VOUT=(DACIN/(2MSBI+1)VCCO式中单位为V。例如,关于一个8位DACMSBI=7,最后的输出是如此:DACIN输入是0,那么输出也是0;DACIN输入是十六进制数FF时,输出值为最大(255/256)Vcco。阻容低通滤波器适合多数应用需要,一个简单的阻容低通滤波器就能工作得专门好。Vs的定义是:DAC输入增加或减少时,在Vout端产生变化的绝对值。对一个8位DAC,Vs等于1/256Vcco。Vout能够产生在0VVcco之间可变的电压,具体的值由DACIN的位宽
22、和输入的数值决定。Delta-Sigma DAC适合需要相对高精度的低频应用。在这种应用中,电压可不能专门快地变化,因此,RC的时刻常数能够专门大,以减小噪声。这种DAC最广泛的应用确实是产生通常直流电压。这包括电压操纵振荡器、电压操纵运算放大器、I/O参数电压、可编程电压源、波形发生器正弦、三角等、A/D转换中的参考电压等。Delta-Sigma DAC是一个例子,说明高速可编程逻辑器件能用于混合信号系统,以减少元件的数量。可编程逻辑器件的速度和密度使它们成为模拟信号产生和处理方面理想的元件。3 用VHDL语言编写的程序library ieee;use ieeestd_logic_1164.
23、all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dac_ds isport(reset :in std_logic;clk :in std_logic;din :in std_logic_vector(7 downto 0);-Signed integerdout :out std_logic;);end dac_ds;architecture arch_dac_ds of dac_ds issignal error :std_logic_vector(9 downto 0);-Error accu
24、mulator is 2 bits largerconstant zeros:std_logic_vector(7 downto 0):=(others=0);beginprocess(reset,clk,din)variable val :std_logic_vector(9 downto 0);beginif reset=1thenerror0);dout=0;elsif clkevent and clk=1 then-val:=din+error;din is sign extended to nbits+2val:=(din(dinhigh)&din(dinhigh)&din)+err
25、or;if val(valhigh)=0thendout=1;error=val+(11& zeros);elsedout=0;error=val+(01&zeros);end if;end if;end process;end arch_dac_ds;4 芯片的选择和配置选择MAX7000S系列可编程逻辑器件,编译后由MAX+PLUS II软件自动配置进EMP7032SLC44芯片,将生成的目标文件通过编程电缆对器件进行编程。将该IP核实现的D/A转换器用于新型智能电阻炉温度操纵仪中,因为调剂炉温的信号不要求变化专门快,因此DAC的输入二进制信号为缓变信号。关于这种低频应用,能够将RC时刻常
26、数取得较大,以减小噪声。如此,可综合的VHDL语言Delta-Sigma DAC模块配置进EMP7032芯片后,达到了预期的成效。 基于FPGA的USB2.0操纵器设计摘要:介绍了一种用VHDL设计USB2.0功能操纵器的方法,详术了其原理和设计思想,并在FPGA上予以实现。关键词:USB VHDL FPGA在视频储备和图像宽带领域中,经常遇到实时高速数据传输的要求。2000年4月,由Intel、Microsoft、NEC、Compaq、Lucent、Phillips等公司共同制订的USB2.0Universal Serial Bus传输协议,其速度远远超过了目前使用IEEE1394接口进行视
27、频传输的400Mbps,达到了480Mbps;而且具有即插即用的PnPPlug And Play、可进行菊花链式的级联通过USB HUB进行外围扩展、可串连多达127个USB设备等优点。应用该协议可支持实时语音、音频和视频数据的传输。本文针对高速数据传输需求,依照USB2.0的协议规范,利用VHDL语言实现符合该协议的功能操纵器,在视频压解系统中使数据在PC与外设之间高速传输。如图1所示由视频A/D采集的原始视频数据,在Philips公司生产的TM1300专用视频处理器中压缩后,通过USB操纵器送至PC机。PC机的整个通过USB操纵器传输到TM1300,解压后发送至视频D/A。1 操纵器结构原
28、理USB2.0操纵器结构框图如图2所示。操纵器要紧由两个部分组成,其一为与外设的接口,另一个是内部协议层逻辑PLProtocol Layer。内部储备器仲裁器实现对内部DMA和外部总线对储备器访问之间的仲裁。PL那么实现USB的数据I/O和操纵。接口有三种:一种是与微操纵器之间的功能接口;一种是与单口同步静态储备器SSRAM之间的接口;另外一种是与物理层之间的接口。那个地点符合UTMIUSB Transceiver Macrocell Interface规范定义。2 操纵器实现操纵器接口的信号框图如图3所示。储备器采纳标准的单口SRAM,其信号接口由32位数据线SRAM_DATA、15位地址线
29、SRAM_ADDR及读写信号SRAM_WE和SRAM_RD组成,系统所需SRAM的容量为2 1532bit=128KB。而与微操纵器之间的接口信号包括32位数据线DATA、18位地址线ADDR以及DMA要求和响应信号DMA_REQ和DMA_ACK。由于要支持到128KB,需要17位地址线,另外还需要一根地址线来选通SSRAM和USB操纵器内部的寄存器,总共需要18根地址线addr17:0。定义如下:USB_RF_SEL = !addr17;USB_MEM_SEL =addr17;第18位地址addr17为高时选择缓冲储备器,否那么选择内部寄存器。地址addr16:2直截了当用于储备器SSRAM
30、的地址。2.1 UTMI接口UTMI接口信号包括:与发送数据相关的信号TxValid、TxReady等,与接收数据相关的信号RxActive、RxValid、RxError等以及16位双向数据线。在物理层,该操纵器需要一个外部的USB收发器Transceiver,本文采纳的是Philips公司的ISP1501芯片。该芯片用作USB2.0的模拟前端,从USB电缆来的差分信号进行反转不归零码NRZI解码和位解填充转换成16位并行数据;反之,16位并行数据通过一个差分驱动电路通过串行化、位填充和NRZI编码输出到USB电缆上。ISP1501通过管脚MODE0和MODE1决定收发器的工作模式,共有4种
31、工作模式:MODE1:0为00时,收发器处于断开状态;为01时处于全速Full Speed模式现在USB带宽为12Mb/s;为10时是高速High Speed模式现在USB最大带宽是480Mb/s;为11时是HS chirp模式。UTMI接口通过译码MODE1:0来操纵ISP1501在HS和FS之间转变。If mode_hs=1thenMODE=10Elsif mode_hs=0thenMODE=01End if;2.2 协议层操纵器的核心逻辑位于PLProtocl Layer模块,负责治理所有USB数据I/O和操纵通信,其结构如图4所示。DMA和储备器接口提供随机储备器访问和DMA操作。该模
32、块使PL和外部微操纵器采纳DMA方式访问SSRAM。当外部总线有访问SRAM的要求时,且PL没有要求访问储备器,操纵逻辑如下:req、ack分别对应外部总线和储备器之间的要求和响应信号,din、addr和we分别是外部总线给出的数据、地址和写信号,mreq是内部DMA向储备器发送的要求信号,mdin、maddr和mwe分别是内部DMA给出的数据、地址和写信号。sel =(req OR ack_r) AND(NOT mreq);if sel=1 thensram_out=din;sram_adr=addr;sram_we=req AND we;elsesram_out=mdin;sram_adr
33、=maddr;sram_we =mwe;end if;由操纵逻辑可看出,内部DMA操作的优先级比外部总线高。协议引擎Protocol Engine处理所有标准的USB握手信号和操纵通信。分组组装器组装分组并送入输出FIFO,先组装分组头,插入适当的PID分组标识和校验和,然后加入数据域。分组拆装器先解码出PID和序列号以及校验和,再从8位PID取低4位或高4位取反得到PID3:0,通过USB2.0协议的PID类型定义译码出PID名,判定是Token分组OUT、IN、SOF和SETUP依旧DATA分组DATA0、DATA1、DATA2和MDATA。Pid_Token=pid_OUT OR pid
34、_IN OR pid_SOF OR pid_SETUP;Pid_DATA =pid_DATA OR pid_DATA1 OR pid_DATA2 OR pid_MDATA;假如是Token分组格式定义如图5所示,那么将后续的16bit数据分别放入两个8bit临时Token寄存器token0和token1,然后取出分组中的7位地址、4位端点号及5位CRC校验码。Token_fadr=token06:0;Token_endp=token12:0 & token07;Token_crc5=token17:3;关于专门的Token须进行专门的处理,本文实现的操纵器只对SOF这一专门Token进行操作,
35、解出PID后的11位帧号及5位CRC5校验码。Frame_no=token12:0 & token0;Token_crc5=token17:3;检验校验码是否出错,假如出错等待下一个Token,否那么将地址、端点号和帧号等放入相应寄存器。Token类型假如是IN,那么执行组装分组并发送寄分组;假如是OUT那么拆卸接收到的数据分组。关于其他不支持的Token那么视为错误处理:Pid_ERROR=pid_ACK OR pid_NACK OR pid_STALL OR pid_NYET OR pid_PRE OR pid_ERR OR pid_SPLIT OR pid_PING;假如出错那么不进行T
36、oken的解码,而等待下一个Token的到来。假如是DATA分组,那么紧接着PID的是最大载荷为1024字节的数据和16位CRC16校验码。对数据的处理先写入端点寄存器,然后通过DMA操作写入SSRAM。下面详细介绍端点寄存器和DMA操作2.3 端点操作数据的传输实际上通过端点Endpoint进行,操纵器通过写端点的寄存器来配置端点,该操纵器最多可有16个端点,每个端点有相应的4个寄存器:Epn_CSR、Epn_INT、Epn_BUF0和Epn_BUF1(那个地点n=0、1、2或3),其格式如图6所示。本文使用addr8:27依照地址线来访问这些寄存器,addr8:4用来选择端点号,其值16进
37、制从4到19分别表Epn(n=0.15)。addr3:2指定寄存器类型:00代表CSRControl Status Register;01代表中断寄存器;10指向Buffer0;11代表Buffer1。这两个Buffer用来作临时数据储备,Buffer0和Buffer1分别作为专用的输入/输出缓冲器来提高USB的数据吞吐能力。双Buffer能够减少微操纵器和驱动软件之间的延迟。其中端点的CSR寄存器指定端点的工作模式同时向操纵器报告指定端点的状态。Ep_CSR31:30必须初始化为00最初使用Buffer0,通过读这2位能够明白下次所要处理的缓冲器;为01时,指定Buffer1。Ep_CSR2
38、7:26和Ep_CSR25:24分别指定端点类型和传输类型,其类型编码参见表1。Ep_CSR21:18指定端点号,总共能够有16个端点。Ep_CSR15时DMA使能位,为1时承诺外部DMA操作,否那么不承诺DMA操作。表1 类型编码表Ep_CSR27:26端点类型Ep_CSR25:24传输类型 00操纵端点00中断传输01IN端点01同步传输10OUT端点10块传输11保留11保留当操纵器收到中断时,读中断源寄存器Ep_INT6:0来判定中断源和产生的缘故。可自定义中断源,如Ep_INT2定义为该操纵器接收到不支持的PID而产生的中断:Ep_INT2=Pid_ERROR。Ep_INT4和Ep_
39、INT3分别表示Buffer1和Buffer0的满或空的状态位。Ep_BUF31标记缓冲器是否被使用过在使用后被操纵器置1”,在清空或重填充该缓冲器后,操纵器清除该位。该闰初始化时为0”。Ep_BUF30:17指定缓冲器能容纳的字节数。Ep_BUF16:0缓冲器的指针,装载储备器SRAM中数据的地址。操纵端点Endpoint0比较专门,由于它既要接收也要发送数据,因此关于操纵端点,Buffer0用于OUT缓冲器,Buffer1那么是IN缓冲器。从SETUP和OUT分组来的数据,写入Buffer0,IN分组的数据那么是从Buffer1中猎取。2.4 DMA操作DMA操作承诺操纵器与功能接口之间数
40、据的透亮传输。一旦设置了DMA操作,那么不需要微操纵器的干预。每个端点有一对DMA_REQ和DMA_ACK信号。当CSR寄存器中DMA使能信号位Ep_CSR15被置位时,USB操纵器使用DMA_REQ和DMA_ACK这两个信号来进行DMA的流操纵。当缓冲区有数据或为空需要填充时发送DMA要求信号DMA_REQ,每传输4字节,响应一个DMA_ACK信号。由于USB2.0协议定义的事务操作以8bit为单位,因此完成一次32bit的DMA操作需要进行4次写8bit。内部DMA采纳高效的One-hot状态机设计方法,状态转换如图7所示。当需要将接收到的数据储备到SRAMrx_dma_en=1时进入WA
41、IT_MRD状态,在该状态选中一个临时数据寄存器,并向储备器发送要求信号mreq,从储备器中预取4字节当接收到的数据少于4字节时,保证有4字节的数据写入储备器到该寄存器中,然后进入MEM_WR状态。当PL的分组拆装器接收到1字节数据时,将该字节写入临时储备器,转入下一状态MEM_WR1;当分组拆装器没数据给DMA仲裁器时那么进入MEM_WR2状态,在此状态将临时储备器中的数据写入SRAM,然后回到IDLE状态。在操作过程中,使用计数器adr_cb对传输字节数进行计数,通过addr_cb1:0的值标识当前传输的是32bit中的哪个字节。计数器sizu_c每接收1字节数值加1。在需要读取SRAM中
42、的数据tx_dma_en=1时,DMA仲裁器由IDIE状态进入MEM_RD1状态,读取4字节数据到发送缓冲区中,然后进入状态MEM_RD2,再读4字节进入状态MEM_RD3,这8字节轮番使用Buffer0和Buffer1缓冲区:在需要读取SRAM中的数据tx_dma_en=1时,DMA仲裁器由IDLE状态进入MEM_RD1状态,读取4字节数据到发送缓冲区中,然后进入状态MEM_RD2,再读4字节进入状态MEM_RD3,这8字节轮番使用Buffer0和Buffer1缓冲区:if(NOT adr_cb2) AND mackthen Buffer0=SRAM_DATA_I;elsif (adr_cb
43、2 AND mack)then Buffer1=SRAM_DATA_I;end if;在MEM_RD3状态判定是否还需要读下一个数据,假如需要再进入状态MEM_RD2,否那么在传输完所有字节后,返回到IDLE状态。在发送数据过程中,使用14bit计数器sizd_c决定传输字节数,取自Ep_BUF30:17,每发送1字节数据,它的值减1。在图7中的各个状态中,由于超时、CRC校验错误或得到的数据发生错误时,PE产生的Abort信号会使当前状态都回到IDLE。文中阐述了USB2.0功能操纵器的一种实现方案。 其VHDL语言实现代码,已在XILINX公司的FPGA Virtex XVV3006fg4
44、56中通过了Xilinx ISE的仿真、综合及布局布线。FPGA的规模是32万门,1536个CLB可配置逻辑单元。该操纵模块占用2050个Slice(66%),使用了1697个Slice触发器27%和3047个4输入LUT表49%。整个FPGA的速度可达到56.870MHz,完全满足视频数据的高速传输对32bit数据操作,达到480Mb/s的速度时钟只需15MHz。该方案实现的操纵器便于修改且易于实现,可作为一个功能模块嵌入到SOC中,可使不同情形最大限度地灵活设计片上系统。 用FPGA器件实现UART核心功能的一种方法串行外设都会用到RS232-C异步串行接口,传统上采纳专用的集成电路即UART实现,如TI、EXAR、EPIC的550、452等系列,然而我们一样不需要使用完整的UART的功能,而且关于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。假如设计上用到了FPGA/CPLD器件,那么就能够将所需要的UART功能集成到FPGA内部,本人最近在用XILINX的XCS30做一个设计的时候,就