SOPC

2024-10-15

SOPC(精选7篇)

SOPC 篇1

0 引 言

可编程片上系统 (SOPC) 是一种特殊的嵌入式系统, 因为SOPC是片上系统 (SoC) , 即由单个芯片完成整个系统的主要逻辑功能;SOPC是可编程系统, 具有灵活的设计方式, 可裁减, 可扩充, 可升级, 并具备软硬件在系统可编程的功能;SOPC结合了SoC 和FPGA 的优点, 涵盖了嵌入式系统设计技术的全部内容;SOPC 涉及目前已引起普遍关注的软硬件协同设计技术。

现以数据发生系统为例, 介绍采用SOPC技术, 以硬件描述语言为主要手段, 产生伪随机序列的设计方案。研究了伪随机序列的产生, 两片SRAM乒乓结构存储以及通过PCI9054芯片与PC机之间数据传递等模块的硬件实现问题。

1 基本原理和系统的整体结构

本系统的主要模块框图如图1所示, SOPC系统采用Altera的Cyclone Ⅱ系列的芯片。系统包括Nios Ⅱ软核处理器, 扩展的程序存储器FLASH, 数据存储器SRAM, 以及用户自定义逻辑如PCI9054接口逻辑模块、数据产生模块、乒乓结构模块等, 并通过Avalon总线连接起来。数据产生模块产生伪随机序列, 该数据存储到两片片外扩展的SRAM中, PCI9054接口逻辑将数据从SRAM中读出后通过PCI9054接口芯片传输到PC机中, 其中SRAM中数据的写入和读出是通过乒乓结构模块控制的。

由于PCI总线协议比较复杂, 该系统采用PCI接口专用芯片PCI9054, 用于PCI总线的控制。为了实现数据的高速传输, 采用了DMA传输模式。在该模式中, PCI9054既是PCI总线的控制器又是本地总线的控制器[1], 所以其与FPGA之间的接口逻辑模块设置为Avalon主外设, 控制SRAM的读操作。

FPGA的片上资源很宝贵, 所以数据的存储采用了片外扩展SRAM。由于数据为16 b, 而且为实现数据的高速传输, 采用了两片256K×16 b的SRAM (IDT71V416) 构成乒乓结构, 以用作系统的数据存储器。为保证整个系统高速运行以及以后升级的需要, 选用了存取时间为10 ns的IDT71V416。

2 系统主要硬件设计

2.1 数据产生模块

该模块的逻辑功能由VHDL语言设计实现, 可以通过修改该模块的设计产生所需要的数据, 本系统产生的数据为伪随机序列。模块的逻辑功能是:先产生8 b的伪随机数, 再将所产生的数据通过D触发器组合成16 b的数据。该系统采用了非线性反馈的移位寄存器, 即全状态移位计数器[2]来产生所需要的伪随机数。这种计数器利用了移位寄存器的所有状态, 能够自启动, 不需要额外输入。这种伪随机序列发生器, 可大大简化结构, 提高可靠性, 易于实现。

全状态移位计数器的状态变化规律有两个特点:状态的最高位由反馈函数确定;余下的各位由原态移位得到。该系统采用的反馈函数为:

D1=Q8Q4Q3 (Q2¯Q7¯Q6¯Q5¯Q1¯¯)

式中:Qi (i=1, …, 8) 为电路的现态。

2.2 乒乓结构模块

2.2.1 乒乓结构的硬件实现

为了提高系统的传输速率, 两片SRAM构成了乒乓缓存结构[3], 即在一片执行写操作的同时, 另一片在执行读操作。乒乓结构模块的原理如图2所示, P1口与数据产生模块相连接, 仅具有写入功能, P2口设计为Avalon从端口, 与Avalon总线相连仅具有读出功能。

对于数据产生模块而言, 由于仅具有并行数据的输出, 没有地址和控制信号端口, 故它无法直接对SRAM进行写操作, 因而要求乒乓结构模块有地址产生功能。P1口的CLK作为计数器的脉冲源, 计数器的输出作为SRAM的地址。DB1连接数据产生模块的输出端。CB1为控制信号, 因为P1口只有写入功能, 所以其wen恒接低, oen恒接高。

P2口为只有读出功能的Avalon从端口, 所以AB2为从端口的地址线address;DB2为数据线readdata;CB2中的wen为读信号线read, oen恒接低。由于两片SRAM始终处于工作状态, 所以相应的片选信号chipselectn恒接低。

两片SRAM在P1口和P2口之间的切换的控制信号即chipselect, 由计数器产生。当计数值小于262 144时, chipselect接低, SR1与P1口相接, SR2与P2口相接;当计数值在262 144~524 288之间时, chipselect接高, SR1 与P2口相接, SR2与P1口相接。当计数值到达524 288时, 计数器清零。

2.2.2 Avalon从外设的端口信号设计

系统中, 数据产生模块与乒乓结构模块结合为一个模块, 通过P2口挂在Avalon总线上。该模块的信号列表如图3所示。其中, avalonslave0接口类型的信号与Avalon总线相连接, 而conduitend接口类型的信号与SRAM相连接。图3中的Avalon从端口即为P2口, 采用了流水线读传输的模式, 这种模式能在前一次传输返回readdata前开始一次新的传输, 增加了带宽。

2.2.3 动态地址对齐及其时序设计

Avalon总线模块能够适应主从外设的不同宽度和不匹配的数据宽度。当系统中存在不匹配的存储端口时, 要考虑地址对齐问题。对于存储器类型的外设, 采用动态地址对齐方式[4]。IDT71V416型SRAM是静态RAM, 属于存储器型外设, 所以该Avalon从端口采用动态地址对齐方式, 如图4所示。选用动态地址对齐方式, 使得主端口能连续地对从外设进行读写, 并使系统将外设认作存储器型外设。

根据IDT71V416型SRAM手册[5]中读写时序的各时间参数值设定set up, read wait, write wait及hold time的时间均为10 ns, 使该端口既符合Avalon总线读写时序的要求[6], 又符合IDT71V416型SRAM的读写时序的要求, 如图5所示。

数据产生, 乒乓结构和两片SRAM三部分的组合在ModelSim中的仿真结果如图6所示。avalonaddressb不变时是在执行第一次写操作, 此时没有数据读出, 所以avalonreaddatab值为高阻;avalonaddressb开始变化时, 表示一片SRAM已经写满, 正在执行该片的读操作, 而另一片在执行写操作, avalonreaddatab为系统生成的数据。

2.3 PCI9054接口逻辑模块

PCI总线作为PC机与外部设备之间重要的连接总线, 具有数据传输稳定灵活, 传输速度快, 即插即用和良好的扩展性等特点, 被广泛地用在各种与PC机互联的设备中。该系统采用的PCI9054芯片[1]可以将复杂的PCI总线接口转换为相对简单的用户接口, 大大缩短了设计周期。

2.3.1 本地总线状态机设计

由于PCI9054 的DMA传输方式只适宜于做单次传输, 故该系统采用了DMA结合中断的方式传输数据。由于数据的存储采用了乒乓结构, 可以在一片SRAM执行DMA传输的同时执行另一片写操作, 这样不会造成数据丢失, 状态也比较容易控制。

系统复位后, 数据产生模块开始产生伪随机序列, 产生的数据直接存入SRAM中。此时, 计数器同步计数, 当计数值每一次达到262 144时, 也就是一片SRAM已经存满时, SOPC系统就会触发PCI9054中断请求信号LINT#, CPU响应中断, 发出读命令、要读取的字节数、地址信号等。PCI9054先通过LHOLD申请本地总线的控制权, SOPC系统通过LHOLDA响应, 使PCI9054获得本地总线的控制权。PCI9054将PCI地址空间映射到本地地址空间, 接着启动本地总线的DMA传输[7]。

该系统采用VHDL语言, 实现了DMA读传输本地端的时序控制状态机设计。状态0为空闲状态 (idle) , 若LHOLD信号被置1, 则转到状态1, 否则留在状态0。状态1为总线保持状态 (hold) , 在此状态下应将LHOLDA信号置1。如果信号ADS为0且LWR为0, 则转到状态2。状态2为DMA读状态 (DMAread) , 在此状态下应将READY信号和模块内部信号avalonread置1, 从而使Avalon主端口的masterread置1, 表示Avalon主外设发起读传输。如果BLAST为1, 则表明此次DMA读取还没有完成, 继续留在状态2;如果BLAST为0, 则表明此次DMA读取完成, 转到状态3。状态3为DMA读操作完成状态 (endcycle) , 当LHOLD被置0时, 表示PCI9054不再请求本地总线, 则转到状态0;当BLAST为0且LHOLD为1时, 则表明PCI9054还要进行DMA读操作, 则转到状态1继续。其中的DMA读操作的时序逻辑的ModelSim仿真结果如图7所示。

