本申請(qǐng)涉及可編程邏輯器件及其配置程序存儲(chǔ)器技術(shù)領(lǐng)域,更具體地說(shuō),涉及一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置和方法。
背景技術(shù):
包括現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)在內(nèi)的可編程邏輯器件(Programmable Logic Device,PLD)在許多領(lǐng)域正獲得日益廣泛的應(yīng)用。以FPGA為例,F(xiàn)PGA所行使的功能由其內(nèi)部的配置信息所決定,對(duì)于使用較為廣泛的基于靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random Access Memory,SRAM)的FPGA而言,所述配置信息在其片內(nèi)存儲(chǔ)于SRAM單元中,一旦FPGA掉電,存儲(chǔ)于SRAM中的配置信息就會(huì)丟失,因此常常需要在其片外使用非揮發(fā)存儲(chǔ)器如PROM或EEPROM等對(duì)FPGA所需的配置信息進(jìn)行非揮發(fā)存儲(chǔ),并在系統(tǒng)上電后將所述配置信息傳送給FPGA進(jìn)行配置或更新。
對(duì)于所需配置信息的數(shù)據(jù)量小于或等于32Mbit的FPGA(簡(jiǎn)稱小容量FPGA或小容量可編程邏輯器件)而言,F(xiàn)PGA的生產(chǎn)廠家為這些FPGA提供了配套的配置存儲(chǔ)器芯片,用于對(duì)FPGA進(jìn)行配置信息的加載配置,這些存儲(chǔ)器芯片包括存儲(chǔ)容量為1Mbit的XCF01S,存儲(chǔ)容量為2Mbit的XCF02S,存儲(chǔ)容量為4Mbit的XCF04S、XQ18V04,存儲(chǔ)容量為8Mbit的XC17V08、XCF08P,存儲(chǔ)容量為16Mbit的XC17V16、XCF16P、XQR17V16和存儲(chǔ)容量為32Mbit的XCF32P、XQF32P等,這些型號(hào)的存儲(chǔ)器芯片的接口與FPGA芯片的配置接口兼容,能夠從JTAG主機(jī)對(duì)芯片中的數(shù)據(jù)進(jìn)行讀取、擦除和寫入等操作,可以方便、快速地對(duì)FPGA進(jìn)行配置或程序更新。
但是隨著FPGA的不斷發(fā)展,出現(xiàn)了一些所需配置信息容量更大的FPGA,對(duì)于所需配置信息超過(guò)32Mbit的FPGA(簡(jiǎn)稱大容量FGPA或大容量可編程邏輯器件)而言,就需要采用SPI Flash、BPI PROM或Platform Flash XL等存儲(chǔ)器來(lái)對(duì)FPGA進(jìn)行配置,由于這些種類的存儲(chǔ)器的接口與對(duì)小容量FPGA進(jìn)行配置的存儲(chǔ)器的接口存在較大差異,導(dǎo)致利用這些種類的存儲(chǔ)器對(duì)FPGA進(jìn)行配置時(shí)的易用性較差。而利用多片存儲(chǔ)容量小于或等于32Mbit的存儲(chǔ)器進(jìn)行拼接以對(duì)FPGA進(jìn)行配置的方案又會(huì)導(dǎo)致電路元器件較多、占用更多的電路板面積等問(wèn)題出現(xiàn)。
因此,亟需一種可用于對(duì)所需配置信息超過(guò)32Mbit的可編程邏輯器件進(jìn)行配置或更新,且與傳統(tǒng)配置接口相兼容的裝置。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置和方法,以實(shí)現(xiàn)提供一種可用于對(duì)所需配置信息超過(guò)32Mbit的可編程邏輯器件進(jìn)行配置或更新,且與傳統(tǒng)配置接口相兼容的裝置的目的。
為實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案:
一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置,包括:控制模塊和與所述控制模塊連接的存儲(chǔ)模塊,其中,
所述控制模塊具有用于與JTAG主機(jī)連接的JTAG接口和與待配置可編程邏輯器件兼容的配置接口;
所述控制模塊用于在通過(guò)所述JTAG接口接收到包含配置信息的第一控制指令后,將所述配置信息存儲(chǔ)于所述存儲(chǔ)模塊中,和用于在接收到配置指令后讀取所述配置信息對(duì)所述待配置可編程邏輯器件進(jìn)行配置;
所述控制模塊對(duì)所述待配置可編程邏輯器件進(jìn)行配置時(shí)使用的配置時(shí)鐘來(lái)源于所述待配置可編程邏輯器件或所述控制模塊或外部時(shí)鐘源。
可選的,所述控制模塊還用于根據(jù)所述JTAG主機(jī)發(fā)送的第二控制指令對(duì)所述存儲(chǔ)模塊進(jìn)行讀取或擦除操作。
可選的,所述控制模塊還包括通信接口;
所述通信接口用于與上位機(jī)連接;
所述控制模塊還用于在接收到所述上位機(jī)發(fā)送的第三控制指令后,根據(jù)所述第三控制指令對(duì)所述存儲(chǔ)模塊進(jìn)行存儲(chǔ)、讀取和擦除操作。
可選的,所述通信接口為SPI總線接口或IIC總線接口或UART總線接口。
可選的,所述存儲(chǔ)模塊包括三個(gè)存儲(chǔ)單元;
所述控制模塊對(duì)每個(gè)所述存儲(chǔ)單元進(jìn)行的操作均相同;
所述控制模塊還包括三模冗余投票表決電路;
所述三模冗余投票表決電路用于對(duì)所述三個(gè)存儲(chǔ)單元輸出的數(shù)據(jù)進(jìn)行三模冗余運(yùn)算,將所述三個(gè)存儲(chǔ)單元輸出的數(shù)據(jù)中多數(shù)相同的數(shù)據(jù)作為所述控制模塊的讀取結(jié)果。
可選的,所述存儲(chǔ)單元為SPI Flash存儲(chǔ)器或BPI Flash存儲(chǔ)器或NAND Flash存儲(chǔ)器或可編程只讀存儲(chǔ)器PROM。
可選的,所述控制模塊還用于在接收到所述待配置可編程邏輯器件返回的配置完成信號(hào)后控制所述存儲(chǔ)模塊工作于低功耗模式或空閑模式。
可選的,還包括封裝體;
所述封裝體用于將所述存儲(chǔ)模塊和所述控制模塊封裝在一起。
可選的,所述控制模塊的具體實(shí)現(xiàn)形式為ASIC芯片或CPLD芯片。
一種對(duì)可編程邏輯器件進(jìn)行配置或更新的方法,應(yīng)用上述任一項(xiàng)所述的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)待配置可編程邏輯器件進(jìn)行配置及更新。
從上述技術(shù)方案可以看出,本發(fā)明實(shí)施例提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置和方法,其中,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置包括控制模塊和與所述控制模塊連接的存儲(chǔ)模塊,所述控制模塊在通過(guò)所述JTAG接口接收到包含配置信息的第一控制指令后,將所述配置信息存儲(chǔ)于所述存儲(chǔ)模塊中,由于所述控制模塊的配置接口與所述待配置可編程邏輯器件的配置接口相兼容,因此可以在讀取所述配置信息后,將其轉(zhuǎn)換為與所述待配置可編程邏輯器件的配置時(shí)序兼容的配置信息并向其傳送,從而完成對(duì)所述待配置可編程邏輯器件進(jìn)行配置的過(guò)程,進(jìn)而避免了現(xiàn)有技術(shù)中由于用于對(duì)大容量的待配置可編程邏輯器件進(jìn)行配置或更新的存儲(chǔ)器接口與傳統(tǒng)配置接口存在較大差異而出現(xiàn)的易用性較差的問(wèn)題。
進(jìn)一步地,利用所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)所述待配置可編程邏輯器件進(jìn)行配置或更新也無(wú)需利用多片存儲(chǔ)容量小于或等于32Mbit的存儲(chǔ)器進(jìn)行拼接,從而避免了因此帶來(lái)的電路元器件較多、電路結(jié)構(gòu)復(fù)雜、占用電路板面積較大和系統(tǒng)重量較大的問(wèn)題。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請(qǐng)的一個(gè)實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)示意圖;
圖2為本申請(qǐng)的一個(gè)實(shí)施例提供的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置與JTAG主機(jī)連接的結(jié)構(gòu)示意圖;
圖3為本申請(qǐng)的一個(gè)實(shí)施例提供的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置與待配置可編程邏輯器件連接的結(jié)構(gòu)示意圖;
圖4為本申請(qǐng)的一個(gè)實(shí)施例提供的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置同時(shí)與JTAG主機(jī)和待配置可編程邏輯器件連接的結(jié)構(gòu)示意圖;
圖5為本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)示意圖;
圖6為本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置與上位機(jī)連接的結(jié)構(gòu)示意圖;
圖7為本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置同時(shí)與上位機(jī)、JTAG主機(jī)和待配置可編程邏輯器件連接的結(jié)構(gòu)示意圖;
圖8為本申請(qǐng)的另一個(gè)優(yōu)選實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)示意圖;
圖9為本申請(qǐng)的一個(gè)實(shí)施例提供的一種三模冗余投票表決電路的結(jié)構(gòu)示意圖;
圖10為本申請(qǐng)的一個(gè)具體實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)示意圖;
圖11為本申請(qǐng)的另一個(gè)具體實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)及與JTAG主機(jī)、上位機(jī)和待配置可編程邏輯器件連接的示意圖;
圖12為本申請(qǐng)的一個(gè)實(shí)施例提供的一種對(duì)可編程邏輯器件進(jìn)行配置或更新的方法的流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本申請(qǐng)實(shí)施例提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置,如圖1所示,包括:控制模塊100和與所述控制模塊100連接的存儲(chǔ)模塊200,其中,
所述控制模塊100具有用于與JTAG主機(jī)連接的JTAG接口和與待配置可編程邏輯器件兼容的配置接口;
所述控制模塊100用于在通過(guò)所述JTAG接口接收到包含配置信息的第一控制指令后,將所述配置信息存儲(chǔ)于所述存儲(chǔ)模塊200中,和用于在接收到配置指令后讀取所述配置信息對(duì)所述待配置可編程邏輯器件進(jìn)行配置;
所述控制模塊100對(duì)所述待配置可編程邏輯器件進(jìn)行配置時(shí)使用的配置時(shí)鐘來(lái)源于所述待配置可編程邏輯器件或所述控制模塊100或外部時(shí)鐘源。
需要說(shuō)明的是,在待配置可編程邏輯器件的開發(fā)調(diào)試階段,如圖2和圖3所示,在圖2中,JTAG主機(jī)A通過(guò)所述控制模塊100的JTAG接口與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接,所述JTAG主機(jī)A經(jīng)所述JTAG接口向所述控制模塊100發(fā)送包含配置信息的第一控制指令,所述控制模塊100對(duì)所述第一控制指令進(jìn)行響應(yīng),并將所述配置信息寫入所述存儲(chǔ)模塊200。這里的第一控制指令包括所述JTAG主機(jī)發(fā)送的包含配置信息的編程指令。在對(duì)所述存儲(chǔ)模塊200進(jìn)行編程(寫入)時(shí)需要注意的是,如果所述存儲(chǔ)模塊200是由SPI Flash或NAND Flash或NOR Flash等在寫入前需要查空操作的存儲(chǔ)器組成的,在將所述配置信息寫入所述存儲(chǔ)模塊200中時(shí)需要注意,在寫入前需要對(duì)所述存儲(chǔ)模塊200進(jìn)行查空操作,所述查空操作表示:對(duì)所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息進(jìn)行查詢,如果所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息為空,則可以對(duì)其進(jìn)行寫入操作;如果所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息不為空,則需要先擦除所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息,然后才可以對(duì)其進(jìn)行寫入操作。
在圖3中,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置通過(guò)所述控制模塊100的配置接口與所述待配置可編程邏輯器件B連接,當(dāng)接收到所述配置指令后讀取所述配置信息對(duì)所述待配置可編程邏輯器件B進(jìn)行配置。其中,所述配置指令可以是系統(tǒng)上電信息(即系統(tǒng)上電之后,所述控制模塊即讀取所述配置信息對(duì)所述待配置可編程邏輯器件B進(jìn)行配置),也可以是在系統(tǒng)上電后通過(guò)設(shè)置于所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的電路板上的按鍵觸發(fā),本申請(qǐng)對(duì)所述配置指令的具體產(chǎn)生和發(fā)送方式并不做限定,具體視實(shí)際情況而定。
當(dāng)然,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置也可以同時(shí)與所述JTAG主機(jī)A和所述待配置可編程邏輯器件B連接,如圖4所示。
另外,所述控制模塊100對(duì)所述待配置可編程邏輯器件B進(jìn)行數(shù)據(jù)傳輸時(shí)(即對(duì)所述待配置可編程邏輯器件B進(jìn)行配置時(shí))通常需要配置時(shí)鐘來(lái)使所述控制模塊100與所述待配置可編程邏輯器件B同步工作。由于所述待配置可編程邏輯器件B一般具有主動(dòng)配置模式和被動(dòng)配置模式,當(dāng)所述可編程邏輯器件處于主動(dòng)配置模式時(shí),其自身提供在配置過(guò)程中所需的所述配置時(shí)鐘向所述控制模塊100傳送,以實(shí)現(xiàn)所述待配置可編程邏輯器件B和所述控制模塊100的時(shí)鐘同步;當(dāng)所述可編程邏輯器件處于被動(dòng)配置模式時(shí),所述控制模塊及所述待配置可編程邏輯器件所使用的時(shí)鐘可以來(lái)源于所述控制模塊100或外部時(shí)鐘源。當(dāng)所述控制模塊及所述待配置可編程邏輯器件所使用的時(shí)鐘來(lái)源于所述控制模塊100時(shí),所述控制模塊100提供所述配置時(shí)鐘并向所述待配置可編程邏輯器件B傳送以實(shí)現(xiàn)配置過(guò)程中所述待配置可編程邏輯器件B與所述控制模塊100的時(shí)鐘同步。當(dāng)所述控制模塊及所述待配置可編程邏輯器件B所使用的時(shí)鐘來(lái)源于外部時(shí)鐘源時(shí),所述外部時(shí)鐘源通過(guò)所述控制模塊100的配置接口與所述待配置可編程邏輯器件B的連接節(jié)點(diǎn),分別向所述控制模塊100和所述待配置邏輯器件提供配置時(shí)鐘,以實(shí)現(xiàn)配置過(guò)程中所述待配置可編程邏輯器件B與所述控制模塊100的時(shí)鐘同步。
所述待配置可編程邏輯器件B的配置模式的選擇可以通過(guò)改變其相應(yīng)引腳的電平狀態(tài)來(lái)實(shí)現(xiàn),那么相應(yīng)的,所述控制模塊100對(duì)需要接收所述配置時(shí)鐘還是發(fā)送所述配置時(shí)鐘的判斷也可以通過(guò)其相應(yīng)管腳的不同電平狀態(tài)來(lái)實(shí)現(xiàn)。
在所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置中,所述JTAG主機(jī)A是指預(yù)裝有JTAG軟件的計(jì)算機(jī)或FPGA或復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)或單片機(jī)或數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)或其他種類的處理器,本申請(qǐng)對(duì)所述JTAG主機(jī)A的具體種類并不做限定,具體視實(shí)際情況而定。
在本申請(qǐng)中,所述待配置可編程邏輯器件B一般是指現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)。但在本申請(qǐng)的其他實(shí)施例中,所述待配置可編程邏輯器件還可以是數(shù)字信號(hào)處理器(Digital Signal Processor)。本申請(qǐng)對(duì)所述待配置可編程邏輯器件B的種類并不做限定,具體視實(shí)際情況而定。
還需要說(shuō)明的是,由于所述控制模塊100的配置接口與所述待配置可編程邏輯器件B相兼容,因此可以在讀取所述配置信息后,將其轉(zhuǎn)換為與所述待配置可編程邏輯器件B的配置時(shí)序兼容的配置信息并向其傳送,從而完成對(duì)所述待配置可編程邏輯器件B進(jìn)行配置的過(guò)程,進(jìn)而避免了現(xiàn)有技術(shù)中對(duì)于大容量待配置可編程邏輯器件B而言,沒(méi)有與其傳統(tǒng)配置接口兼容的方便易用的配置存儲(chǔ)器而出現(xiàn)的易用性較差的問(wèn)題。這里的大容量待配置可編程邏輯器件B是指所需配置信息超過(guò)32Mbit的可編程邏輯器件。
具體地,由于存儲(chǔ)器接口與所述待配置可編程邏輯器件B的配置接口的時(shí)序不兼容而出現(xiàn)的易用性較差的問(wèn)題具體包括電路結(jié)構(gòu)復(fù)雜、沒(méi)有方便易用的JTAG調(diào)試接口和占用較多的所述待配置可編程邏輯器件B的管腳的問(wèn)題。
現(xiàn)有技術(shù)中雖然有通過(guò)采用多片存儲(chǔ)容量小于或等于32Mbit、但接口與傳統(tǒng)配置接口兼容的存儲(chǔ)器進(jìn)行拼接以對(duì)所述待配置可編程邏輯器件B進(jìn)行配置或更新的方案,以解決上面提到的易用性較差的問(wèn)題。但是采用這種方案不可避免地就需要較多的元器件進(jìn)行拼接配合,這不僅會(huì)使得電路方案更加復(fù)雜,而且會(huì)占用更多的電路板面積,增加系統(tǒng)的重量。這里的傳統(tǒng)配置接口的說(shuō)明見UG002(v2.2)《Virtex-II Platform FPGA User Guide》,對(duì)于傳統(tǒng)配置接口的典型例子見UG002(v2.2)《Virtex-II Platform FPGA User Guide》第四章286~297頁(yè)。本申請(qǐng)?jiān)诖瞬蛔鲑樖觥?/p>
而利用所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)所述待配置可編程邏輯器件B進(jìn)行配置或更新,則無(wú)需利用多片存儲(chǔ)容量小于或等于32Mbit的存儲(chǔ)器進(jìn)行拼接,從而避免了因此帶來(lái)的上述問(wèn)題。
在上述實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的一個(gè)實(shí)施例中,如圖2所示,當(dāng)所述控制模塊100與所述JTAG主機(jī)A連接時(shí),所述JTAG主機(jī)A還可以通過(guò)所述JTAG接口向所述控制模塊100發(fā)送第二控制指令,當(dāng)所述控制模塊100接收到所述第二控制指令后,根據(jù)所述第二控制指令對(duì)所述存儲(chǔ)模塊200進(jìn)行讀取或擦除操作。
需要說(shuō)明的是,所述第二控制指令是指由所述JTAG主機(jī)A發(fā)送的讀取指令或擦除指令,所述控制模塊100接收到所述JTAG主機(jī)A發(fā)送的讀取指令時(shí),根據(jù)所述JTAG主機(jī)A發(fā)送的讀取指令對(duì)所述存儲(chǔ)模塊200進(jìn)行讀取操作;所述控制模塊100接收到所述JTAG主機(jī)A發(fā)送的擦除指令時(shí),根據(jù)所述JTAG主機(jī)A發(fā)送的讀取指令對(duì)所述存儲(chǔ)模塊200進(jìn)行擦除操作。
在上述實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,如圖5所示,所述控制模塊100還包括通信接口;
所述通信接口用于與上位機(jī)連接;
所述控制模塊100還用于在接收到所述上位機(jī)發(fā)送的第三控制指令后,根據(jù)所述第三控制指令對(duì)所述存儲(chǔ)模塊200進(jìn)行存儲(chǔ)、讀取和擦除操作。
相似地,這里的第三控制指令是指通過(guò)所述上位機(jī)發(fā)送的編程指令或讀取指令或擦除指令。當(dāng)所述控制模塊100接收到所述上位機(jī)發(fā)送的讀取指令時(shí),根據(jù)所述上位機(jī)發(fā)送的讀取指令對(duì)所述存儲(chǔ)模塊200進(jìn)行讀取操作;所述控制模塊100接收到所述上位機(jī)發(fā)送的擦除指令時(shí),根據(jù)所述上位機(jī)發(fā)送的擦除指令對(duì)所述存儲(chǔ)模塊200進(jìn)行擦除操作;當(dāng)所述控制模塊100接收到所述上位機(jī)發(fā)送的編程指令時(shí),根據(jù)所述上位機(jī)發(fā)送的編程指令對(duì)所述存儲(chǔ)模塊200進(jìn)行寫入操作。
同樣的,在對(duì)所述存儲(chǔ)模塊200進(jìn)行編程(寫入)時(shí)需要注意的是,如果所述存儲(chǔ)模塊200是由SPI Flash或NAND Flash或NOR Flash等在寫入前需要查空操作的存儲(chǔ)器組成的,在將所述配置信息寫入所述存儲(chǔ)模塊200中時(shí)需要注意,在寫入前需要對(duì)所述存儲(chǔ)模塊200進(jìn)行查空操作,所述查空操作表示:對(duì)所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息進(jìn)行查詢,如果所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息為空,則可以對(duì)其進(jìn)行寫入操作;如果所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息不為空,則需要先擦除所述存儲(chǔ)模塊200內(nèi)存儲(chǔ)的信息,然后才可以對(duì)其進(jìn)行寫入操作。
需要說(shuō)明的是,這里的上位機(jī)泛指能夠通過(guò)所述通信接口與所述控制模塊100連接,并且能夠向所述控制模塊100發(fā)送第三控制指令的任意的電子設(shè)備。但一般而言,為了對(duì)所述待配置可編程邏輯器件B的配置或更新的便利性,我們習(xí)慣于在所述待配置可編程邏輯器件的調(diào)試階段,利用所述JTAG主機(jī)A通過(guò)所述JTAG接口與所述控制模塊100連接,以對(duì)所述存儲(chǔ)模塊進(jìn)行配置信息的擦除、讀取或?qū)懭耄M(jìn)而完成對(duì)所述待配置可編程邏輯器件B的配置或更新。當(dāng)所述待配置可編程邏輯器件B配置完成后進(jìn)入使用階段,在這個(gè)階段,我們一般利用所述上位機(jī)通過(guò)所述通信接口實(shí)現(xiàn)與所述控制模塊100的連接,以對(duì)所述存儲(chǔ)模塊進(jìn)行擦除、讀取或?qū)懭?,進(jìn)而完成對(duì)所述待配置可編程邏輯器件B的更新。所述通信接口可以與包括所述JTAG主機(jī)A在內(nèi)的不同種類的上位機(jī)C連接,但所述JTAG接口只能與所述JTAG主機(jī)A連接。
在本實(shí)施例中,如圖6所示,當(dāng)所述通信接口與所述上位機(jī)C連接后,所述上位機(jī)C可以通過(guò)所述通信接口向所述控制模塊100發(fā)送第三控制指令,以實(shí)現(xiàn)對(duì)所述存儲(chǔ)模塊200的寫入、讀取和擦除操作。那么就意味著利用所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置不僅可以利用JTAG主機(jī)A對(duì)所述存儲(chǔ)模塊200實(shí)現(xiàn)配置信息的寫入或更新,還可以通過(guò)所述上位機(jī)C對(duì)所述存儲(chǔ)模塊200實(shí)現(xiàn)配置信息的寫入或更新,進(jìn)而在再次上電后通過(guò)所述控制模塊100實(shí)現(xiàn)對(duì)所述待配置可編程邏輯器件B的配置及更新的操作。
同樣的,如圖7所示,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置也可以同時(shí)與所述JTAG主機(jī)A、上位機(jī)C和待配置可編程邏輯器件B連接。
需要說(shuō)明的是,所述上位機(jī)C可以為FPGA或CPLD或單片機(jī)或DSP或其他種類的處理器。本申請(qǐng)對(duì)所述上位機(jī)C的種類并不做限定,具體視實(shí)際情況而定。
所述通信接口可以為串行外設(shè)(Serial Peripheral Interface,SPI)總線接口或IIC總線接口或通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter,UART)總線接口。本申請(qǐng)對(duì)所述通信接口的具體種類并不做限定,具體視實(shí)際情況而定。
在上述實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的另一個(gè)優(yōu)選實(shí)施例中,如圖8所示,所述存儲(chǔ)模塊200包括三個(gè)存儲(chǔ)單元210;
所述控制模塊100對(duì)每個(gè)所述存儲(chǔ)單元210進(jìn)行的操作均相同。
所述控制模塊100還包括三模冗余投票表決電路;
所述三模冗余投票表決電路用于對(duì)所述三個(gè)存儲(chǔ)單元210輸出的數(shù)據(jù)進(jìn)行三模冗余運(yùn)算,將所述三個(gè)存儲(chǔ)單元210輸出的數(shù)據(jù)中多數(shù)相同的數(shù)據(jù)作為所述控制模塊100的讀取結(jié)果。
在本實(shí)施例中,在所述三模冗余投票表決電路對(duì)所述三個(gè)存儲(chǔ)單元210輸出的數(shù)據(jù)進(jìn)行三模冗余運(yùn)算獲得讀取結(jié)果(即配置信息)后,所述控制模塊100將所述配置信息傳輸至所述配置接口,并在所述配置接口模擬出所述待配置可編程邏輯器件B的配置時(shí)序,以實(shí)現(xiàn)利用所述配置信息對(duì)所述待配置可編程邏輯器件B進(jìn)行配置或程序更新的目的。
需要說(shuō)明的是,在本實(shí)施例中,利用三個(gè)存儲(chǔ)單元210構(gòu)成所述存儲(chǔ)模塊200,并在所述控制模塊100中設(shè)置三模冗余投票表決電路的目的是提高所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置讀出的數(shù)據(jù)(配置信息)的可靠性,以滿足高可靠性要求的應(yīng)用領(lǐng)域(比如工業(yè)級(jí)、軍級(jí)及宇航級(jí)等領(lǐng)域的應(yīng)用需求)。
本申請(qǐng)的一個(gè)具體實(shí)施例提供了一種可行的三模冗余投票表決電路的結(jié)構(gòu),如圖9所示。圖9中的標(biāo)號(hào)DIN_1、DIN_2和DIN_3為所述三模冗余投票表決電路的輸入端,分別于所述三個(gè)存儲(chǔ)單元210的數(shù)據(jù)輸出端連接;圖9中的標(biāo)號(hào)DOUT為所述三模冗余投票表決電路的輸出端。
在上述實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的又一個(gè)實(shí)施例中,所述存儲(chǔ)單元210為SPI Flash存儲(chǔ)器或BPI Flash存儲(chǔ)器或NAND Flash存儲(chǔ)器或可編程只讀存儲(chǔ)器PROM。本申請(qǐng)對(duì)所述存儲(chǔ)單元210的具體種類并不做限定,具體視實(shí)際情況而定。
在上述實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,所述控制模塊100還用于在接收到所述待配置可編程邏輯器件B返回的配置完成信號(hào)后控制所述存儲(chǔ)模塊200工作于低功耗模式或空閑模式,以降低所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的功耗。
需要說(shuō)明的是,在本實(shí)施例中,當(dāng)所述存儲(chǔ)模塊200工作于低功耗模式或空閑模式后,還可以通過(guò)所述控制模塊100的JTAG接口連接所述JTAG主機(jī)A,并利用所述JTAG主機(jī)A向所述控制模塊100發(fā)送第一控制指令或第二控制指令以完成對(duì)所述存儲(chǔ)模塊200的存儲(chǔ)、讀取和擦除操作。
同樣的,當(dāng)所述存儲(chǔ)模塊200工作于低功耗模式或空閑模式后,仍可以通過(guò)所述控制模塊100的通信接口連接所述上位機(jī)C,并利用所述上位機(jī)C向所述控制模塊100發(fā)送第三控制指令以完成對(duì)所述存儲(chǔ)模塊200的存儲(chǔ)、讀取和擦除操作。
在上述任一實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的一個(gè)具體實(shí)施例中,如圖10所示,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置還包括封裝體300;
所述封裝體300用于將所述存儲(chǔ)模塊200和所述控制模塊100封裝在一起。
需要說(shuō)明的是,所述封裝體300具有輸入輸出模塊,用于將所述控制模塊100的對(duì)外接口引出。在本申請(qǐng)的一個(gè)實(shí)施例中,所述控制模塊100的對(duì)外接口包括所述配置接口和JTAG接口。在本申請(qǐng)的另一個(gè)實(shí)施例中,所述控制模塊100的對(duì)外接口包括所述通信接口、配置接口和JTAG接口。
在上述任一實(shí)施例的基礎(chǔ)上,在本申請(qǐng)的再一個(gè)實(shí)施例中,所述控制模塊100為專用集成電路(Application Specific Integrated Circuits,ASIC)芯片或可編程邏輯器件芯片。本申請(qǐng)對(duì)所述控制模塊100的具體實(shí)現(xiàn)形式并不做限定,具體視實(shí)際情況而定。
在上述實(shí)施例的基礎(chǔ)上,本申請(qǐng)的一個(gè)具體實(shí)施例提供了一種具體的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的結(jié)構(gòu)及其與JTAG主機(jī)A和上位機(jī)C連接的示意圖。如圖11所示,在本實(shí)施例中,所述存儲(chǔ)單元210為SPI Flash芯片。所述控制模塊100的存儲(chǔ)單元210控制接口為SPI接口;所述通信接口為SPI接口;在所述待配置可編程邏輯器件B的開發(fā)調(diào)試階段,可以使用一臺(tái)帶有USB接口、預(yù)裝了JTAG軟件的計(jì)算機(jī)作為所述JTAG主機(jī)A,所述JTAG主機(jī)A經(jīng)由一條下載線以及相應(yīng)的插頭連接至所述控制模塊100的JTAG接口,所述下載線由USB電纜、JTAG電纜及USB轉(zhuǎn)JTAG的轉(zhuǎn)換電路組成。通過(guò)所述JTAG主機(jī)A中預(yù)裝的JTAG軟件可以通過(guò)所述控制模塊100對(duì)所述三個(gè)存儲(chǔ)單元210中的數(shù)據(jù)進(jìn)行讀取、寫入和擦除操作。當(dāng)所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置通過(guò)所述配置接口與所述待配置可編程邏輯器件B連接并且上電后,所述控制模塊100自動(dòng)讀取所述三個(gè)存儲(chǔ)單元210中的數(shù)據(jù),對(duì)三組數(shù)據(jù)進(jìn)行三取二的投票表決,將表決結(jié)果作為所述配置信息,并在所述配置接口按照所述待配置可編程邏輯器件B的配置時(shí)序發(fā)送給所述待配置可編程邏輯器件B,即可完成所述待配置可編程邏輯器件B的上電配置工作。完成對(duì)所述待配置可編程邏輯器件B的上電配置之后,與所述待配置可編程邏輯器件B一同工作的上位機(jī)C仍然可以通過(guò)所述控制模塊100實(shí)現(xiàn)對(duì)所述三個(gè)存儲(chǔ)單元210中的數(shù)據(jù)的讀取、寫入和擦除操作,進(jìn)而實(shí)現(xiàn)所述待配置可編程邏輯器件B功能的更新和升級(jí)。
綜上所述,本申請(qǐng)實(shí)施例提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置包括控制模塊100和與所述控制模塊100連接的存儲(chǔ)模塊200,所述控制模塊100在通過(guò)所述JTAG接口接收到包含配置信息的第一控制指令后,將所述配置信息存儲(chǔ)于所述存儲(chǔ)模塊200中,由于所述控制模塊100的配置接口與所述待配置可編程邏輯器件B的配置接口相兼容,因此可以在讀取所述配置信息后,將其轉(zhuǎn)換為與所述待配置可編程邏輯器件B的配置時(shí)序兼容的配置信息并向其傳送,從而完成對(duì)所述待配置可編程邏輯器件B進(jìn)行配置的過(guò)程,進(jìn)而避免了現(xiàn)有技術(shù)用于對(duì)大容量的待配置可編程邏輯器件進(jìn)行配置或更新的存儲(chǔ)器接口與傳統(tǒng)配置接口存在較大差異而出現(xiàn)的易用性較差的問(wèn)題。
進(jìn)一步地,利用所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)所述待配置可編程邏輯器件B進(jìn)行配置或更新也無(wú)需利用多片存儲(chǔ)容量小于或等于32Mbit的存儲(chǔ)器進(jìn)行拼接,從而避免了因此帶來(lái)的電路元器件較多、電路結(jié)構(gòu)復(fù)雜、占用電路板面積較大和系統(tǒng)重量較大的問(wèn)題。
相應(yīng)的,本申請(qǐng)實(shí)施例還提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的方法,應(yīng)用上述任一實(shí)施例所述的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)待配置可編程邏輯器件B進(jìn)行配置及更新。
具體的,在本申請(qǐng)的一個(gè)實(shí)施例中,如圖12所示,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的方法包括:
S101:提供對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置為上述任一實(shí)施例所述的對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置;
S102:將JTAG主機(jī)A與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接,并通過(guò)所述JTAG主機(jī)A向所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置輸入包含配置信息的第一控制指令,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置接收到所述第一控制指令后對(duì)所述配置信息進(jìn)行存儲(chǔ);
S103:系統(tǒng)上電后,完成對(duì)與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接的待配置可編程邏輯器件B的配置;
S104:判斷是否需要對(duì)所述待配置可編程邏輯器件B中的配置信息進(jìn)行更新,如果是,則進(jìn)入S105;
S105:利用上位機(jī)C或JTAG主機(jī)A對(duì)所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的存儲(chǔ)模塊進(jìn)行配置信息的寫入或更新,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置重新上電后利用所述存儲(chǔ)模塊中的配置信息對(duì)所述待配置可編程邏輯器件B進(jìn)行更新。
在步驟S102中,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置接收到所述第一控制指令后對(duì)所述配置信息進(jìn)行存儲(chǔ)時(shí)需要注意:如果所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置內(nèi)部的存儲(chǔ)模塊是由SPI Flash或NAND Flash或NOR Flash等在寫入前需要查空操作的存儲(chǔ)器組成的,在將所述配置信息寫入所述存儲(chǔ)模塊中時(shí)需要注意,在寫入前需要對(duì)所述存儲(chǔ)模塊進(jìn)行查空操作,所述查空操作表示:對(duì)所述存儲(chǔ)模塊內(nèi)存儲(chǔ)的信息進(jìn)行查詢,如果所述存儲(chǔ)模塊內(nèi)存儲(chǔ)的信息為空,則可以對(duì)其進(jìn)行寫入操作;如果所述存儲(chǔ)模塊內(nèi)存儲(chǔ)的信息不為空,則需要先擦除所述存儲(chǔ)模塊內(nèi)存儲(chǔ)的信息,然后才可以對(duì)其進(jìn)行寫入操作。
具體地,利用與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接的上位機(jī)C對(duì)所述待配置可編程邏輯器件B進(jìn)行更新包括:
利用所述上位機(jī)C向所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置發(fā)送第三控制指令,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的控制模塊100根據(jù)所述第三控制指令對(duì)所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置的存儲(chǔ)模塊200中的配置信息進(jìn)行更新,當(dāng)與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接的待配置可編程邏輯器件B重新上電后,所述控制模塊100自動(dòng)讀取更新后的配置信息對(duì)所述待配置可編程邏輯器件B進(jìn)行配置,實(shí)現(xiàn)對(duì)所述待配置可編程邏輯器件B的更新。
同樣的,利用與所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置連接的JTAG主機(jī)A對(duì)所述待配置可編程邏輯器件B進(jìn)行更新的過(guò)程與利用所述上位機(jī)C對(duì)所述待配置可編程邏輯器件B進(jìn)行更新的過(guò)程類似,本申請(qǐng)?jiān)诖瞬蛔鲑樖觥?/p>
綜上所述,本申請(qǐng)實(shí)施例提供了一種對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置和方法,其中,所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置包括控制模塊100和與所述控制模塊100連接的存儲(chǔ)模塊200,所述控制模塊100在通過(guò)所述JTAG接口接收到包含配置信息的第一控制指令后,將所述配置信息寫入所述存儲(chǔ)模塊200中,由于所述控制模塊100的配置接口與所述待配置可編程邏輯器件B的配置接口相兼容,因此可以在讀取所述配置信息后,將其轉(zhuǎn)換為與所述待配置可編程邏輯器件B的配置時(shí)序兼容的配置信息并向其傳送,從而完成對(duì)所述待配置可編程邏輯器件B進(jìn)行配置的過(guò)程,進(jìn)而避免了現(xiàn)有技術(shù)中由于用于對(duì)大容量的待配置可編程邏輯器件進(jìn)行配置或更新的存儲(chǔ)器接口與傳統(tǒng)配置接口存在較大差異而出現(xiàn)的易用性較差的問(wèn)題。
進(jìn)一步地,利用所述對(duì)可編程邏輯器件進(jìn)行配置或更新的裝置對(duì)所述待配置可編程邏輯器件B進(jìn)行配置或更新也無(wú)需利用多片存儲(chǔ)容量小于或等于32Mbit的存儲(chǔ)器進(jìn)行拼接,從而避免了因此帶來(lái)的電路元器件較多、電路結(jié)構(gòu)復(fù)雜、占用電路板面積較大和系統(tǒng)重量較大的問(wèn)題。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。