采用窗口映射機(jī)制的RapidIO控制器及其控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于嵌入式計(jì)算系統(tǒng)領(lǐng)域,尤其涉及采用窗口映射機(jī)制的Rapid1控制器及其控制方法。
【背景技術(shù)】
[0002]隨著綜合航空電子系統(tǒng)的不斷發(fā)展,一方面,系統(tǒng)對(duì)其內(nèi)部各個(gè)功能模塊之間的數(shù)據(jù)交換和數(shù)據(jù)傳輸?shù)乃俾屎鸵?guī)模有了更高的需求,傳統(tǒng)的并行總線由于時(shí)鐘頻率和信號(hào)走線的限制已經(jīng)滿足不了數(shù)據(jù)傳輸?shù)男枰?;另一方面,由于系統(tǒng)規(guī)模越來越大,基于對(duì)系統(tǒng)容錯(cuò)性和系統(tǒng)網(wǎng)絡(luò)重構(gòu)的更高需求,常用的樹狀總線結(jié)構(gòu)已經(jīng)不再適合作為整個(gè)系統(tǒng)的架構(gòu)模式?;谌绱说膽?yīng)用需求和發(fā)展趨勢,航電系統(tǒng)需要引入一種新的互連通信架構(gòu)方式來解決這些問題。
[0003]Rapid1技術(shù)(IS0/IEC DIS18372)是一種高性能低引腳數(shù)基于包交換的交叉開關(guān)互連技術(shù),是第一個(gè)嵌入式系統(tǒng)互連國際標(biāo)準(zhǔn)。它采用了高速串行總線技術(shù),帶寬高,延時(shí)低,適合高性能嵌入式系統(tǒng)內(nèi)的互連通信,也非常適合于多器件緊耦合的工作環(huán)境。Rapid1互連架構(gòu)多采用基于交換機(jī)的互連拓?fù)浣Y(jié)構(gòu),系統(tǒng)中多個(gè)Rapid1端設(shè)備的點(diǎn)到點(diǎn)通信鏈路由交換機(jī)組織在一起,并且各個(gè)端設(shè)備在整個(gè)網(wǎng)絡(luò)中都是對(duì)等的節(jié)點(diǎn)。這樣,各端設(shè)備間可任意互連和并發(fā)傳輸,真正實(shí)現(xiàn)多組并發(fā)的數(shù)據(jù)交換,突破舊的“共享帶寬”瓶頸,帶寬會(huì)成倍增加。另外由于Rapid1各個(gè)端設(shè)備在整個(gè)網(wǎng)絡(luò)中的對(duì)等性,系統(tǒng)配置更加靈活、規(guī)模可以增減,在某一端設(shè)備發(fā)生故障時(shí)也不會(huì)影響到整個(gè)網(wǎng)絡(luò),所以能為系統(tǒng)容錯(cuò)性和系統(tǒng)網(wǎng)絡(luò)重構(gòu)提供較好的技術(shù)支持。Rapid1的這些優(yōu)點(diǎn)可以很好的解決綜合航空電子系統(tǒng)發(fā)展中所面臨的問題,所以綜合航電系統(tǒng)中越來越多地采用Rapid1技術(shù)來構(gòu)建系統(tǒng)內(nèi)的互連通信。
[0004]目前新的PowerPC和高性能DSP處理器芯片大多都具有Rapid1控制器,這也為Rapid1系統(tǒng)網(wǎng)絡(luò)的構(gòu)建和配置管理提供了方便,但并不是所有的處理器都提供這種支持。X86,ARM,和一些舊的PowerPC,DSP處理器芯片都沒有提供Rapid1接口,另外在一些使用FPGA實(shí)現(xiàn)簡單處理器的應(yīng)用中,也缺乏足夠的Rapid1支持,這樣在以Rapid1為通信網(wǎng)絡(luò)的系統(tǒng)中使用這些處理器時(shí),就需要一些手段來使這些處理器可以作為端設(shè)備連接到Rapid1總線中。一種可行的方法是通過橋芯片,例如有PCIE-Rapid1的橋芯片。但由于橋芯片通常只對(duì)應(yīng)一種其他的標(biāo)準(zhǔn)總線,它無法通用性地對(duì)所有類型的處理器解決這種問題,而且并不是所有的處理器都可以尋找到合適的橋芯片作為解決方案。面向這種需求,我方基于FPGA芯片設(shè)計(jì)開發(fā)出一種新的采用窗口映射機(jī)制的Rapid1控制器,可以為各型處理器擴(kuò)展Rapid1接口。
[0005]隨著FPGA技術(shù)的不斷發(fā)展,目前很多廠商的FPGA均提供了多路高速串行收發(fā)器,可以用于實(shí)現(xiàn)以太網(wǎng)接口,PCIE或Rapid1等高速串行總線接口?;谶@種FPGAjgS設(shè)計(jì)公司開發(fā)了 Rapid1的可編程邏輯設(shè)計(jì)IP Core,常規(guī)的Rapid1 IP Core實(shí)現(xiàn)的是Rapid1端設(shè)備的物理層,傳輸層和一部分邏輯層的功能,可以對(duì)高速串行碼進(jìn)行編解碼,從而轉(zhuǎn)換為Rapid1包格式的并行數(shù)據(jù)信號(hào)來進(jìn)行操作。
【發(fā)明內(nèi)容】
[0006]為了解決【背景技術(shù)】中所存在的技術(shù)問題,本發(fā)明提出了一種采用窗口映射機(jī)制的Rapid1控制器及其控制方法,兼容性好,功能齊備。
[0007]本發(fā)明的技術(shù)解決方案是:采用窗口映射機(jī)制的Rapid1控制器,其特征在于:包括Rapid1 IP Core、與外部處理器進(jìn)行交互的并行局部總線、地址譯碼模塊、擴(kuò)展配置空間、發(fā)起方請(qǐng)求包生成模塊、發(fā)起方回應(yīng)包解析模塊和發(fā)起總線請(qǐng)求的記錄模塊;地址譯碼模塊根據(jù)擴(kuò)展配置空間內(nèi)的配置寄存器組所提供的各個(gè)地址空間的片選信息將并行局部總線上的讀寫操作片選譯碼到各個(gè)后級(jí)的被訪問資源;發(fā)起方請(qǐng)求包生成模塊負(fù)責(zé)在需要發(fā)起Rapid1總線請(qǐng)求時(shí)構(gòu)建請(qǐng)求包;發(fā)起方回應(yīng)包解析模塊對(duì)本控制器發(fā)起Rapid1總線請(qǐng)求后收到的回應(yīng)包進(jìn)行解析,獲取其中的回應(yīng)信息并提供給其他模塊;發(fā)起總線請(qǐng)求的記錄模塊對(duì)控制器發(fā)起的需要回應(yīng)包的Rapid1總線請(qǐng)求進(jìn)行記錄。
[0008]上述控制器還包括響應(yīng)方請(qǐng)求包解析模塊、響應(yīng)方回應(yīng)包生成模塊和擴(kuò)展局部總線;響應(yīng)方請(qǐng)求包解析模塊監(jiān)聽Rapid1 IP Core的響應(yīng)方請(qǐng)求包接口來獲取Rapid1總線上其他設(shè)備對(duì)本控制器發(fā)出的操作請(qǐng)求包,若該請(qǐng)求包為讀寫請(qǐng)求,則將該讀寫請(qǐng)求轉(zhuǎn)換為擴(kuò)展局部總線上的讀寫操作,若該請(qǐng)求包為門鈴/消息請(qǐng)求,則將解析出的門鈴/消息信息發(fā)送給擴(kuò)展配置空間中進(jìn)行處理;擴(kuò)展局部總線上實(shí)現(xiàn)外部Rapid1設(shè)備所請(qǐng)求的讀寫操作,被遠(yuǎn)端Rapid1設(shè)備訪問的本地資源均需掛載在擴(kuò)展局部總線下;響應(yīng)方回應(yīng)包生成模塊根據(jù)請(qǐng)求包的相關(guān)信息和操作完成的情況構(gòu)建回應(yīng)包并發(fā)出,從而完成對(duì)于外部Rapid1總線請(qǐng)求的整個(gè)響應(yīng)操作。
[0009]上述控制器還包括數(shù)據(jù)交換雙口存儲(chǔ)器,數(shù)據(jù)交換雙口存儲(chǔ)器既被處理器端的并行局部總線訪問,又被控制器響應(yīng)方功能模塊的擴(kuò)展局部總線訪問。
[0010]采用窗口映射機(jī)制的Rapid1控制方法,其特征在于:所述方法包括控制器彼此并列的以下方式:
[0011]I)控制器向外部Rapid1設(shè)備發(fā)起讀寫請(qǐng)求過程;
[0012]2)控制器向外部Rapid1設(shè)備發(fā)起門鈴/消息請(qǐng)求過程;
[0013]3)控制器響應(yīng)外部Rapid1設(shè)備的讀寫請(qǐng)求過程;
[0014]4)控制器響應(yīng)外部Rapid1設(shè)備的門鈴/消息請(qǐng)求過程;
[0015]5)控制器與外部Rapid1設(shè)備之間的通信與數(shù)據(jù)傳輸;
[0016]6)錯(cuò)誤處理:6.1)控制器向外部Rapid1設(shè)備發(fā)起請(qǐng)求時(shí),如果發(fā)生錯(cuò)誤,例如回應(yīng)包和請(qǐng)求包信息不匹配,或者長時(shí)間沒有收到期望的回應(yīng)包,則發(fā)起方回應(yīng)包解析模塊和發(fā)起總線請(qǐng)求的記錄模塊會(huì)發(fā)現(xiàn)相應(yīng)的錯(cuò)誤,并把錯(cuò)誤信息提交給擴(kuò)展配置空間中的錯(cuò)誤處理單元;6.2)控制器響應(yīng)外部Rapid1設(shè)備發(fā)來的請(qǐng)求時(shí),如果請(qǐng)求包有錯(cuò)誤,則響應(yīng)方請(qǐng)求包解析模塊會(huì)解析出相應(yīng)的錯(cuò)誤,并把錯(cuò)誤信息提交給擴(kuò)展配置空間中的錯(cuò)誤處理單元;6.3)擴(kuò)展配置空間中的錯(cuò)誤處理單元記錄各種錯(cuò)誤信息,并在必要時(shí)告知中斷處理單元,中斷處理單元再向處理器發(fā)出中斷;處理器收到中斷后,從擴(kuò)展配置空間的錯(cuò)誤處理相關(guān)寄存器中讀取錯(cuò)誤信息,然后根據(jù)這些信息進(jìn)行相應(yīng)的故障處理操作。
[0017]上述方式I)具體是:
[0018]1.1)處理器通過并行局部總線進(jìn)行讀寫,配置擴(kuò)展配置空間中某個(gè)映射窗口的配置寄存器組,設(shè)置該窗口的地址空間,映射地址以及Rapid1目標(biāo)設(shè)備的ID,讀寫操作類型;
[0019]1.2)處理器對(duì)該映射窗口的地址空間進(jìn)行讀寫操作,地址譯碼模塊將該讀寫操作進(jìn)行片選譯碼和地址映射之后,發(fā)送給發(fā)起方請(qǐng)求包生成模塊;
[0020]1.3)發(fā)起方請(qǐng)求包生成模塊接收到該映射窗口的讀寫操作命令后,根據(jù)擴(kuò)展配置空間提供的該窗口的配置信息,構(gòu)建相應(yīng)的讀寫請(qǐng)求包,并發(fā)往Rapid1IP Core的發(fā)起方請(qǐng)求包接口,若該請(qǐng)求包需要回應(yīng)包,則同時(shí)將請(qǐng)求包的信息發(fā)給發(fā)起總線請(qǐng)求的記錄模塊讓其進(jìn)行記錄和計(jì)時(shí)。另外需要注意的是,如果該次讀寫操作要求的數(shù)據(jù)量較大,發(fā)起方請(qǐng)求包生成模塊還會(huì)根據(jù)Rapid1規(guī)范來將其分割構(gòu)建為若干個(gè)Rapid1請(qǐng)求包并依次發(fā)出;
[0021]1.4) Rapid1 IP Core在收到要發(fā)起的Rapid1讀寫請(qǐng)求包后,通過物理層高速差分信號(hào)將該請(qǐng)求包發(fā)送到Rapid1總線上;
[0022]1.5)外部Rapid1設(shè)備在收到該Rapid1讀寫請(qǐng)求包后,進(jìn)行相應(yīng)的讀寫操作,若該請(qǐng)求需要回應(yīng),則還向本控制器返回回應(yīng)包;
[0023]1.6) Rapid1 IP Core通過“物理層高速差分信號(hào)”收到回應(yīng)包后,進(jìn)行解碼后通過發(fā)起方回應(yīng)包接口發(fā)給發(fā)起方回應(yīng)包解析模塊;
[0024]1.7)發(fā)起方回應(yīng)包解析模塊收到回應(yīng)包后,將回應(yīng)包信息發(fā)往發(fā)起總線請(qǐng)求的記錄模塊,讓其記錄本次讀寫操作的完成情況;同時(shí)發(fā)起方回應(yīng)包解析模塊將讀操作的回應(yīng)包返回?cái)?shù)據(jù)或者寫操作的完成標(biāo)志發(fā)往發(fā)起方請(qǐng)求包生成模塊;
[0025]1.8)發(fā)起方請(qǐng)求包生成模塊在收到讀操作的返回?cái)?shù)據(jù)或者收到寫操作的完成標(biāo)志后,完成該映射窗口的本次讀寫操作,并逐級(jí)反饋完成地址譯碼模塊和并行局部總線上的相應(yīng)讀寫操作。
[0026]上述方式2)具體是:
[0027]2.1)處理器通過并行局部總線進(jìn)行讀寫,配置擴(kuò)展配置空間中門鈴/消息的配置寄存器組,設(shè)置門鈴/消息類型,載荷數(shù)據(jù),Rapid1目標(biāo)設(shè)備的ID,消息傳遞的郵箱號(hào)內(nèi)容;待請(qǐng)求包相關(guān)內(nèi)容設(shè)置完成后,處理器寫某個(gè)發(fā)起門鈴/消息請(qǐng)求的命令寄存器,從而發(fā)起該次請(qǐng)求;
[0028]2.2)擴(kuò)展配置空間中的門鈴/消息控制單元在收到發(fā)起請(qǐng)求的命令后,從各個(gè)配置寄存器中獲取門鈴/消息請(qǐng)求包的信息,并發(fā)往發(fā)起方請(qǐng)求包生成模塊;
[0029]2.3)發(fā)起方請(qǐng)求包生成模塊根據(jù)相應(yīng)信息構(gòu)建門鈴/消息請(qǐng)求包并發(fā)往Rapid1IP Core的發(fā)起方請(qǐng)求包接口,同時(shí)將請(qǐng)求包的信息發(fā)給發(fā)起總線請(qǐng)求的記錄模塊讓其進(jìn)行記錄和計(jì)時(shí);
[0030]2.4) Rapid1 IP Core在收到要發(fā)起的Rapid1門鈴/消息請(qǐng)求包后,通過物理層高速差分信號(hào)將該請(qǐng)求包發(fā)送到Rapid1總線上;
[0031]2.5)外部Rapid1設(shè)備在收到該Rapid1門鈴/消息請(qǐng)求包后,記錄門鈴/消息,完成相應(yīng)操作,再向本控制器返回回應(yīng)包;
[0032]2.6) Rapid1 IP Core通過物理層高速差分信號(hào)收到回應(yīng)包后,進(jìn)行解碼后通過發(fā)起方回應(yīng)包接口發(fā)給發(fā)起方回應(yīng)包解析模塊;
[0033]2.7)發(fā)起方回應(yīng)包解析模塊收到回應(yīng)包后,將其中信息既反饋給擴(kuò)展配置空間中的門鈴/消息控制單元,也發(fā)往發(fā)起總線請(qǐng)求的記錄模塊,讓其記錄本次讀寫操作的完成情況;
[0034]2.8)擴(kuò)展配置空間中的門鈴/消息控制單元收到反饋的回應(yīng)包信息后,則代表本次門鈴/消息請(qǐng)求已完成,并把完成標(biāo)志記錄在相關(guān)寄存器中;若長時(shí)間未收到回應(yīng)包,則按需求看是否要采取重傳;重傳則重新進(jìn)行步驟2.2)到步驟2.8)。
[0035]上述方式3)具體是:
[0036]3.1)外部Rapid1設(shè)備通過Rapid1總線向本控制器發(fā)起讀寫請(qǐng)求后,Rapid1IP Core