2.3.2 Avalon主外设的端口信号设计

该系统中, PCI9054控制数据从本地总线上读出, 先到PCI9054的FIFO中, 再将FIFO中的数据传输到PCI总线上。因此SOPC系统中的PCI9054接口逻辑模块为Avalon主外设, 主端口通过address, read, waitrequest等信号发起Avalon总线上的读操作, 从而控制Avalon从外设即乒乓结构模块的读操作。

由于本系统定制的从外设采用了流水线读的传输模式, 为了使端口传输模式匹配, 主外设也采用流水线读的传输模式。流水线主端口一个必须的信号为readdatavalid, Avalon交换结构向主端口发出readdatavalid, 以表示readdata信号正在提供有效的数据。

本系统定制的Avalon主外设构成模块主要由5部分构成, 其中Read Master Logic提供了符合Avalon接口规范的主端口信号;Control Logic是Read Master Logic与PCI9054 Local Bus Logic控制信号和状态信号转换的桥梁;FIFO是数据由Read Master Logic向PCI9054传输的缓冲区。这三部分通过主端口流水线读传输时序逻辑联系在一起, 提供了Avalon主外设的主端口接口界面。PCI9054 Local Bus Logic即VHDL语言设计的本地总线状态机, 它将PCI9054本地端的信号通过状态机逻辑转换为与Control Logic和FIFO相对应的信号;Clock/Reset提供了主外设的clk和reset信号。

利用SOPC Builder中的new component edit设计PCI9054接口逻辑模块的接口。在new component edit的signal中设置模块的各信号线以及相应的总线型号类型;在interface中设置各信号线对应的端口类型及其相应的参数。图8为Avalon主端口的参数设置。

2.4 系统中各中断的实现

在SOPC系统中, 当没有进行传输时, Avalon交换结构忽略来自主端口所有与传输相关的输出信号, 并且主端口也忽略来自Avalon交换结构所有与传输相关的输入信号。但是Avalon总线接口提供控制信号来实现中断请求等功能, 这些信号不直接与数据传输相关。Avalon中断请求信号允许从端口发出一个IRQ, 表明它需要主外设来服务[8]。系统中, PCI9054采用了DMA加中断的方式来传输数据, 而且DMA传输中的主控制器PCI9054芯片也要通过中断信号LINT#来触发, 所以中断的实现是本系统功能实现的关键。

系统从端口的中断原理在于系统复位之后, 数据产生模块开始自动产生伪随机序列, 并自动将数据存入SRAM中, 当一片SRAM存满之后, 从端口的irq信号被设置。这个irq信号的时序必须与相关时钟的上升沿同步, 其相关地址端口的名字必须是本模块中Avalon从端口的名字。系统中从端口中断的具体设置如图9所示。

系统主端口的中断原理:在于主端口的irq检测到从端口有中断发出, 通过置为有效来响应这个中断, 并同时用该信号触发PCI9054的LINT#信号。PCI9054获得本地总线的控制权, 并启动DMA传输, 向SOPC系统中的主外设即PCI9054接口逻辑模块发送地址和传输的字节长度, 开始DMA传输。当字节长度减为0, 另一片SRAM存满时, 再次触发PCI9054的LINT#信号, 使得PCI9054启动下一次DMA传输。主端口中断的设置如图10所示。

3 结 语

详细介绍了基于SOPC设计的数据发生系统中PCI接口的开发过程。对其中的关键技术, 如设计添加在SOPC系统中的用户自定义主外设和从外设;PCI9054

本地总线状态机的设计, 乒乓结构的存储模块的设计, 以及系统中各中断的实现等主要部分做了分析和研究, 给出了基于SOPC的硬件实现方案。系统的主要部分由VHDL语言设计实现, 有利于参数修改和系统升级。

摘要:提出一种基于SOPC的数据发生系统及其PCI接口的设计方案, 详细介绍了系统主要模块的硬件设计方法, 实现SOPC系统中定制用户自定义主从外设及其通过相应的主从端口与Avalon总线的连接, 并在EDA工具QuartusⅡ和ModelSim平台上用硬件描述语言VHDL语言对该方案中的基本模块, 如数据产生, 乒乓结构和PCI9054接口逻辑进行了逻辑综合及功能仿真。可以在本系统的基础上, 通过软件的完善, 实现复杂的非常规类型数据的产生, 提高了系统的适应性和灵活性, 有利于参数的修改和系统升级。

关键词:SOPC,Avalon总线,乒乓结构,PCI9054

参考文献

[1]PCI 9054 Data Book Version 2.1[Z].2000.

[2]张海峰, 段颖妮, 吕虹.全状态伪随机序列发生器的实现[J].电子器件, 2006, 29 (1) :177-178, 182.

[3]周如辉.实时视频处理系统的乒乓缓存控制器设计[J].单片机与嵌入式系统应用, 2006 (7) :25-27.

[4]刘沁.NiosⅡ处理器的两类外设接口设计[J].单片机与嵌入式系统应用, 2007 (11) :32-34.

[5]Integrated Device Technology Inc..IDT71V416S, IDT71V-416L, 3.3 V COMS Static RAM 4Meg (256K×16 b) [Z].2003.

[6]Altera Corporation.Avalon Interface Specifications Version 1.0[Z].2008.

[7]韩雪峰, 黄焱, 杨涛.基于PCI总线的高速数据采集接口的设计与实现[J].微计算机信息, 2005, 21 (15) :71-73.

[8]周立功.SOPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社, 2006.

基于SOPC的调制解调器设计 篇2

1 系统简介

本设计采用ALTERA公司的CYCLONEII芯片实现,使用以太网控制器DM9000A作为调制解调器与主机间的数据接口。主机发送数据由FPGA实现调制后,由线路驱动器放大经混合电路送上双绞线;同时由双绞线传来的接收信号经放大、滤波、解调等处理后,数据封装成以太网数据包送至主机。系统整体框图如图1所示。

图1中,存储器模块包含有SDRAM、SRAM、Flash,进行各种程序的存储及堆栈保存等。LED显示当前系统工作状态,如正常工作显示、数据发送进行中显示、数据接收进行中显示等;按键用来实现系统的硬复位功能;发送方向上,FPGA读出DM9000A接收缓冲区数据、将调制后的数字已调信号送往D/A器件;接收方向上,FPGA将A/D输出的数字待解调信号解调后送至DM9000A的发送缓冲区;线路驱动器对输入的模拟差分信号放大,以适应长距离传输线的衰减;接收方向滤波模块滤除通带外信号,以降低干扰;混合电路将发射回路和接收回路连接在同一对双绞线上,并抑制发射和接收之间的相互干扰。

2 DM9000A简介

DM9000A是一低功耗、高集成的以太网控制器,可实现以太网媒体介质访问层(MAC)和物理层(PHY)的功能,包括MAC数据帧的组装/拆分与收发、地址识别、CRC编码/校验、MLT-3编码、接收噪声抑制、输出脉冲成形、超时重传、链路完整性测试、信号极性检测与纠正等。DM9000A最高可实现100Mb/s的传输速率,能够充分满足远距离调制解调器的传输速率需求。

2.1 DM9000A数据帧发送过程

DM9000A中3KB的发送缓冲区TX_SRAM可以同时存储两帧数据,按照先后顺序命名为帧Ⅰ、帧Ⅱ。DM9000A初始化后,发送缓存区的起始地址为00H,当前数据帧为帧Ⅰ。数据发送过程如下:

(1)在待发数据前加入各6B的目的和源MAC地址,组成数据帧。

(2)利用写操作寄存器MWCMD(REG_F8)向TX_SRAM中写入发送数据帧。

(3)利用写操作寄存器MWCMD(REG_F8)将数据帧长度写入寄存器FCH和FDH。

(4)通过发送控制寄存器TCR(REG_02)设置发送请求TXREQ,向DM9000A发出发送数据指令。

发出发送数据指令后,DM9000A即开始发送帧I,在发送帧Ⅰ的同时,帧Ⅱ的数据即可写入发送缓存区。在帧Ⅰ发送完后,将帧Ⅱ的数据长度写入寄存器FCH和FDH,最后将发送控制寄存器TCR(REG_02)设置发送请求TXREQ,即可开始帧Ⅱ的发送。依此类推,可实现帧Ⅰ、帧Ⅱ,帧Ⅰ、帧Ⅱ……的连续发送。

