基于FPGA器件与DSP技术实现视频多通道的控制系统设计

视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。视频监控成为人们生活中不可缺少的技术。在一些危险场所,用视频监控代替人工监视,可以保证人们的生命安全。鉴于一路视频的视野范围有限,要充分收集目标的信息,就需要有多路视频来对同一个物体在不同方位进行监控。因此需要有一个良好的控制手段,确保多路视频控制稳定,可靠。针对织布机告警系统的需求,提出一种基于fpga的多路视频通道控制系统,本系统设计利用fpga间接控制2块max4312选通所需要的视频通道,实现各个视频通道间相互切换。根据开关控制信号的设计思想在fpga中对拨动开关输入信号做去抖动处理,然后对不同的开关操作进行编码,最后将信号送给dsp进行处理。
1 系统总体结构
系统总体结构如图1所示。在1台工业织布机上安装了16个ccd图像传感器对布匹进行图像监控,通过2片max4312选择16路图像视频信号中的一路,经可编程视频输入器件saa7111处理后从vp0输出数字图像信号。同时saa7111输出相应的行、场同步信号hs,vs以及与hs锁定的时钟信号llc、llc2,利用这些信号在ep3c25f324c8中对图像进行预处理。然后将处理后的图像通过ppi口送给bf561中进行算法处理,最后将处理结果送给报警和状态指示装置,实现织布机告警功能。为了使图像监控更方便,该系统设计增添了电平拨动开关和脉冲拨动开关。电平开关使输入图像停止切换,固定于其中一路视频输人图像。脉冲开关可以左右拨动,每次向左或向右拨动都会产生一个很短的上升沿脉冲,同时图像向前或向后进行切换,实现手动选择视频输入通道的功能。
2 软件模块设计
2.1 开关控制信号
实际工程中,bf56l连接在fpga上的pf引脚比较少。为了节约资源,只通过bf561中的bf9来识别2个拨动开关的动作。因此首先需要将2个拨动开关输入信号在fpga中进行处理整合,得到合适的信号。
本系统开关控制信号的设计思想:由于设计这个信号的目的是识别开关控制动作。因此,只要任何一个开关发生了动作就需要产生一个脉冲。如果只有脉冲信号就只能知道开关发生了动作,而不知道是哪个开关发生了什么动作。所以,要识别具体是哪个开关发生了什么动作就必须配合双口ram中的数据进行解码。该系统设计的脉冲持续时间对bf561来说并不重要,只要bf561能识别这个脉冲即可。由于系统中的2个拨动开关,一个是电平拨动开关,另一个是脉冲拨动开关,因此,只要根据电平拨动开关的动作制作相应的脉冲信号,再用这个信号与脉冲拨动开关产生的原始信号逻辑相与,就能得到所需要的目的信号。
由于拨动开关是机械触点,当其断开、闭合时会有相应的前沿、后沿抖动,为了使每次动作都只做一次响应,就必须对原始开关信号做去抖动处理。抖动信号可以分为2种:一种是时间很短的干扰信号,如高频毛刺;另一种是时间较长的干扰信号,如开关抖动。这里的拨动开关都是人为操作,因此每次触发的时间都不会很短,一般小于10 hz。根据上述分析开关抖动信号属于后一种。因此在每次开关操作后,对其产生的信号进行连续采样,如果每次采样都是低电平或者都是高电平,就认为此信号不是抖动,确实开关状态发生了变化。整个设计过程使用verilog硬件描述语言编写,然后在quartusⅱ平台上编译,并采用signaltapⅱlogic arlalvzer对信号采样分析,调试通过后连同其他程序一起烧写进fpga的配置器件epcsl6中。图2~图4分别是各个开关动作去抖动前和去抖动后的实时信号采样图。去抖动模块中的部分代码如下:
其中,clk为13.5 mhz频率的时钟信号,clk_cnt为采样时间间隔计数器,当clk_cnt为135 000时采样1次,即每隔10 ms采样1次。寄存器shuru_temp存储前一次开关信号状态,shum存储当前开关信号状态。如果shuru_temp的值等于shtlm的值,则计数器test_cnt自动加l。如果连续4次采样值相等,即test_cnt=4时去抖动输出才随输入变化。
用电平拨动开关信号作为输入,制作了一个脉冲信号用于识别开关动作,其代码如下:
代码中寄存器level_contrl_temp存储level_contrl延时256个时钟周期后的信号,然后用level_eontrl_temp中存储的信号与level_co-ntrl的值相异或产生所需要的脉冲信号。
调试中发现,去抖动后的信号经常混有持续时间很短的高频脉冲干扰信号,因此设计中使用两级d触发器延时来彻底消除高频脉冲干扰,其程序代码如下:
2.2 双口ram及开关信号编码设计
双口ram分为真、假2种双口。真双口2个端口都可以读写,互不干扰。本次设计根据实际需要,添加的ram模块一端只读,另一端只写,读写互不干扰。根据上述分析可知,开关控制信号只能知道有开关控制动作发生,但是不能识别具体哪个开关发生了动作。因此,设计中首先利用megawizardplug_in manager中的宏功能块ram:2_port产生1个双口ram存储块,然后对这个宏功能模块的参数进行适当调整,产生一个满足自己特定要求的模块,如图5所示。
设计过程中,首先将开关动作进行编码。然后将编码后的数据存进空间大小为8的双口ram中。当bf561检测到pf9上的脉冲后,在pf中断中读取ram中指定地址的数据,然后根据这个数据进行开关状态解码并按解码后的控制信息对2块max4312器件进行操作以控制视频通道。对开关动作进行的编码程序代码如下:
整个设计有4种开关动作,程序中分别将其编码成数据0l、02、03、04,然后将编码后的这4个数据存入双口模块中,等待bf561来读取并进行解码。图6是signaltapⅱlogic analyzer中对脉冲开关向右拨动后存入ram中的数据进行采样。
程序中ram的读信号rden_signal是由dsp发送的地址信号dsp_a、bank选择信号dsp_amsl以及dsp读信号dsp_are进行控制的。当dsp不从双口读取数据时,必须给dsp的数据线赋值高阻,以免影响sdram对dsp数据线的操作。赋值指令如下:assigndsp_d=(rden_signal=l ‘b1)?dsp_d_temp;8 ’hzz;其中dsp_d_temp是从双口中读取的数据。
3 结论
首先介绍了整个系统的工业背景和硬件架构,然后着重阐述了怎样在fpga中处理开关控制信号,以达到可靠响应每个开关动作的目的。整个设计程序是在quartusⅱ平台上用verilog硬件描述语言编写,利用quartusⅱ中的下载工具和signaltapⅱlogic analyzer工具进行下载、实时采样,并多次调试验证。本次设计已经成功应用于布机告警系统中,每次拨动开关都能准确、可靠的切换视频通道。虽然此系统中只有两种开关,但是整个程序的设计思想对多种开关控制也是通用的,只需在细节上稍作改变就能识别多种开关动作。

