当前位置:首页 > sopc
  • 基于SOPC的数据采集与处理系统设计

    基于SOPC的数据采集与处理系统设计

    摘 要:基于矿井地震勘探中对数据采集与处理的高性能要求,本文采用SOPC (可编程片上系统)技术设计了多通道数据采集与处理系统。系统采用24位模数转换芯片实现高精度数据采集;利用FPGA可并行运算的特点,实现数据信号的并行处理。系统设计灵活,具有便携性及同步性特点。该系统成功应用到矿井地震勘探中,得到了良好的效果。  煤炭是事关国民经济可持续发展的基础产业,随着国民经济的发展,各个行业对煤炭的需求量不断增加,如何保障煤炭生产的安全高效和可持续性发展就显得非常重要。而地震勘探作为一种广泛应用的物理地球勘探手段,把它应用到矿井探测中,可以超前探测断层、陷落柱、采空区的形态、走向、影响范围及顶底煤厚、围岩松动圈等的内容,为煤矿生产过程中出现的地质异常提供及时准确的预测参数,以保障煤炭生产的安全高效。因此开发出适用于矿井地震勘探仪器具有十分重要的意义。但是,地震勘探对数据采集与处理系统的性能要求很高,用传统的单片机或DSP来实现,很难满足系统的实时性、多通道同步性和仪器便携性等要求。  SOPC技术将CPU、存储器、I/O接口等系统设计所必须的模块集成在一片FPGA上,是一种新的系统设计技术。这种设计方式,具有开发周期短、设计灵活、可裁减、可扩充、可升级、软硬件在系统可编程的功能,特别适用于复杂系统的设计。  本文给出了一种基于SOPC的数据采集与处理系统的设计方案。系统用24位模数转换芯片实现多通道地震数据前端采集;利用FPGA的可并行及高速运算特点,用FPGA代替传统的DSP芯片,设计并行的数据信号同步处理,以提高系统的实时性和同步性。该系统成功地应用到矿井地震勘探中,得到良好的效果。  1 系统硬件实现  数据采集与处理系统主要是对数据的采集以及对得到数据的处理,本系统采用SOPC技术,以软核处理器N IOS II为控制核心,NIOSⅡCPU和各IP模块之间通过Avalon片上总线相连。系统原理图见图1所示。系统主要由四个硬件模块构成:数据采集模块、数据处理模块、数据存储模块和数据通讯模块。数据采集模块主要用24位高精度A /D芯片进行地震数据采集; 数据处理模块主要用FPGA实现各DSP算法; 数据存储模块采用SDRAM实现;数据通讯模块采用RS232串口通讯,负责把数据上传到上位机上显示。图1 系统原理图  1. 1 NIOS II CPU  Nios II系列软核处理器是Altera的第二代FP2GA嵌入式处理器,是一个用户可配置的通用Risc嵌入式处理器,扩展了目前世界上最流行的软核嵌入式处理器的性能。用户可以从三种处理器(快速、标准、经济)以及超过60个的IP核中选择所需要的,NiosII系统为用户提供了最基本的多功能性,设计师可以以此来创建一个最适合他们需求的嵌入式系统。本设计采用的是标准型的NIOS IICPU,并调用了SDRAM 控制器和异步串口URAT (RS_232 Serial port)等接口IP。  1. 2 数据采集模块  数据采集模块采用多通道同步采集,其基本原理如图2所示: 4通道同步采集,每个通道由信号前端调理电路、模数转换采样电路及A /D接口构成。  对采集信号的调理,主要是针对信号的滤波和信号放大处理:地震检波器采集来相关数据后,使用无源低通滤波器去除高频无用信号,以防止后续数字滤波产生频谱混叠;使用高速反馈放大器OPA1632D实现对输入模拟数据的放大。对于采样电路,使用24位的A /D7766芯片,该芯片在以125 kHz输出数据速率工作时具有108 dB的动态范围,它比具有相同输出数据速率的同类器件高3 dB,其特别适合地震采集的低功耗和鉴别大信号中的微弱信号要求。图2 数据采集模块原理图  1. 3 数据处理模块  SOC系统的一个重要思想就是IP复用,因此本文充分利用了ALTERA公司丰富的DSP IP核资源以提高产品开发效率,实现多通道数据的并行同步处理。  1. 3. 1 数字滤波模块  对于地震勘探来说,由检波器接收到的有效地震信号具备多频率特性。为了现场技术人员更好地了解地质情况,需要看到特定范围频带的信号,因此需要设计一个具备多频带的带通滤波器。滤波模块调用了ALTERA公司的F IR IP核来生成,通过设置参数,即可实现不同要求的滤波器。  本系统生成的滤波模块图如图3 所示,其中cofe_set为滤波选择信号,可以通过NIOS II提供给cofe_set值命令,完成四种不同带宽的通带滤波。图3 滤波模块图  1. 3. 2 频谱分析模块  为了了解地震信号的频谱分布范围,需要对随时间变化的地震信号进行傅里叶变换,以得到随频率而变化的振幅和相位的函数。本设计的原理图如图4所示:先采用ALTERA公司的FFT IP核设计一个1 024点的FFT模块,得到的数据再送给相位谱计算模块和振幅谱计算模块得到振幅谱和相位谱。图4 频谱分析模块原理图  振幅谱、相位谱的公式见式( 1)与式( 2) , ReF(mΔf)和ImF (mΔf)为输入数据经FFT模块处理后得到的实部和虚部值。  由式(1)可知,振幅谱模块主要由乘法模块、加法模块及开方模块组成,其都可以用ALTERA公司对应的IP核来实现。对于相位谱模块,其需要求反正切函数,对此本设计用了基于查找表的设计方法。  如图5所示:在phase中把实部Re的绝对值乘100后除以虚部Im的绝对值,得到的值按照一定的规律转化成Counter (从0到1 024) 。rom中事先存着0到90的相位值, Counter做为RAM的地址输入,此时通过Counter的值就可以查找出对应的相位。再根据sign产生的实部、虚部的符号来判断相位的象限,得出0到360°范围的相位值。图5 相位谱模块电路图  1. 4 SDRAM外部存储  为了对数据进行缓存,本设计采用了hy57v561620SDRAM外部存储芯片。SDRAM具有大容量和高速度的特点,满足地震勘探的大数据容量和高速度要求。  在SOPC Builder中,已经存在基于Avalon 接口的SDRAM控制内核,用户可以很方便的使用SDRAM控制器创建一个可以灵活的与SDRAM芯片接口的储存系统。  模块工作在96 M的系统主时钟下,当接收到N IOS II发出的读命令后, SDRAM开始读取A /D传来的数据,直到数据存放完毕。然后在N IOS II的控制下,再与DSP模块进行互相间的数据传输。  1. 5 通讯模块  为了把数据上传到上位机上进行显示,本系统采用了RS232 串口通信,串口通信的概念非常简单,串口按位发送和接收字节,可以在使用一根线发送数据的同时用另一根线接收数据,此外它还能够实现远距离通信。在SOPC Builder中,也已经存在基于Avalon接口的UART内核接口,为Altera FPGA上的嵌入式系统和外部设备提供了串行字符流的通信方式,内核执行RS2232协议时序。  2 系统软件设计  软件设计主要包括驱动程序和应用级代码编写等部分,如图6所示。在Nios II IDE中建立新的软件工程时, IDE会根据SOPC Builder对系统的硬件配置自动生成一个定制HAL (硬件抽象层)系统库。这个库能为程序和底层硬件的通信提供接口驱动程序,之后进行编译、调试、下载软件到开发板上。图6 系统软件结构框图  本设计的应用程序流程如图7所示:系统工作时先初始化,接着控制A /D模块进行数据采集,采集来的数据进行直接送入DSP模块进行实时处理,并把处理前和处理后的数据都存储到SDRAM中。  最后把SDRAM中的数据经过串口发送到PC机上。图7 应用程序流程图  3 系统实验结果  本系统借助某智能仪器物探公司的矿井探测技术平台,利用透射槽波探测技术来判断煤层的结构特性。系统分别在两处不同地点的煤层进行实验,首先控制系统同步采集多道地震数据得到原始记录,然后对数据进行带通频率为180 Hz~300 Hz的数字滤波,最后对滤波后的数据进行频谱分析得到信号的振幅图,详图见图8和图9。图8 连续煤层波谱特征图图图9 不连续煤层波谱特征图  图8中P波、S波及煤层槽波埃里相波组特征明显,分别分布在50 ms、100 ms及170 ms处,根据探测原理,可以判断该煤层应为连续煤层;而图9在150 ms后无明显的埃里相位反映, P、S波组特征却较强,可以判断该煤层构造已破坏,因此产生不连续的波谱特征图。经验证,其判断与实际情况吻合。  4 小结  本系统利用SOPC技术,设计了高性能的数据采集与处理系统。系统利用SOPC及FPGA特有的优势,使系统具备了高灵活性、便携性、实时性、和多道同步性等特点,解决了传统方法设计的系统难以满足地震勘探的高性能要求问题。把系统应用到地震勘探实现对煤层结构的探测,得到良好的效果,系统具备很高的经济价值。

    时间:2019-04-15 关键词: 系统 数据采集 sopc 总线与接口

  • 基于SoPC技术的传感器非线性软件校正的实现

    基于SoPC技术的传感器非线性软件校正的实现

    0 引 言  现代测量系统中,传感器的工作性能直接影响整个系统。由于受外界因素的影响,传感器大多具有非线性特性,致使测量仪表或系统的输入与输出之间不能保证很好的线性关系。除了采取硬件补偿电路外,对于软件补偿算法的研究受到更多的重视。由于受数据总线宽度和工作频率的影响,软件算法补偿的研究更多是在计算机上仿真实现的,而现场的测量系统往往建立在单片微处理器的基础上。微电子技术的迅速发展,使得集成电路设计和工艺技术水平得到很大的提高,片上系统(system on a programma-ble chip,SOPC)技术把系统的处理机制、模型算法和电路设计紧密结合,在单片芯片上实现复杂系统的全部功能。基于FPGA的SOPC技术,软件算法修改和硬件平台结构调整都是在线可编程的,其灵活性和可靠性是其他单片微处理器无法比拟的。本文采用ALTERA公司提供的SOPC技术,研究传感器的非线性软件校正的算法实现。  1 非线性软件校正原理  一个受多个参量影响的传感器系统可表示为y=f(x,t1,t2,…,tk),其中,x为待测目标参量,t1,t2,…,tk为k个非目标参量,y为传感器输出。为了消除非目标参量对传感器输出的影响,一般采用逆向建模的方法。实际测量的数据,由于受非目标参量的影响,它与目标参量之间的函数关系不再是线性的。逆向建模的目的是通过非线性映射,把非线性函数关系x=f-1(y,t1,t2,…,tk)向线性函数关系x=y/A逼近。在模型中,测量数据和非目标参量的测量值作为输入,目标参量的线性值作为模型的输出,按照一定的算法原则,不断调整模型的参数,使得模型输出误差在允许的范围之内。  在本系统中,选用模拟温度传感器AD590作为校正目标,数字温度传感器DS18B20测量值作为模型的期望输出,气体传感器TGS813测量值为非目标参量输入。系统采用ALTERA公司CYCLONEⅡ系列的EP2C35F672 FPGA作为核心处理器,采用QUARTUS-Ⅱ自带的SOPC Builder开发包作为算法的调试环境,在FPGA其内部实现测量数据的智能处理。  2 系统方案实现  2.1传感器调理电路  AD590是美国模拟器件公司生产的单片集成两端感温电流源,流过器件的电流(μA)等于器件所处环境的热力学温度(K)度数,AD590随温度变化输出的是电流信号,需要将其转换为电压信号。由于AD590灵敏度高,受环境的影响大,在使用前需要校正。在本文中,利用神经网络算法对AD590的输出进行了校正。  DS18B20是Dallas半导体公司推出的一线式数字化温度传感器,可以程序设定9~12位的分辨力,精度为±0.5℃。本文采用外接电源模式,12 bit数据输出格式。  TGS813是一种由SnO2材料组成的烧结体半导体气体传感器,属于一种广谱性气敏元件,对多种气体敏感,对不被检测气体不敏感;由于输出电压最高可以达到+9 V,而后级模拟数字转换电路的输入电压不超过+5 V,所以,使用前需要调整分压电阻器的阻值。  2.2模拟数字转换电路  来自传感器的模拟信号,在送入模拟数字转换电路之前,由于器件的输入阻抗比较低,而传感器的输出阻抗较高,不能直接把模拟信号送入模拟数字转换电路。本文采用TLC279构成电压跟随器,实现阻抗变换。考虑到在FPGA实现的算法处理对数据的精度敏感,因此,系统选用了四路模拟量输入的12 bit串行数据输出的TLV2544作为模拟数字转换电路的核心芯片。  TLV2544是TI公司生产的高性能12位低功耗、高速(3.6μs)CMOS模数转换器,具有采样一保持功能,电源电压为2.7~5.5V。TLV2544还具有3个输入端和1个三态输出端,可为最流行的微处理器串行端口(SPI)提供4线接口。器件在上电初始化时首先需要将初始化命令A000h写入CFR配置寄存器,然后,对器件进行编程,其编程方法是在初始化命令A000h的低12位000h写入编程数据以规定器件的工作方式。TLV2544具有4种转换模式:单次模式、重复模式、扫描模式和重复扫描模式,可用模式00,01,10,11表示。图1为TLV2544和单片机AT89C2051的接口电路。该电路采用外部基准,REFP与REFM之间接0.1μF和10μF2只去耦电容器。  各路信号送入微处理器AT89C2051,经串行口发送给系统板。微处理器的软件设计主要是在接收到SOPC系统控制发送的采集命令(0x41H),启动TLV2544和DS18B20,将数据转为ASCII码发送。DS18B20和TLV2544都是12bit输出,所以,每次发送9个ASCII码,分别代表3个数据源的转换结果。  2.3神经网络校正算法  利用BP神经网络实现非线性误差软件校正的文献较多,但主要是基于PC机的仿真实验。单片微处理器由于存储容量和数据总线宽度的限制,网络结构类型和计算精度只能控制在一定范围之内。SOPC在大规模集成电路的基础上,底层电路采用硬件描述语言实现,而软件算法则在SOPC IDE调试环境下采用高级语言,如C语言实现。在本文中,SOPC系统板采用NIOS-Ⅱ软核微处理器,32 bit总线,工作频率为50 MHz,BP神经网络采用动量法,在ALTERA公司提供的SOPC IDE调试环境下完成。算法处理结构如图2所示。  3 算法测试  本文采用三层前向网络,输入层神经元2个,分别代表温度传感器ADS90和气体传感器TGS813输入信号,DS18B20的测量值作为AD590的期望值,输出层神经元1个,代表AD590的校正值。

    时间:2019-04-11 关键词: 软件 传感器 技术 嵌入式开发 sopc

  • 基于SoPC的实时视频处理与显示设计

    基于SoPC的实时视频处理与显示设计

    摘 要: 介绍了一种采用SoPC技术,适用于光照度不够均匀造成图像灰度过于集中环境下的视频处理与显示设计。该系统基于FPGA技术,通过将NiosⅡ软核处理器、用户自定义逻辑模块、存储器、I/O等集成到单块低成本的FPGA上,实现对解码芯片SAA7113H的初始化及配置、视频图像灰度信号直方图统计以及灰度均衡化的实时处理与显示。其设计灵活、可靠性高,并且降低了成本和功耗。关键词: SoPC;I2C;灰度直方图统计;灰度均衡化 当前基于软核处理器的图像系统已成为研究的热点,使用FPGA来构建基于片上可编程系统(SoPC)的图像处理系统,已成为一种趋势[1]。因此,本文采用SoPC技术,在Altera公司单片Cyclone系列FPGA上使用IP资源复用技术集成了NiosII软核处理器及各种输入输出接口,完成了对视频图像的采集、预处理、存储和显示几大功能。本系统对图像进行了灰度均衡化处理,使系统应用更广。由于直方图均衡能直接从已知的图像中提取信息,不需要额外的参数说明,所以在军用、航空、商业等领域,特别是红外图像增强领域[2]有实际的意义。SoPC是Altera公司提出来的一种灵活、高效的柔性设计,不需要修改硬件[3],就可方便地扩展和修改嵌入式视频采集功能。同时,由于融入众多的IP核,保证了设计的高效、快速。1 系统总体结构及工作原理 系统框图如图1所示。系统上电后,Nios II软核中的I2C控制总线对视频采集模块SAA7113H进行配置,FPGA依靠像素时钟和行、场信号同步采集SAA7113H芯片输出的视频信号中的灰度视频数据,把采集到的灰度数据进行灰度直方图统计和灰度分布均衡化处理。Nios II软核外部加一个延迟模块,与灰度转换模块输出的信号同步之后,视频输入模块开始工作,通过存储控制、DMA控制器传输视频信号,LCD显示控制等模块显示所采集的信号。所有处理都采用流水线操作,大大节省了系统的处理时间。2 系统硬件设计2.1 视频解码芯片SAA7113H初始化 本系统中视频解码器的初始化配置由Nios II软核处理器通过I2C总线完成,主要包括对视频解码器的工作模式,输出行、场同步参考信号的时序关系以及输出数字信号的格式等进行设置。I2C总线是由Philips公司开发的一种两线制总线,由一条串行数据线SDA和一条串行时钟线SCL组成,可以实现数据通信,完成芯片配置。首先,I2C总线控制器发出一个数据传输的起始条件:SCL信号保持高电平、而SDA信号由高电平变为低电平时,开始传输地址数据流。起始条件满足后,发出一个8 bit的设备从地址,所有的外围设备开始响应起始条件并转换下一个8 bit寄存器地址(7 bit地址+1 bit读写位),由高位到低位依次传输。外围设备识别出传输地址后,在第9个时钟脉冲(确认位)把数据线变为低电平,然后开始将8 bit数据写入或者读出寄存器(读写位决定了数据的传输方向)。当时钟线SCLK为高电平、而数据线SDA由低电平变为高电平时,表示一次数据传输完成,停止I2C总线,等待下一次的传输开始。图2为I2C总线的数据传输时序图。

    时间:2019-03-15 关键词: 嵌入式开发 sopc 实时 视频处理

  • 基于SoPC汽车安全监控系统设计

    基于SoPC汽车安全监控系统设计

    引 言 基于SoPC的汽车安全监控系统采用Altera公司最新的SoPC(可编程片上系统)解决方案——Nios处理器软核为核心,配合GPS和GSM系统,对汽车的停放和运行状态进行监控。系统监测、记录和储存汽车在行驶过程中的各种数据,一旦出现安全问题,立即采用GSM无线通信方式通知相关人员和单位,并随时发送通过GPS获得的汽车位置等数据,为问题的解决提供及时、准确和可靠的信息,必要时通过GSM对汽车进行远程控制。 基于SoPC的汽车安全监控系统可广泛应用于汽车的防盗、日常维护和交通事故的处理,为车辆故障提供有效的测试手段。 1 系统硬件组成 设计采用Altera公司的SoPC开发工具。系统的开发包括硬件和软件两大部分。使用SoPC Builder生成Nios嵌入式处理器,Nios嵌入式处理器开发工具允许用户配置一个或多个Nios CPU,从标准库中添加外围设备,综合处理自定义系统,与Quartus II设计软件一起编译系统。软件开发的步骤是:利用SoPC Builder生成的软件文件,用文本编辑器编写汇编语言或C/C++源程序,用GNUPro软件开发工具进行程序设计、连编和调试。GNUPro将源程序连编(包括汇编/编译和连接)成可执行程序,通过下载电缆对可执行程序进行调试和运行。Quartus II设计软件提供全面有效的设计环境,将设计、综合、布局和验证以及第三方EDA工具接口集成在一个无缝的环境中。利用集成在Quartus II 3.0中的SoPCbuilder可以创建自己的Nios CPU系统。Nios是Altera公司开发的16/32位嵌入式处理器软核。* 校科研基金项目“基于SOPC的汽车安全监控系统”资助。 Altera公司推出了新一代多种系列FPGA,本设计选用低成本的Cyclone系列器件EP1C12,其具有12 060个逻辑单元,52个M4K RAM块,239 616个RAM位和2个锁相环,最大用户I/O引脚249。系统硬件组成框图由Nios系统和外部设备两部分组成,如图1所示。 Nios系统包括CPU(Nios)、存储器(memory)、定时器(timer)、总线和并/串行接口(key_pio、led_pio、lcd_pio、ccs_pio、uart_0和uart_1)等,并/串行接口分别实现与键盘、LED和LCD显示器、汽车中控系统以及GPS和GSM系统等外部设备的连接。Nios系统设计和设计结果分别如图2和图3所示。 Nios系统同键盘、LED和LCD显示器、汽车中控系统以及GPS系统等外部设备的连接比较简单,GSM系统的连接较为复杂,如图4所示。 整个系统的工作过程是:来自汽车中控系统和GPS系统的信息可以显示在LED和LCD显示器上,也可以通过GSM系统进行无线发送。用户可以通过键盘对系统进行控制,也可以通过GSM系统对汽车中控系统进行远程无线控制。 2 系统软件组成 系统软件主要由主程序、GPS管理子程序和GSM管理子程序等部分组成。 主程序完成系统的初始化,以及键盘、LED、LCD显示器和汽车中控系统的操作管理等。 GPS管理子程序主要负责从GPS系统接收时间和位置信息。 请求GPS系统返回ASCII时间位置信息的二进制命令为: @@EqmC 其中,m为0时,输出一次 响应信息(查询),m为1~255时,每1~255 s输出一次响应信息(连续);C为校验和(Eqm按字节“异或”);为回车(十六进制0d);为换行(十六进制0a);命令长度为8字节。 命令的响应信息为:@@Eq,mm,dd,yy,hh,mm,ss,dd,mm.mmmm,n,ddd,mm.mmmm,w, shhhhh.h,sss.s,hhh.h,m,t,dd.d,nn,rrrr,aa,CCC 日期:mm是月(01~12),dd是日(01~31),yy是年(99~19)。 世界时间(UTC):hh是时(00~23),mm是分(00~59),ss是秒(00~59)。 纬度:dd是度(00~90),mm.mmmm是分(00~59.9999),n是方向(N是北,S是南)。 经度:ddd是度(000~180),mm.mmmm是分(00~59.9999),w是方向(W是西,E是东)。信息长度是96字节。对应的管理子程序为: int eq[8]={'@','@','E','q',1,'C',0x0d,0x0a}; void gps_txd(int data[], int n) { volatile int m,sum=0; for(m=0;m while(~na_uart_0->np_uartstatus & 0x40); //等待发送准备好 if(m!=n-3) { sum^=data[m];//计算校验和 na_uart_0->np_uarttxdata=data[m];//发送数据 }else na_uart_0->np_uarttxdata=sum; //发送校验和 } } int gps,gps_buf[46];//定义全局变量 void gps_rxd(int context) {//接收中断服务程序 gps_buf[gps]=na_uart_0->np_uartrxdata; //接收数据 if(gps_buf[gps++]=='q') gps="0"; //数据定位 if(gps>46) gps="46";//忽略无用数据 } GSM管理子程序主要负责GSM系统的数据收发管理。 GSM系统的数据收 发以短信形式进行,选择短信格式的AT命令为AT+CMGF,收发短信的AT命令分别为AT+CMGR和AT+CMGS,对应的管理子程序为: cmgf[20]={'A','T','+','C','M','G','F','=','1',0x0d};//短信格式void gsm_txd(int data[], int n) { volatile int m; for(m=0;m while(~na_uart_1->np_uartstatus & 0x40); //等待发送准备好na_uart_1->np_uarttxdata=data[m]; //发送数据 } } int gsm="2",gsm_buf[18]={'A','T'}; void gsm_rxd(int context) { //接收中断服务程序 gsm_buf[gsm]=na_uart_1->np_uartrxdata; //接收数据 if(gsm_buf[gsm]=='T') gsm="1"; //数据定位 if(++gsm==18) gsm="2"; } 3 设计调试方法和设计结果 在Quartus II中使用SignalTapII嵌入式逻辑分析仪可以实时观测系统中节点的信号数据。被观察的信号可以多进制数值显示也可以用波形显示,但它需要占用芯片更多的资源,因此在对某个模块的测试结束后,可以在设置中把SignalTapII嵌入式逻辑分析仪取消,并重新编译生成以减少LE资源占用量。 实际试用结果表明:基于SoPC的汽车安全监控系统运行正常,定位准确,数据传输可靠,操作管理方便。如果再配备上GIS(地理信息系统),整个系统将如虎添翼。参考文献1 郭书军,王玉花,葛纫秋.嵌入式处理器原理及应用.北京:清华大学出版社,20042 Motorola. M12 Oncore Users Guide Supplement, 20003 Siemens. TC35 Siemens Cellular Engines Hardware Interface Description, 20014 Siemens. TC35 Siemens Cellular Engines AT Command Set, 2002郭书军:副教授,主要研究方向为数据通信及其信号处理和嵌入式系统。

    时间:2019-03-12 关键词: 汽车 监控系统 sopc 设计教程

  • SOPC基础上的数据采集系统设计

    SOPC基础上的数据采集系统设计

      引言:随着集成电路的不断发展,可编程逻辑器件FPGA因其功能强大,设计灵活,开发周期短等特点,得到越来越广泛的应用。于是片上可编程系统(System On Programmable Chip,SOPC)的设计方法也越来越受到重视。SOPC将微处理器、存储器、定时器、通用I/O接口等系统设计必需的功能模块以及用户设计的有特定功能的模块集成到一片可编程逻辑器件上,构建一个具备软,硬件在系统可编程功能的可编程片上系统。这种非常灵活的电路设计方式使得对整个电路系统的裁减、扩充、升级变的很容易。这样可以缩短电路设计的开发周期,节省开发成本。  1 系统总体结构  整个系统由xilinx公司的spartan3E高性能、低成本的90nm FPGA和一些外围电路组成。主要有AD转换器、FLASH存储器、系统PROM配置电路和电源模块等,其系统总体结构如图1所示。  系统核心采用嵌入式技术,在一片芯片上实现,它包含Xilinx公司的一些标准总线IP核如中断控制器,通用输入输出端口等模块和带有PLB总线接口的用户自定义的数据采集与存储IP核。其中用户自定义的IP核是用VHDL语言设计的,它包含AD控制逻辑、FLASH控制逻辑、DMA传输控制逻辑和FIFO缓存模块等。  整个系统设计可以分为硬件设计和软件设计两个部分。利用SOPC技术结合VHDL硬件描述语言,在芯片内部设计硬件控制系统;利用EDK(嵌入式开发套件)为特定硬件配置自动生成的软件包结合C语言,设计基于Microblaze处理器的软件控制程序。  2 系统结构  FPGA的硬件设计先确定要用的外部接口,然后进行IP核设计,将IP核的逻辑功能映射到FPGA芯片上。其系统结构框图如图2所示。  2.1 AD转换芯片  AD转换器采用MAXIM公司的MAXIM1308芯片,它是12位模数转换器(ADC)提供8个独立输入通道,独立的采样保持(T/H)电路为每个通道提供同时采样,提供+5V输入范围,20MHz、12位双向并行数据总线用来提供转换结果,并可接受数字输入来单独配置每一通道的开启和关闭。  2.2 FLASH存储器  FLASH存储器芯片采用8片三星公司的K9XXG08UXA系列的NAND Flash存储器,该存储器是按页进行读写按块擦除,通过I/O管脚分时复用发送命令/地址/数据。每片的存储容量为512MB。存储过程使用流水线方式对数据进行存储。  2.3 FPGA配置电路  Xilinx公司的FPGA器件是基于SRAM的内部结构,掉电后FPGA的内部逻辑丢失,因此外部需要一个配置芯片在每次上电时可以将配置数据加载到FPGA器件的内部SRAM中。配置芯片采用的是XCF04系列PROM串行配置芯片。当系统上电时,芯片以主动配置方式来实现系统中FPGA的硬件配置。通过高速的串行接口,整个芯片的配置工作可以在很短的时间内完成。  2.4 系统电源模块  电源模块的设计不仅需要为器件提供各种高性能的功率输出,还要包括选择合适的旁路、去耦电容,以滤除各种干扰信号,保证系统的稳定工作。Xilinx公司Spartan-3E XC3S500E FPGA需要三种电压供电才能正常工作:VCCAUX:1.2V±5%,VCCAUX:2.5V±5%,VCCO:3.3V±5%。利用TI公司TPS75003芯片加上必要的外围电路作为该系统的完整的电源解决方案。  2.5 USB接口芯片  USB芯片使用由FTDI公司推出的FT245R,该芯片主要完成USB串行总线和8位并行FIFO接口之间的相互协议转换。整个USB通信协议全部由芯片自动完成,无须考虑底层固件的编程。该芯片可以使用内部集成的时钟电路进行工作,也可以使用外部晶振,本系统中使用外部晶振。完全兼容USB2.0协议。它有256字节的接收缓冲区和128个发送缓冲区,可以进行数据的大吞吐量操作。通过8位并行数据口D[0:7]和4位读写状态/控制口RXF、TXE、RD、WR就可实现与微控制器的数据交换。  3 FPGA系统硬件设计  Xilinx公司EDK(嵌入式开发套件)的XPS(平台工作室)的系统组建面板以展开式的树和表形式显示所有硬件平台IP实例,因此用户可以方便地查看自己的嵌入式设计。在此面板中可以对IP元素、端口、属性以及参数进行配置。  3.1 用户IP核设计  使用XPS进行基于MicroBlaze的用户IP核的开发,该套件集成了硬件平台产生器、软件平台产生器、仿真模型生成器、软件编译器和软件调试工具等。  为实现系统功能,需自定义一个IP核实现数据的采集与存储:该IP核包括五部分,分别为PLB总线接口模块、数据采集模块、数据缓存模块、数据存储模块FLASH读写控制逻辑。  (1)数据采集模块:利用FPGA逻辑资源实现A/D采集电路的控制逻辑。在功能上,该AD控制逻辑相当于一个主控制器。该控制过程无需处理器参与。另外AD控制逻辑与AD数据接口的分离,使得高速采集与发送数据成为可能。它连接两片12位的8通道MAXIM1308转换器,可实现多通道的数据采集。  (2)数据缓存模块:在FPGA内部设计FIFO将AD转换后的数据暂时存放其中。FIFO是Xilinx以FPGA片上Blockram为资源生成,FIFO模块的主要功能是数据缓冲,实现速率匹配。该异步FIFO模块在FIFO读、写控制模块的控制之下进行异步读写,FIFO的读时钟受数据存储模块控制,写时钟受数据采集模块的控制。FPGA内部设计了两片12位的FIFO与上述两片AD转换器相对应。  (3)数据存储模块:对本系统使用VHDL语言专门设一个DMA控制器来连接FIFO缓存和外部FLASH存储阵列。当FIFO缓存容量达到一定的值时可以启动DMA控制器建立一个高速的通道以提供连续的数据传输,存储到FPGA外部FLASH存储器阵列。这个通道使得只要FIFO缓存中的数据达到一定的值时便能迅速地存储到外部FLASH中,主设备不必为了确定从端口是否能够发送或接收数据而不断地访问从外设的状态寄存器。这使得系统的整体效率有了较大的提高,同时避免了自定义外设FIFO中的数据上溢或下溢。并且该过程只需要Microblaze处理器很少的干预即可完成,极大地节省了CPU资源。  (4)FLASH读写控制逻辑:主要实现K9XXG08UXA系列的NAND Flash存储器的读写时序,完成对FLASH的操作。  在SOPC硬件系统设计过程中用户IP核的设计是关键,它的设计是否成功决定着整个系统设计是否可行。在用户IP核设计过程中AD控制器、FLASH控制器、DMA控制器的设计都比较成功的,图3是对用户IP核设计的部分验证:示波器捕获的读FLASH存储器ID号时序图,且实验证明读出来的FLASH存储器的ID号是正确的。其中通道0—4分别代表FLASH的CE(片选)、ALE(地址锁存)、CLE(命令锁存)、RE(读)、WE(写)信号。  3.2 设计生成FPGA硬件系统  在XPS嵌入式开发环境中将用户IP核和标准总线核添加到系统中并将它们互相按规则连接起来。XPS提供了一个交互式的开发环境,允许用户对硬件平台各个方面进行设置。其中,XPS在高层对硬件平台描述进行维护,此高层形式即为微处理器硬件规范(MHS)文件。MHS文件作为一个可以编辑的文本文件,是表示用户嵌入式系统硬件部分的主要源文件。XPS将MHS文件综合到硬件描述语言网表中,用于FPGA的布局布线形成FPGA系统的硬件结构,该过程即是生成硬件比特流的阶段,形成后缀名为.bit的文件。  4 结束语  本文介绍了基于SOPC的多通道数据采集系统设计,可以对多种关心的环境参数进行采集并研究其特性。利用MicroBlaze微处理器搭建数据此采集与存储的嵌入式可编程片上系统,可以由单个芯片完成整个系统的主要逻辑功能。便于系统实现小型化,集成化。

    时间:2019-03-08 关键词: 数据 sopc 基础教程 采集系统 基础上

  • 基于SOPC的简易运动控制芯片方案

    现在的运动控制器已经发展到了以专用芯片(ASIC)或FPGA作为核心处理部件的开放式运动控制器。这样的解决方案突出的特点,是让运动控制的处理部分以独立的、硬件性方式展开,增加系统的性能和可靠性,从而有效地解决了以单纯的MCU或DSP系统的处理带宽限制,以及用户系统软件和运动控制软件混杂性的问题。 业界也早已出现了各种类型的运动控制专用芯片,虽然有较高的功能、性能,但一般都比较复杂,使得客户应用起来非常困难。 用户们常常需要一种容易使用的运动控制芯片与通用MCU/CPU结合起来的系统方案,用以面向更一般性的或中低端的应用场合。这样的方案里,运动控制芯片部分可以担当关键的马达控制信号发生功能,又可以拥有较高的性能和其他的系统性接口资源(若是利用8253/8254之类的计数器,就显得捉襟见肘,计数长度太短,且没有其他资源);而在MCU/CPU部分可以通过一些简单的控制指令完成对马达运动的控制,更多的资源用来处理系统界面或应用软件。 简单而言,就是需要一个方案有效地协调了运动控制系统的软硬件的分工,软件部分方便客户开发,硬件部分确保系统性能。 深圳市斯迈迪科技发展有限公司(Smarteer)推出的SM1000系列SOPC运动控制芯片就是上述需求的解决方案。它是在高性能系列运动控制FPGA/芯片—SM5000方案后,经过不断的技术积累和市场调查后,特地为中低端市场应用推出的。 SM1000是一个简易的运动控制芯片系列,它提供长达32位的可编程计数和脉冲发生的功能,脉冲频率可以高达10M赫兹以上,同时在芯片内部增加了许多系统性的资源,比如:内置3-8译码器、地址锁存器、矩阵键盘扫描接口和通用I/O等。由于芯片是SOPC技术方案,因此还可以根据客户的具体需求做定向化的设计。 SM1000简易而又方便于客户应用,它面向更广泛、更一般的运动控制应用领域。利用它结合MCU/CPU可以便捷地组建成一个运动控制系统,尤其是一些嵌入式、系统集成的应用系统。 SM1000非常适合于独立多轴的马达控制场合,同时结合控制软件也可以非常灵活地实现常见的加减速运动控制,甚至多轴联动控制。 以下是SM1000系列芯片技术特点和应用介绍。 一、SM1000芯片方案的技术指标 ⑴ 输入时钟CLK频率最高到78MHz; ⑵ 1-4路32位计数器,可达计数范围为:1~ 2,147,483,6?7; ⑶ 1-4路32位直接脉冲分频器,可设置频率系数范围为:1~ 2,147,483,6?7; ⑷ 1-4路正/反向脉冲输出,可接成差分输出; ⑸ 1-4路正/反向脉冲输出有效指示,可接成差分输出; ⑹ 最高输出脉冲频率为:CLK/6?(SM1001不同); ⑺ 其他功能: a) 内置3-8译码器,输出7个附加片选信号; b) 8通用输入+8通用输出; c) 可接8x8矩阵键盘,直接读取按键编码/有效值; d) 8位数据接口(内置地址锁存,可以直接接MCS51 CPU)。 二、SM1000系列规格 三、SM1000功能框图 1. 复位 2. 锁存 3. 总线 4. 2-4路计数器 5. 2-4路32位脉冲分频器 6. GPIO 7. 3-8译码器 8. 8x8矩阵键盘 四、功能引脚介绍 五、应用方向举例 1. 步进马达控制器 2. 轻纺设备:缝纫机/绣花机等 3. 机器手/臂 4. 空间座标测量/定位系统 5. 经济型通用运动控制器 6. 钻孔、铣边设备 7. 其他 六、编程应用介绍 A、CPU接口 该芯片采用通用8051 8位地址/数据复用接口。由于芯片内置了地址锁存器,因此可以直接与8051单片机地址/数据总线相连,而不需要通过地址锁存器分离出地址和数据总线。另外,该芯片内置了一个3-8译码器,可以输出7个片选信号,以供用户扩展地址译码用。这样,极大地方便了用户基于8051单片机的应用系统设计。整个接口只需要14根线。包括: a) 8根地址/数据总线:AD0~7 b) 3根片选线:CS1~3 c) 1根地址锁存允许线:ALE d) 1根读允许线:RD_n e) 1根写允许线:WR_n 输出7根片选线,地址划分见地址分配表。 B、地址分配 C、CPU读/写操作 读写脉冲计数器: 脉冲计数器的值可以用命令直接写,但要读出时,就必须先用锁存脉冲计数器值命令,先锁存起来,再用命令直接读;如下所示。 写脉冲计数器操作格式: a、(*地址)= 数据 ; 其中:地址=基地址+0+nn*16+mm; nn=(0~3)为通道号,mm=(0~3)为字节地址; 数据为8位字节数据。 读脉冲计数器操作格式: a、(*锁存地址)= 任意数据; b、变量=(*读地址); 其中:锁存地址=基地址+10+nn*16; nn=(0~3)为通道号,10为锁存脉冲计数器地址; 锁存命令的数据为8位字节任意数据,其值无意义。 读地址=基地址+0+mm; mm=(0~3)为字节地址; 注意:脉冲计数器长度为32位,允许全范围设置:0x00000000~0xFFFFFFFF。实际输出脉冲个数由下面公式给出: 脉冲个数=(脉冲计数器值+1)/2; 当脉冲计数器值为最大值0xFFFFFFFF时,允许最大脉冲个数为2,147,483,6?8。 当脉冲计数器值为最小值0x00000001时,允许最小脉冲个数为1。 其中,脉冲计数器值应该为奇数,如为偶数,则最后一个脉冲宽度很窄。输出脉冲为对应频率的方波。 写脉冲频率数据: 写脉冲频率数据操作格式: a、(*地址)= 数据 ; 其中:地址=基地址+4+nn*16+mm; nn=(0~3)为通道号,mm=(0~3)为字节地址; 数据为8位字节数据。 32位情况:脉冲频率值长度为32位,允许设置范围为:0x00000001~0xFFFFFFFF。实际输出脉冲频率由下面公式给出: 当脉冲频率值<0x00800000 时: 脉冲频率=(输入时钟频率/228)*脉冲频率值; 当脉冲频率值≥0x00800000 时: 脉冲频率=(输入时钟频率/(236+228)*脉冲频率值。 24位情况:脉冲频率值长度为24位,允许设置范围为:0x000001~0xFFFFFF。实际输出脉冲频率由下面公式给出: 当脉冲频率值<0x00400000 时: 脉冲频率=(输入时钟频率/225)*脉冲频率值; 当脉冲频率值≥0x00400000 时: 脉冲频率=(输入时钟频率/(233+225)*脉冲频率值。 启动脉冲通道工作: 启动脉冲通道工作操作格式: a、(*地址)= 数据 ; 其中:地址=基地址+8; 数据为8bit字节,作为允许启动标志,定义为: D0----为1时,允许通道1启动,为0时不启动; D1----为1时,允许通道2启动,为0时不启动; D2----为1时,允许通道3启动,为0时不启动; D3----为1时,允许通道4启动,为0时不启动。 停止脉冲通道工作: 停止脉冲通道工作操作格式: a、(*地址)= 数据 ; 其中:地址=基地址+9; 数据为8bit字节,作为允许停止标志,定义为: D0----为1时,允许通道1停止,为0时不停止; D1----为1时,允许通道2停止,为0时不停止; D2----为1时,允许通道3停止,为0时不停止; D3----为1时,允许通道4停止,为0时不停止。 回读数据锁存: CPU要读相应功能的数据,就必须先锁存其数据,才能读;否则,只能读取上次锁存的数据。共有下面三种功能数据: 1. 脉冲计数器值:32bit; 2. 通用输入口值:8bit; 3. 按键编码值: 7bit; CPU读数据是按8 bit字节读方式进行的,32 bit脉冲计数器值需要读4次,可按0~3任意顺序读取。8 bit值只能从地址0读取。格式为: a、(*锁存地址)= 任意数据; b、变量=(*读地址); 其中:锁存地址和读地址,可参见地址分配表3。 8/8位通用输入/输出口: 该芯片包含8位通用输入口和8位通用输出口。 8位通用输入口读命令为: a、(*锁存地址)=任意数据; b、变量=(*读地址); 其中:锁存地址=基地址+12; 读地址=基地址+0;(所有读地址相同) 8位通用输出口写命令为: a、(*写地址)= 数据; 其中:写地址=基地址+11; 写数据为8位字节数据。 8x8键盘接口: 该芯片支持8X8矩阵键盘,自动扫描键盘,识别按键键码,CPU通过接口可读取当前按键编码值。命令如下: a、(*锁存地址)=任意数据; b、变量=(*读地址); 其中:锁存地址=基地址+28; 读地址=基地址+0;(所有读地址相同) 按键编码格式: 标志位:为1表示有键正按下,为0表示没有按键; X:忽略; 回读码:取0~7为当前按键所对应的行(或列)编码,特指输入线(KBC_0~7); 扫描码:取0~7为当前按键所对应的列(或行)编码;特指输出线(KBS_0~7); 七、编程示例 //A、地址常量定义:(设芯片基地址为0xe000) #define MC_sys_CLK 32000000 //定义芯片工作频率 #define MC_CNT_WR_Base_Addr (volatile unsigned char *) 0xe000 //定义计数器值写基地址 #define MC_CNT_Latch_WR_Base_Addr (volatile unsigned char *) 0xe00A //定义计数器锁存写基地址 #define MC_FRQ_WR_Base_Addr (volatile unsigned char *) 0xe004 //定义频率值写基地址 #define MC_Startup_WR_Base_Addr (volatile unsigned char *) 0xe008 //定义启动写基地址 #define MC_Stop_WR_Base_Addr (volatile unsigned char *) 0xe009 //定义停止写基地址 #define MC_GPOut_WR_Base_Addr (volatile unsigned char *) 0xe00B //定义通用输出值写基地址 #define MC_GPIn_Latch_WR_Base_Addr (volatile unsigned char *) 0xe00C //定义通用输入值锁存写基地址 #define MC_KB_Latch_WR_Base_Addr (volatile unsigned char *) 0xe01C //定义键盘编码值锁存写基地址 #define MC_ RD_Base_Addr (volatile unsigned char *) 0xe000 //定义回读值读基地址 //B、子程序片: //0、延迟子程序:芯片读/写命令间要求有一定的定时间隔。 void delay(int n) { int i; for( i = 0; i } //1、写第n通道脉冲数值(必须为奇数) cnt = Np*2-1; MC_CNT_WR_Base_Addr[n*16+0] = (char)((cnt>> 0) & 0x0ff);delay(10); MC_CNT_WR_Base_Addr[n*16+1] = (char)((cnt>> 8) & 0x0ff); delay(10); MC_CNT_WR_Base_Addr[n*16+2] = (char)((cnt>>16) & 0x0ff); delay(10); MC_CNT_WR_Base_Addr[n*16+3] = (char)((cnt>>24) & 0x0ff); //2、读第n通道脉冲数值 MC_CNT_Latch_WR_Base_Addr [n*16+0] = (char)0; delay(10); //锁存第n通道脉冲数值 Cnt = MC_ RD_Base_Addr [0]; delay(10); //回读数据0字节 Cnt |= MC_ RD_Base_Addr [1]<<8; delay(10); //回读数据1字节 Cnt |= MC_ RD_Base_Addr [2]<<16; delay(10); //回读数据2字节 Cnt |= MC_ RD_Base_Addr [3]<<24; //回读数据3字节 if( Cnt ==0xffffffff ) { //第n通道脉冲输出完处理 } //3、写第n通道脉冲频率值 Nfrq= frq_pulse*0x10000000/MC_sys_CLK; //注意整数运算溢出问题 MC_FRQ_WR_Base_Addr [n*16+0] = (char)((Nfrq>> 0) & 0x0ff); delay(10); MC_FRQ_WR_Base_Addr [n*16+1] = (char)((Nfrq>> 8) & 0x0ff); delay(10); MC_FRQ_WR_Base_Addr [n*16+2] = (char)((Nfrq>>16) & 0x0ff); delay(10); MC_FRQ_WR_Base_Addr [n*16+3] = (char)((Nfrq>>24) & 0x0ff); //4、启动多个通道脉冲工作 MC_Startup_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ; //5、停止多个通道脉冲工作 MC_Stop_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ; //6、8位通用输出口输出 MC_GPOut_WR_Base_Addr [0] = (char)(GPOut &0x0ff) ; //7、8位通用输入口输入 MC_GPIn_Latch_WR_Base_Addr [0] = (char)0; delay(10); //锁存通用输入口值 GPIn_V = MC_ RD_Base_Addr [0] ; //8、7位键盘按键编码输入 MC_KB_Latch_WR_Base_Addr [0] = (char)0; delay(10); //锁存按键编码值 KBCode = MC_ RD_Base_Addr [0] ; if(KBCode & 0x80) { //当前有按键按下处理 } 八、基于SM1000的运动控制系统框图 除了轴运动控制本身之外,在板上根本不需要译码器、锁存器之类的芯片,按键扫描电路也节省了不少MCU带宽开销,数字量通用输出/输入也增加了系统的控制方便性。

    时间:2019-01-28 关键词: 方案 芯片 sopc 嵌入式处理器 简易

  • 嵌入式逻辑分析仪加速SoPC设计

    将可编程逻辑与cpu子系统集成于同一芯片令系统设计者可以在一定范围内决定某些功能的实现方式,aes先进加密标准算法的硬件实现即为这样的特殊应用实例。aes加密是互联网协议安全规范(ipsec) 的基础模块,提供增强无线连接安全性的ieee802.11i规范也采纳aes为其加密算法,因而传统通讯设备供应商需要增加aes模块以提供更全面的vpn服务。由于aes算法直接面向位操作,所以,它在可编程逻辑上可以得到非常高效的实现。    分析仪及其工作环境 fs2(first silicon solutions)公司的在系统分析仪支持基于quicklogic公司的嵌入式标准产品quickmips的单片系统硬件和软件开发。除了完全支持quickmips片上mips处理器的所有调试功能之外,该分析仪还内建可配置逻辑分析监控单元(clam),该单元可以从片外追踪并触发quickmips可编程逻辑的1024个指定信号。fs2探测器可 通过14针ejtag调试连接头以及1根10针(或38针)的追踪电缆来连接目标系统。quickmips可编程逻辑中的片上仪器应用模块(oci)通过fs2追踪电缆与用户指定的内部信号相连,用于追踪和触发。除可编程逻辑之外,quickmips内还集成了32位mips 4kc处理器和一系列片上外设。这些片上外设包括2个以太网接口、2个串口、1个32位66mhz的pci 主从接口、1个sdram和sram控制器、4个定时器以及1块片上sram。所有外设、处理器和可编程逻辑均通过amba总线连接(见图1)。amba总线为这些连接提供5个片上可用端口,包括先进高性能总线(ahb)主/从接口各1个以及3个先进外围总线(apb)从接口。任何实现于可编程逻辑的电路均可通过上述片上amba总线端口实现与处理器以及片上外设的连接,设计者可以根据实际需要使用上述5个端口中的不同组合来连接电路。quickmips的片上mips处理器也支持增强jtag(ejtag)接口。ejtag接口除支持处理器实现中止、单步、重启以及软件断点等调试功能之外,还包括指令/数据虚拟地址、硬件断点以及支持外部ejtag探测仪的tap端口。图1 quickmips片上可用资源框图

    时间:2019-01-01 关键词: 嵌入式 分析仪 嵌入式开发 sopc 逻辑

  • 基于SOPC的M8051嵌入式调试器设计

    基于SOPC的M8051嵌入式调试器设计

    引言在嵌入式系统开发过程中,上位机通过调试器完成对目标机软件的开发、下载、调试。早期的调试器与上位机之间通过串口或并口通信,存在速度慢、通用性差等缺陷。相比之下,USB接口优势明显,具备速度快、易插拔、支持多个调试器同时工作等优势。但目前的USB接口调试器一般采用USB芯片和可编程器件结合的实现方式,成本和复杂度较高。M8051是Mentor公司的嵌入式8051处理器,凭借良好的性能和功耗控制,占据了大量的SoC(System on a Chip)市场。该处理器集成了OCI(On-Chip Instrumentation,片上调试单元)来完成程序的调试。FS2公司设计的System Navigator是一款针对M8051的调试器,但该产品价格过于昂贵。本文通过研究M8051的调试结构,设计一款基于SOPC(System on a Programmable Chip)的M8051调试器,实现对M8051核心的高效、低成本的开发。1 M8051片上调试技术的研究1.1 典型的OCD调试系统目前,嵌入式调试领域的趋势是在MCU上集成一个专门用于调试的功能模块,并且提供一个专用接口开放给用户。用户通过该调试控制模块来实现停止/继续CPU的运行,并访问目标机上的各种资源,这就是OCD(On-Chip Debug,片上调试)技术。同时,JTAG作为应用最广泛的系统级测试技术,控制逻辑简单、实现方便,常作为片上调试模块的测试接口。一个完整的OCD调试系统通常包括调试主机、调试协议转换器(或调试器)、目标机三个部分。调试主机运行调试软件,并通过调试器与目标机相连;调试器将主机发出的调试命令和数据转换为基于目标机OCD模块和JTAG接口的调试数据;目标机的OCD模块接收到调试器发来的JTA G数据,完成对CPU的逻辑控制。典型的OCD调试系统如图1所示。1.2 M8051的片上调试结构M8051核心的调试功能由其片上的OCI模块完成。OCI模块通过JTAG口与外部通信,其实现完全符合IEEE-1149.1。具体来说,TAP控制器接收一系列的JTAG边界扫描链读写时序,完成对扫描链上的IR和DR的读写。OCI模块内部的Tracc模块、Trigger模块和Dcbug模块根据IR和DR的内容,产生相应的控制信号给处理器,达到控制M8051处理器的运行或者读取处理器信息的目的。以上就是OCI模块的基本调试原理。M805 1OCI模块的体系结构如图2所示。2 基于SOPC的M8051调试器的设计2.1 调试系统的总体设计在研究了OCD测试技术和M8051片上调试结构OCI的基础上,本文提出了M8051调试系统的总体设计方案。该方案通过USB接口与上位机通信,调试器主体由一个FPGA芯片实现。其总体结构图如图3所示。上位机运行调试软件,将编译器的各种调试操作,通过调试接口函数转化为各种调试协议数据;再将这些调试协议数据通过底层通信模块发送给M8051调试器。本设计的底层通信接口是USB接口。编译器选择应用最为广泛的且具备开放调试接口函数AGDI的Keil C51编译器。M8051调试器本身主要由USB控制器模块、8051处理器和JTAG控制器模块组成。USH控制器在8051处理器的控制下接收来自上位机的调试协议数据;JTAG控制器模块负责将这些调试协议数据转化为基于OCI结构的底层调试命令集,并以JTAG边界扫描链读写时序发送出来。M8051目标机通过OCI模块的JTAG接口,接收M8051调试器发送的底层调试命令,完成对M8051目标机的调试,并将返回值通过JTAG接口送回M8051调试器。2.2 调试器的硬件设计目前,市场上流行的基于USB接口的调试器,硬件一般以一个USB2.0控制芯片为核心,完成数据通信和调试协议数据解析,同时配置一个可编程器件实现JTAG边界扫描链读写时序。本文出于成本和系统复杂度的考虑,并结合FPGA的优势,创新地使用单独的FPGA芯片实现调试器的全部功能,简化电路板和系统设计,降低系统成本。硬件结构如图4所示。调试器的主要硬件包括:Xilinx公司高性价比的Spartan-6 FPGA,Flash配置芯片XCF04S,缓冲器芯片74LCX245作为JTAG接口的电气隔离及电源转换芯片。USB控制器、8051处理器、片内SRAM和JTAG控制器等功能模块均以IP核的彤式在FPGA上实现。USB控制器采用Mentor公司的MUSB全速(12 Mhps)控制器IP核,8051处理器采用Mcntor公司的M8051EW IP核。系统上电后,配置芯片自动完成对FPGA的配置,保证系统的非易失性。JTAG控制器模块是本系统硬件部分的核心模块。本文中JTAG控制器是基于M8051的OCI模块实现的,主要任务接收调试固件发送过来的调试协议数据,转化为OCI模块可识别的底层调试命令集,具体说就是一系列对于OCI模块的IR和DR的读写操作;再使用JTAG边界扫描链读写时序将这些底层命令发送给目标机。所以JTAG控制器模块分为两个部分:调试命令解析模块和JTAG边界扫描时序生成模块。JTAG控制器的结构如图5所示。以系统运行控制操作中的Halt8051操作为例,由OCI的结构可知,该操作由向OCI模块的IR中写入0x69来实现。在上位机中该操作的调试协议数据为0x0069。调试器固件在接收到来自上位机的调试协议数据后,将0x00和0x69分别写入调试命令解析模块的命令寄存器和数据寄存器。调试命令解析模块将该调试协议数据解析为向OCI的IR中写入0x69,即JTAG_CMD=IR,JTAG_Din=0x69;再由JTAG边界扫描时序生成模块产牛向IR写入0x69的JTAG时序。 与传统的软件方法相比,由FPGA硬件实现调试命令解析和JTAG边界扫描时序牛成,不但减轻了调试器上的8051处理器的负担,而且有效提高了JTAG调试速度。2.3 调试系统的软件设计本文中的软件设计分为两部分:PC端调试软件和调试器固件。两部分通过USB接口进行交互。具体的软件构架如图6所示。2.3.1 PC端软件设计PC端调试软件由Keil C51编译器、AGDI调试接口函数和USB驱动程序三部分组成。通用的AGDI调试接口函数是独立于处理器体系结构的函数集,它将上层调试操作分别转化为独立于处理器的调试命令。一般来说,AGDI捌试接口函数实现的调试操作有以下儿类:系统运行控制、寄存器读写、存储器读写操作以及断点操作。AGDI调试接口函数设计是PC端软件设计的重点。主要工作是在通用AGDI接口函数的基础上,实现针对M8051处理器的调试接口,将来自编译器的调试操作转换为针对M8051的调试协议数据。本文中调试协议数据采用调试命令加上调试数据的形式。以系统运行控制操作中的Halt80 51操作为例:AGDI调试接口函数将Halt8051操作转化为基于M8051处理器的调试协议数据0x0069,即调试命令0x00和调试数据0x69。最后由USB驱动层将调试协议数据0x0069打包发送给调试器。2.3.2 调试器固件设计调试器固件的功能分成两个方面:一方面是下行数据发送,在完成USB设备的枚举过程后,接收USB接口的调试协议数据,解析得到的调试命令和调试数据,再将调试命令和调试数据分别写入JTAG控制器模块的命令寄存器和数据寄存器;另一方面监控目标机的返回信息,并将返回信息通过USB接口发送给调试主机。本文中的软件部分主要负责调试协议数据的生成和传送,具体的调试命令解析和JTAG边界扫描时序的产生,全部由硬件实现,保证了调试效率的最大化。3 M8051调试系统的测试3.1 测试环境测试环境包括软件环境和硬件环境。软件环境包括Kell C51编译器和Xilinx ISE Design Suite;硬件环境包括PC机、本文开发的调试器电路板和基于M8051处理器的目标板。测试环境如图7所示。3.2 调试系统的功能测试功能测试的项目主要包括:涮试开始/停止、单步运行、断点、读写寄存器、渎写存储器等。经测试,以上调试操作稳定可靠。以断点操作为例,断点操作是软件调试过程中最重要的手段之一,本文断点功能经测试完全可靠。测试结果如图8所示。CPU从PC指针为零处开始执行,到达断点地址0x0006处停止执行,并将处理器的最新状态更新到用户界面上。3.3 调试器的主要参数本调试器采用USB2.0全速(12 Mbps)接口,调试器内部M8051处理器主频为48 MHz,JTAG协议数据收发速度达到8 Mbps。采用Spartan-6 xc6slx16 FPGA芯片实现,FPGA资源使用情况如下:可配置逻辑单元Slice1439个,占该资源总数的63%;嵌入式存储模块BLOCKRAM 144 KB,占该资源总数的14%;I/O接口数24个,占该资源总数的13%;时钟管理模块DCM 1个,占该资源总数的25%。结语本文给出的基于USB接口、以单一FPGA芯片实现的M8051嵌入式渊试器系统,不仅突破了传统调试器的速度瓶颈,而且大大简化了系统的复杂度。经测试,本调试器系统能够高效地完成M8051处理器的软件开发,是一种易于被开发者接受的高性价比、实用的调试器方案。

    时间:2018-12-28 关键词: 嵌入式 嵌入式开发 sopc 调试器

  • 基于SoPC的嵌入式文字识别系统设计

    基于SoPC的嵌入式文字识别系统设计

    摘 要: 设计了一种基于SoPC的嵌入式文字识别系统。在FPGA平台下,基于SoPC框架搭建软硬件协同系统,设计硬件电路完成文字图像的采集和预处理,嵌入Linux系统,使用其下的识别引擎完成文字图像的识别。采用Altera公司的SoPC builder构建系统框架,Quartus II完成硬件电路的设计,在宿主机Linux环境下完成了软件部分的交叉编译并嵌入到FPGA平台。整体设计在DE2-70开发板上完成了系统验证。关键词: 文字识别;可编程逻辑器件;可编程片上系统;Linux 计算机文字识别也被称为光学文字识别[1]OCR(Optical Character Recognition),在智能计算机和办公自动化领域有着极其重要的应用。文字识别的基本原理是通过诸如照相机、扫描仪等图像输入设备获取文字图片,经过图像处理后使用光学模式判别等算法分析文字图片,最后将判断出的文字编码储存起来从而完成文字识别。 文字识别设备对识别速度要求较高,因此图像采集和预处理的速度十分关键。同时对识别率要求高,识别字体种类多,因此选用带学习功能的软件引擎非常重要。另外系统需要交互界面和大量外围设备的驱动,因此需要引入操作系统以方便设计开发。1 SoPC系统设计 系统功能设计的整体方案如图1所示。各部分功能介绍如下: (1)图像采集功能,通过外接的摄像头模块完成图像的采集; (2)由硬件模块完成文字图像预处理功能,能够对采集的文字图像进行倾斜纠正[2]、图像分割[3]、二值化[4]等处理,保证系统的性能和速度,以提高后续的文字识别率; (3)文字图像识别功能,能够将文字图像中的文字识别出来并保存在TXT中; (4)识别结果的存储和发送功能,能够将识别结果文件存入SD卡或U盘中,或者通过网络发送给上位机; (5)交互界面功能:能够通过LCD模块或者外接的VGA设备等输出设备以及键盘、触摸屏或者鼠标等输入设备与使用者交互。 整个系统由一块FPGA和摄像采集、输入输出等外围设备组成。FPGA硬件模块完成摄像采集控制和图像预处理,CPU作为系统主控控制外设和硬件模块的数据流。文字识别模块和外围设备驱动在Linux平台上进行开发或移植。 本文采用Altera Cyclone2系列的FPGA,通过Altera提供的SoPC技术,可以将Nios Ⅱ软核处理器和外围设备接口IP通过Avalon总线连接起来,并集成在一块FPGA上。图2是系统的SoPC设计。2 系统硬件设计 文字识别硬件设计主要包括文字图像的采集控制和文字图像的预处理。文字图像的预处理又分为边缘检测、倾斜纠正、文字区域提取、二值化。硬件模块总体设计图如图3所示。

    时间:2018-11-14 关键词: 嵌入式 识别系统 嵌入式开发 sopc 文字

  • 基于Nios II的数字音频录放系统的设计

    基于Nios II的数字音频录放系统的设计

    前言 SOPC( System On Programmable Chip)技术是SOC( System On Chip)技术和电子设计自动化(EDA)技术结合的产物。它可以将处理器、存储器、I/O接口、硬件协处理器和普通的用户逻辑等系统设计需要的功能模块都集成到一个FPGA 芯片里, 构建一个可编程的片上系统[1]。它还具有灵活的设计方式,可裁减、可扩充、可升级,具备系统可编程等功能,是一种优秀的嵌入式系统设计技术[2]。本文研究了一种基于SOPC技术的嵌入式数字音频录放系统的设计方案。系统通过在FPGA芯片上配置NiosII软核处理器和相关的接口模块来实现嵌入式系统的主要硬件结构,并结合嵌入式系统所支持的软件设计来控制音频编/解码芯片WM8731和SDRAM,实现了音频信号的A/D、D/A转换、存储、回放等功能。由于采用了SOPC和DMA控制技术,该系统具有设计灵活、扩展性好和数据处理速度快等优点[3、4]。 1 系统原理和结构 系统结构如图1所示。本系统选用的FPGA芯片是Altera公司最新推出的CycloneII 系列的EP2C35。该芯片具有35000个逻辑单元、672个引脚、475个用户自定义I/O接口、35个嵌入式乘法器和4个锁相环,是一个集成度极高和功能强大的FPGA芯片。在FPGA中设计有NiosII软核处理器和挂在该NiosII系统的Avalon总线上的I2C配置接口模块、串/并转换模块(S/P)、并/串转换模块(P/S)、先入先出存储器模块(fifo_in、fifo_out)、Sdram存储器控制接口(Sdram control)、DMA控制器接口(Dma_in、Dma_out)和用于接收按键信息的通用并行接口(pio)模块等。在FPGA外有音频编/解码芯片(WM8731)、音频数据存储模块(SDRAM)和控制按键(keybord)等。 图1 系统结构图 系统的音频信号采集原理是:WM8731经过I2C配置后,将输入端加入的模拟音频信号进行A/D转换后,成为串行的数字信号。FPGA内的串/并转换模块再将该信号转换成16位宽的并行数字信号。此信号从s/p的输出,并交给先入先出存储器(fifo)进行缓存。当fifo的数据达到其容量的一半时向dma_in请求一次DMA传送。Dma_in接受请求后就执行一次fifo到Sdram之间的直接DMA数据保存。多次重复fifo到Sdram之间的DMA传送,直到采集停止键被按下后,就完成了一段音频数据的采集。 回放原理是:在Dma_out的控制下,通过Sdram控制器将Sdram中保存的音频数据经fifo_out送到并/串转换模块的输入端,经过并/串转换后的串行数字信号再由WM8731进行数/模转换,就还原成为模拟的声音信号。多次重复这种DMA传送操作,直到回放停止键被按下后就完成了一段音频数据的回放。 2 系统硬件设计 系统的硬件主要由FPGA内的NIOSII中央处理器及接口模块和FPGA外的音频编/解码芯片WM8731、存储器和控制键等部分构成。 在系统的硬件设计中,FPGA内部各模块的设计是本系统硬件设计的核心技术。FPGA内部各模块是利用Altera公司提供的QuartusII开发软件和其中集成的SOPC Builder系统开发工具来设计的。SOPC Builder支持NiosII CPU的配置,并支持设计者在该工具所提供的IP库中根据系统设计需要选择相应的接口模块,并加入到NiosII系统中。这样,在极短的时间内就可以完成一个SOPC系统的设计。将这些设计在QuartusII中编译并生成sof格式文件后,下载到FPGA芯片中就形成了SOPC的嵌入式系统硬件平台。 下面主要对NIOSII软核处理器、I2C总线控制接口、串/并转换模块等几个关键模块的设计进行介绍。 2.1 NiosII软核处理器 本系统设计所选择的处理器是Altera公司新近推出的第二代嵌入式NiosII软核处理器系列中的一个。NiosII处理器系列是一个用户可配置的通用32位RISC嵌入式软核处理器集合。它包括三种软核CPU:一种是高性能软核,它的处理能力超过200MIPS,需要占用1800个逻辑单元;一种是精简软核, 用这种软核构造一个完整的CPU系统只需要占用700个逻辑单元;第三种是标准软核,这种软核约占用1400个逻辑单元,性能也介于上两种软核之间。所有软核都是100%代码兼容,设计者可根据需要对上述三种软核进行选择来调整嵌入式系统的性能及成本。由于本设计采用的CycloneII系列的2C35芯片具有35000个逻辑单元,逻辑资源十分丰富,加上系统对CPU的性能要求较高的原因,因此选用了高性能的NiosII软核作为本系统的CPU。 2.2 I2C总线控制接口 WM8731是Wolfson Microelectronics公司生产的一款低功耗的高品质双声道数字信号编解码芯片。该芯片的ADC和DAC的采样频率为8KHZ~96KHZ可调,可转换的数据位长度为16~32位可调。WM8731的内部有11个寄存器。该芯片的初始化和内部功能设置是以I2C总线方式对其内部的这11个寄存器进行相应的配置来实现的。本设计中WM8731工作于主模式,采样频率设为48KHZ,转换的数据位长度为16位。 由于SOPC Builder自带的IP库中并不包含I2C配置接口模块,所以该模块需要设计者根据要配制的芯片的寄存器特点和功能要求进行专门的设计。本系统的I2C接口是作者自行设计,并以IP核的形式通过SOPC Builder连接到系统的Avalon总线上的。WM8731的基地址是34h ,11个寄存器的配置数据如表1所示。其中1Eh为WM8731的软件复位控制寄存器,复位时配置的值为00h,平时为缺省值。 表1 WM8731的寄存器及其参数设置 2.3 串/并转换模块 由于WM8731在A/D转换后和D/A转换前的数字信号都是以串行格式与外界进行数据交换的,所以,在WM8731与系统控制核心之间需要加入串/并和并/串转换模块。本文主要对其中的串/并转换模块的设计原理进行介绍。工作于主模式的WM8731与串/并转换模块的连接如2所示。图中,BCLK、和LRCK为WM8731返回给控制模块的位同步时钟和采样时钟,ADCDATA为WM8731输出的串行音频数据流。 图2 主模式的WM8731与串/并转换模块的连接图 本设计中,串并转换模块由两个16位的移位寄存器构成,分别对左声道和右声道的位数据流进行串/并转换,电路构成如图3所示。两个移位寄存器inst7和inst8由LRCK和LRCK的非信号使能,当LRCK为低电平时,移位寄存器inst8工作,对左声道的数据流进行串并转换,当LRCK为高电平时,移位寄存器inst7工作,对右声道的数据流进行串并转换。 图3 移位寄存器电路图 3 系统软件设计 本系统的软件是在Altera公司提供的软件集成开发工具IDE中,以C语言形式,在硬件抽象层(HAL)函数支持下设计的。系统的软件流程图如图4所示。系统启动后,先进行初始化操作,初始化程序主要完成WM8731的寄存器配置、初始化DMA通道及清采集FIFO缓冲器。随后,系统进入主循环状态,并检测按键。当检测到SAVE按键时,系统先通过I2C配置WM8731为录制时需要的状态,然后清FIFO缓冲器,随后启动DMA接收通道,开始保存数据,直到一次DMA传输结束。当检测到播放按键被按下时,系统通过I2C配置WM8731为播放时所需要的状态,并进入播放程序。当系统检测到停止按键被按下时,设置播放标志位为STOP,并在一次DMA完成后,自动停止播放。 图4 系统软件流程图4 结束语 本设计在Altera公司最新推出的CycloneII系列的EP2C35芯片上进行了软、硬件调试,功能全部正常。由于系统设计中采用了DMA控制下的FIFO和SDRAM之间的直接高速数据传输技术,有效地解决了音频信号的高速A/D、D/A转换及处理过程中对CPU资源长时间占用和系统功能扩展时对PCU资源更多需求的矛盾,使得本设计在系统功能扩展上具有极大的潜力。再加上SOPC技术在软、硬件设计上的可裁减和很方便移植等优点,本设计可以作为一个子系统应用在更大型的系统设计中,例如嵌入式网络音、视频信号处理等,有很好的应用前景和科研价值。

    时间:2018-11-05 关键词: 处理器 sopc 电源技术解析 EDA i/o接口 硬件协处理器

  • 智能命令行在SOPC系统中的设计

    命令行是计算机系统中最重要的组件之一。它可以帮助开发人员更方便的控制系统。在调试过程中,可以让开发人员随时变更测试方法。  FPGA的成本越来越低,FPGA上的嵌入式系统(SOPC)也应用得越来越广泛。但是相对其他成熟的计算机体系,SOPC系统现在还没有命令行。为了更好的推广SOPC应用,笔者开发了一个智能的命令行模块,可以调用系统中的任意函数,降低了开发人员的使用难度。在最小配置时,它只有大约1000行代码,占用14KB存储容量,可以放在完全由FPGA片内资源构成的计算机系统中。它的结构也具有很好的扩展性,开发人员可以结合自己的需求,轻松添加命令,丰富它的特性。  命令行框架设计  1 总体设计  好的命令行要具有扩展性,开发人员能轻松添加自己的命令;也要傻瓜化,简单易于使用。  为了达到这两个目的,可采用编译器创建的数组作为命令的总索引数据结构。为每条命令创建一个变量,指定它放在一个命令行专用的段中;其中用段“shell_cmd_tab”存放用户主动创建的命令;用段“shell_cmd_tab_auto”存放系统中所有全局函数。创建变量只需调用宏SHELL_CMD_DECL,提供命令名、命令说明和函数名即可。这样就可以实现C语言函数、变量、段、内存区域的自动映射过程。  命令的数据结构如下。  typedef struct _ncommand_t {  const char *name;  const char *descr;  shell_st_call cfunc;  } ncommand_t;  为了简化命令的创建,定义下面这个宏来创建命令。  #define SHELL_CMD_DECL(name, usage, func) ncommand_t _shell_cmd_tab_##func _attribute_ ( (section( “.shell_cmd_tab”) ) )={ name, usage, func }; // small memory version  创建命令的实例如下:SHELL_CMD_DECL(“dump”, “Shows a memory dump”, hexdump);  2 连接脚本  在连接脚本里指定段的位置是简化命令行使用流程的关键。GCC使用PROVIDE定义变量。笔者使用PROVIDE定义了各个段的起始地址和结束地址,从而可以在代码中使用段地址查询到所有命令。在编译器使用的连接脚本中添加如下行定义函数表。  .shell :  {  PROVIDE (__ram_shell_start = ABSOLUTE(.));  . = ALIGN(32 / 8);  PROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.));  *(.shell_cmd_tab .shell_cmd_tab.*)  PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.));  PROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.));  *(.shell_cmd_tab_auto .shell_cmd_tab_auto.*)  PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.));  *(.shell .shell.*)  . = ALIGN(32 / 8);  PROVIDE (__ram_shell_end = ABSOLUTE(.));  } > ddr_sdram3 动态函数表创建  由工具自动根据系统中的全局函数创建的命令被称为自动命令。自动命令使用户可以在命令行中调用任意普通函数,即使开发人员没有声明这些函数为命令。自动命令也需要一个数组包含系统中所有全局函数的信息,这个表为动态函数表。使用一个脚本根据系统的可执行文件自动生成动态函数表。要先编译软件,生成可执行文件;再调用脚本创建动态函数表;最后再编译出包含动态函数表的可执行文件。  在脚本中先使用GNU的nm工具从可执行文件导出所有全局符号,再使用grep提取出包括函数名的行,接着使用cut删除函数名前的地址信息,使用sed将字符T替换为创建命令的宏SHELL_CMD_DECL_AUTO,并在行尾添加括号。最后将所有这些信息写入一个C源代码文件,交给编译器编译,就能得到一个动态函数表。  4 自动命令参数个数  为了便于开发人员使用,自动命令最好能适应所有函数类型,假设都是unsigned int的函数类型。对于可以成功转化为unsigned int类型整数的参数,将真实的值传递给函数;对于其他参数,则将参数作为一个字符串传递给函数。  5 字符输入  命令行从标准输入设备中获取字符。命令行只接受可打印的字符和特定的控制字符。如果收到了回车或者换行字符,代表用户完成了命令输入,就解析命令。解析命令前,去掉多余的空格符(0x20),即不允许有连续的两个或多个空格符存在,命令的最后也不能有空格符。  6 参数解析  命令行模块要从用户输入的字符串中解析出命令名和参数。为命令提供与DOS和Linux类似的两个参数,argc和argv。argc表示参数的个数;argv是字符串指针的数组,最多10个字符串。argv[0]是第一个参数,argv[1]是第二个参数,如此类推。  7 函数解析  在代码中使用SHELL_CMD_DECL创建了命令列表,使用工具创建了自动命令列表。这两个表实际上都是数据结构ncommand_t的数组,其中有命令名和函数地址的信息。解析函数实际上就是根据在这两个数组中依次比较函数名。如果用户输入的命令名和数组中的命令名一致,就使用对应的函数地址。  8 命令执行  得到函数地址后,就可以执行命令对应的函数。对于主动创建的命令,使用argc和argv作为参数。对于自动命令,命令行模块先尝试将原始参数转换无符号整数。如果成功,使用无符号整数作为参数;如果不成功,则将原始参数的地址作为参数,实际上是一个字符串。  命令设计  完成总体设计后,就可以逐个添加开发需要的命令了。  ● 帮助命令用于显示所有命令名及其用法。  ● IO命令用来访问输入输出设备的寄存器,可以实现对外部设备的控制。  ● 存储器命令用来显示、修改存储器的值。最基本的包括:dump命令显示指定位置的内存的值;modify命令用来修改指定内存单元的值。  ● 用户在使用过程中,会使用很多命令。能够查询历史命令、循环执行历史命令将给用户带来很多方便。因此笔者实现了三条命令。history_show用来显示所有已经使用了的命令;history_del用来删除指定的历史命令;history_exec用来执行指定的历史命令。  优化处理  Altera提供了简化版的输出函数alt_printf来替代printf,降低了嵌入式系统的开销,笔者在命令行中也支持这个这个函数。命令行的代码中,只调用SHELL_PRINT;在头文件中,根据用户设置,SHELL_PRINT使用标准的printf或者简化的alt_printf。如果使用简化的alt_printf,这个命令行占用的内存小于14KB。  在SOPC系统中的应用  Altera为SOPC系统开发提供的集成开发环境NIOS II IDE附带了多个软件实例。在使用这些软件实例时,用户只需要选择模块,完全不用新编代码,非常简单。  智能命令行模块也可以作为NIOS II IDE的一个实例。先在“nios2edsexamplessoftware”目录下为命令行创建一个子目录shell_standard,再以其他软件实例的template.xml为模板创为命令行建一个template.xml文件,然后复制命令行模块的所有文件到这个目录中。这样,用户在创建工程时,直接选中智能命令行模板,就可以使用智能命令行模块了。

    时间:2018-10-24 关键词: 系统 sopc 智能 命令行

  • 关于μClinux的SoPC应用系统设计详解

    电子家园 dzjia.cn   嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑pld(programmable logic device)技术引入到嵌入式系统设计中,进而又发展到soc(system on chip),最终将pld与嵌入式处理器结合而成为sopc(system on programmable chip),使得sopc成为嵌入式系统设计的一个发展趋势。   本文采用sopc内嵌32位的软核处理器nios,实现了一个uart串行口和以太网接口的转换器(以下简称转换器),并基于microtronix公司针对nios处理器移植的μclinux开发了应用程序。   1 基于sopc的嵌入式硬件平台构建   不同于基于处理器或控制器及soc的嵌入式系统,基于sopc的嵌入式系统具有可配置的特点,不会包括任何专用外设,而是可根据需要灵活地在一片fpga中构造外设接口。   基于sopc的嵌入式系统主要由1片核心芯片sopc和片外器件,以及一些相关的接口设备组成。本文所要实现的转换器采用altera公司的 cyclone芯片及外围电路组成,其中外围电路包括2片512 kb的sram、l片8mb的flash、uart电子转换器和1片以太网控制器 lan91c111。   sopc芯片内嵌软核处理器nios。在sopc芯片中,除了cpu外,可配片上rom、内部定时器、uart串行口、sram、flash接口等系统部件。这些部件均以可编程逻辑部件的形式实现,芯片内部部件结构图如图3所示。cpu和所有部件通过avalon总线连接在一起。   sopc芯片内系统模块和avalon总线模块均由sopc builder工具自动生成,利用qualtus ii集成开发环境可实现芯片内的逻辑设计及其引脚定义。经编译生成后缀为.sof的硬件映像文件,通过byteblasterii线缆下载到目标板的cyclone芯片中,或将.sof文件转换成.flash文件,下载到目标板的flash中。这样就完成了转换器的硬件设计。   2 基于μclinux的sopc应用程序开发   应用程序的开发可在硬件平台上直接进行,但需了解所有硬件部件的细节,并编写相应的驱动子程序,其软件设计难度及工作量大,且可移植性差。基于嵌入式操作系统的应用程序,其所有的硬件细节均对用户屏蔽。对硬件进行直接控制的底层驱动程序均封装在操作系统内,通过设备驱动程序接口来完成,用户只需在高层通过操作系统所提供的系统调用进行编程。μclinux是针对控制领域的嵌入式linux操作系统,适合如nios处理器等不具备内存管理单元(mmu) 的微处理器/微控制器。基于操作系统进行开发,需将操作系统加载到硬件平台中,μclinux可以以部件的形式集成到sopc系统中。   2.1 加载μclinux系统的步骤   将μclinux加载到sopc目标板上时需提供一个交叉编译环境,硬件要求具有一个串口的pc工作站、基于nios处理器的sopc目标板和 byteblastermv线缆等。软件需求windowsntv4.0、windows2000或windowsxp、altera nios开发包 ndk 3.0中所提供的nios gnupro工具、ahera nios开发包所提供的cygwin安装,以及quartus ii可编程逻辑开发工具v2.2等。   2.1.1 创建和装载内核映像   创建和装载μclinux映像文件在linux developerbash环境下进行,首先需按下列步骤配置和构建内核。    [linux developer]…μclinux/:cd linux   [linux developer]…linux/:make xconfig   [linux developer]…linux/:make clean   [linux developer]…1inux/:make dep   [linux developer]…linux/:make   [linux developer]…μclinux/:make linux.flash  生成的linux.flash文件即为μclinux内核映像。当sopc目标板加电,片内rom中的germs监控程序运行后,在 [linux developer]…μclinux/:下键入nios-runlinux.flash,即下载linux.flash文件到目标板上,完成内核映像的加载。   2.1.2创建和装载根文件系统   除了装载内核外,还需装载根文件系统。μclinux采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少空间。   在主机上linux的target目录表示在μclinux下的根(root)目录。当前的脚本和工具可将target目录转换成映像文件(romdisk.flash),按如下步骤创建:   [linux developer]…μclinux/:make clean_target  [linux developer]…μclinux/:makeromfs  然后键入以下命令:   [linux developer]…μclinux/:nios-run romdisk.flash  即

    时间:2018-10-23 关键词: 系统 Linux 详解 sopc clinux

  • 基于SoPC的嵌入式文字识别系统设计

    摘 要: 设计了一种基于SoPC的嵌入式文字识别系统。在FPGA平台下,基于SoPC框架搭建软硬件协同系统,设计硬件电路完成文字图像的采集和预处理,嵌入Linux系统,使用其下的识别引擎完成文字图像的识别。采用Altera公司的SoPC builder构建系统框架,Quartus II完成硬件电路的设计,在宿主机Linux环境下完成了软件部分的交叉编译并嵌入到FPGA平台。整体设计在DE2-70开发板上完成了系统验证。关键词: 文字识别;可编程逻辑器件;可编程片上系统;Linux 计算机文字识别也被称为光学文字识别[1]OCR(Optical Character Recognition),在智能计算机和办公自动化领域有着极其重要的应用。文字识别的基本原理是通过诸如照相机、扫描仪等图像输入设备获取文字图片,经过图像处理后使用光学模式判别等算法分析文字图片,最后将判断出的文字编码储存起来从而完成文字识别。 文字识别设备对识别速度要求较高,因此图像采集和预处理的速度十分关键。同时对识别率要求高,识别字体种类多,因此选用带学习功能的软件引擎非常重要。另外系统需要交互界面和大量外围设备的驱动,因此需要引入操作系统以方便设计开发。1 SoPC系统设计 系统功能设计的整体方案如图1所示。各部分功能介绍如下: (1)图像采集功能,通过外接的摄像头模块完成图像的采集; (2)由硬件模块完成文字图像预处理功能,能够对采集的文字图像进行倾斜纠正[2]、图像分割[3]、二值化[4]等处理,保证系统的性能和速度,以提高后续的文字识别率; (3)文字图像识别功能,能够将文字图像中的文字识别出来并保存在TXT中; (4)识别结果的存储和发送功能,能够将识别结果文件存入SD卡或U盘中,或者通过网络发送给上位机; (5)交互界面功能:能够通过LCD模块或者外接的VGA设备等输出设备以及键盘、触摸屏或者鼠标等输入设备与使用者交互。 整个系统由一块FPGA和摄像采集、输入输出等外围设备组成。FPGA硬件模块完成摄像采集控制和图像预处理,CPU作为系统主控控制外设和硬件模块的数据流。文字识别模块和外围设备驱动在Linux平台上进行开发或移植。 本文采用Altera Cyclone2系列的FPGA,通过Altera提供的SoPC技术,可以将Nios Ⅱ软核处理器和外围设备接口IP通过Avalon总线连接起来,并集成在一块FPGA上。图2是系统的SoPC设计。2 系统硬件设计 文字识别硬件设计主要包括文字图像的采集控制和文字图像的预处理。文字图像的预处理又分为边缘检测、倾斜纠正、文字区域提取、二值化。硬件模块总体设计图如图3所示。

    时间:2018-10-23 关键词: 嵌入式 识别系统 sopc 文字

  • 基于SoPC的自感知运动图像采集系统设计

    引 言 近年来,嵌入式图像采集技术得到快速发展,但由于嵌入式系统的处理、传输和存储数据的资源有限,常成为系统采集速度的瓶颈,很难实现高速稳定的采集。 SoPC是近几年兴起的一种用于嵌入式开发的片上系统可编程技术,SoPC基于FPGA芯片,将处理器、存储器、I/O口等模块集成在一起,完成整个系统的主要逻辑功能,具有设计灵活、可剪裁、可扩充、可升级及软、硬件在系统可编程的功能。由于SoPC平台可以拥有微处理器系统丰富的软件资源和出色的人机交互能力,同时又具备FPGA系统的快速硬件逻辑特性,实现了软件系统和硬件系统的互补,因此发展前景非常广阔,被认为是未来嵌入式系统发展的方向。 在此试图设计一种基于SoPC的自感知图像采集系统,使其能够应用于低成本、低功耗的微型嵌入式图像监控和采集系统,以期在更多适合的应用场合替代传统基于PC的图像监控方案。在已见文献报道中,基于SoPC的图像采集系统设计大多只是把采集的数据缓冲在SDRAM或SRAM中,有些文献则进一步提出将缓冲后数据直接通过并口传输给主控芯片,有的方案则是由USB接口或以太网接口输出主机,另外有的文献则提出直接将数据存储到CF卡或硬盘中,而在SoPC系统直接实现SD卡的图像采集数据文件存储在国内还未见报道。 另外还提出了一种新的适合在FPGA硬件实现的快速运动检测算法,并和图像采集、SD卡图像数据存储接口电路集成在同一FPGA芯片内部。在此这一图像采集系统的结构、工作原理以及系统设计等加以介绍。1 系统结构及工作原理 该系统选用的。FPGA芯片是Altera公司CycloneⅡ系列的EP2C35。该芯片具有35 000个逻辑单元、672个引脚、475个用户自定义I/O接口、35个嵌入式乘法器和4个锁相环。FPGA芯片外接美光公司型号为MT9M011的130万像素的CIS(CMOS图像传感器,分辨率为640×480时60帧/s)、Hynix公司的型号为HY57V641620HG的SDRAM(4 Banks×1 M×16 b),以及用来图像显示验证的液晶屏等。 系统工作过程如图1所示。CIS经过I2C配置模块的初始化后,输出行场同步信号、像素时钟和图像数据。再将采集的数据转换成RGB信号,帧缓冲模块(Frame Buffer)每次将相邻两帧图像数据写入SDRAM,然后比较这两帧图像的差值,如果差值大于设定的阈值,就认为检测到了外界场景的运动,系统会自动将捕获的图像输出到SD卡进行存储。2 系统模块设计2.1 采集模块2.1.1 CIS配置模块 目前嵌入式采集系统大多仍采用模拟摄像头,再经过A/D转换得到数字图像信号。而相比较而言,CMOS图像传感器能够直接输出数字信号,而且其以体积小、功耗低、成本低的优势更适合应用在嵌入式应用领域,在该设计中采用130万像素的CMOS图像传感器,其输出图像品质已相当接近CCD感应器。MT9M011芯片内部自带时序发生器和ADC,使用时只需输入一个时钟信号(该设计采用25 MHz的时钟信号),图像数据便按行有效信号(LINE VALID)、场有效信号(FRAME VAL-ID)和像素时钟(Pixel clock)时序关系一同发出。 MT9M011上集成了I2C接口,其初始化由内部的I2C总线来配置,通过编写硬件描述语言来模拟I2C总线时序,从而配置各寄存器,其中,该设计需要配置的寄存器如表1所示。该模块采用计数器建立一个状态机,先写器件地址,再写寄存器地址,然后写数据。另外还提供每帧图像的控制信号以及图像的行计数器和列计数器,为后续处理作准备。2.1.2 格式转换模块 MT9M011所输出的图像格式为Bayer格式,奇行由绿、红像素交替构成,偶行由蓝、绿像素交替构成。要想在显示屏上显示,必须将Bayer格式通过CFA插值滤波为RGB图像数据。该模块采用双线性插值算法(BiIinear Interpolation),与高阶B-spline和Cubic-spline等插补函数算法相比,图像的像质相差不大。但Bilincar的算法要简单得多,不仅消耗的硬件资源相对要少,而且易于硬件实现。其算法原理是每个像素位置上缺少的彩色分量由3×3邻域内具有相同颜色分量的像素平均值获得。 设计中调用移位寄存器IP核,将间隔为640的3个数作为输出,这样同时取到三行同一列的三个数据,将这三个数据存入寄存器分别作两次缓存延迟,从而得到3×3的邻域数据,根据配置模块提供的行列计数的最低位来判断该邻域中间点所在行和列的奇偶性,从而计算出不同的RGB值。至此,每点图像数据量变为原来的3倍。为了便于在液晶屏进行图像显示的验证和SDRAM的缓存,在该模块将RGB数据进行了抽样处理,采用隔点隔行采样使得每帧图像分辨率降为320×240像素。2.2 缓存模块 考虑到系统需要缓存的数据量较大,在各种随机存储器件中,SDRAM器件价格低、容量大、速度也较快,非常适合用于图像采集系统。但SDRAM的控制逻辑比较复杂,要求有一个专门的控制器。 缓存模块是由Sdram控制器,三个FIFO以及分时切换电路组成。SDRAM控制器负责外部SDRAM的读/写操作。三个FIFO中Write_FIFO用来数据输入,Read_FIFO11和Read FIFO2用来数据输出,容量均为512,位宽设为16 b。考虑到SDRAM只有16 b的位宽,输入的RGB信号分别只取各自的最高5位。2.2.1 SDRAM控制器 SDRAM控制器是由命令生成状态机和数据通道两个模块构成。系统的初始化、读写和刷新的控制采用有限状态机来实现。如图2所示,其状态转移系统复位后由复位状态(Reset)进入初始化(Init)状态。初始化包含初始化延时、初始化预充电、初始化刷新和初始化模式寄存器设置4个子状态。初始化时将模式寄存器设置为长度为“1”的突发读写方式。设置完模式寄存器后,系统进入空闲状态。当3个FIFO半满信号有效后。SDRAM控制器进入行激活状态,经过两个周期空操作(ActiveNOP)状态后进入读或者写状态。 读数据过程由Read CAS状态开始,经过CAS延时,进入Read_Data状态。突发计数器从Read_CAS态开始计数,当计数到读写请求的突发长度时,状态机进入Read_Precharge状态将打开的行关闭。在图像采集中,用突发方式存完一行后,下一次存取的将是不同的行。根据这一特点,在SDRAM控制器中进行了优化,在读写操作完成后执行自动预充电,将打开的行关闭,将预充电的时间隐藏在数据访问中,从而提高了SDRAM访问的速度。写操作过程由Write_Data和Write_Precharge状态组成。当激活一行完成后,进入到Write_Data状态,突发计数器对周期计数,计数到突发长度时,状态机进入Write_Precharge状态将打开的行关闭。需要注意的是Read_Precharge和Write_Precharge后都需要两个空操作才能再打开新的一行。 由于图像数据流的连续性,每隔65 μs就有一行数据输入,因此在SDRAM控制器中没有必要再设置刷新计数器,而是在响应图像采集数据请求后将采集的一行数据存入SDRAM后对SDRAM进行刷新。由于HY57V641620HG要求在65 ms内完成4 096次刷新,该设计验证时按照每帧图像(320×240)×(60帧/s)格式采集,需要在采集一行后完成[1/(60×240)/64]×4 096△4.4次刷新,因此需执行5次刷新操作。在Write_Precharge完成后,如果写操作是由FIFO半满信号有效引起的,状态机将进入自动刷新状态,完成5次刷新操作后回到Idle状态。如图3所示,数据通路模块受OE信号的控制,使数据的进出和相应的操作指令在时序上同步。OE为1时,数据可由DQ脚写入SDRAM,OE为0时,数据可从SDRAM的DQ读出。 经测试SDRAM控制器满足设计要求,在Model-Sim6.0中其时序仿真波形图如图4所示。2.2.2 帧存分时切换机制 Write_FIFO,Read_FIFO1和Read_FIFO2都是16 b位宽,而SDRAM只有16 b的数据位宽,三个FIFO都要访问SDRAM,这就涉及到相互竞争的问题,在同一时刻只能有一个访问SDRAM。为此需要设计一个分时切换机制。由于SDRAM的操作时钟为100 MHz,而采集像素时钟为25 MHz,经过抽样后时钟频率更是大大降低。在一次采集周期内,SDRAM完全可以和三个FIFO的接口轮流切换,从而不会影响采集的速度。 如图5所示,其工作过程为: (1)图像经格式转换模块输出,写入Write_FIFO的输入端口。 (2)当控制电路检测到Write_FIFO中读出端的数据量大于256(三个FIFO容量均为512 word)时,产生写命令,并拥有写互斥锁。SDRAM控制器接到命令,以100 MHz时钟将256个数据写入SDRAM。 (3)Write_FIFO输出256个数据后,读出端的数据量小于256,并且由于Read_FIFO1中初始状态的输入端数据小于256,Read_FIFO1拥有读互斥锁,产生读命令,SDRAM控制器接到命令,以100 MHz时钟将256个数据读出,并写入Read_FIFO1。 (4)当Read_FIFO1收到256个数据,其输入端数据大于256,并且由于Read_FIFO2中初始状态的数据小于256,Read_FIFO2拥有读互斥锁,产生读命令,SDRAM控制器将256个数据读出,并写入Read_FIFO2。 (5)这样就完成了一次操作,之后就是循环操作。地址信号也是由控制电路产生,每经过一次读写,地址增量为256,这样就可以保持信号的连续性。 (6)Write_FIFO在一定周期内向SDRAM中连续写入两帧连续图像;Read+FIFO1根据SDRAM中的地址读取其中的一帧图像数据;而Read_FIFO2读取另一帧图像数据。 通过这个机制,三个FIFO中始终都有数据,不会发生读空、写满情况,使得存储器两端的数据读/写方便,只要在write FIFO的输入端和Read—FIF01、Read FIFO2的输出端进行操作就行,在时钟的上升沿将数据写入或输出,实现了异步方式。3 运动检测模块 该模块采用帧间差分法,其基本原理是将连续的两帧或几帧的图像对应的像素值相减,在环境亮度变化不大的情况下,如果对应像素值相差很小,则认为此处景物是静止的,如果图像区域某处的像素值变化很大,可认为这是由于图像中运动物体引起的。其算法实现简单,能够适应各种动态环境,稳定性较好。 设计中对相邻两帧图像的每个像素RGB分量分别取绝对差值。当绝对差值大于阈值时(这里取经验值16),就认为存在差异,如果做比较的两个像素的RGB分量只要有一个分量有差异,则令此点的数值为1,这样就得到一幅320×240像素大小的二值差值图像。然后传统处理方法是统计值为1的点的个数,如果其数量超过预设值,就认为两幅图像有差异。这种方法设计简单,但是准确率还不够高,为此该设计提出了一种改进的算法,引入了图像处理常用的两种操作腐蚀和膨胀。腐蚀与膨胀是一对逆运算,如果先腐蚀再膨胀,便构成了开运算。一般来说,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点)。而总的位置和形状不变。 对上述二值图像进行开运算处理,可以消除小颗粒的噪声的干扰,从而尽可能降低误判和漏判。 设计流程如图6所示,通过调用ALTSHIFTTAPS IP核,并利用输出TAPS,构建一个11×11像素大小的图块作为结构元素,然后腐蚀: (1)用11×11的结构元素,扫描图像的每一个像素; (2)用结构元素与其覆盖的二值图像做“与”操作; (3)如果都为1,结果图像的该像素为1,否则为0。 接着再将上述结果作为第二个ALTSHIFTTAPS的输入,再次构建11×11个像素的结构元素,然后进行膨胀处理: (1)用11×ll的结构元素,扫描图像的每一个像素; (2)用结构元素与其覆盖的二值图像做“或”操作; (3)如果都为0,结果图像的该像素为0,否则为1。 最后得到运动判定信号DETECT,并用这个信号控制数据写入过程,一旦判定信号为1,就启动后续的图像存储过程。4 SD卡图像存储模块 (1)接口电路模块。在各种存储设备中,SD卡不仅小巧,而且功耗很低,另外市面上常见SD卡的容量可达到2 GB以上,因此非常适合用于对体积和功耗要求严格的嵌入式图像存储。该设计选用APACER公司的一款高速SD卡(传输速率为150X,容量4 GB)。为了增强系统的可扩展性,该设计在FPGA芯片中嵌入Altera公司新近推出的第二代高性能NiosⅡ软核处理器,其处理能力超过200 MIPS,并在NiosⅡ中完成SD卡驱动程序设计。前端的采集缓存电路与NiosⅡ系统之间的数据和控制信号由定制的接口模块完成。 定制IP核DATAIN_FIFO是在SoPC Builder环境下完成(如图7所示),DATAIN_FIFO写端口的时钟信号、写请求信号同步于SDRAM控制模块的ReadFIFO1,而DATAIN_FIFO的读端口的时钟、读请求信号则由CPU控制。以上信号除了waitrequest之外,都由Avalon交换结构自动产生和控制。waitrequest信号可以直接连接到异步FIFO的rdempty输出,当FIFO读空之后,waitrequest有效,插入等待周期,一直到从端口的数据准备好才输出readdata。开始和结束采集控制信号由DETEcT信号和DMA中断信号决定,确保采集到的数据刚好为一帧320×240图像。 由于NiosⅡ系统提供了成熟的SPI接口,所以设计中采用SPI总线协议模式来读写SD卡。因为MMC卡在复位阶段要求SPI的时钟频率要小于等于400 kHz,为了提高读写速度,本设计设计的接口不再兼容MMC卡,其设置SPI的SCK引脚的输出频率在数据传输时设为25 MHz。 (2)BMP图像文件创建程序。为提高程序运行速度。并考虑到该系统的实际需要,程序只实现了写BMP图像文件功能。程序主要由SD卡操作驱动接口函数和文件系统层组成。 驱动函数目的是为文件系统层提供所需的SD卡初始化函数和SD卡写多块数据函数。图8是SD卡写函数流程图示意图。当写函数接收到主程序的写文件指令后,就向SD卡发送多块写命令,卡将发送给主机一个应答令牌,并且等待主机发送一个发送数据块来,当应答R1为0时,说明可以发送数据,块大小设置为512 B。数据块之后附有16位的CRC校验,因为CRC校验计算占用了很大部分发送的时间,该系统采用自定义用户指令对这部分进行了加速处理。 要使写入SD卡的数据在装有Windows或Linux操作系统的上位机中得到正确访问,需要在SD卡上创建它们支持的文件系统。考虑到FAT12目前已经很少使用,在此设计的文件系统只支持FAT16和FAT32。并且将整个卡作为一个分区处理。 图9是系统的软件工作主要流程图。在主程序中,系统启动后,先进行初始化操作,包括中断初始化、文件系统初始化和SD卡底层驱动的初始化。随后系统进入主循环等待状态,一旦检测到DETECT_PIO电平的变化就暂停SDRAM数据写入,以防SDRAM缓存的图像数据被覆盖,同时根据当前的时间创建一个BMP格式的文件,然后往里填写文件头和文件信息头,随后连续写一帧RGB数据。文件创建完毕后系统继续处于检测等待状态,并恢复SDRAM数据写入。5 系统评价 该设计在自制核心实验板上(见图10)进行了软、硬件仿真和调试,调试环境参数设定如下:采集时钟频率为25 MHz,NiosⅡ时钟频率为100 MHz、每帧图像大小为320×240像素。调试结果如下:系统采集速度在60帧/s左右。对五米之内场景动态变化的响应时间在5 ms左右,SD卡保存单帧图像时间约为9 s(每帧图像数据量是153 600 B),连续工作一个星期无任何故障发生。结果表明该系统图像采集和处理速度超过一般的以软件实现为主的嵌入式图像采集方案(如ARM处理器系统)。由于核心处理器采用单芯片方案,采集系统比较稳定,同时其功耗大大低于多芯片方案。6 结 语 在此提出一种基于SoPC技术的图像检测、采集和储存的一体化单芯片控制新型系统集成方案,并实现了原型系统,该系统的主要特点是处理速度快、功耗低、稳定可靠。 该设计可以在进一步工作中移植嵌入式操作系统μCLinux,以实现复杂的多任务操作。因此该设计既可作为独立的解决方案应用于便携式原位观测系统中,同时以其良好的扩展性,也可作为一个子系统应用于大型图像处理系统的前端部分。

    时间:2018-10-18 关键词: 图像 sopc 采集系统

  • SoPC系统设计的综合优化方案

    为了提高设计性能(有时甚至只是为了达到设计要求),对所设计的SOPC系统进行综合优化是非常必要的。论文结合具体工程,以Altera公司的FPGA EP2S60为例,探讨了SOPC系统设计的综合优化方法。1 综合优化设计的一般流程和方法在FPGA处理器没有选定前,可以进行SOPC系统的开发。根据编译和优化的效果指导处理器芯片的选型,选择合适的处理器型号、速度等级和封装。当硬件系统设计好后,就只能在已选择好的处理器芯片上进行优化。一般的优化方法有Verilog程序代码优化、编译和布线优化设置,在添加Nios II系统后也涉及对Nios II系统的优化。在设计过程中应遵循模块化设计思想,如果前面的优化都不能达到满意的效果,则需要使用逻辑锁定技术和应用DSE算法进行优化。2 综合优化设计策略2.1Quartus II软件优化设置在进行综合前,对软件编译和布线进行优化设置是优化设计的一个重要步骤,不同设置对综合布线的结果有较大影响。几个比较重要的设置包括时间要求设置、编译器设置,最重要的是布线器的设置,如图1所示。设计中设置对所有路径进行优化,并设置布线器尽最大努力满足设计的时序要求。在进一步的布线器参数设置中,选择全局时钟有效,这样虽然可能增加实际布线后延时,但是可以减少时钟偏斜,为系统整体时序设计的稳定性提供保障,同时也可以增强网络的驱动能力。另外,中心处理器EP2S60支持多种电平模式,而各个bank支持的模式不尽相同。在最初的硬件电路设计中已经考虑到这一点,将外接PCI接口的引脚分配在器件的bank7和bank8上,这样可以充分利用器件设计好的优化路径,达到比较好的设计性能。在引脚分配中,需要对引脚的特性进行更详细的设置,具体应根据实际系统引脚分配的功能要求选择相应的电平标准,如PCI核接口选择3.3 V PCI电平标准。2.2 程序代码的优化设计Verilog语言是一种类C语言的硬件描述语言,在设计中首先要对所需实现的硬件电路结构和连接都十分清晰,然后再用适当的语言进行描述。在具体实现上,应综合考虑以下基本设计原则:①面积和速度的平衡互换原则。如设计时序余量大,可以通过功能模块复用来减少消耗的芯片面积;如设计时序要求高,可采用“串并转换”和“乒乓操作”以面积换速度。②硬件原则。从硬件角度进行程序开发。③系统原则。以系统的眼光进行模块划分和各模块任务的分配。④同步设计原则。同步设计易于提高设计的频率和设计的稳定性,当前的优化工具也多是针对同步时序的优化。硬件程序设计的另一个重要方面是状态机的设计。课题中涉及4个状态机的设计。遵循好的状态机设计原则也是硬件程序开发中不可忽视的一方面。状态机编码方式的选择:由于FPGA中提供较多的触发器资源,FPGA设计中多采用热键编码方式,综合器的综合约束属性界面下可以方便地改变状态编码方式。初始化状态和默认状态:为避免上电不能正确进入初始状态,设计中初始状态编码为全零;同时为保证逻辑不会陷入死循环,设计语句中应注意完备化设计。采用两段式状态机设计方法:将状态转移单独写成一个模块,将状态的操作和判断写到另一个模块中,这样可以将同步时序和组合逻辑分别放置于不同的逻辑块,利于综合器优化代码和布线器实现设计。2.3 片上存储器分配策略在Stratix II系列的FPGA中包含3种不同类型的内部存储块:M-RAM块、M512 RAM块和M4K RAM块。设计中,应用不同的存储块设计不同的存储器,可以达到较优化的系统性能。M-RAM完全支持双端口模式,由512 Kb RAM加上校验位组成,主要用于大数据包的缓存,如以太网帧、IP包等大到几KB的数据包,以及视频图像帧的缓存和NiosII嵌人式软核的存储;M512 RAM块由512位模块加上校验的RAM组成,主要用于接口速率适配的内部FIF0、移位寄存器和时钟域隔离等;M4K块由4 096×1位到128×36位的4 Kb模块加校验组成,主要用于小型数据块存储和多通道I/O协议中,另外M4K RAM也完全支持双端口模式。设计中采用的中心处理器FPGA芯片EP2S60包含丰富的存储器逻辑资源,和上一代Stratix系列相比,运行速度提高了50%,逻辑容量增加了1倍,具有达180 Kb的等效逻辑元件和9 Mb的RAM,大大增加了集成度,为高度集成的应用提供了实现基础,而成本比上一代还要低。设计采用的EP2S60器件逻辑资源如表1所列。根据器件内3种存储器的各自特点,结合片内的逻辑资源分布,在片内设计了5个同步FIFO,其中4个长度32位、存储深度256字的FIFO作为64位PCI传输的缓存,另一个长度32位,存储深度设计为2 048字。M512存储块主要用于内部FIFO的设计,在配置片内FIFO时选择M512存储块类型。1个32位长、存储深度256字的FIFO占用的逻辑资源为30个LUT单元、15个M512存储块、134个REG单元。4个这样的FIFO占用60个M512存储块、120个LUT单元。536个REG单元。而1个32位长、2 048字存储深度的FIFO占用的逻辑资源为114个M512存储块、63个LUT单元、128个REG单元。这样,系统设计中的FIFO总共占用174个M512存储块,相比表1中EP2S60器件329个M512存储块,占用率为52.9%,完全可以在片内设计实现。类似计算机系统,软CPU Nios II系统也需要配置片上的ROM和片上RAM,如图2所示。片上ROM设计存储器类型为M4K,数据宽度32位,深度为32 KB,读延迟1。片上RAM存储器类型同样为M4K,数据宽度32位,深度设计为16 KB,读延迟1。片上ROM主要用于上电后程序从外部存储器加载完成后的程序存储,是IDE主程序开始执行的地方。在Nios II自动分配的地址中,一般起始地址为0x00000000,目的地址为设计ROM容量的大小。片上RAM主要作为程序运行的缓存和程序异常时的暂存,相当于计算机中的内存。在IDE编程设置中,要对片上ROM和片上RAM的使用进行具体的设置,如图3所示。对程序存储器和只读数据存储器,设置为使用片上ROM。对读写数据存储器、堆存储器和堆栈存储器,设置使用片上RAM存储器。这样,可以作到有效的存储器配置。2.4 针对NiOS II系统的优化SOPC系统在没有添加Nios II系统时,较容易实现比较高的频率,在加入Nios II系统后,系统设计频率有较明显的下降。因此在带Nios II的系统中,对Nios II的优化设计是制约整个SOPC系统时序的一个瓶颈。另一方面,在Nios II系统中,多是应用已经设计好的软核CPU和外接器件IP核,在设计时已经进行过优化并且已经封装集成,进一步优化的难度很大,因此优化主要放在自行开发设计的IP核和软件的参数配置以及设计NiosII系统时应当遵循的一些原则上。在Nios II IDE编程环境中,如图4所示,选择最大优化,在编译器参数设置中选择小的C编译库和减少设备驱动,这样经优化后可以缩减硬件代码,减少器件资源占用。参考文献[7]中探讨了Nios II系统的优化途径。文中归纳系统优化有如下方法:①运算应采用定点运算。经过测试,浮点加法和乘法运算消耗的时间为定点运算的5~6倍,如果需要浮点运算,也应该采用自定义指令的方式来实现。②采用C语言和汇编语言混合编程。对计算量大的多次调用的程序模块采用汇编语言,对主干流程语言采用C语言,这样可以照顾到程序的可读性,效率也较高,同时缩减程序占用资源量。③使用用户自定义指令。将一些复杂的算法由软件转而交由硬件来实现,可以获得较高的效率提升。④使用硬件加速提高软件性能。通过添加外部协处理器来加速数据功能。⑤多处理器系统。使用两个或多个处理器来提高系统的数据处理能力。通过上面分析,进行系统优化似乎是一个矛盾的过程:有时需要优化以缩减代码量并减少资源占用,有时又通过增加逻辑和添加处理模块来提升数据处理能力。实际上,评价一个系统设计的好坏,除了需要实现基本的功能外,还要看使用逻辑资源和性能的综合比较,以更好地利用处理器,达到最好的性能。3实验结论在系统设计中,应用文中分析的综合优化设计方法,系统最高频率有了较大提升,从最初的88.24 MHz,优化至目前的111.73 MHz。由于在Quartus II编译器参数没置中,要求最高时钟设置为132 MHz,因此优化后最高时钟报告以红色显示,表示没有达到预先设置的132 MHz时钟要求。相比于优化前,系统最高频率提高了26.62%,可见采取的综合优化设计措施比较有效。对于EP2S60器件,在没有添加Nios II系统时,可以较容易达到200~300 MHz的最高时钟频率,加入Nios II经过优化处理,最高时钟频率目前只实现111.73 MHz,应该还有进一步优化空间。可以考虑对关键路径进行手工连线,采用DSE算法和逻辑锁定技术进行进一步的优化,从而提高系统最高频率.

    时间:2018-10-17 关键词: 方案 系统 sopc

  • 基于SOPC的数据采集系统设计[图]

    摘要:提出了一种基于SOPC技术的数据采集和存储系统的解决方案。该系统通过在一片Xilinx公司Spartan 3E系列的FPGA芯片上配置micro-blaze软核处理器、用户自定义的数据采集与存储接口逻辑、USB传榆模块和总线接口模块来实现其硬件电路。该数据采集系统可同时对多种信号进行测量,有较大的存储容量。由于采用了SOPC技术,该系统具有设计灵活、集成度高,以及较小的体积和较低的功耗等优点。随着集成电路的不断发展,可编程逻辑器件FPGA因其功能强大,设计灵活,开发周期短等特点,得到越来越广泛的应用。于是片上可编程系统(System On Programmable Chip,SOPC)的设计方法也越来越受到重视。SOPC将微处理器、存储器、定时器、通用I/O接口等系统设计必需的功能模块以及用户设计的有特定功能的模块集成到一片可编程逻辑器件上,构建一个具备软,硬件在系统可编程功能的可编程片上系统。这种非常灵活的电路设计方式使得对整个电路系统的裁减、扩充、升级变的很容易。这样可以缩短电路设计的开发周期,节省开发成本。MicroBlaze作为Xilinx公司开发的32位哈佛结构RISC型软核处理器,适用于其所有现产的FPGA器件。采用这种“微处理器+可编程逻辑”的SOPC系统架构,用户可方便的在系统中加入各种IP核,实现具有特定功能的,易配置、易扩展、易继承的片上系统。文中提出一种基于SOPC技术的多路数据采集与存储系统的设计方法,利用硬件描述语言设计用户IP核,实现硬件控制数据采集和存储的功能。加上Xilinx公司一些必要的标准IP核可以生成嵌入式系统。这种可以方便地把用户自定义的逻辑加入到系统中的设计,体现了用SOPC设计嵌入式系统的灵活性。1 系统总体结构整个系统由xilinx公司的spartan3E高性能、低成本的90nm FPGA和一些外围电路组成。主要有AD转换器、FLASH存储器、系统PROM配置电路和电源模块等,其系统总体结构如图1所示。系统核心采用嵌入式技术,在一片芯片上实现,它包含Xilinx公司的一些标准总线IP核如中断控制器,通用输入输出端口等模块和带有PLB总线接口的用户自定义的数据采集与存储IP核。其中用户自定义的IP核是用VHDL语言设计的,它包含AD控制逻辑、FLASH控制逻辑、DMA传输控制逻辑和FIFO缓存模块等。整个系统设计可以分为硬件设计和软件设计两个部分。利用SOPC技术结合VHDL硬件描述语言,在芯片内部设计硬件控制系统;利用EDK(嵌入式开发套件)为特定硬件配置自动生成的软件包结合C语言,设计基于Microblaze处理器的软件控制程序。2 系统结构FPGA的硬件设计先确定要用的外部接口,然后进行IP核设计,将IP核的逻辑功能映射到FPGA芯片上。其系统结构框图如图2所示。2.1 AD转换芯片AD转换器采用MAXIM公司的MAXIM1308芯片,它是12位模数转换器(ADC)提供8个独立输入通道,独立的采样保持(T/H)电路为每个通道提供同时采样,提供+5V输入范围,20MHz、12位双向并行数据总线用来提供转换结果,并可接受数字输入来单独配置每一通道的开启和关闭。2.2 FLASH存储器FLASH存储器芯片采用8片三星公司的K9XXG08UXA系列的NAND Flash存储器,该存储器是按页进行读写按块擦除,通过I/O管脚分时复用发送命令/地址/数据。每片的存储容量为512MB。存储过程使用流水线方式对数据进行存储。2.3 FPGA配置电路Xilinx公司的FPGA器件是基于SRAM的内部结构,掉电后FPGA的内部逻辑丢失,因此外部需要一个配置芯片在每次上电时可以将配置数据加载到FPGA器件的内部SRAM中。配置芯片采用的是XCF04系列PROM串行配置芯片。当系统上电时,芯片以主动配置方式来实现系统中FPGA的硬件配置。通过高速的串行接口,整个芯片的配置工作可以在很短的时间内完成。2.4 系统电源模块电源模块的设计不仅需要为器件提供各种高性能的功率输出,还要包括选择合适的旁路、去耦电容,以滤除各种干扰信号,保证系统的稳定工作。Xilinx公司Spartan-3E XC3S500E FPGA需要三种电压供电才能正常工作:VCCAUX:1.2V±5%,VCCAUX:2.5V±5%,VCCO:3.3V±5%。利用TI公司TPS75003芯片加上必要的外围电路作为该系统的完整的电源解决方案。2.5 USB接口芯片USB芯片使用由FTDI公司推出的FT245R,该芯片主要完成USB串行总线和8位并行FIFO接口之间的相互协议转换。整个USB通信协议全部由芯片自动完成,无须考虑底层固件的编程。该芯片可以使用内部集成的时钟电路进行工作,也可以使用外部晶振,本系统中使用外部晶振。完全兼容USB2.0协议。它有256字节的接收缓冲区和128个发送缓冲区,可以进行数据的大吞吐量操作。通过8位并行数据口D[0:7]和4位读写状态/控制口RXF、TXE、RD、WR就可实现与微控制器的数据交换。3 FPGA系统硬件设计Xilinx公司EDK(嵌入式开发套件)的XPS(平台工作室)的系统组建面板以展开式的树和表形式显示所有硬件平台IP实例,因此用户可以方便地查看自己的嵌入式设计。在此面板中可以对IP元素、端口、属性以及参数进行配置。3.1 用户IP核设计使用XPS进行基于MicroBlaze的用户IP核的开发,该套件集成了硬件平台产生器、软件平台产生器、仿真模型生成器、软件编译器和软件调试工具等。为实现系统功能,需自定义一个IP核实现数据的采集与存储:该IP核包括五部分,分别为PLB总线接口模块、数据采集模块、数据缓存模块、数据存储模块FLASH读写控制逻辑。(1)数据采集模块:利用FPGA逻辑资源实现A/D采集电路的控制逻辑。在功能上,该AD控制逻辑相当于一个主控制器。该控制过程无需处理器参与。另外AD控制逻辑与AD数据接口的分离,使得高速采集与发送数据成为可能。它连接两片12位的8通道MAXIM1308转换器,可实现多通道的数据采集。(2)数据缓存模块:在FPGA内部设计FIFO将AD转换后的数据暂时存放其中。FIFO是Xilinx以FPGA片上Blockram为资源生成,FIFO模块的主要功能是数据缓冲,实现速率匹配。该异步FIFO模块在FIFO读、写控制模块的控制之下进行异步读写,FIFO的读时钟受数据存储模块控制,写时钟受数据采集模块的控制。FPGA内部设计了两片12位的FIFO与上述两片AD转换器相对应。(3)数据存储模块:对本系统使用VHDL语言专门设一个DMA控制器来连接FIFO缓存和外部FLASH存储阵列。当FIFO缓存容量达到一定的值时可以启动DMA控制器建立一个高速的通道以提供连续的数据传输,存储到FPGA外部FLASH存储器阵列。这个通道使得只要FIFO缓存中的数据达到一定的值时便能迅速地存储到外部FLASH中,主设备不必为了确定从端口是否能够发送或接收数据而不断地访问从外设的状态寄存器。这使得系统的整体效率有了较大的提高,同时避免了自定义外设FIFO中的数据上溢或下溢。并且该过程只需要Microblaze处理器很少的干预即可完成,极大地节省了CPU资源。(4)FLASH读写控制逻辑:主要实现K9XXG08UXA系列的NAND Flash存储器的读写时序,完成对FLASH的操作。在SOPC硬件系统设计过程中用户IP核的设计是关键,它的设计是否成功决定着整个系统设计是否可行。在用户IP核设计过程中AD控制器、FLASH控制器、DMA控制器的设计都比较成功的,图3是对用户IP核设计的部分验证:示波器捕获的读FLASH存储器ID号时序图,且实验证明读出来的FLASH存储器的ID号是正确的。其中通道0—4分别代表FLASH的CE(片选)、ALE(地址锁存)、CLE(命令锁存)、RE(读)、WE(写)信号。3.2 设计生成FPGA硬件系统在XPS嵌入式开发环境中将用户IP核和标准总线核添加到系统中并将它们互相按规则连接起来。XPS提供了一个交互式的开发环境,允许用户对硬件平台各个方面进行设置。其中,XPS在高层对硬件平台描述进行维护,此高层形式即为微处理器硬件规范(MHS)文件。MHS文件作为一个可以编辑的文本文件,是表示用户嵌入式系统硬件部分的主要源文件。XPS将MHS文件综合到硬件描述语言网表中,用于FPGA的布局布线形成FPGA系统的硬件结构,该过程即是生成硬件比特流的阶段,形成后缀名为.bit的文件。4 结束语本文介绍了基于SOPC的多通道数据采集系统设计,可以对多种关心的环境参数进行采集并研究其特性。利用MicroBlaze微处理器搭建数据此采集与存储的嵌入式可编程片上系统,可以由单个芯片完成整个系统的主要逻辑功能。便于系统实现小型化,集成化。这种灵活的设计方式可随意扩展系统功能。在此基础上嵌入操作系统,可以进一步开发功能更强大的实时数据采集设备。作者:常璐 中北大学 来源:电子元器件应用

    时间:2018-10-16 关键词: 数据 sopc 采集系统

  • 基于SOPC技术的事故现场处理平台设计与实现

    摘 要:本文介绍了利用SOPC设计方法,以Altera公司的Nios软核处理器为核心完成的事故现场处理平台的设计。就其中最重要的两部分——SCCB总线控制模块和SRAM读写控制模块的具体实现做了详细介绍,并给出了SRAM写控制器的实际仿真结果。最后,总结了SOPC的设计方法。关键词:SOPC;事故现场处理平台;IP核;SCCB总线引言当前移动警务的广泛应用,使得交警在事故现场就能够对肇事司机和车辆进行现场处理。但是,大部分的应用只是停留在车牌号码等非常简单的文本数据的传输上,如果能够将移动警务的内容拓展到图像数据,将事故现场的图像等信息实时地传给控制中心,就可以更加迅速和精确地对事故进行现场处理。SOPC(Systems-on-a-Programmable Chip)是Altera公司大力倡导的基于PLD的SoC设计方法,有设计灵活、便捷的特点,不仅在产品的性能、速度和连接上具有优势,而且可以缩短上市时间、降低成本。本文介绍的利用SOPC方法,基于Altera公司的Nios软核处理器的事故现场处理平台是一台便携式的移动处理系统,可实现现场数据采集、无线传输以及和控制中心通过无线方式交互数据的功能。事故现场处理平台构成及硬件设计平台构成事故现场处理平台可以分为五个部分:图像采集部分、压缩存储部分、无线传输部分、信息显示部分和远端服务器部分,如图1所示。除了外部必备的摄像头、输入输出设备、无线模块及大容量存储器外,所有的控制逻辑全部和处理器一起,都集成在FPGA内部,使得系统的体积、功耗及成本都有明显的下降。而且,由于PCB板上走线不合理而带来的对设计性能的影响被降到了最低。硬件设计本设计的硬件框图如图2所示。输入输出设备利用标准的GPIO实现控制,在Altera的Quartus II软件中已经集成了GPIO的控制模块,只需通过SOPC Builder 软件的图形界面就可进行添加。无线模块的控制采用标准串口,其控制模块也已集成。需要自己开发的模块就是SRAM的读写控制模块。因为图像数据的缓存和处理需要用到大量的存储空间,而开发板所提供的存储资源显然不够,所以在采集板上也加上了外扩的SRAM,需要为它们开发读写控制模块。SCCB总线控制模块及SRAM读写控制模块的设计与仿真在本系统的设计过程中,最为重要和困难的部分就是将自己所需要的用户IP核集成到FPGA资源中。下面详细介绍一下这两个模块的设计和构成:SCCB总线控制模块系统中使用的摄像头型号是OmniVision公司的OV7649 CAMERACHIPS芯片及其配套的CMOS镜头。这是一款低电压的CMOS图像传感器芯片,通过其特有的SCCB(Serial Camera Control Bus)总线的控制,可以实现全帧、半帧、子采样等各种形式的图像输出,输出格式可选择配制成YUV、RGB或者原始RGB等,另外可进行自动曝光控制,图像增益控制等。而所有的配置,都是通过SCCB总线进行更改。状态机模型可简化为6种状态:Idle空闲;Bit_Start比特开始;Bit_Mid_LOW比特传输中低位传输;Bit_Mid_HIGH比特传输中高位传输;Bit_End比特传输结束;Trans_End整个传输结束。根据具体的跳转流程,用VHDL语言中的条件语句可以方便地完成,在此不作赘述。TYPE states IS(Idle, Bit_Start,Bit_Mid_LOW,Bit_ Mid_HIGH,Bit_End, Trans_End);SIGNAL nowState: states;下面对其中填充帧数据的过程进行描述:case nowState iswhen Idle =>......when Bit_Start =>......end case;在仿真过程中,由于要就很长一段时间的信号进行分析,所以限于篇幅,无法将仿真结果尽列于此。在工程实际使用中,SCCB总线控制模块已经被验证无误,能够正确地实现摄像头的配置,并且拍出的图片质量也达到了预期水平。SRAM读写控制模块系统中选用的存储芯片为IDT71V424。和所有的存储芯片一样,IDT71V424芯片通过片选(CS)、读使能(OE)、写使能(WE)三条控制线进行控制。设计的难点并不是怎样将数据写进SRAM,而是怎样按照摄像头的数据输出速率将数据写进SRAM。摄像头的数据输出由场同步信号(VSYNC)和行同步信号(HREF)进行同步。实现时没有直接用CPU对CS、WE、OE信号进行控制,而是产生一个doWrite信号,当此信号为高电平时,控制相应的CS、WE、OE信号进行写操作,在两个独立进程中实现。这样做的好处是使得各部分的耦合尽量的小,便于各自调试。为了将输出数据与写入数据进行同步,系统不是对第一个场同步信号就作出反应,而是数过若干个场同步信号(VSYNC)后,等一切稳定运行了,才开始接收数据。仿真结果如图3所示,在每个行周期内,数据都被正确地写到了数据线上,Data_cam信号是摄像头的输出数据,以偶数递增的数据作为输入的模拟,Data_sram是SRAM的数据线,只要在每个像素时钟pclk的上升沿读取Data_cam的数据,就能保证数据的正确写入。由仿真结果可以很清楚的看到,设计是合理和有效的。并且,在工程实践中,该SRAM控制器也已经被证明能够可靠工作。设计总结目前,单个芯片所能提供的晶体管数量已经超过了大多数电子系统的需求,如何高效、充分地发挥这些器件资源就变成了一项重大的挑战。任何一个电子系统设计几乎都会用到一些已经存在的IP模块,如微处理器、DSP、存储器等,与传统IC设计不同的是,嵌入式软件的设计也被集成到了SOPC的设计流程中。在SOPC的设计实践中,我们认识到设计方法的革命就是需要完成一个转变——从以功能设计为基础的传统流程转变到以功能整合为基础的全新流程。集成也是一种创新。在事故现场平台的设计过程中有如下体会:充分利用SOPC设计方法的灵活性既然是便携式的设备,体积、功耗、集成度等就成为首先考虑的因素,器件选择要尽可能地为这个目标服务。SOPC设计方法的精髓就是将所有的模块集成到一块芯片中,避免过多的外围电路和器件造成体积、功耗的增多和可靠性的下降。采用USB模块或CMOS镜头完成图像数据采集任务的原因就是,其控制逻辑和协议的实现都可以在FPGA内部解决,而如果采用模拟器件,则不可避免地要增加外围电路,造成种种困难。系统化和模块化的设计方法和思路系统性和自上而下的设计概念一直贯彻于设计中,始终着眼于通过各个模块的有效连结和运转,构成一个完整的闭环系统。通过Nios软核处理器将各个模块有机连接,不论对各个模块的具体实现细节有怎样地更改,都不会改变最初的系统设计的功能和性能,可以保证系统的完整性和可行性。系统是由模块有机组成的,而Nios的最大优势则是模块化的硬件结构,以及由此带来的灵活性和可裁减性。在以团队为单位的设计过程中,模块化便于将系统的任务分解,使得各人有目的的去解决单个模块的设计、调试问题,不断改进,最后再将各个模块按照预先定义好的标准接口进行有机整合。这既符合当前业界实际的开发流程,也方便了实验室研究性学习的培养方式。系统的可扩展性由于QuartusII软件中SOPC Builder对外围接口的扩展极为方便,而且也支持直接对模块进行更新、升级,使得系统的扩展和完善变得更加容易。可扩展性不仅表现在对既有设计的升级上,如果对系统不同的部分作不同程度地修改,再进行重新组合,就能够带来全新的应用。比如说,将无线模块换成网络接口,那么就可以用作监控系统;再比如说,将前端摄像头部分换成特殊数据的输入,就可以作为远程无线抄表系统。这样在应用方面的可扩展性,也正体现了设计之初的灵活、可裁减等特点,使得产品的应用领域大大拓宽,同时也延长了产品的寿命周期。

    时间:2018-10-15 关键词: 平台 技术 sopc 事故现场

  • 基于SoPC的多用途无线监控报警系统

    摘 要: 结合SoPC及GPRS技术设计了一个以FPGA为核心的多用途无线监控报警系统。系统有多种工作模式,用户可随时主动监控现场,也可启用智能方式或手动方式报警。关键词: GPRS;SoPC;SD卡;监控 室内监控和车辆监控受到人们普遍关注,现有的室内监控手段存储空间消耗大,用户不能随时主动查看现场,且费用昂贵;而车辆监控系统不能实时直观查看车辆运行路线。 针对现有监控系统中存在的不足,本文设计了一种基于SoPC的室内、车内两用的多用途无线监控报警系统。通过该系统用户可随时远程主动监控现场,或以智能报警方式监控现场;手机上的车辆跟踪软件拦截车辆报警信息把路线显示在Google静态地图上,方便用户直接查看。紧急情况发生时,用户还可通过手动方式报警。1 系统总体结构设计 远程监控报警系统分为现场监控子系统和用户端子系统两部分,系统总体结构框图如图1所示。本系统可工作在室内或车内,两种情况下都有智能监控、智能报警和手动报警模式。用在室内时,系统通过人体传感器和摄像头采集现场信息;用在车内时,通过GPS模块接收车辆地理位置信息,通过摄像头采集现场图像。采集到的现场信息送入FPGA中的嵌入式软核Nios II做智能检测。系统通过GPRS模块接收用户的控制命令,同时以短信和彩信的方式向用户发送现场信息。用户端子系统的车辆跟踪软件可实现车辆报警信息拦截和路线显示,便于用户查看。 智能监控模式下系统监控,但不主动发送报警信息,用户可随时主动发送短信要求查看。智能报警模式下系统自动检测现场是否发生异常,异常时发送短信和彩信向用户报警,同时以最快的速度将压缩后的图像存入SD卡,以备必要时侦查;无异常时每三分钟存储一幅图像,这种自适应存储机制能用较少的存储资源存储尽可能多的信息。若用户在场时发生紧急情况,可通过一个隐蔽的报警按键实现手动报警。2 系统硬件设计 系统的硬件设计主要包括SoPC系统设计和TR800模块硬件电路设计两部分。2.1 SoPC系统设计 系统的主控制芯片是一片FPGA,结合SoPC技术,在FPGA中加入了嵌入式软核Nios II,通过Avalon总线与外围设备建立联系。系统硬件结构框图如图2所示。2.1.1 摄像头控制器设计 摄像头用于采集现场(包括车内和室内)图像,本系统CMOS摄像头采集到的图像信息为数字信号,无需模数转换,可简化电路设计。摄像头采集到的图像缓存到SRAM,需要时从SRAM中读出。2.1.2 人体传感器控制器设计 人体传感器用于判断室内是否有人进入。系统的人体感应模块采用 GH-718,该模块是基于红外技术的自动控制产品,灵敏度高、可靠性强、感应角度大。传感器一旦检测到人的活动,就改变状态寄存器,处理器通过查询状态寄存器可知道是否有人。2.1.3 GPS控制器设计 GPS模块用于车载环境下接收汽车地理位置。GPS采用一块集成模块,上电后约一秒钟发回一帧数据,每帧数据包含几个协议,本系统中只用到$GPRMC与$GPGGA协议。 在GPS控制器中,采用硬件描述语言来解析GPS协议,用一系列寄存器存储日期、时间、经度、纬度、海拔、速度等GPS信息。模块开始工作后,持续接收处理来自GPS模块的信息,GPS控制器一旦检测到$GPRMC或$GPGGA,就根据接收到的内容更新寄存器,CPU可通过读寄存器的方式得到GPS信息。2.1.4 SD卡控制器设计 SD卡可工作在SD和SPI两种模式下,本系统采用SPI模式。SD卡与FPGA之间通过片选、数据输入、时钟和数据输出四根信号线通信,速度虽然比SD模式低,但接口简单,能满足系统要求。本系统兼容SD1.1和SD2.0两种协议,SD卡控制器自动识别SD卡需要的协议类型并执行相应的读写方式。 SD卡控制器框图如图3所示。AVALON总线接口模块是Nios II处理器和SD卡控制器模块进行数据交互的桥梁。复位初始化模块要保证片选信号在上电后的74个时钟周期内为高,完成复位。此后通过命令读写控制模块发送CMD0命令给SD卡使其进入SPI模式。命令读写控制模块按照SD卡命令时序完成SD卡命令号、参数、命令校验的发送和命令回执的读取,如果是读写操作还要对数据进行发送和接收,双口RAM用作读写数据缓存。数据转换和时钟产生模块完成SD卡和Avalon总线间信号的时序转换。2.2 TR800模块硬件电路设计 本系统采用iWOW公司的GPRS模块TR800实现无线通信。TR800硬件电路设计框图如图4所示。SIM卡是每个现场监控子系统的ID,扬声器用于用户向现场喊话,麦克风用于捕获现场声音,方便用户监听。TR800通过串口芯片RS232与FPGA通信。3 软件设计3.1 现场监控子系统软件设计 现场监控子系统的软件功能模块及其联系如图5所示。系统只响应有权限用户的访问,用户权限数据存储在SD卡的隐藏扇区,即使格式化也不丢失。用户可通过短信对系统实现用户管理,包括设置管理员、添加或删除用户、密码设置等。3.1.1 JPEG图像压缩 JPEG压缩的目的是减少传输和存储时所耗的资源。JPEG压缩处理时要先把RGB空间转换到YUV空间。为简化计算采用查表方式进行。转换后进行Y:U:V=4:1:1的抽样,抽样后进行DCT变换。DCT变换耗时多,本设计采用AAN算法,极大提高了运算速度。变换后采用Z形扫描和量化,以去除高频分量。系统对直流系数和交流系数分别进行霍夫曼编码完成压缩。3.1.2 TR800模块软件设计 为保证TR800模块的正常工作,上电后要先对其进行语音、短信和彩信的初始化设置。语音业务方面,通过发送ATS0=2设置两声后自动接听。短信初始化主要包括短信息编码格式和提醒格式设置。彩信业务方面,要设置编码方式、接入点、代理、通信模式和MMS 中心网址等。 短信和彩信的发送通过AT指令实现,短信的接收用串口检测程序实现接收和短信内容解析。3.1.3 FAT32文件系统 FAT32文件系统的FAT表有32位,若FAT表常驻内存,它占用的内存资源将很大,同时对处理器造成很大压力。因此本系统工作时只是不断地新增文件或目录存储现场图像,而不对文件进行删除或修改操作。3.2 手机端车辆跟踪软件设计 车辆跟踪软件用于自动提取车辆报警短信信息,把车辆行驶路线显示在手机上。 Windows Mobile智能手机中,IMailRuleClient 接口处理应用程序内的传入消息,而MAPI 规则客户端(MAPI Rule Client)是可以实现IMailRuleClient接口的COM对象。编写代码拦截含GPS信息的短信并提取其中的经纬度信息,根据经纬度在Google静态地图中显示车辆行驶路线。将上述短信拦截和处理代码生成dll文件,然后调用该dll并修改注册表。注册时,收件箱应用程序将会加载MAPI规则客户端。注册后,传入的SMS消息会传递给MAPI规则客户端,由它决定如何处理该传入消息。由此实现手机上的车辆跟踪软件设计。 系统通过无线方式实现对室内和车辆的远程监视监听和智能报警,并能在发生紧急情况时手动报警,方便了用户对室内和车辆的监控。系统的用户终端是手机,操作方便,便于用户及时接收信息且不需要其他设备。此外由于自适应存储机制的引入,使系统能存储大量的现场信息,即使用户没能及时发现异常,存储的信息对案发后的调查也会有很大帮助。车辆跟踪软件可方便用户实时直观地查看车辆路线。总之,系统为室内远程无线监控报警和车辆无线跟踪提供了一种切实可行的实现方案。参考文献[1] 张锋,周毅华,张西良,等.多功能家庭安全无线监控系统[J].电测与仪表,2010(2):26-30.[2] 杜向党,李淼,张继红.基于无线传感器网络和GPRS的无线远程监控系统设计[J].机械与电子,2010(2):72-74.[3] 许向华,朱欣华,黄胜利.GSM模块在车辆监控系统无线通信中的应用[J].计算机测量与控制,2003(11):516-518.[4] 檀永,陈小平.基于FAT16文件系统的嵌入式温度记录器[J].单片机与嵌入式应用,2008(5):58-61.

    时间:2018-10-11 关键词: 报警系统 sopc 多用途

  • 基于FPGA的SOPC系统DAB发射端硬件实现

    基于FPGA的SOPC系统DAB发射端硬件实现

    本文设计基于FPGA芯片EP3C16Q240C8N的片上可编程系统,该系统可用于实现IFFT运算和接口模块,利用可嵌入到此FPGA芯片的NiosII软核处理器来实现数据传输和控制.功能电路中的ADI的数字上变频芯片AD9957和可控增益芯片AD8369用于实现DAB基带信号的上变频和信号放大.这套DAB发射机电路板尺寸为100cm*160cm,经过测试,能很好的完成发射,具有较高的可靠性.1.DAB发射机是数字音频广播(DigitalAudio Broadcast,DAB)重要组成部分.DAB技术是欧洲尤里卡项目之一,目前已经非常成熟.DAB采用先进的数字技术,正交分频复用技术(OFDM),能以极低的数据传输率及失真下传送CD质量之立体声节目,可解决传统模拟广播接收不良及干扰问题.DAB发射系统包括信源编码.信道编码.时间交织.频率交织.OFDM调制和射频部分.射频部分包括上变频和增益放大,用来把基带信号搬移到发射频率上并将其放大.FPGA技术不断进步,成本和功耗不断下降的同时性能和容量在大幅上升,FPGA也代替MCU越来越多的嵌入到系统中去.为了便于系统集成,本文设计FPGA系统嵌入到DAB发射系统中,使得开发变得方便灵活,同时也降低了成本.2.FPGA的SOPC系统构成本文设计了用于DAB发射端的SOPC系统,该系统硬件框图如图1所示.系统中FPGA采用ALTERA公司的CycloneIII系列芯片EP3C16Q240C8N.FPGA中的NiosII软核处理器完成数据的控制和指令传送,还可以在FPGA上实现OFDM调制.配置芯片选用EPCS16,片外扩展存储器为IS42S16100-7T.框图中,功能电路是用来实现DAB发射功能的,它包括数字上变频(其中已经包括A/D和D/A转换).信号放大.USB传输等.根据DAB发射系统设计可以得出系统中各个单元所需的资源:逻辑单元.寄存器.引脚.内存.乘法器单元.锁相环分别为8839.4719.104.202752bits.6和1.这款芯片为QPFP封装,芯片资源见表1.2.1 配置电路FPGA芯片按配置速度快慢依次为:Active parallel(AP)模式.Fast passiveparallel(FPP)模式.Active serial(AS)模式.Passive serial(PS)模式.另外还有用于调试的Joint Test Action Group(JTAG)模式.本文FPGA同时配置AS模式和JTAG模式.根据cycloneIII的数据手册,配置方案由MSEL引脚决定.当使用AS和JTAG两种方式时,MSEL[3:0]为“010”.如图2所示为ATERA给出的AS和JTAG配置电路.AS模式是指FPGA的EPCS控制器发出读取数据的信号,从而把串行FLASH(EPCS系列芯片)的数据读入FPGA中,实现对FPGA的编程.配置数据通过FPGA的DATA0引脚送入,数据被同步在DCLK输入上,1个时钟周期传送1位数据.本文中选取的配置芯片EPCS16SI8,有16Mbits的存储空间,可以支持DCLK时钟工作在20MHz和40MHz.

    时间:2018-10-09 关键词: 系统 FPGA 硬件 嵌入式开发 sopc

  • 基于SOPC的视频编解码IP核设计

    SOPC" title="SOPC">SOPC" title="SOPC">SOPC是Altera公司提出的片上可编程系统解决方案,它将CPU、存储器、I/O接口、DSP模块以及锁相环的系统设计所必需的模块集成到一块FPGA上,构成一个可编程的片上系统,使设计的电路在其规模、可靠性、体积、功耗、功能、上市周期、开发周期、产品维护以及硬件升级等多方面实现最优化。目前在Altera SOPC">SOPC Builder下集成了包括UART、SPI、Ethernet、SDRAM、Flash、DMA等控制器的IP核。此外,用户也可以根据系统的需要自己设计或者购买第三方厂商的IP核,通过Avalon总线像搭积木一样方便地将其捆绑在系统上。IP核是经过功能验证的知识产权核,使用IP 核有以下优势:(1)提高设计性能;(2)降低产品开发成本;(3)缩短设计周期;(4)设计灵活性强;(5)仿真方便;(6)OpenCore Plus支持无风险应用。当然本论文所说的IP核功能没有那么丰富,实际上就是一个功能验证正确的用户逻辑,和商业应用的IP核还有一定的差距。本文的主要工作就是通过硬件描述语言描述了视频信号的采集,分配,存储以及色度空间的转换等逻辑,并且验证了功能的正确性。1 视频编解码Camera_show原理嵌入式摄像控制系统除了必要的电源电路以外,还要包括存储电路、通信电路和下载电路等,所有的设备均与Avalon总线连接,这里主要介绍用户逻辑接口Camera_show,它完成了模拟视频数据转化成数字视频数据并在VGA上显示的功能,主要包括模拟视频信号的采集、分配(串并转换电路完成)、存储(存储控制逻辑和片上RAM完成)和色度空间转换。具体的功能框图如图1所示。图1 用户逻辑Camera_show的原理框图2 视频编解码IP核Camera_Show设计视频编解码IP 核主要完成的功能包含视频信号的采集、分配、存储以及色度空间的转换。模拟视频信号经过ADV7181B后变成了符合ITU-R656的YUV数字信号,但是要对YUV信号进行处理必须将这三路信号分开并行处理,所以需要采集分配这三路信号,这是2.1的IP核需要实现的功能;由于模拟视频信号是隔行扫描的,但是CRT显示器是逐行扫描,如果不加处理那么必然会导致行错开,所以需要将数据进行存储,通过控制实现隔行变逐行,这是2.2的IP核需要实现的功能;最后经过处理的YUV三路数字信号,需要完成色度空间的转换变成RGB信号,这是2.3的IP核需要实现的功能。2.1 YUV信号的采集、分配在嵌入式摄像控制系统中,ADV7181主要承担着模拟摄像头的视频数据进行解码的任务,将CVBS的等模拟信号转化成ITU-R656标准的YUV信号。图2给出了ADV7181的功能框图。图2 ADV7181功能框图由图可以看到,对于输入的CVBS等模拟信号经过ADV7181B芯片转换后输出YUV信号,行同步信号HS,帧同步信号VS。这些就是需要的数字视频信号,也就解决了数字视频源的问题。图2给出了YUV信号的组成排列方式,“FF,00,00”作为AV信号的开始,所以需要构造一个检测电路。注意到SAV和EAV均是FF,00,00开头但是XY的值不一样。根据芯片资料,XY表示的是V,即有用信号与空白信号的分界点,如果V=0则表示的是SAV,否则是EAV 。XY是场信号的区分标志。0是奇场,1是偶场。模拟信号的一行是1716个CLOCK,有用信号是1440个CLOCK,在信号采集和分配的过程中,仅需对有用信号进行采集,所以利用检测到SAV作为一个标志,启动信号的分配过程是非常有必要的。由于YUV信号在模拟信号中是交织着的,所以需要一个信号选择电路。YUV一共是三路信号,设计一个计数器进行选择,计数是O和2时,是UV信号,计数是1和3时是Y信号,完成的实际上是串行信号转并行信号的过程。以上过程可以用图3的原理框图来表示。图3 YUV信号的采集、分配原理图在硬件描述语言中,完成上述过程还是比较简单的。例如检测电路,只要描述一个移位寄存器就可以了,具体代码如下:其中的wire变量Y_check就是当检测到FF,00,00的时候就为1的标志。根据上文所述,区分SAV和EAV是根据XY来决定,区分奇偶场是根据XY来区分,所以只有随后的信号是SAV的时候,信号分配电路才有效,所以需要描述一段逻辑来判断,代码如下:START信号就是开始信号采集、分配的标志,只有当TD_D=0也就是START= 1时信号分配电路才会工作。串转并电路代码如下:以上代码完成了图3的功能,输入的信号名为TD_D,输出的三路信号是Cbb,YY,Crr。注意到还有个YPix_clock,实际上是27M的2分频,这个时钟非常有用,在下面将详细阐述。2.2 YUV信号的存储要将视频信号隔行变逐行,有2 种解决方法:第1种:将一帧的数据存储下来,根据奇偶场的不同(区分可以根据XY),在写周期的时候,因为奇场的行之间有偶场的信号,所以写数据的时候需要跳地址写,根据行同步信号(或者SAV也可以)来区分行,换行的时候地址要加额外的720(用来存放夹杂在奇场信号中的偶场信号),直到出现偶场信号(也就是XY=1)地址切换为初始基地址加720,其余的同奇行的处理方法,具体的地址分配表参照图4。图4 地址分配表在读周期只需要按照顺序读出就可以了,需要注意的是写时钟是13.5M,读时钟是27M,而且对于Y、U、V信号要进行分别存储。第2种:将一行的数据存储下来,因为1716个时钟周期刚好等于VGA两行的时间,所以在这段时间里可以将7加个有效视频信号读取2遍,以奇行的信号去取代偶行的信号,达到隔行变逐行的目的。在实现上只要是两个RAM块进行乒乓操作就可以了,具体在后文阐述。比较两种实现方法,方法1的优点在于图像没有失真,即奇偶行信号依旧相间在一起,方法2却不能做到这一点,而且方法1也可以通过乒乓方式提高运行的速度,但是由于读写时钟的不同步,每个存储空间应当读2遍。方法2也是读2遍,但是是每行读2遍,方法1是一帧数据读2遍。方法1的缺点在于存储的数据量太大。一帧数据仅Y分量就是8bit*720*525=3024000bit=378KB,这个数据是不适合在SRAM中操作的,需要使用SDRAM,而操作SDRAM是比较复杂的,所以一般考虑使用方法2,因为它需要很小的空间,而且可以利用FPGA的片内资源就可以实现。当图像数据传输很快的时候,人眼基本上是分不清奇偶场信号的,所以方法2是可行的。在讲方法2之前,需要了解在流水线操作中经常使用的乒乓操作,这是可编程逻辑常用的设计思想和技巧。乒乓操作常常应用于数据流控制,典型的乒乓操作如图5所示。图5 乒乓操作示意图乒乓操作的处理流程描述如下:输入数据流通过“输入数据流选择单元”,等时地将数据流分配到两个数据缓冲模块。数据缓冲模块可以是任何存储模块,比较常用的存储单元是双口RAM ( DPRAM ),单口RAM ( SPRAM)和FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”。在第2个缓冲周期,通过“输入数据流选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,与此同时,将“数据缓冲模块1”缓存的第1个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运算处理模块”被运算处理。在第3个缓冲周期,通过“输入数据流选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,与此同时,将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运算处理模块”被运算处理。如此循环,周而复始。乒乓操作的最大特点是,通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有时间停顿地送到“数据流运算处理模块”,被运算和处理。把乒乓看成一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓方式常常应用于流水线式算法,完成数据的无缝缓冲与处理。在FPGA里面,使用乒乓操作是面积与速度互换原则的一个体现。方法2 可以这样实现:在FPGA内部使用Megacore,构造一个双口的RAM,双口RAM的输入输出信号的硬件描述语言定义如下:使用的信号包括:数据信号data_a,dat_b;读写有效信号wren_a,wren_b;地址信号address_a,address_b;时钟信号clock_a,clock_b;输出数据信号q_a,q_b。可以看到所有的信号都是成对出现的,就是为了进行乒乓方式的数据传输。分成了两个RAM区域,A和B,相当于前面讲乒乓方式里的数据缓冲模块1和2。两个RAM块是交替着读写(由I_a和I_b决定),输出数据流也是由I决定。刚说到写时钟是13.5M,读时钟是27M,所以clock_a和clock_b必须是读写时钟切换着输入,而且地址的计数也不一样,写周期时候地址增加的时钟是13.5M,读周期地址增加的时钟是27M。所以每行的数据读了两遍,相当于隔行变逐行。图6在Qartus II下RAM的乒乓操作功能仿真图:图6 RAM的乒乓操作仿真图RAM块进行乒乓方式操作信号的分配表如下:最后输出的DATA信号进入下一级单元,即YUV到RGB的转换。2.3 颜色-空间转换部分设计为什么要有这个转换呢?因为不论是电视机还是CRT显示器,都是使用RGB三基色合成的方法来显示颜色。用RGB三基色来表示彩色的确很直观,但是如果把这种方法用作图像传输则绝不是一个好方法。主要是因为:(1)与黑白图像不兼容;(2)占用太多带宽;(3)抗干扰能力差。本系统图像传感器输出YCbCr信号,需要进行到RGB信号的转换,用于CRT显示。YCbCr到RGB按照下面公式进行转换:R = 1.164 ( Y-16 ) + 1.596 ( Cr-128 );G = 1.164 ( Y-16 )- 0.813 ( Cr-128 ) - 0.392(Cb-128);B = 1.164 ( Y-16 ) + 2.017 ( Cb-128 );观察上面公式可以发现,转换均需要乘加运算,并且式子中用到了小数,所以必须要对系数进行放大。经过合理转化,公式如下:R = (1/256) * ( 298*Y + 409*Cr - 57065 );G = (1/256) * ( 298*Y - 100*Cb - 208*Cr + 34718 );B = (1/256) * ( 298*Y + 516*Cb - 70861 );用Verilog HDL编写代码,实现YUV到RGB的转化。其中共包括3个模块跟1个仿真激励。在模块const_mult中,主要实现乘法运算,主要代码如下:模块csc.v中,调用const_mult模块,通过参数传递改变参数IN_SIZE,OUT_SIZE,CST_MULT的值,然后实现加法运算。以R = (1/256) * ( 298*Y + 409*Cr - 57065 )为例,主要代码如下:用以实现G、B的代码与上面类似,在此不再赘述。以下代码实现R_full*1/256功能。主模块yuv2rgb实现子模块的调用,用Modelsim进行了仿真。仿真波形如图7所示:图7 YUV到RGB的转化仿真图3 结论本文设计了基于SOPC">SOPC的视频编解码控制器IP核,根据自顶向下的设计思想,将IP核进行层次功能划分,并对IP核的仿真验证,实现了视频信号的采集,分配,存储以及色度空间的转换。本IP核具有很好的移植性,可以方便的应用到以Nios II为核心的各种需要视频编解码控制器功能的嵌入式中。

    时间:2018-10-04 关键词: 视频 编解码 ip sopc

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包