2.2 DM9000A数据帧接收过程

DM9000A中的接收缓存区RX_SRAM是一个13KB的环形结构,初始化后的起始地址为0C00H,缓冲区内每帧数据都有4B长的首部。第一个字节用来检测接收缓存区中是否有数据,如果这个字节为01H,表明接收到了数据;如果为00H,则说明没有数据。但是,如果第一个字节既不是01H,也不是00H,DM9000A就必须做一次软复位来从这种异常状态中恢复。第二个字节存储了以太网帧状态,由此可判断所接收帧是否正确。第三和第四字节存储了以太网帧长度,后续字节为有效数据。数据接收过程如下:

(1)查看中断状态寄存器ISR,如果接收到新数据,ISR的PR位将被置为0。

(2)如果检测到PR=0,则清除PR。

(3) FPGA开始读接收缓存区数据。

如果第一字节是01H,则说明有数据,若是00H说明无数据,否则复位;根据获取的长度信息,判断是否读完一帧,如果读完,接着读下一帧,直到遇到首字节是00H的帧,说明接收数据已读完。FPGA可以重新查看中断状态寄存器,等待新的有效数据帧。

3 系统硬件设计

系统硬件设计包括ENET接口设计、调制解调单元的设计和硬件结构的生成三部分。硬件结构的生成主要使用QuartusII7.1的系统设计工具软件SOPC Builder来完成。图2为FPGA内所实现的各功能模块示意图。

3.1 ENET接口设计

本系统用到的基于DM9000A的ENET接口并非SOPC Builder所提供的标准组件,故必须进行自定义组件设计。经查阅参考文献[1]中图2.1(和处理器接口的信号连接图)可知:只需针对与处理器有关的管脚(SD0-15、CMD、INT、IOR#、IOW#、CS#、PWRST#)设计相应接口模块即可。图3为基于DM9000A的ENET接口设计示意图,图右侧表示接口与DM9000A管脚对应关系;NIOSII侧的写入数据IDATA只有在写入信号IWR_N有效时才会把数据传至DM9000A侧。根据图3所示的信号端口映射及逻辑关系,写出Verilog或VHDL文件,利用SOPC Builder中的Interface to User Logic导入即可创建基于DM9000A的ENET接口。

3.2 调制与解调单元的设计

调制和解调单元的设计采用基于SOPC的DSP实现方案,根据不同的应用目标,其实现方案有两种选择:纯硬件方案和软硬件结合方案。纯硬件方案是指按照Matlab—)DSP Builder—>QuartusⅡ的流程直接实现。而软硬结合的方案是指利用前一种方案为NiOSⅡ处理器设计自定义指令的硬件加速器接口模块,生成能够完成DSP功能的NIOSⅡ处理器,最后DSP功能的实现则通过软件来完成。考虑到调制解调器的传输速率要求,如果用软硬结合的方案,200MIPS的处理速度可能满足不了要求,故采用纯硬件方案。本设计中调制单元包括了调制器和缓冲器1。为保证连续性发送,DM9000A接收缓冲区的数据要先经缓冲器1缓存后再进行调制。调制单元的电路模型图如图4所示。

在图4中,调制器每调制完一字节的数据,要读入的下一字节地址Next_add会自动加1,将该地址送至缓冲器1的读出地址输入端Rd_add,即可开始下一字节的调制;当调制器从Next_add判断出已经读完一帧数据后,给出中断信号,此中断信号由DSP Builder的Interface库的AVALON_MM Slave组件(选中Output IRQ,地址类型设为Write)提供的存储映射功能经由三态桥送至NIOSII。处理器接到此信号后,向缓冲器1发送写使能信号,并传送要写入的数据,开始写入过程。缓冲器1采用Storage Library库中的Dual-port RAM实现,双口RAM可随时输出缓存内部的剩余数据量,可实现读出、写入操作的灵活控制。

本设计采用2CPFSK调制方式,图5为用DSP Builder建立的调制器电路模型。图中,8位并行数据由输入端口Dataln输入,经并串转换后逐位送往多路器的数据输入端sel[0:0]。FWORD1和FWORD2是频率字设置端口,当数据输入端sel输入不同的值时,多路器会根据设置的频率字输出对应的相位值。将输出相位值的累加结果送入BusConversionl,抽取出相位值的高14位,将此相位信号通过查找表SinLUT后,在数据输出端即可得到2CPFSK已调信号。图中并串转换器的load输入端用来控制字节数据的输入,每当一字节调制完毕,load端口会输入数据载入信号进行下一字节数据的调制。

同样,解调单元包括解调器和缓冲器2两部分。解调单元的设计与调制单元类似,所不同的是:AVALON_MM Slave组件将地址类型设置为Read。

3.3 硬件结构的生成

3.3.1 用SOPC Builder生成软核

SOPC Builder提供了丰富多样的组件库,用户可以按需要自定义系统,同时可利用SOPC Builder的用户逻辑接口生成系统未提供的外部器件接口。本设计中加入了如下组件:cpu_0、三态桥、Flash控制器、SRAM控制器、SDRAM控制器、jtag_uart、led_pio、anjian_pio以及自定义组件ENET接口。值得注意的是:软核的生成过程必须在电路模型文件转换为RTL级的VHDL代码时生成的QuartusH工程下进行,这样SOPC Builder在生成软核时会自动检测到调制解调单元的AVALON_MM Slave组件,会在三态桥下生成相应的信号线,把调制解调单元同NIOSII连接起来,其中包括数据线、地址线、读/写命令线和中断信号线等。

3.3.2 调制解调单元Sysmbol的生成

在Simulink中完成仿真验证后,就需要把设计转到硬件上加以实现,这是DSP Builder设计流程中最为关键的一步,转换后可以获得针对特定FPGA芯片的VHDL代码。Symbol的生成过程:对模型的分析、设置Signalcompiler、把MDL模型文件转换成VHDL、综合、适配。上述过程完成后,把调制、解调模型的VHDL文件在QuartusⅡ下各自生成相应的Symbol。该Symbol会自动力加载到工程库中,可以如工程库中自带组件一样调用。

3.3.3 在QuartusD下进行原理图编辑

在BDF文件的编辑状态下,加入NIOSⅡ软核、调制单元、解调单元;根据需要,DM9000A和SDRAM还需单独的时钟信号,可利用Mega Wizard Plug-Manager创建一个ALTPLL,即可为DM9000A和SDRAM提供合适的时钟信号。原理图文件编辑后,即可进行全编译,生成POF和SOF二进制格式的门级网表文件。

4 系统软件设计

系统主程序首先进行DM9000A的初始化,然后进行中断检测,依据优先级顺序依次响应。主要的中断响应程序有DM9000A接收缓冲区已有数据包时的发送中断响应程序和接收单元缓冲器2中已存有待发送数据时的接收中断响应。

4.1 发送中断响应程序的设计

当DM9000A的RX_SRAM接收到数据包后,会给出中断信号通知处理器读取数据包。此时,中断状态寄存器(ISR)的PR位会给出收到数据包的信号。在发送响应程序设计中,以ISR寄存器的PR位为0为中断触发条件,完成将RX_SRAM的相应数据写入缓冲器1和调制的过程,具体程序流程图如图6所示。

4.2 接收中断响应程序设计

当接收缓冲器2已存入数据达到一定数量时,缓冲器2会通过AVALON_MM Slave组件产生中断信号,可把此信号作为接收中断程序触发信号。中断信号产生后,响应程序主要完成两项工作:(1)将缓冲器2的数据按帧加入目的和源MAC地址后写入DM9000A的发送缓冲区TX_SRAM;(2)将DM9000A发送缓冲区的数据帧发送给主机。但应注意,当ISR寄存器的PT位为0时,表示数据帧发送完毕,要及时清除该标志位以便发送新的数据帧。接收中断响应程序的信号流程图如图7所示。

实验表明,基于SOPC的调制解调器设计方案,在两相距近8km的主机之间,可靠地实现了双绞线数据传输,较DSL而言,其通信距离有大幅提高。该设计方案为系统设计带来了较大的灵活性和实用性,在实际应用中,可针对不同的环境条件以及需求侧重点的不同,更换调制解调模块,从而灵活地实现各种调制方式。本设计具有整体方案改动量小、开发周期短、资源利用率高等优点。

摘要:在介绍以太网控制器DM9000A的数据帧收发过程的基础上,运用SOPC技术,设计了用DM9000A作为调制解调器与主机间数据接口的调制解调器实现方案,并详述了系统的软、硬件设计过程。该方案具有实现简单,调制方式易调整的优点。实验结果表明:较DSL技术,该方案可提高双绞线传输的有效距离。

