一种基于FPGA的多路视频通道控制系统设计

[09-12 18:33:02]   来源:http://www.88dzw.com  EDA/PLD   阅读:8159

文章摘要:其中,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_T

一种基于FPGA的多路视频通道控制系统设计,标签:eda技术,eda技术实用教程,http://www.88dzw.com


  其中,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工具进行下载、实时采样,并多次调试验证。本次设计已经成功应用于布机告警系统中,每次拨动开关都能准确、可靠的切换视频通道。虽然此系统中只有两种开关,但是整个程序的设计思想对多种开关控制也是通用的,只需在细节上稍作改变就能识别多种开关动作。


上一页  [1] [2] 


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行