新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于DSP的嵌入式视觉客流检测系统

基于DSP的嵌入式视觉客流检测系统

作者:时间:2009-05-06来源:网络收藏

2.2 与FIFO存储器的无缝连接与图像采集的实现
FIFO与和OV7141的无缝连接如图2所示。OV7141的工作频率是27 MHz,每秒钟能输出30帧(VGA模式)或者60帧(QVGA模式)。由于性能有限,而且实际上很多情况下也不需要如此高的帧率,因此并不是所有采集到的图像数据都需要DSP进行处理(例如在的实际应用中只要求每秒钟能处理5帧即可),但是必须保证DSF进行处理的图像为一幅完整的图像。可以利用OV7141的3个输出信号来完成这个功能,分别是PCLK(像素时钟信号)、VSYNC(场同步信号)和HREF(行有效信号)。并且OV7141可通过改变片内控制寄存器的值来调整输出图像的窗口大小,窗口可在4×2到652×482像素之间任意选择。HREF、只在所选择窗口内的像素信号输出时才置高电平,这使得图像的非完整模式下的处理也变为了可能。另外,0V7141的片内控制寄存器配置功能由SCCB总线实现,由于DSP不具有SCCB总线接口,因而为了通过DSP实现对0V7141的寄存器配置,利用DSP的2根数据线DO和D1借助CPLD实现sCcB总线时钟线SCL和数据线SDA的模拟以实现虚拟SCCB总线。
控制FIF0的信号主要是写信号和读信号,它们都由DSP根据FIF0的状态信号及DSP对图像的处理结果来控制对FIFO的读/写。读/写操作时序如图3所示。CM0s图像传感器采集获得的图像数据在CPLD控制下逐行写入FIFO,当FIFO的存储容量达到半满时,FIFO的半满标志位以外部中断方式通知DSP,DSP,检测到外部中断后开启DMA,利用DMA通道将FIFo中的图像数据搬移到DSP的片内图像缓冲区中。需要注意的是,在DMA从FIFO搬运图像数据的过程中CMOS图像传感器并没有停止向FIFO写入图像数据,由于CMOS写入FIFO速度Vw。比DMA从FIFO中读出数据的速度Vr慢(Vw=(1/2)Vr),使得CMOS和DMA在对FIFO进行双向访问时FIFO的实际存储容量始终保持在0和最大存储量之间,既不会上溢也不会下溢;从而保证一帧完整的图像可以被DMA控制器顺利的转移至DSP的片内图像缓冲区中。当一帧完整的图像搬运完成后,DMA会开启处理使能标志,当DSP发现处理使能标志开启后将从片内图像缓冲区中获得图像数据以完成图像处理算法,在DSP进行图像处理的同时,DMA控制器可以同时进行下一帧图像数据的搬移工作以提升系统的并行处理能力。DSP对于当前帧图像处理完成后将等待处理使能标志的再次开启以继续下一帧图像的处理。DSP对于当前帧图像的处理结果将在当前帧处理完成后采用以太网传输至接收终端。


此外,DMA在执行图像数据搬移功能时,为了保证数据搬移过程与DSP图像处理的并行性,通常需要在DSP片内开辟2块图像数据缓冲区。由于5416DSP片内DARAM在速度上优于SARAM,因而通常重要的程序代码以及算法的堆栈都放在DARAM中,为了节省DARAM资源并充分利用SARAM,在DSP程序空间所在的SARAM和数据空间所在的DARAM中各开辟1块作为图像数据缓冲区。SARAM中的缓冲区用于DMA通道0从FIF0中读取当前帧图像数据,DMA通道1从SARAM缓冲区中读取上一帧图像数据,两个DMA通道的数据搬移功能都可以在DSP完成某个子算法的过程中并行实现。
2.3 TCP/IP协议的以太网传输的实现与图像的实时传输
考虑到实际情况中通常采用图像处理系统与接收终端采用双绞线直连的方式传输图像数据,因而直接采取TCP/IP协议族中传输效率更高的用户数据包协议(UDP)完成系统与接收终端的数据交互。接收终端可采用套接字(Socket)获取UDP数据包,并从UDP数据包中还原出图像数据或其他系统参数。而在图像处理系统中,UDP数据包的发送主要通过DSP读写LAN9115的片内寄存器以及FIF0的方式实现,具体有以下几个步骤:
(1)初始化。完成LAN9115的唤醒工作,判别其工作状态,通过读写指定内部寄存器,激活他的各项功能。
(2)设置MAC地址。初始化时DSP通过更改LAN9115内部寄存器ADDRH和ADDRL的值,完成对网络MAC地址的设置。
(3)发送ARP数据包。根据UDP协议,发送数据时要获取对方机器的IP地址和MAC地址。该程序根据ARP协议,发送ARP数据,再接收图像接收端发回的RARP数据包,分析里面的数据,即可生成符合要求的UDP数据。
(4)发送图像数据。在发送数据包(Packet)过程中,DSP先更改LAN9115的寄存器TX_CMD_A和Tx_CMD_B的值,其中包含了要发送的数据大小,数据包(Packet)长度等信息,该系统目前采取的图像大小为320×240像素。在实际传输中,每帧图像分20块(1 Frame=20 Block),每块又分6个数据报传输(1 Block=6 Slice),每个数据包中图像数据为1 280 B(1 Slice=1 280 B)。这样做是因为以太网协议里规定每个数据包大小不能超过1 514 B,Windows系统中Socket套接字的缓冲区是8 KB。然后DSP利用I/0端口访问模式将数据依次写入LAN9115中。要中断当前传输过程,可设置寄存器TX―CFG中sTOP―Tx比特为1。这个传输过程就将立即结束。LAN9115与DSP的接口如图4所示。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