关键词:NIOSII,SOPC,调制解调器,DM9000A

参考文献

[1] DM9000A appliction notes vet 1_20 04225. pdf.Davicom Semiconductor Inc.2005.

[2] 潘松,黄继业,曾毓.SOPC 技术实用教程.北京:清华大学版社,2003.

SOPC 篇3

关键词:现场可编程门阵列FPGA,Nios,先进先出,可编程片上系统Builder

0 引言

随着微电子技术和半导体工业的不断发展,数字技术已进入片上系统时代。从而又发展了SOPC(可编程片上系统),SOPC是Altera公司提供的片上可编程系统解决方案。Nios嵌入式处理器是Altera公司推出的软核CPU,提供给用户,并在Altera的FPGA上实现优化,用于SOPC集成并在FPGA上实现,提高了系统的灵活性和扩大范围[1,2]。

自定义外设是SOPC系统灵活性的重要体现,是SOPC系统中极其重要的一种设计方法。在大量的数据常需要处理时,利用自定义外设由具体的硬件来实现,可以极大程度地提高系统运行的速度,同时便于系统的模块化与集成化,是SOPC系统设计的重中之重。定制的用户外设能够以"硬件加速器"的形式实现各种各样用户要求的功能[3,4]。

1 定制Avalon总线型FIFO接口元件

由于选用的AD采样速率非常高,并且只由时钟控制端控制,因此设计时在AD采集模块和Nios CPU之间加一个FIFO存储器,从系统外部接口送来的数据先在FIFO中缓存,然后将数据读入SDRAM,在片上进行数据处理。整个流程在FPGA平台上采用SOPC方法实现。在SOPC Builder中只有厂商提供的片上FIFO接口控制器,没有外部使用的FIFO接口控制器核,因此需要用户自定义FIFO接口控制器,这样才能满足系统外围电路的应用要求。文中采用创建元件配置向导定制FIFO接口元件的方法。

2 用户自定义IP核的开发流程

自定义外设作为Nios II软核处理器超强灵活性的体现,它的开发要遵循一定的规律。一个用户自定义外设必须用硬件描述语言来描述硬件的逻辑。用户自定义IP按照对Avalon总线操作的不同可分为Avalon Master、Avalon Slaver和Avalon Streaming外设。由于Avalon Master和Avalon Streaming外设的开发比Avalon Slave外设要复杂,所以用户开发的外设大部分为Avalon Slave外设,但是开发流程是一样的[5]。典型的Avalon外设的开发步骤如下:

(1)规划元件的硬件功能。若采用微控制器控制该元件,则规划访问该硬件的应用程序接口(API);

(2)在硬件和软件要求的基础上,定义一个恰当的接口(一般为Avalon Slave端口);

(3)使用硬件描述语言描述硬件逻辑。一个典型元件的硬件架构一般由接口模块、寄存器文件模块和行为模块3部分组成。接口模块作为顶层模块,定义总线接口信号;寄存器文件模块完成该元件与外部信号的通信,提供访问与控制元件的逻辑界面;行为模块实现元件的硬件功能。片上总线Avalon从端口的信号都不是必须的,一个典型的Avalon从端口所包含的信号如表1所示。

(4)单独验证元件的硬件功能;

(5)写用于描述寄存器的C头文件为软件定义硬件寄存器映像;

(6)写元件的驱动软件;

(7)把通过测试的源代码使用元件编辑器封装硬件HDL和软件文件,完成元件定制。

3 自定义FIFO接口的开发

3.1 硬件构建

3.1.1 接口模块的设计

根据FIFO的功能需要,该模块所需的Avalon总线输入信号为clk、reset_n、data、full、empty信号,而模块输出则为rdclk、rdreq、wrreq信号。该接口模块定义了总线接口信号,作为顶层模块。

Avalon总线接口设计文件的端口说明部分如下:

3.1.2 寄存器文件模块

寄存器文件模块实现与外部信号的通信,提供了访问与控制元件界面。在寄存器文件中,Avalon总线的地址信号有两位,00表示读取数据寄存器,01表示读取状态寄存器,10表示写控制寄存器,address的11保留。在片选和读信号的控制下,分别读数据寄存器和状态寄存器。在片选和写信号的控制下,向控制寄存器写入数据。

3.1.3 行为模块

行为模块实现元件的硬件功能,当写请求(wrreq)信号有效时,向数据寄存器中写入数据,当读请求(rdreq)信号有效时,读取数据寄存器中的数据。在Quartus II 7.2环境下,基于EP2C20Q240C8器件的FIFO接口的仿真波形如图1所示。

3.2 FIFO接口模块的添加

在Quartus II工程中打开SOPC Builder,在SOPC Builder界面的左栏中点击Create new component打开创建元件向导,弹出Component Editor,在HDL Files选项卡中添加HDL文件(FIFO_interface.vhd),并将其设置为顶层模块。在Signals选项卡中出现FIFO_interface中定义的信号。若出现红色字体表示错误,需要将其接口类型修改一下,如reset_n被指定为clock类型,传输方向为input,数据宽度为1,readdata被指定为avalon_slave类型,传输方向为output,数据宽度为32,data被指定为export类型,传输方向为export,数据宽度为32,等等。修改完之后,FIFO的地址对齐方式选择动态地址对齐"Mermory(use dynamic bus sizing)"。时序设置也很重要,设置不当会造成数据的错误传输。系统FIFO的读写时钟为50MHz,周期为20ns,设定建立时间为1ns,将所有设置设置完之后进行保存。保存完之后在该工程目录下会出现FIFO_interface_hw.tc文件,FIFO控制器接口就出现在左栏中,若想在其它工程中使用该控制器,最简单的方法是将FIFO_interface.vhd、FIFO_interface_hw.tcl在FIFO_interface_hw.tcl~放在一个文件夹里,并将此文件夹放在Quartus II的安装目录的ip文件夹中。

3.3 Nios CPU模块

搭建好SOPC框架之后,生成CPU原理图模块如图2所示。其中第二部分就是FIFO接口文件生成的模块图,包括输入信号(data、empty、full)和输出信号(rdclk、rdreq、wrreq)。两个PIO接口con和seg,分别用作数码管的位选通和段选通。

4 软件设计

软件设计包括寄存器头文件、驱动软件及测试程序的设计。寄存器头文件FIFO_reg.h定义了对FIFO寄存器进行读写操作的宏。IORD和IOWR是硬件抽象层提供的两个访问寄存器的C语言宏。下面代码是对FIFO的数据寄存器、状态寄存器和控制寄存器进行读写操作的宏。

驱动软件包括FIFO.h和FIFO.c文件。FIFO.h定义了驱动函数的原型和常量,FIFO.c则实现驱动函数的功能。FIFO.c中定义了一个函数,实现将采集到的数据在数码管上显示的功能。例如采集到电压值为5V电压时,数码管上显示5.00。

5 结束语

本文通过介绍基于SOPC的自定义FIFO接口的详细过程,用户可以在SOPC设计环境下自定义任意接口控制器。定制元件是SOPC Builder灵活性的重要体现,大大扩展了Nios II系统的应用范围。本设计采用VHDL语言编写SOPC用户自定义逻辑模块,实现FIFO接口控制器的设计,此模块已经成功地在FPGA上实现数据采集模块与Nios CPU之间的通信。通过创建元件配置向导定制FIFO接口元件的方法,对定制元件的设计具有较好的借鉴作用。

参考文献

[1]李兰英.Nios II嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.

[2]潘松,黄继业,等.SOPC技术实用教程[M].北京:清华大学出版社,2005.

[3]彭澄廉,等.挑战SOC--基于NIOS的SOPC设计与实践[M].北京:清华大学出版社,2004.

[4]田泽.嵌入式系统开发与应用[M].北京:北京航空航天大学出版社,2005.

SOPC 篇4

由于大规模集成电路(VLSI)、计算机和通信技术的迅速发展与结合,促进了视频技术的进步与广泛应用[1]。作为逐渐取代模拟视频的数字视频越来越受到人们的关注,日益成为一种广泛应用的媒体,而其中数字视频图像采集是进行数字视频处理技术的关键[2]。本文采用SoPC技术设计了一种嵌入式数字视频图像采集方案。可编程片上系统(System on Programmable Chip,SoPC)是Altera公司提出来的一种灵活、高效的SoC解决方案,是一种新的软硬件协同设计的系统设计技术。它将处理器、存储器、I/O口、LVDS、CDR等功能模块集成到一个可编程器件上,构成一个可编程的片上系统[3]。本文利用该技术在FPGA芯片上配置NiosⅡ软核处理器及相关接口模块来实现硬件平台,并利用Altera公司的软件集成开发环境NiosⅡIDE进行软件设计,控制整个采集流程,实现了数字视频图像的高速A/D转换、存储及显示等功能。

