本發(fā)明屬于信息通訊技術(shù)領(lǐng)域和數(shù)字接收技術(shù)領(lǐng)域,具體涉及一種采用uart接口更新fpga固化程序的結(jié)構(gòu)及方法。
背景技術(shù):
現(xiàn)場(chǎng)可編程門陣列(fpga)有著規(guī)整的內(nèi)部邏輯陣列和豐富的連線資源,特別適用于數(shù)字信號(hào)處理。xilinx推出的具有高性能dsp性能的fpga:kintex-7系列采用先進(jìn)的硅組合模塊架構(gòu),配置有豐富的邏輯資源、內(nèi)部存儲(chǔ)ram、乘法器資源及千兆位級(jí)收發(fā)器電路,適合作為雷達(dá)數(shù)字接收機(jī)的硬件開發(fā)平臺(tái)。kintex-7fpga采用sram工藝,在斷電后fpga內(nèi)的配置數(shù)據(jù)將會(huì)丟失,所以在工程設(shè)計(jì)中需要為fpga配備一塊掉電非易失存儲(chǔ)器,將fpga的固化程序儲(chǔ)存在該存儲(chǔ)器中。掉電非易失存儲(chǔ)器通常選用串行接口flash,該類型存儲(chǔ)器接口簡(jiǎn)單、配置方便。
常規(guī)更新xilinx公司fpga固化程序的方法是采用專用的jtag編程電纜配合ise綜合編譯工具進(jìn)行燒錄。在產(chǎn)品設(shè)計(jì)開發(fā)階段采用該方法是合適的,而當(dāng)產(chǎn)品處于外場(chǎng)試飛或交付后階段,再通過這種方法更新和升級(jí)fpga固化程序?qū)⒉辉诜奖恪2捎迷摲椒ǜ耭pga固化程序需要滿足以下條件:1)安裝ise綜合編譯工具,該軟件體量很大,安裝后需要20gb空間;2)配備xilinx公司專用的jtag編程電纜;3)需要專業(yè)設(shè)計(jì)人員完成燒錄流程的軟件操作。綜上所述產(chǎn)品交付后采用該方法更新fpga固化程序?qū)⒉辉俜奖?,無法充分發(fā)揮fpga平臺(tái)靈活性和高效性的特點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種采用uart接口更新fpga固化程序的結(jié)構(gòu)及方法,以便簡(jiǎn)化現(xiàn)有更新方法較為繁瑣的操作流程,提升系統(tǒng)設(shè)計(jì)的靈活性和時(shí)效性。
本發(fā)明的目的通過如下技術(shù)方案實(shí)現(xiàn):一種采用uart接口更新fpga固化程序的結(jié)構(gòu),包括上位機(jī)、電平轉(zhuǎn)換器、fpga、cpld、flash,通過電平轉(zhuǎn)換器將上位機(jī)串口電平與fpga接口電平匹配,fpga還具有多個(gè)管腳接口,其中包括3路用于讀寫flash數(shù)據(jù)的可復(fù)用的配置管腳、1路用于加載flash數(shù)據(jù)的專用配置時(shí)鐘管腳、1路用于用戶燒錄flash數(shù)據(jù)的自定義配置時(shí)鐘管腳、1路用于控制fpga加載flash數(shù)據(jù)的專用配置復(fù)位管腳、以及1路通用管腳,該路通用管腳根據(jù)燒錄與否選擇何種時(shí)鐘管腳作為flash時(shí)鐘輸入源。
一種采用uart接口更新fpga固化程序的方法,包括如下步驟:
步驟一:連接權(quán)利要求1所述的電路線路;
步驟二:上位機(jī)將寫入數(shù)據(jù)分為多塊數(shù)據(jù)包;
步驟三:上電初始化,選擇fpga專用配置時(shí)鐘管腳與flash相連,通過專用配置復(fù)位管腳控制fpga讀取flash數(shù)據(jù);
步驟四:上位機(jī)通過電平轉(zhuǎn)換器向fpga發(fā)送燒錄flash固化程序請(qǐng)求;
步驟五:通過通用管腳選擇fpga自定義配置時(shí)鐘管腳與flash相連;
步驟六:上位機(jī)1向fpga發(fā)送flash擦除指令;
步驟七:fpga讀取flash狀態(tài)寄存器值判斷擦除操作是否結(jié)束;
步驟八:上位機(jī)向fpga發(fā)送flash數(shù)據(jù)寫入指令,fpga將接收到的數(shù)據(jù)逐一寫入至flash存儲(chǔ)器中;
步驟九:fpga讀取flash狀態(tài)寄存器值判斷該塊數(shù)據(jù)包寫入數(shù)據(jù)操作是否結(jié)束,該數(shù)據(jù)包寫入結(jié)束按照步驟八進(jìn)行下一數(shù)據(jù)包的寫入。
本發(fā)明所提供的一種采用uart接口更新fpga固化程序的結(jié)構(gòu)及方法的有益效果在于,簡(jiǎn)化了原有更新方法較為繁瑣且專業(yè)化程度較高的操作流程,便于fpga后期的維護(hù)升級(jí),提高工作效率,并可應(yīng)用于雷達(dá)數(shù)字接收機(jī)領(lǐng)域。
附圖說明
圖1為本發(fā)明采用uart接口更新fpga固化程序的結(jié)構(gòu)的示意圖。
附圖說明:
1-上位機(jī)、2-電平轉(zhuǎn)換器、3-fpga、4-cpld、5-flash。
具體實(shí)施方式
為使本發(fā)明實(shí)施的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行更加詳細(xì)的描述。在附圖中,自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面結(jié)合附圖對(duì)本發(fā)明的采用uart接口更新fpga固化程序的結(jié)構(gòu)及方法做進(jìn)一步詳細(xì)說明。
如圖1所示,一種采用uart接口更新fpga固化程序的結(jié)構(gòu),包括上位機(jī)1、電平轉(zhuǎn)換器2、fpga3、cpld4、flash5,通過電平轉(zhuǎn)換器2將上位機(jī)1串口電平與fpga3接口電平匹配,fpga3還具有多個(gè)管腳接口,其中包括3路用于讀寫flash5數(shù)據(jù)的可復(fù)用配置管腳、1路用于加載flash5數(shù)據(jù)的專用配置時(shí)鐘管腳、1路用于用戶燒錄flash5數(shù)據(jù)的自定義配置時(shí)鐘管腳、1路用于控制fpga3加載flash5數(shù)據(jù)的專用配置復(fù)位管腳、以及1路通用管腳,該路通用管腳根據(jù)燒錄與否選擇何種時(shí)鐘管腳作為flash5時(shí)鐘輸入源。
針對(duì)以上采用uart接口更新fpga固化程序的結(jié)構(gòu)有一套實(shí)施方法,步驟如下:
步驟一,連接圖1所示的電路線路。具體為:采用uart接口更新fpga固化程序的結(jié)構(gòu)的電路線路包含上位機(jī)1、電平轉(zhuǎn)換器2、fpga3、cpld4、flash5。上位機(jī)1uart接口總線通過電平轉(zhuǎn)換器2與fpga3通用io管腳連接,fpga3中可復(fù)用的3路配置管腳與flash5連接,fpga3中1路專用配置管腳與cpld4相連,同時(shí)fpga3中2路通用io管腳與cpld4相連。上位機(jī)1的uart接口總線發(fā)送端1a與電平轉(zhuǎn)換器2a相連,uart接口總線接收端1b與電平轉(zhuǎn)換器2b相連;電平轉(zhuǎn)換器2c端與fpga3a(通用管腳)相連,電平轉(zhuǎn)換器2d端與fpga3b(通用管腳)相連;fpga3h(可復(fù)用配置管腳fcs_b)與flash5a(片選信號(hào)cs)相連,fpga3g(可復(fù)用配置管腳d00_mosi)與flash5b(數(shù)據(jù)輸入端d0),fpga3f(可復(fù)用配置管腳d01_din)與flash5c(數(shù)據(jù)輸出端d1)相連;fpga3d(專用配置時(shí)鐘管腳cclk)與cpld4b(通用管腳)相連,fpga3e(用戶定義配置時(shí)鐘管腳usr_cclk)與cpld4c(通用管腳)相連,fpga3c(通用管腳)與cpld4a(通用管腳)相連,fpga3c管腳用來選擇cpld4d端輸出信號(hào)是fpga3d或者fpga3e,flash5d(工作時(shí)鐘sclk)與cpld4d(通用管腳)相連,fpga3i(配置專用管腳program_b)與cpld4e(通用管腳)相連。
步驟二:上位機(jī)1將寫入數(shù)據(jù)分為多塊數(shù)據(jù)包.
步驟三:上電初始化,選擇fpga3專用配置時(shí)鐘管腳與flash5相連,通過專用配置復(fù)位管腳控制fpga3讀取flash5數(shù)據(jù)。具體為:cpld4d端默認(rèn)輸出信號(hào)為cpld4b端輸入信號(hào),該端點(diǎn)信號(hào)與fpga3d相連,即為fpga專用配置時(shí)鐘管腳cclk。cpld4e輸出一路低電平有效的復(fù)位重加載信號(hào)至fpga3i管腳,低電平持續(xù)10ms后變?yōu)楦唠娖?,以啟?dòng)fpga從flash中加載固化程序流程。
步驟四:上位機(jī)1通過電平轉(zhuǎn)換器2向fpga3發(fā)送燒錄flash5固化程序請(qǐng)求。具體為:上位機(jī)1通過uart接口1a向電平轉(zhuǎn)換器2a發(fā)送更新flash固化程序請(qǐng)求,電平轉(zhuǎn)換器將2a端信號(hào)電平轉(zhuǎn)換后通過2c端發(fā)送至fpga3a端,更新請(qǐng)求指令可通過設(shè)置特定的控制字來表示,如定義連續(xù)發(fā)送4組0x55h控制字時(shí)即表示上位機(jī)1申請(qǐng)更新flash固化程序。
步驟五:通過通用管腳選擇fpga3自定義配置時(shí)鐘管腳與flash5相連,進(jìn)而能夠?qū)lash進(jìn)行讀寫操作。具體為:fpga3a端收到更新固化程序請(qǐng)求控制字后,fpga將fpga3c端置為低電平并輸出至cpld4a端,cpld4a端收到低電平后將cpld4d端輸出的信號(hào)與cpld4c端輸入信號(hào)相連,該端點(diǎn)信號(hào)與fpga3e相連,即為用戶自定義配置時(shí)鐘管腳usr_cclk,用戶使用該時(shí)鐘對(duì)flash進(jìn)行讀寫操作。
步驟六:上位機(jī)1向fpga3發(fā)送flash5擦除指令。具體為:上位機(jī)1通過uart接口發(fā)送flash擦除指令,flash擦除指令可通過設(shè)置特定的控制字來表示。如定義連續(xù)發(fā)送4組0xeeh控制字時(shí)即表示上位機(jī)1申請(qǐng)擦除flash請(qǐng)求。fpga3a端接收到擦除指令后對(duì)flash5進(jìn)行擦除操作。
步驟七:fpga3讀取flash5狀態(tài)寄存器值判斷擦除操作是否結(jié)束,擦除結(jié)束后fpga3b通過電平轉(zhuǎn)換器向上位機(jī)發(fā)送擦除結(jié)束標(biāo)志,擦除結(jié)束標(biāo)志可通過設(shè)置特定的控制字來表示。如定義連續(xù)發(fā)送4組0xaah控制字時(shí)即表示擦除flash完成。
步驟八:上位機(jī)1通過uart接口1a接口向fpga3發(fā)送flash5數(shù)據(jù)寫入指令,數(shù)據(jù)寫入指令由幀頭0xcch和寫入長(zhǎng)度信息len、、寫入數(shù)據(jù)信息di組成及幀尾0xddh組成。數(shù)據(jù)格式為:0xcch+len+d1+d2…+di+…+dn+0xddh。fpga3a端接收到數(shù)據(jù)寫入指令后開始執(zhí)行flash寫操作,將接收到的數(shù)據(jù)逐一寫入至flash存儲(chǔ)器中。
步驟九:fpga3讀取flash5狀態(tài)寄存器值判斷寫操作是否結(jié)束,寫結(jié)束后fpga3b通過電平轉(zhuǎn)換器向上位機(jī)發(fā)送寫結(jié)束標(biāo)志,寫結(jié)束標(biāo)志可通過設(shè)置特定的控制字來表示。如定義連續(xù)發(fā)送4組0x66h控制字時(shí)即表示此次寫flash完成。上位機(jī)1b接收到寫結(jié)束標(biāo)志后繼續(xù)通過uart1a接口發(fā)送下一數(shù)據(jù)包的flash寫入指令,依次執(zhí)行上述第八、九步操作,直到數(shù)據(jù)文件全部寫入。
本發(fā)明的工作原理是:通過cpld來完成flash讀寫時(shí)鐘源的切換,當(dāng)fpga加載時(shí)提供給flash的讀寫時(shí)鐘由fpga專業(yè)配置時(shí)鐘提供,當(dāng)更新flash固件程序時(shí)其讀寫時(shí)鐘由用戶定義配置時(shí)鐘管腳usr_cclk提供。當(dāng)用戶需要更新flash固件程序時(shí),通過上位機(jī)發(fā)送更新請(qǐng)求指令,將flash的讀寫時(shí)鐘由用戶定義配置時(shí)鐘管腳usr_cclk接管。上位機(jī)向fpga發(fā)送擦除、寫操作指令,同時(shí)接收fpga返回的flash狀態(tài)標(biāo)志,根據(jù)狀態(tài)標(biāo)志執(zhí)行相應(yīng)的更新指令。再次上電時(shí),flash的讀寫時(shí)鐘由fpga專用配置時(shí)鐘提供,同時(shí)cpld提供一路fpga重加載脈沖,fpga接收到該脈沖后完成從flash中加載固化程序的流程。
下面通過一實(shí)施例具體說明。
本發(fā)明的一個(gè)實(shí)施例,fpga平臺(tái)選用xilinx公司7系列fpgaxc7k410t,cpld選用xilinx公司xc95144;掉電非易失存儲(chǔ)器選用micron公司n25q128芯片,該芯片為128mbflash存儲(chǔ)器,數(shù)據(jù)頁(yè)長(zhǎng)度為256字節(jié);電平轉(zhuǎn)換器采用maxim公司max3323,該器件將上位機(jī)端的信號(hào)電平和fpga端的信號(hào)電平進(jìn)行轉(zhuǎn)換匹配。申請(qǐng)更新固化程序請(qǐng)求的控制指令為0x55+0x55+0x55+0x55;flash擦除控制指令為0xee+0xee+0xee+0xee;flash擦除完成標(biāo)志位0xaa+0xaa+0xaa+0xaa;flash數(shù)據(jù)寫入控制指令為:0xcch+len+d1+d2…+di+…+dn+0xddh;flash數(shù)據(jù)寫入完成標(biāo)志為:0x66+0x66+0x66+0x66。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。