一種基于FPGA的多路視頻通道控制系統(tǒng)設(shè)計(jì)
2.2 雙口RAM及開(kāi)關(guān)信號(hào)編碼設(shè)計(jì)
雙口RAM分為真、假2種雙口。真雙口2個(gè)端口都可以讀寫(xiě),互不干擾。本次設(shè)計(jì)根據(jù)實(shí)際需要,添加的RAM模塊一端只讀,另一端只寫(xiě),讀寫(xiě)互不干擾。根據(jù)上述分析可知,開(kāi)關(guān)控制信號(hào)只能知道有開(kāi)關(guān)控制動(dòng)作發(fā)生,但是不能識(shí)別具體哪個(gè)開(kāi)關(guān)發(fā)生了動(dòng)作。因此,設(shè)計(jì)中首先利用MegaWizardPlug_In Manager中的宏功能塊RAM:2_PORT產(chǎn)生1個(gè)雙口RAM存儲(chǔ)塊,然后對(duì)這個(gè)宏功能模塊的參數(shù)進(jìn)行適當(dāng)調(diào)整,產(chǎn)生一個(gè)滿足自己特定要求的模塊,如圖5所示。
設(shè)計(jì)過(guò)程中,首先將開(kāi)關(guān)動(dòng)作進(jìn)行編碼。然后將編碼后的數(shù)據(jù)存進(jìn)空間大小為8的雙口RAM中。當(dāng)BF561檢測(cè)到PF9上的脈沖后,在PF中斷中讀取RAM中指定地址的數(shù)據(jù),然后根據(jù)這個(gè)數(shù)據(jù)進(jìn)行開(kāi)關(guān)狀態(tài)解碼并按解碼后的控制信息對(duì)2塊MAX4312器件進(jìn)行操作以控制視頻通道。對(duì)開(kāi)關(guān)動(dòng)作進(jìn)行的編碼程序代碼如下:
整個(gè)設(shè)計(jì)有4種開(kāi)關(guān)動(dòng)作,程序中分別將其編碼成數(shù)據(jù)0l、02、03、04,然后將編碼后的這4個(gè)數(shù)據(jù)存入雙口模塊中,等待BF561來(lái)讀取并進(jìn)行解碼。圖6是SignalTapⅡLogic Analyzer中對(duì)脈沖開(kāi)關(guān)向右撥動(dòng)后存入RAM中的數(shù)據(jù)進(jìn)行采樣。
程序中RAM的讀信號(hào)rden_signal是由DSP發(fā)送的地址信號(hào)DSP_A、BANK選擇信號(hào)DSP_AMSl以及DSP讀信號(hào)DSP_ARE進(jìn)行控制的。當(dāng)DSP不從雙口讀取數(shù)據(jù)時(shí),必須給DSP的數(shù)據(jù)線賦值高阻,以免影響SDRAM對(duì)DSP數(shù)據(jù)線的操作。賦值指令如下:assignDSP_D=(rden_signal=l 'b1)?DSP_D_TEMP;8 'hzz;其中DSP_D_TEMP是從雙口中讀取的數(shù)據(jù)。
3 結(jié)論
首先介紹了整個(gè)系統(tǒng)的工業(yè)背景和硬件架構(gòu),然后著重闡述了怎樣在FPGA中處理開(kāi)關(guān)控制信號(hào),以達(dá)到可靠響應(yīng)每個(gè)開(kāi)關(guān)動(dòng)作的目的。整個(gè)設(shè)計(jì)程序是在QuartusⅡ平臺(tái)上用Verilog硬件描述語(yǔ)言編寫(xiě),利用QuartusⅡ中的下載工具和SignalTapⅡLogic Analyzer工具進(jìn)行下載、實(shí)時(shí)采樣,并多次調(diào)試驗(yàn)證。本次設(shè)計(jì)已經(jīng)成功應(yīng)用于布機(jī)告警系統(tǒng)中,每次撥動(dòng)開(kāi)關(guān)都能準(zhǔn)確、可靠的切換視頻通道。雖然此系統(tǒng)中只有兩種開(kāi)關(guān),但是整個(gè)程序的設(shè)計(jì)思想對(duì)多種開(kāi)關(guān)控制也是通用的,只需在細(xì)節(jié)上稍作改變就能識(shí)別多種開(kāi)關(guān)動(dòng)作。
評(píng)論