1 PAL制数字视频图像

目前,世界上采用的电视信号制式主要有PAL制、NTSC制和SECAM制3种,中国采用的电视信号是PAL制。PAL电视制式规定,场扫描频率为50 Hz,每帧图像的扫描行数为625行。PAL制电视信号如图1所示[4,5],图中H为行同步信号的周期,标称值为64μs。

PAL制电视信号转化为数字视频信号后,数据格式一般符合ITU 656 YUV 4∶2∶2标准,其主要特征有:

1)25 f/s的帧率,每帧分为奇数场和偶数场。每帧扫描625行,其中有效图像数据572行,每行采样864个像素,其中有效像素720个。

2)有3个正交分量。亮度分量Y、色度分量U(Cb)和V(Cr),Y表示明亮度(灰度值),Cb和Cr表示色度(色彩及饱和度)。其中亮度分量Y每行采样864次,色度分量Cr和Cb每行采样432次。

3)8 bit或者10 bit的PCM编码。量化时0和255用于同步;1~254表示采样结果的PCM码;对于亮度分量Y,16表示黑色,235表示白色;对于色度分量Cb/Cr,128表示没有色度。

4)有3个信号用于同步输出的数据。行同步信号、场同步信号和像素同步信号[6]。

2 采集模块工作原理及硬件平台构建

工作原理为:由视频信号源输出PAL制模拟信号,采集开始。首先由I2C配置好后的视频解码芯片ADV7181将输入的模拟视频信号进行解码,输出8 bit格式为YCbCr 4∶2∶2复合视频数字信号,接着利用视频图像处理模块对视频数字信号进行4∶2∶2到4∶4∶4的格式转化,YCbCr到RGB色彩空间的转换等处理,再通过视频编码芯片SDA7123进行D/A转换,最后在VGA监视器上显示出来。

本文选用Altera CycloneⅡ系列EP2C35型号的FP-GA芯片。该芯片具有33 216个逻辑单元、475个用户自定义I/O接口、35个嵌入式乘法器和4个锁相环。在FP-GA中设计了以下模块:PLL、NiosⅡ嵌入式软核处理器、挂接在Avalon总线上的JTAG UART,PIO,Timer,System ID,SDRAM Controller,Flash(CFI)Controller等内核以及用户定制的逻辑外设模块freedev_i2c,serial_segment,freeedev_bt656,freedev_sram。在FPGA外围有视频解码芯片ADV7181,用于存储的SDRAM,视频编码芯片SDA7123等。图2为系统硬件结构图。

在系统硬件平台中,嵌入到FPGA的处理器和各接口模块是设计的关键。利用Altera公司的QuartusⅡ软件中集成的SoPC Builder开发工具来创建设计基于处理器、外围设备和存储器的嵌入式系统将大大缩短整个设计周期。下面主要对NiosⅡ软核处理器、ADV7181及其I2C配置、视频图像采集模块、视频图像解码及颜色转换模块等几个关键模块的设计进行介绍。

2.1 NiosⅡ软核处理器

NiosⅡ处理器是Altera公司推出的第二代用于可编程逻辑器件的可配置的软核处理器。由于处理器是软核形式,具有很大的灵活性,因此,可以在多种系统设置组合中进行选择,达到性能和成本的要求[7]。NiosⅡ处理器系列包括三种内核:高速内核(NiosⅡ/f)、经济内核(NiosⅡ/e)、标准内核(NiosⅡ/s)。本文采用的CycloneⅡ系列的EP2C35芯片逻辑资源十分丰富,加上采集系统实时处理对CPU的性能要求较高,因此选用了高性能的NiosⅡ软核作为本系统的CPU。接着再完成其他外设模块的添加,即完成了嵌入式系统的设计。图3为完成配置的SoPC Builder GUI界面。

2.2 ADV7181及其I2C配置

本文采用ADV7181芯片来完成模拟视频信号的A/D转换。ADV7181是Analog Device公司推出的一款高性能的集成视频解码芯片,能自动检测并转换标准NTSC,PAL和SECAM制式的电视信号为8 bit或16 bit的YCbCr 4∶2∶2复合数字视频。

ADV7181支持I2C串行总线接口,通过I2C接口对芯片内部相关控制寄存器进行配置。图4为I2C总线传输时序。本文中的freedev_i2c模块是用户自定制逻辑实现的,编写verilog代码,实现I2C协议,并通过Avalon总线接口与NiosⅡ软核处理器相连。

2.3 视频图像采集模块

freeedev_bt656模块对ITU-R BT.656 YCrCb 4∶2∶2格式的数字码流进行采集处理,并作为用户自定义外设挂接在Avalon总线上。因此,模块的端口要符合Avalon接口规范,分为主端口和从端口。主端口为发起传输的Avalon信号类型的集合,从端口为响应传输请求的Avalon信号类型的集合。freeedev_bt656模块通过slave port来设置模块工作参数和模式,视频采集部分以输入视频时钟采集数据并缓存到视频FIFO中,master port部分读视频FIFO中的数据,并支持突发式传输将数据存放到内存中,从而实现视频图像的采集与存储。

2.4 视频图像解码及颜色转换模块

本文中的Tv_to_VGA模块完成视频图像的解码及颜色转换功能。从ADV7181输出数字码流的格式为ITU-R BT.656 YCrCb 4∶2∶2,即每采4个亮度信号,就各采样2个色差信号。因此在颜色变换之前,采用“nearest neighbor”[8]像素缩放方法,即通过复制相邻采样点的色差信号的方法将其格式转化为YCrCb 4∶4∶4。视频图像输出部分的设计采用了SDA7123视频D/A转换器,实现数字RGB转换为模拟RGB(VGA)信号输出的功能,因此在Tv_to_VGA模块中也要完成YCrCb到RGB颜色空间转换的功能,输出8 bit的数字RGB信号、行场同步信号和VGA时钟及消隐等信号,将这些信号送给SDA7123芯片进行D/A转换,最后送给VGA监视器。

3 采集模块的软件设计

系统的软件设计是在NiosⅡ集成环境下完成的,NiosⅡ集成开发环境(IDE)是NiosⅡ系列嵌入式处理器的基本开发工具。设计中以C语言的形式并利用IDE集成环境提供的硬件抽象层(HAL)的函数来完成软件程序的编写。

在采集系统启动后,首先初始化视频I2C控制器,对ADV7181进行配置初始化以及清空FIFO缓冲器等,接着写命令寄存器,启动采集。在采集过程中,通过读FIFO的状态,并利用printf函数输出就可以在IDE界面的Console控制台中查看采集过程中FIFO的即时状态,程序中几个主要部分如下:

1)按照PAL的设计要求对ADV7181B相关寄存器进行配置。

2)在SDRAM中开辟视频缓存空间,定义其大小,并将其初始化为0。

3)写命令控制寄存器,禁止采集和存储,并清空FIFO。

4)写命令控制寄存器,启动采集。

IOWR(FREEDEV_BT656_INST_BASE,0x01,0x06);

5)写命令寄存器停止采集,允许存储。

IOWR(FREEDEV_BT656_INST_BASE,0x01,0x00);6FIFO

6)显示FIFO的状态。

4 采集系统测试及结论

在实验室条件下对系统进行测试。启动系统,开启视频源进入视频采集处理过程,并最终在VGA监视器上显示出稳定清晰的视频图像,图5为系统调试结果。

在采集过程中使用Altera SignalTapⅡ嵌入式逻辑分析仪对FPGA信号及状态进行检测,图6为SignalTapⅡ检测波形,其中A处的YCrCb 4∶2∶2码流为连续的80h10h,表明此时段正处于视频消隐阶段,B处表明在消隐阶段解码后RGB输出00h,C处表明一个行同步信号的使能,分析得到检测波形符合设计的要求。

本文采用SoPC技术,通过在CycloneⅡFPGA芯片上配置NiosⅡ软核处理器及相关接口模块来实现硬件平台,并利用Altera公司的软件集成开发环境NiosⅡIDE进行软件设计来控制整个采集流程。实现了数字视频图像的高速A/D转换、存储及显示等功能。由于采用SoPC技术,模块具有设计灵活、采集速度快和扩展升级性好等优点。

参考文献

[1]黎洪松.数字视频技术及其应用[M].北京:清华大学出版社,1997.