不一样的DIY智能灯,给你带来不一样的视觉体验
烽火通信2018年业绩快报正式发布
【世说芯品】IAR Systems已全面支持兆易创新车规级MCU
雷军:小米正在加大小米9的供货力度,绝对没有饥饿营销
5G的竞争已经开始 欧洲可能会落后于中国美国
基于FPGA器件与DSP技术实现视频多通道的控制系统设计
日本研发出儿童款的机器人面部表情 以便更好地与孩子进行互动
索尼4K液晶电视X9500G搭载了6大黑科技 将画质表现力提升至更高层次
泰国内阁已经通过了数字加密货币和ICO的政令草案
如何仅用三只IC建立一个数字PLL
E27、GU10接口的LED灯的解决方案及电路图
超声波塑料焊接机在作业过程中对人体有哪些危害
发动机故障灯亮是什么原因 发动机故障灯闪烁是什么问题
10种一些不太知名的bash功能你知道吗?
Qrypter仍然几乎没有得到反病毒解决方案供应商的重视
万家乐专注于改善厨房生活,力争为消费者带来优质产品
基于dsp的交流调速系统硬件接口电路设计的方法
燧原科技荣登“2023上海高新技术企业创新百强榜”
通讯塔、光伏支架等设备研发生产企业汇金通发布2022第一季度报告
半导体材料概述