本發(fā)明涉及數(shù)字信號(hào)處理技術(shù)領(lǐng)域,特別是涉及一種DSP和FPGA系統(tǒng)在線升級(jí)方法。
背景技術(shù):
在目前的數(shù)字信號(hào)處理系統(tǒng)中,能夠同時(shí)完成邏輯信號(hào)處理和高效數(shù)據(jù)運(yùn)算的DSP+FPGA雙芯片組合是普遍選擇。DSP和FPGA的程序通常存儲(chǔ)在Flash中,SPI接口的Nor Flash由于其總線位寬較少、硬件設(shè)計(jì)簡單而備受青睞。通常的程序升級(jí)方法是利用JTAG下載線完成,需要拆開設(shè)備后利用DSP和FPGA的專用JTAG接口完成Flash內(nèi)程序的更新。然而很多應(yīng)用場合,拆卸設(shè)備是復(fù)雜且繁瑣的,因此就需要一種無須拆卸設(shè)備而利用通用串行接口完成程序在線升級(jí)的方法。
在現(xiàn)有技術(shù)中,業(yè)界已經(jīng)提出了一些DSP和FPGA在線升級(jí)的方法,例如,在申請?zhí)枮椋?01510885026.3,名稱為嵌入式系統(tǒng)DSP和FPGA在線升級(jí)方法的專利中,提出了利用主控板通過CPCI總線對DSP和FPGA進(jìn)行程序在線升級(jí)的方法。然而,此方法需要使用復(fù)雜度較高的主控板,設(shè)計(jì)復(fù)雜度較高,而且采用CPCI總線為并行總線,對數(shù)字信號(hào)處理系統(tǒng)對外接口引線數(shù)量要求較高。因此,利用通用串行接口簡潔高效地實(shí)現(xiàn)DSP+FPGA在線升級(jí)的技術(shù)還有所欠缺。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有在線升級(jí)方法在復(fù)雜度和接口方式方面的不足,提供一種簡潔高效的DSP和FPGA系統(tǒng)在線升級(jí)方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種DSP和FPGA系統(tǒng)在線升級(jí)方法,包括以下步驟:
步驟一、在上位機(jī)分別利用DSP設(shè)計(jì)工具和FPGA設(shè)計(jì)工具一一對應(yīng)產(chǎn)生DSP二進(jìn)制升級(jí)文件和FPGA二進(jìn)制升級(jí)文件;
步驟二、上位機(jī)向DSP發(fā)送在線升級(jí)命令;
步驟三、DSP收到在線升級(jí)命令后,根據(jù)在線升級(jí)命令判斷進(jìn)入到DSP升級(jí)模式或FPGA升級(jí)模式;若進(jìn)入到DSP升級(jí)模式,則執(zhí)行步驟七;若進(jìn)入到FPGA升級(jí)模式,則執(zhí)行步驟四;
步驟四、DSP控制多路復(fù)用器選擇由DSP的SPI接口讀寫FPGA的Flash存儲(chǔ)器;
步驟五、上位機(jī)將FPGA二進(jìn)制升級(jí)文件分成多個(gè)數(shù)據(jù)包通過通用串行接口傳輸給DSP;
步驟六、DSP接收到上位機(jī)下發(fā)的FPGA二進(jìn)制升級(jí)文件后,自動(dòng)的將FPGA二進(jìn)制升級(jí)文件寫入到FPGA的Flash存儲(chǔ)器中,替換FPGA的Flash存儲(chǔ)器中原內(nèi)容,完成后,向上位機(jī)發(fā)送反饋命令,結(jié)束本流程;
步驟七、上位機(jī)將DSP二進(jìn)制升級(jí)文件分成多個(gè)數(shù)據(jù)包通過通用串行接口傳輸給DSP;
步驟八、DSP接收到上位機(jī)下發(fā)的DSP二進(jìn)制升級(jí)文件后,自動(dòng)的將DSP二進(jìn)制升級(jí)文件寫入到DSP的Flash存儲(chǔ)器中,替換DSP的Flash存儲(chǔ)器中原內(nèi)容,完成后,向上位機(jī)發(fā)送反饋命令;
完成DSP和FPGA系統(tǒng)的在線升級(jí)。
其中,步驟六和步驟八具體包括以下步驟:
a、DSP對接收到的數(shù)據(jù)包進(jìn)行加載,并向相應(yīng)的Flash存儲(chǔ)器發(fā)送擦除命令;
b、Flash存儲(chǔ)器擦除從地址0x0開始的大于等于數(shù)據(jù)包的存儲(chǔ)空間,擦除完成后向DSP發(fā)送擦除完成命令;
c、若DSP收到Flash存儲(chǔ)器反饋的擦除完成命令,則將數(shù)據(jù)包從地址0x0開始寫入到Flash存儲(chǔ)器中,執(zhí)行步驟d;否則,則向上位機(jī)反饋“升級(jí)出錯(cuò)”,由操作人員進(jìn)行相應(yīng)處理,結(jié)束本流程;
d、DSP判斷是否還有后續(xù)數(shù)據(jù)包,若有,返回步驟a;否則,DSP向上位機(jī)反饋“升級(jí)完成”,自動(dòng)升級(jí)流程結(jié)束。
本發(fā)明的有益效果是:充分利用DSP豐富的接口資源,通過通用串行接口實(shí)現(xiàn)升級(jí)文件的數(shù)據(jù)傳輸,接口設(shè)計(jì)簡潔;利用多路復(fù)用器選擇實(shí)現(xiàn)DSP對FPGA的Flash芯片進(jìn)行讀寫,并在DSP上設(shè)計(jì)自動(dòng)升級(jí)算法,通過DSP的SPI總線接口完成其自身Flash和FPGA的Flash的程序自動(dòng)升級(jí)。無FPGA的算法的設(shè)計(jì)需求,軟件設(shè)計(jì)復(fù)雜度低;自動(dòng)升級(jí)算法能夠自動(dòng)的完成對Flash的控制和讀寫,具有較強(qiáng)的可操作性。本發(fā)明為DSP+FPGA組合的數(shù)字信號(hào)處理系統(tǒng)提供了一種便捷高效的在線升級(jí)方法,提高了系統(tǒng)的可維護(hù)性和可測試性。且接口簡單,硬件設(shè)計(jì)復(fù)雜度低,為DSP和FPGA系統(tǒng)的在線升級(jí)提供了一種簡潔有效的方法。
附圖說明
圖1是本發(fā)明實(shí)施例的硬件架構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例的Flash存儲(chǔ)器控制與切換電路示意圖;
圖3是本發(fā)明實(shí)施例的DSP算法流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
根據(jù)本發(fā)明實(shí)施例,本發(fā)明一種DSP和FPGA系統(tǒng)在線升級(jí)方法具體實(shí)施如下:
首先對本實(shí)施例中的芯片型號(hào)進(jìn)行介紹:FPGA芯片選用的是Altera公司的CycloneV系列5CEFA9F23,其存儲(chǔ)器選用的是Altera公司的串行配置Flash EPCS128;DSP芯片選用的是TI公司的C674x系列TMS320C6748,其存儲(chǔ)器選用的是Micron公司的SPI Nor Flash N25Q128;2選1多路復(fù)用器選用的是TI公司的SN74CB3Q3257;與上位機(jī)互連的串行接口總線選擇為RS232電平的UART串行總線,RS232收發(fā)器選用Maxim公司的MAX3232。
另外的,在實(shí)際實(shí)施中,上位機(jī)與DSP的串行接口總線也可以選擇RS422電平的UART串行總線、I2C串行總線、SPI串行總線、USB串行總線或Ethernet串行總線等。其選擇所依據(jù)的原則是,充分借助設(shè)備已有的對外接口,以盡量少的接口冗余實(shí)現(xiàn)在線升級(jí)。
圖2是Flash存儲(chǔ)器控制與切換電路示意圖,從圖2中可以看出,對于DSP的Flash存儲(chǔ)器,可將其直接連接到DSP芯片的SPI總線上,由DSP處理器通過選擇該Flash的片選信號(hào)(SCS0)實(shí)現(xiàn)擦寫。對于FPGA的Flash存儲(chǔ)器,根據(jù)SPI總線的主從設(shè)備連接要求,DSP和FPGA同時(shí)連接FPGA的Flash時(shí)應(yīng)使用2選1多路復(fù)用器SN74CB3Q3257,避免兩個(gè)SPI主設(shè)備連接同一個(gè)從設(shè)備而產(chǎn)生總線競爭。DSP通過GPIO引腳對多路復(fù)用器進(jìn)行控制:在默認(rèn)狀態(tài),GPIO輸出為低電平,此時(shí)多路復(fù)用器的1B1、2B1、3B1、4B1分別與1A、2A、3A、4A相連,由FPGA對Flash進(jìn)行控制;在FPGA程序在線升級(jí)狀態(tài),GPIO輸出為高電平,此時(shí)多路復(fù)用器的1B2、2B2、3B2、4B2分別與1A、2A、3A、4A相連,由DSP對Flash進(jìn)行控制。在多路復(fù)用器的S引腳使用1kΩ的電阻下拉到GND,其目的是當(dāng)設(shè)備上電初始化時(shí),DSP尚未啟動(dòng),此時(shí)GPIO引腳為三態(tài),用下拉電阻確保S引腳輸入電平為低,使多路復(fù)用器工作在默認(rèn)狀態(tài)。
升級(jí)文件產(chǎn)生:對于DSP升級(jí)文件,使用TI公司的轉(zhuǎn)換工具“AISgen for D800K008”將DSP程序編譯產(chǎn)生的*.out文件轉(zhuǎn)化為二進(jìn)制文件*.bin;對于FPGA升級(jí)文件,使用Altera的編譯工具“Quartus”將編譯產(chǎn)生的*.sof文件轉(zhuǎn)化為原始配置數(shù)據(jù)Raw Programming Data文件*.rpd。
升級(jí)文件的分包與傳輸:由上位機(jī)將升級(jí)文件分塊并按照一定的幀格式組成數(shù)據(jù)包,數(shù)據(jù)包大小不應(yīng)超過100kB,并按照順序發(fā)送給DSP。
本發(fā)明一種DSP和FPGA系統(tǒng)在線升級(jí)方法,包括以下步驟:如圖3;
步驟一、在上位機(jī)分別利用DSP設(shè)計(jì)工具和FPGA設(shè)計(jì)工具一一對應(yīng)產(chǎn)生DSP二進(jìn)制升級(jí)文件和FPGA二進(jìn)制升級(jí)文件;
步驟二、上位機(jī)向DSP發(fā)送在線升級(jí)命令;
步驟三、DSP收到在線升級(jí)命令后,根據(jù)在線升級(jí)命令判斷進(jìn)入到DSP升級(jí)模式或FPGA升級(jí)模式;若進(jìn)入到DSP升級(jí)模式,則執(zhí)行步驟七;若進(jìn)入到FPGA升級(jí)模式,則執(zhí)行步驟四;
步驟四、DSP控制多路復(fù)用器選擇由DSP的SPI接口讀寫FPGA的Flash存儲(chǔ)器;
步驟五、上位機(jī)將FPGA二進(jìn)制升級(jí)文件分成多個(gè)數(shù)據(jù)包通過RS232通用串行接口傳輸給DSP,數(shù)據(jù)包大小不應(yīng)超過100kB;
步驟六、自動(dòng)升級(jí)算法:DSP接收到上位機(jī)下發(fā)的FPGA二進(jìn)制升級(jí)文件后,自動(dòng)的將FPGA二進(jìn)制升級(jí)文件寫入到FPGA的Flash存儲(chǔ)器中,替換FPGA的Flash存儲(chǔ)器中原內(nèi)容,完成后,向上位機(jī)發(fā)送反饋命令,在線升級(jí)過程完畢,結(jié)束本流程;
步驟七、上位機(jī)將DSP二進(jìn)制升級(jí)文件分成多個(gè)數(shù)據(jù)包通過RS232通用串行接口傳輸給DSP,數(shù)據(jù)包大小不應(yīng)超過100kB;
步驟八、自動(dòng)升級(jí)算法:DSP接收到上位機(jī)下發(fā)的DSP二進(jìn)制升級(jí)文件后,自動(dòng)的將DSP二進(jìn)制升級(jí)文件寫入到DSP的Flash存儲(chǔ)器中,替換DSP的Flash存儲(chǔ)器中原內(nèi)容,完成后,向上位機(jī)發(fā)送反饋命令;
完成DSP和FPGA系統(tǒng)的在線升級(jí)。
步驟六和步驟八為DSP算法流程圖,具體包括以下步驟:
DSP的自動(dòng)升級(jí)算法:
a、DSP對接收到的數(shù)據(jù)包進(jìn)行加載,并向DSP的Flash存儲(chǔ)器發(fā)送擦除命令;
b、DSP的Flash存儲(chǔ)器擦除從地址0x0開始的大于等于數(shù)據(jù)包的存儲(chǔ)空間,擦除完成后向DSP發(fā)送擦除完成命令;
c、若DSP收到DSP的Flash存儲(chǔ)器反饋的擦除完成命令,則將數(shù)據(jù)包從地址0x0開始寫入到DSP的Flash存儲(chǔ)器中,執(zhí)行步驟d;否則,則向上位機(jī)反饋“升級(jí)出錯(cuò)”,由操作人員進(jìn)行相應(yīng)處理,結(jié)束本流程;
d、DSP判斷是否還有后續(xù)數(shù)據(jù)包,若有,返回步驟a;否則,DSP向上位機(jī)反饋“升級(jí)完成”,自動(dòng)升級(jí)流程結(jié)束。
FPGA的自動(dòng)升級(jí)算法:
e、DSP對接收到的數(shù)據(jù)包進(jìn)行加載,并向FPGA的Flash存儲(chǔ)器發(fā)送擦除命令;
f、FPGA的Flash存儲(chǔ)器擦除從地址0x0開始的大于等于數(shù)據(jù)包的存儲(chǔ)空間,擦除完成后向DSP發(fā)送擦除完成命令;
g、若DSP收到FPGA的Flash存儲(chǔ)器反饋的擦除完成命令,則將數(shù)據(jù)包從地址0x0開始寫入到FPGA的Flash存儲(chǔ)器中,執(zhí)行步驟h;否則,則向上位機(jī)反饋“升級(jí)出錯(cuò)”,由操作人員進(jìn)行相應(yīng)處理,結(jié)束本流程;
h、DSP判斷是否還有后續(xù)數(shù)據(jù)包,若有,返回步驟e;否則,DSP向上位機(jī)反饋“升級(jí)完成”,自動(dòng)升級(jí)流程結(jié)束。