[2]聂飞,冯宗哲,郭宝林,等.嵌入式视频采集系统的实现方法研究[J].电视技术,2003,27(8):46-49.

[3]周立功.SOPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2006.

[4]宋承杰,王景存.基于FPGA的视频字符叠加的设计与实现[J].电视技术,2009,33(12):24-27.

[5]刘韬,楼兴华.FPGA数字电子系统设计与开发实例导航[M].北京:人民邮电出版社,2005.

[6]钱敏,李富华,黄秋萍,等.基于HDL的PAL制数字视频图像采集控制器设计[J].微电子学与计算机,2007,24(12):191-194.

[7]王晓迪,张景秀.SOPC系统设计与实践[M].北京:北京航空航天大学出版社,2008.

SOPC 篇5

SOPC (System On a Programmable Chip) 称为可编程片上系统。SOPC集成了硬核或软核CPU、DSP、锁相环PLL、存储器、I/O接口及可编程逻辑, 可以灵活高效地解决SOC方案, 而且设计周期短, 设计成本低。SOPC的设计是以IP为基础, 以硬件描述语言为主要设计手段, 借助计算机为平台的EDA工具, 自动化、智能化地自顶向下进行的过程。其具体开发流程如图1所示。[1]

SPI是嵌入式系统常用的标准串行接口。带Avalon接口的SPI内核符合SPI协议并通过Avalon从机接口接到Avalon总线上。SPI是一个工业标准串行接口协议, 通常用于嵌入式系统中连接处理器和各种片外的传感器、合成器、存储器和控制设备。基于Avalon接口的SPI实现了SPI协议, 并在后端提供了一个Avalon接口。

SOPC Builder中提供了现成的SPI核, 可以轻松地集成到NIOS II系统中。SPI可以配置为主和从两种模式。当SPI被配置为主模式时, 它可以控制16个相互独立的从SPI。SPI传输数据的宽度是由用户配置的, 一般为1~16bit, 如果需要传输位数更宽的数据, 则需要软件程序支持。每当一次数据传输结束时, SPI核就请求一个中断。[2]

1. ADS8361芯片的工作原理和特点

ADS8361的工作原理框图如图2所示。[3]ADS8361是一种具有双通道16位的模数 (A/D转换) 转换器, 分两组——四个全差分输入通道, 可同时进行高速信号采集, 采样速率高达500KSPS。在高噪声环境频率为50k Hz的情况下还能很好地提供了80d B的共模抑制比。ADS8361提供了高速, 双SPI串行接口和控制的输入, 以尽量减少软件开销。图3为ADS8361串行时序图。

2. ADS8361核的设计

上述提到SPI内核传输的最大位宽为16位, 而ADS8361传输的位宽为20bit, 不能直接使用SPI内核。虽然, 软件编程和自定义IP核组件两种方法都能实现, 但是软件编程不仅占用CPU资源, 而且传输速度也受到相应的限制, 再加上RD (CONVST) 、BUSY信号来确保时钟同步。因此, 通过自定义IP核组件来实现更加快速、稳定、有效。

2.1 逻辑模块设计

根据ADS8361的转换原理和SPI核的结构, 就可以用Verilog HDL语言编写用户的逻辑模块。部分代码如下所示:

2.2 模块仿真

将设计好的功能模块在Quartus II下进行仿真, 验证其模块设计的正确性。当M0=0, M1=0时, 通道A输出的功能模块的仿真如图4所示。

2.3 ADS8361SPI核在SOPC Builder中的封装

将设计文件封装为SOPC Builder元件, 主要有以下几个步骤:

(1) 添加硬件描述文件, 并注意指定Top Level Module;

(2) 设置信号;

(3) 设置接口;

(4) 添加软件文件, 即设置文件路径。[4]

其中, 设置接口和信号是关键步骤之一, 定义为主还是从接口, 信号的类型及位宽等等这些, 必须参考相关资料。本文参考的是Altera官网上的技术资料里的SPI核和ADS8361的Datasheet。设置信号如图5所示。

2.4 NIOS II对自定义外设接口的定制

通过定义chipselset和address信号, SOPC Builer会自动分配给用户逻辑一个地址, 那么对于用户逻辑的访问和操作, 其实就是对分配给用户逻辑的地址进行访问和操作。从而实现NIOS II对自定义外设的定制。如图6所示。

最后, 将各部分综合成一个.bdf文件, 使得用户接口逻辑 (interface t o user logic) , 与NIOS内部AVALON总线相连, 编译生成完整硬件系统。

3. 数据测量及分析

A D S 8 3 6 1是1 6位的A/D转换芯片, 输入电压范围为-2.5 V~+2.5V, -2.5V表示方法为0x8000, +2.5V表示方法为0x7fff, 0V表示为0x0000, 即以补码形式输出, 最高位为符号位, 1表示负电压输入。下面只给出0 V~+2.5V正电压测量数据, 负电压测量数据不再给出。正电压测量数据如表1所示。

AD转换值计算公式为

其中, D为测量值的计算值, 正数不变, 负数取反加1, 代入公式 (1) 可得被测的模拟电压值。

通过上述波形仿真和硬件测试和数据分析, 可得知该数据采样板采集的模拟量数据准确、工作正常。

4. 结论

SOPC技术可以利用IP库快速生成系统, 同时也可以把用户自定义的逻辑加入到系统当中, 体现了用SOPC设计嵌入式系统的灵活性。使用SOPC可以快速地生成设计验证机, 有效缩短开发周期。

参考文献

[1]黄佳玮, 陈福深.基于NiosⅡ的SOPC嵌入式系统设计[J], 电子元器件应用, 2009.

[2]徐光辉等.基于FPGA的嵌入式开发与应用[M], 电子工业出版社, 2006:30-57.

[3]ADS8361:16-Bit500kSPS2ADCs, 4ch, serial out[BD], dataconverter.ti.com, 2007.

SOPC 篇6

关键词:数据采集,FPGA,SOPC,软核处理器

SOPC(System on Programming Chip)是Altera公司提出的一种灵活的,高效的系统设计方案。它的实质是SOC(System on Chip)设计技术,与其它的SOC设计技术相比,其特点在于可编程性,即利用FPGA或CPLD的可编程性来进行SOC设计。它是PLD和ASIC技术融合的结果,可将一些验证好的IP核即知识产权核嵌入FPGA中,使用起来非常方便。

现场可编程逻辑阵列(FPGA)的发展和应用,可将某些软件功能改由硬件来实现。FPGA时钟频率高、内部延时小、运行速度快、全部控制逻辑由硬件完成。它具有高集成度、体积小、低功耗、I/O 端口多、在系统编程等优点。在高速多路数据采集系统中,采用SOPC设计FPGA 程序,用硬件描述语言设计自动状态机,实现硬件控制数据采集和存储,实现数据采集任务,可以快速生成嵌入式系统,同时可以方便地把用户自定义的逻辑加入到系统中,体现了用SOPC设计嵌入式系统的灵活性 [1]。

本设计方案是利用高速模数转换器件ADC和FP设计高速数据采集系统的。文中详细介绍了利用SOPC技术构建嵌入式软核处理器以及外设来实现数据采集任务。对FPGA的采集控制模块程序进行了时序仿真,通过对系统硬件调试,给出实验数据,并对结果进行分析。

1 基于SOPC技术的数据采集系统的设计

Altera公司提出的片上可编程系统(SOC)解决方案,使得FPGA在嵌入式系统设计领域的地位越来越重要。利用SOPC解决方案可将CPU、存储器、I/O接口、低电压差分信号(LVDS)技术、时钟/数据自动恢复(CDR)以及锁相环(PLL)等系统设计所需的模块集成到一片可编程器件(PLD)上,构成一个可编程的片上系统[2]。

Altera公司推出的NiosII系列嵌入式处理器,扩展了目前世界上最流行的软核嵌入式处理器的性能,把NiosII嵌入到Altera公司的FPGA中,用户可以获得超过200 DMIPS的性能,用户可以从3种处理器以及超过60个的IP核中选择所需要的硬件构件,NiosII系统为用户提供了最基本的多功能性,设计师可以以此来创建一个最适合他们需求的嵌入式系统[3,4,5]。

文中设计的多路数据采集系统是利用SOPC技术实现数据采集任务,并与工控机总线交换数据。该系统的工作原理是:工控机通过CPU总线发送采集命令;FPGA得到采集命令后,FPGA控制ADC芯片转化、模拟开关切换各路模拟输入通道;FPGA等待ADC芯片通道转换完毕,得到中断信号;FPGA读取ADC芯片的转换结果,并存入内部RAM中;所有通道全部转换完毕,FPGA给出转换结束信号,工控机在自身的定时中断服务程序控制下从FPGA中读取所有通道的转换结果。

FPGA选用Altera公司的FPGA器件EP1C3T144C8。ADC转换芯片选用MAXIM公司的MAX125芯片,该芯片为内部带同步采样保持器的高速8通道14位数据采集芯片,8通道分为两组,可同时采样保持4个通道的模拟输入,内部带14×4个字节的FIFO(First In First Out)。它是专为高速数据信号采集所设计的一款芯片,单通道的转换时间为3 μs。模拟开关选用ADG508FBRN,他为8选1的模拟开关,最大导通和关断时间均为250 ns,通态电阻300 Ω。系统的设计结构框图如图1所示。

对于FPGA的程序设计,文献[6,7,8]中介绍了利用VHDL语言和原理图输入法来设计程序,实现数据采集任务。根据系统的需要和ADC转换芯片的时序要求,对FPGA利用状态机来描述采样控制过程。按照采样的步骤,FPGA在采样脉冲的控制下,不停的改变状态机的状态,从而实现对ADC转换芯片和模拟开关芯片的控制,完成对数据的采集和存储。

根据FPGA需要完成的任务,将FPGA的程序设计划分为几个模块:CPU总线接口逻辑模块、采样控制模块、RAM模块、RAM读写控制模块。在该方案中利用SOPC技术,将NiosII软核处理器核嵌入到FPGA中,利用C语言编程实现数据采集任务中的采样控制模块。在设计软件中将各个模块的电路符号编译集成,形成最终的FPGA下载文件,对程序设计进行时序仿真,并在硬件电路中进行验证。

利用SOPC技术实现采样控制需要的工作步骤:

(1)利用Altera公司的SOPC Builder系统开发工具设计32位嵌入式处理器软核;

(2)为NiosII处理器软核配置必要的存储器ROM、RAM、定时器、输入输出接口,利用SOPC Builder系统开发软件生成该模块的电路符号,同时也会生成HAL库函数,HAL库函数主要为C/C++代码提供对输入输出端口、定时器等底层部件控制的接口函数;

(3) 利用NiosII IDE软件编写C/C++代码,来控制软核处理器完成数据采集的任务;

(4) 利用SOPC Builder软件将ROM、RAM、定时器、输入输出接口、软核处理器等编译集成为一个数据采集电路符号;

(5)在QuartusII软件中将上述生成的数据采集电路符号与利用VHDL语言或原理图输入法实现的CPU总线接口逻辑模块、RAM读写控制模块、RAM模块电路符号编译集成,分配输入、输出管脚,将最终编译后的程序下载到FPGA中;

(6) 软件验证、电路验证设计的正确性;控制AD采样的C语言代码的流程如图2所示。

利用FPGA的JTAG接口的在线调试功能,使用NiosII IDE软件对NiosII 32位微处理器寄存器的监控、对利用C/C++语言所编写的应用程序进行在线调试和编译、连接,并将最终设计好的程序下载到FPGA中,通过最终的硬件验证。

2 系统测试与仿真

FPGA功能测试,按照FPGA实现的功能,主要包括以下几个测试:FPGA与工控机接口逻辑模块测试、RAM模块和RAM读写控制模块、采样控制模块。文中利用QuartusII 5.0软件的波形仿真功能对该采样控制模块的仿真波形如图3所示。给该模块提供50MHz系统时钟clk,并发出复位脉冲reset和启动系统转换命令sample ad之后,该模块通过控制ADC芯片选ad cs和写信号ad wr向ADC芯片写入模式控制字0x03。然后发出启动转换脉冲ad convst,模块在读得ad int为高电平时表示4个通道模拟输入已转换完毕。连续发出4个片选ad cs和读信号ad rd,将转换结果存入到RAM中,然后转入下4个模拟通道的采样。

在测试系统硬件时,将有效值为2.53V、频率为50Hz的正弦模拟信号从数据采集板的通道0输入。工控机每1.667ms发送一次采样命令,连续48次采样,工控机读得的通道0的采样数值如表1所示。

MAX125是14位的A/D转换芯片,输入电压范围为-5 V~+5 V,-5 V表示方法为0x3fff,+5 V表示为0x1fff,0 V表示为0x0,即是以补码形式输出的,最高位表示符号位,若为1则表示负输入,若为0表示正输入。

有效值计算公式

U=112n=011u(i)2(1)

其中u(i)表示采样点值,12表示一个周波采样12个点。将采样值转化为电压值,需要用公式

Um=112n=011u(i)28192×5.0(2)

进行转换,因为8 192对应于+5 V,即0x1fff。

表1中的采样值是以补码的形式给出的,需要先将表1中的采样值进行码值转换:整数不变,负数取反加1。先将表1中的采样值进行码值转换,从第12次采样开始,将采样值代入式(2)算出的有效值如表2所示。

通过上述波形仿真和硬件测试和数据分析,可得知该数据采样板采集的模拟量数据准确、工作正常。

3 结束语

利用高速ADC芯片和FPGA来构建数据采集系统,对FPGA的程序设计利用SOPC技术,将NiosII软核处理器核嵌入到FPGA中,实现数据采集控制模块,并编译集成其它所需要的电路模块来实现数据采集任务,经过软件仿真和硬件测试,系统性能稳定。采用集成度高、设计灵活的SOPC系统,整个系统电路非常简洁,在编程调试阶段亦可很灵活地改变配置、设计。很多部分在软件上就能实现仿真,省去了很多电路板试验。应用SOPC系统设计产品,快速设计推出新产品,它代表了一种发展趋势,其应用必然越来越广泛,充分发挥SOPC的优点,将其用到数字系统中,具有广泛的应用前景。

参考文献

[1]林鹏,姚耐军,郝庭柱.基于SOPC数据采集系统的研究[J].天津理工大学学报,2006,22(3):39-41.

[2]潘松,黄继业,曾毓.SOPC技术实用教程[M].北京:清华大学出版社,2005.

[3]彭澄廉.挑战SOC-基于Nios的SOPC设计与实践[M].北京:清华大学出版社,2004.

[4]Altera Corp.Nios II Processor Reference Handbook(ver-sion1.1)[Z].Altera Corp,2004.

[5]Altera,Corp.Nios II Software Developer s Handbook[Z].Altera Corp,2005.

[6]林长青,孙胜利.基于FPGA的多路高速数据采集系统[J].电测与仪表学报,2005,42(5):52-54.

[7]杨志方,王泽成.基于FPGA的多路高速数据采集系统的实现[J].武汉化工学院学报,2006,28(3):58-61.

SOPC 篇7

基于可编程片上系统的SOPC技术是目前国内外电子领域中的研究热点,它将并行结构和并行计算集于一体,采用了软硬件协同设计和IP复用的思想,能够减少产品开发时间,降低功耗,高效利用FPGA资源,因此可以实现高速低功耗低成本的实时嵌入式机器视觉检测系统。随着技术的不断进步,FPGA的集成度越来越高,可以实现的设计规模越来越大,而功耗越来越低。因此,基于FPGA的嵌入式视觉系统将是计算机视觉系统的重要发展方向[1]。

随着消费类电子产品的增多,各种小型的音响设备的需求也随之增多,音响设备的音质主要由扬声器的重要部件音膜决定,而音膜的质量主要由其内外圆的同心度决定,音膜的生产加工及质量检测便成为市场竞争中的重要因素。对音膜同心度的求取过程要解决的重点问题是对音膜内外圆边缘的在线实时检测。目前国内暂无成熟的音膜同心度机器视觉检测系统。

针对上述情况,本文采用SOPC、可编程逻辑器件、IP复用等技术,设计了一种基于SOPC的实时视觉检测系统。主要介绍了该系统中总体设计方案,并采用Sobel算子,以音膜的内外圆边缘检测为例,证明了该系统的高速实时性。本设计不仅带来一定的实用价值,也为高速智能相机的开发提供了有用的参考。

2 系统整体设计

2.1 系统硬件结构

SOPC技术是将CPU、存储器、I/O接口等系统设计所必须的模块封装为IP核集成在一片FPGA上,是一种新的系统设计技术。这种设计方式,有开发周期短、设计灵活、可裁减、可扩充、可升级、软硬件在系统可编程的功能,特别适用于复杂系统的设计[2]。由于SOPC技术的诸多优点,本文采用这种技术设计了一种基于SOPC的嵌入式视觉检测系统。系统总体框图如图1所示。

本系统采用了北京合众达公司的教学实验平台SEED-XDTK-V4为硬件开发平台和Xilinx公司的嵌入式开发工具EDK为软件开发平台。SEED-XDTK-V4实验箱配置了Xilinx公司的Virtex-4系列的FPGA芯片,该芯片拥有23040个逻辑单元和128个信号处理单元(Xtreme DSP Slices)等丰富资源。EDK开发套件自带了许多工具和IP,可以用来设计完整的嵌入式处理器系统,主要包括Xilinx平台工作室XPS和软件开发套件SDK。本系统工程包括了Micro Blaze软核处理器、OPB总线、DDR控制器、DMA控制器、图像处理算法模块等。Micro Blaze软核是一种针对Xilinx FPGA器件而优化的功能强大的32位微处理器,支持Core Connect总线的标准外设集合,具有较好的兼容性和重复利用性。各外设模块以IP核形式灵活的连接到OPB总线上,使系统的设计具有很好的重构能力和灵活性。系统的SOPC工程如图2所示。主要IP核的功能简单介绍如下:

UART模块:I2C配置视频解码芯片TVP5150PBS工作模式;

DMA模块:内存与外设之间进行批量的数据传输。使用DMA控制器对图像数据的存储进行操作,这样可减少CPU的处理负担和功耗,提高图像处理速度;

CCD_Controllor模块:采集视频解码芯片TVP5150PBS解码后的视频数据,并进行图像格式转换。其中配置了TVP5150PBS为YUV格式输出,“Y”表示明亮度(Luminance),也就是灰阶值;“U”和“V”表示色度(Chrominance)。通过图像数据采集模块将接收到的YUV图像转换为8位灰度图像格式,将3个像素点共24位数据合并为32位数据(高8位补零),然后送OPB总线,因此,每一次总线传输相当于传输了3个像素的数据。这里不采用一次传输4个像素点的灰度数据的原因是:3个像素数据的传输有利于后面图像处理算法的实现;

PLC_Ctr模块:用于与外设PLC进行通信,控制PLC进行相应的操作,例如控制外部传感器,启动剔除装置剔除流水线上不合格的产品等;

VGA模块:产生数字图像输出对应的时序,若图像数据未经Micro Blaze CPU处理,则直接数据流输出;若图像数据经CPU处理,则使用乒乓操作的方式,将图像数据转换为27MHz输出;

Pic_Processing模块:数字图像处理算法的实现。该模块可根据项目的具体要求设计相应的图像处理算法IP核,该图像处理IP核既可以完全使用硬件设计方式完成整个图像处理过程,直接输出显示最终结果,也可以只完成图像的前期预处理部分,然后把处理后的关键数据送入Micro Blaze软核CPU中,通过软件处理方式得到最终的处理结果再进行VGA输出显示。因此该模块的设计是项目设计的重点和难点。下面将以音膜图像的内外圆轮廓检测为例,具体介绍该模块IP的设计流程和实现方法。

2.2 系统的软件设计

由于系统中采用了DMA传输技术,图像处理算法完全由硬件实现,因此Micro Blaze CPU主要完成了系统的初始化、外设的配置和DMA的控制等简单操作。软件设计流程如图3所示。

3 音膜内外圆边缘检测算法IP

3.1 算法原理

该应用中的数字图像处理算法的主要思路是:读取音膜图像数据到图像处理模块IP,进行数据缓存,再进行中值滤波处理,滤除干扰噪声,接着运用Sobel算子对音膜图像进行内外圆边缘检测,然后对图像进行二值化处理。由于边缘检测算法的数据量较大,为达到实时处理的要求,本文采用了算法全硬件实现的设计方法。

3.2 Sobel算子介绍

Sobel算子是测量沿水平方向和垂直方向两个方向的灰度差,然后把测量值合并起来形成边缘强度。Sobel的水平方向梯度算子和垂直方向梯度算子分别如图4(a)和图4(b)所示,图4(c)为图像的3×3区域(Z为8位灰度值)[3]。

(a)水平方向梯度算子(b)垂直方向梯度算子(c)图像的3×3区域

得到Sobel算子的梯度的模的近似表达式为:

判断梯度模的值是否大于或等于设定的阈值T,若是则置该点为灰度值255,反之置0,即:

3.3 Sobel算子的硬件实现方法

Sobel算子的硬件实现使用了Xilinx公司的高性能DSP系统的快速建模和实现工具System Generator。该工具是Xilinx公司的系统级建模工具,在很多方面扩展了Math Works公司的Simulink平台,提供了合适硬件设计的数字信号处理(DSP)建模环境,加速、简化了FPGA的DSP系统级硬件设计[4]。图5为在Simulink中使用System Generator工具搭建起的Sobel算子模型。输入图像数据通过水平方向和垂直方向两个滤波器后,再把两个滤波器输出的值进行相加,然后再通过阈值T相比,进行二值化,输出最终结果。整个Sobel算子使用了11个加减法器和一个双口随机存取存储器(Dual Port RAM)等资源。整个设计思路严格按照Sobel的算法步骤进行设计。

在Sobel算子模型上加入中值滤波和二值化模块,使用System Generator软件将算法模型转化为HDL工程,进行优化和综合,通过Modelsim仿真验证算法的正确性,仿真结果如图6所示。

在EDK软件中,通过编写自定义IP中的MPD文件、PAO文件和用户逻辑(user_logic)模块,通过编写端口转换和时序调节程序,将图像算法模块封装成IP核,挂接到OPB总线上,配合一定的控制时序,通过Micro Blaze软核的软件程序调用该IP核模块,完成整个系统的运行。

4 实验及结果分析

(b)PC检测结果(c)FPGA检测结果(a)音膜的原图像

图7(a)为音膜的原图像,图7(b)为PC上在VC++软件中使用Sobel算子检测得到的音膜内外圆轮廓,图7(c)为基于FPGA上检测得到的结果。由两图对比可得,PC上检测得到的轮廓比较纤细,在边缘出现断裂,需要进一步的圆拟合,并且PC检测的噪声较大,而FPGA检测得到的轮廓明显,且无断裂部分。

由于PC和SOPC的图像采集时间和显示时间相差不大,因此对比PC系统和SOPC系统的处理速度快慢,主要是对比数字图像处理模块的处理时间。SOPC系统中图像处理模块在Modelsim中的仿真时间计算公式为:仿真时间=一个仿真周期时间*仿真周期数。仿真中设置了一个仿真周期时间为20ns,即系统频率为50MHz。得到音膜图片使用基于Sobel算子的图像处理算法分别在VC++平台上和FPGA平台上的处理时间,如表1所示。可见在FPGA上实现图像处理算法其处理速度比PC高出约22倍,可以实现高速在线实时检测。

5 结论

本文以30mm以下的黑色音膜为研究对象,利用SOPC技术,设计了一种实时检测系统。采用了FPGA并行处理和软硬件协同设计,使系统具有实时性、可重构性强、体积小、低功耗低成本等优点。实验结果表明,基于SOPC的音膜内外圆边缘检测系统功耗低,运行稳定,检测速度快,可实现音膜的在线实时检测,解决了流水生产线上产品无法进行实时检测的关键问题。

摘要:针对音膜检测中在线实时处理的要求,采用可编程片上系统(System On a Programmable Chip,SOPC)技术和IP(Intellectual Property)复用技术,介绍了基于SOPC的高速低功耗的音膜内外边缘实时检测方法。在Xilinx公司的Virtex-4系列的FPGA(Field Programmable Gate Array)芯片上实现了基于Sobel算子的音膜内外圆边缘检测。结果表明,该系统性能稳定可靠,可脱离PC进行独立工作,检测速度明显高于基于PC的视觉检测系统,达到在线检测实时性要求。

关键词:SOPC,Sobel,音膜,实时检测

参考文献

[1]原魁,肖晗等.采用FPGA的机器视觉系统发展现状与趋势[J].计算机工程与应用,2010,46(36):1-5.

[2]黄云,杨尊先.基于SOPC的数据采集与处理系统设计[J].电子器件,2010,33(1):68-70.

[3]李明,赵勋杰,毛伟民.Sobel边缘检测的FPGA实现[J].现代电子技术,2009,16:44-46.

[4]高展宏,王强.多媒体处理FPGA实现—System Generator篇[M].北京:电子工业出版社,2010:71-72.

[5]Babu T Chacko,Siddharth Shelly.Real-Time Video Filtering and Overlay Character.Generation on FPGA.2010International Conference on Recent Trends in Information,Telecommunication and Computing,2010,26:184-188.

【SOPC】推荐阅读:

上一篇:救援指挥车下一篇:钢丝绳质量

本站热搜

    相关推荐