本發(fā)明涉及集成電路領(lǐng)域中的嵌入式設(shè)計,尤其涉及一種數(shù)據(jù)訪問裝置及方法。
背景技術(shù):
隨著片上系統(tǒng)(SoC,System On Chip)技術(shù)的發(fā)展,一個芯片內(nèi)集成的功能模塊也越來越多,而各個模塊對于存儲器的訪問要求也越來越高,因此,片上總線在芯片架構(gòu)中顯得非常重要,片上總線實現(xiàn)片上主機(主模塊)對各個從機(從模塊)的控制是片上系統(tǒng)不可缺少的一部分。目前很多芯片設(shè)計采用數(shù)據(jù)突發(fā)傳輸(AMBA,Advanced Microcontroller Bus Architecture)芯片內(nèi)總線協(xié)議中的高級高性能總線(AHB,Advanced High Performance Bus)協(xié)議。
現(xiàn)有技術(shù)中,在集成電路(IC,Integrated Circuit)設(shè)計中,需要用戶掌握總線協(xié)議,通過編寫寄存器傳輸級(RTL,Register-Transfer Level)代碼由AHB中的仲裁模塊決定的AHB總線的訪問路徑。
然而,采用上述現(xiàn)有技術(shù)的實現(xiàn)方案,通過用戶掌握總線協(xié)議,編寫RTL代碼的方式會浪費訪問時間,且可靠性也不高,而且對于規(guī)模比較大的芯片,可能需要幾百上千個從模塊,若是手動編寫每個從模塊的RTL代碼,將是一個非常巨大的工作量。
技術(shù)實現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實施例期望提供一種數(shù)據(jù)訪問裝置及方法,能夠快速簡潔有效地實現(xiàn)數(shù)據(jù)訪問裝置,且提高了數(shù)據(jù)訪問裝置的可靠性。
本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例提供一種數(shù)據(jù)訪問裝置,所述數(shù)據(jù)訪問裝置包括:
主端口接口模塊,用于傳輸?shù)谝恢鞫丝诎l(fā)送的訪問請求至仲裁模塊,所述訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù);
所述仲裁模塊,用于根據(jù)預(yù)設(shè)表格,通過從端口接口模塊確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址,并發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,其中,所述仲裁模塊是根據(jù)所述預(yù)設(shè)表格生成的,所述預(yù)設(shè)表格包括總線參數(shù);
所述從端口接口模塊,用于傳輸所述仲裁模塊發(fā)送的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,以供所述第一從端口根據(jù)所述第一從端口的有效地址和所述訪問命令,對所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問裝置中,所述數(shù)據(jù)訪問裝置還包括:第一跨時鐘模塊;所述仲裁模塊通過所述第一跨時鐘模塊與所述從端口接口模塊進行通信;
所述仲裁模塊,還用于發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一跨時鐘模塊;
所述第一跨時鐘模塊,用于根據(jù)所述預(yù)設(shè)表格,將所述仲裁模塊發(fā)送的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)所在的時鐘域切換至所述第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的所述第一從端口的對接,并發(fā)送切換時鐘域后的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口;
所述從端口接口模塊,還用于傳輸所述第一跨時鐘模塊發(fā)送的切換時鐘域后的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,以供所述第一從端口根據(jù)切換時鐘域后的所述第一從端口的有效地址和所述訪問命令,對切換時鐘域后的所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問裝置中,所述數(shù)據(jù)訪問裝置還包括:第一流水線模塊;所述仲裁模塊通過所述第一流水線模塊與所述從端口接口模塊通信;
所述仲裁模塊,還用于發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一流水線模塊;
所述第一流水線模塊,用于將所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)按照時序輸出至所述第一從端口;
所述從端口接口模塊,還用于傳輸所述第一流水線模塊按照時序輸出的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,以供所述第一從端口根據(jù)時序正確的所述第一從端口的有效地址和所述訪問命令,對所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問裝置中,所述數(shù)據(jù)訪問裝置還包括:下一級仲裁模塊;所述仲裁模塊通過所述下一級仲裁模塊與所述從端口接口模塊通信;
所述仲裁模塊,用于根據(jù)所述預(yù)設(shè)表格,通過所述下一級仲裁模塊及所述從端口接口模塊確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址,并通過所述下一級仲裁模塊發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口。
在上述數(shù)據(jù)訪問裝置中,所述AHB主線還包括:第二跨時鐘模塊;所述下一級仲裁模塊通過所述第二跨時鐘模塊與所述從端口接口模塊通信;
所述仲裁模塊,還用于根據(jù)所述預(yù)設(shè)表格,通過所述下一級仲裁模塊及所述從端口接口模塊中確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址,并通過所述下一級仲裁模塊發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第二跨時鐘模塊;
所述第二跨時鐘模塊,用于根據(jù)所述預(yù)設(shè)表格,將通過所述下一級仲裁模塊發(fā)送的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)所在的時鐘域切換至所述第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的所述第一從端口的對接,并發(fā)送切換時鐘域后的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口;
所述從端口接口模塊,還用于傳輸?shù)诙鐣r鐘模塊發(fā)送的切換時鐘域后的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,以供所述第一從端口根據(jù)切換時鐘域后的所述第一從端口的有效地址和所述訪問命令,對切換時鐘域后的所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問裝置中,所述AHB主線還包括:第二流水線模塊;所述下一級仲裁模塊通過所述第二流水線模塊與所述從端口接口模塊通信;
所述仲裁模塊,用于根據(jù)所述預(yù)設(shè)表格,通過所述下一級仲裁模塊及所述從端口接口模塊確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址,并通過所述下一級仲裁模塊發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第二跨時鐘模塊;
所述第二流水線模塊,用于將所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)按照時序輸出至所述第一從端口。
所述從端口接口模塊,還用于傳輸所述第二流水線模塊按照時序輸出的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)按照時序輸出至所述第一從端口,以供所述第一從端口根據(jù)時序正確的所述第一從端口的有效地址和所述訪問命令,對所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問裝置中,所述數(shù)據(jù)訪問裝置還包括:高級高性能總線AHB轉(zhuǎn)換模塊;所述AHB轉(zhuǎn)換模塊與所述從端口接口模塊通信;
所述AHB轉(zhuǎn)換模塊,用于解析通過所述從端口接口模塊接收的所述訪問命令和所述訪問數(shù)據(jù)。
在上述數(shù)據(jù)訪問裝置中,所述數(shù)據(jù)訪問裝置還包括:主端口選擇模塊;所述主端口接口模塊與所述主端口選擇模塊通信;
所述主端口選擇模塊,用于從多個主端口中確定與所述仲裁模塊通信的所述第一主端口,以實現(xiàn)所述第一主端口與所述仲裁模塊的AHB數(shù)據(jù)傳輸。
在上述數(shù)據(jù)訪問裝置中,所述從端口接口模塊,具體用于傳輸對所述訪問數(shù)據(jù)進行所述訪問命令對應(yīng)的訪問操作至所述仲裁模塊;
所述仲裁模塊,還用于通過所述主端口接口模塊傳輸所述訪問命令的響應(yīng)至所述第一主端口。
在上述數(shù)據(jù)訪問裝置中,所述從端口接口模塊,還用于傳輸不響應(yīng)所述訪問命令的訪問操作;
所述仲裁模塊,還用于在未通過所述從端口接口模塊接收到對所述訪問命 令的響應(yīng)之后,接收通過所述主端口接口模塊發(fā)送的下一次訪問請求,并根據(jù)所述下一次訪問請求進行通過主端口接口模塊與所述從端口接口模塊傳輸?shù)南乱淮卧L問操作。
本發(fā)明實施例提供一種數(shù)據(jù)訪問方法,所述數(shù)據(jù)訪問方法包括:
接收第一主端口發(fā)送的訪問請求,所述訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù);
根據(jù)預(yù)設(shè)表格,確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址;
發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,以供所述第一從端口根據(jù)所述第一從端口的有效地址和所述訪問命令,對所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問方法中,所述發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口之前,所述方法還包括:
根據(jù)所述預(yù)設(shè)表格,將所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)所在的時鐘域切換至所述第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的所述第一從端口的對接;
相應(yīng)的,所述發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,包括:
發(fā)送切換時鐘域后的所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口。
在上述數(shù)據(jù)訪問方法中,所述發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口,包括:
將所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)按照時序輸出至所述第一從端口,以供所述第一從端口根據(jù)時序正確的所述第一從端口的有效地址和所述訪問命令,對所述訪問數(shù)據(jù)進行訪問操作。
在上述數(shù)據(jù)訪問方法中,所述接收第一主端口發(fā)送的訪問請求之前,所述方法還包括:
從多個主端口中確定所述第一主端口。
在上述數(shù)據(jù)訪問方法中,所述根據(jù)預(yù)設(shè)表格,確定與所述訪問地址對應(yīng)的第一從端口及所述第一從端口的有效地址之后,所述發(fā)送所述第一從端口的有效地址、所述訪問命令和所述訪問數(shù)據(jù)至所述第一從端口之前,所述方法還包括:
解析所述訪問命令和所述訪問數(shù)據(jù)。
本發(fā)明實施例提供了一種數(shù)據(jù)訪問裝置及方法,包括:主端口接口模塊,用于傳輸?shù)谝恢鞫丝诎l(fā)送的訪問請求至仲裁模塊,該訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù);仲裁模塊,用于根據(jù)預(yù)設(shè)表格,通過從端口接口模塊確定與訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址,并發(fā)送該第一從端口的有效地址、該訪問命令和該訪問數(shù)據(jù)至第一從端口,其中,仲裁模塊是根據(jù)預(yù)設(shè)表格生成的,該預(yù)設(shè)表格包括總線參數(shù);從端口接口模塊,用于傳輸仲裁模塊發(fā)送的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)該第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。采用上述數(shù)據(jù)訪問裝置進行數(shù)據(jù)傳輸時,由于仲裁模塊是由預(yù)設(shè)表格生成的,不再通過用戶手工編碼進行仲裁模塊的改寫,因此,解決大規(guī)模芯片項目中由于數(shù)據(jù)訪問裝置端口多、改動頻繁造成的代碼維護工作量大、手工編碼易出錯的問題,從而可以簡潔有效地實現(xiàn)數(shù)據(jù)訪問裝置,提高了數(shù)據(jù)訪問裝置的可靠性。
附圖說明
圖1為本發(fā)明實施例提供的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖一;
圖2為本發(fā)明實施例中的全地址示意圖一;
圖3為本發(fā)明實施例中的全地址示意圖二;
圖4為本發(fā)明實施例中實現(xiàn)仲裁模塊傳輸數(shù)據(jù)的流程圖;
圖5為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖二;
圖6為本發(fā)明實施例提供的第一跨時鐘模塊的設(shè)計框圖;
圖7為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖三;
圖8為現(xiàn)有技術(shù)中提供的普通流水線模塊的設(shè)計框圖;
圖9為本發(fā)明實施例提供的第一流水線模塊的設(shè)計框圖;
圖10為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖四;
圖11為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖五;
圖12為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖六;
圖13為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖七;
圖14為本發(fā)明實施例提供的AHB轉(zhuǎn)換模塊的設(shè)計框圖;
圖15為本發(fā)明實施例中的一種數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖八;
圖16為本發(fā)明實施例提供的主端口接口模塊的結(jié)構(gòu)示意圖;
圖17為本發(fā)明實施例中的一種示例性的數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖;
圖18為本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法的流程圖一;
圖19為本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法的流程圖二;
圖20為本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法的流程圖三;
圖21為本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法的流程圖四。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。
實施例一
如圖1所示,本發(fā)明實施例提供一種數(shù)據(jù)訪問裝置1,該數(shù)據(jù)訪問裝置1可以包括:
主端口接口模塊10,用于傳輸?shù)谝恢鞫丝诎l(fā)送的訪問請求至仲裁模塊11,該訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù)。
仲裁模塊11,用于根據(jù)預(yù)設(shè)表格,通過從端口接口模塊12確定與訪問地址對應(yīng)的第一從端口接口及該第一從端口的有效地址,并發(fā)送該第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至該第一從端口,該仲裁模塊11是根據(jù)預(yù)設(shè)表 格生成的,該預(yù)設(shè)表格包括總線參數(shù)。
從端口接口模塊12,用于傳輸仲裁模塊11發(fā)送的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至從端口,以供該第一從端口根據(jù)該第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。
其中,仲裁模塊11與主端口接口模塊10通信,以及從端口接口模塊12與該仲裁模塊11通信。
需要說明的是,本發(fā)明是實施例中的數(shù)據(jù)訪問裝置可以為高級高性能總線(AHB,Advanced High Performance Bus)。
需要說明的是,仲裁模塊11的功能是完成主端口和任意個從端口之間的任意地址仲裁及多路選擇功能,即仲裁主端口進行訪問請求的從端口的地址和路徑。本發(fā)明實施例中的仲裁模塊是通過預(yù)設(shè)表格生成的代碼實現(xiàn)的模塊。該預(yù)設(shè)表格包括總線參數(shù),示例性的,預(yù)設(shè)表格中總線參數(shù)可以包括:從端口名稱、從端口的地址位寬、從端口的地址范圍等參數(shù)。具體的,利用預(yù)設(shè)表格中的VB腳本,檢測預(yù)設(shè)表格中的總線參數(shù),根據(jù)總線參數(shù)生成仲裁模塊代碼,實現(xiàn)仲裁模塊的功能。
進一步地,本發(fā)明實施例中的仲裁模塊11采用高地址選擇設(shè)計方式,由于仲裁模塊11通過主端口接口模塊10接收到的訪問請求中攜帶的訪問地址為某個要訪問的從端口的全地址,但是從端口的有效地址不一定占滿該全地址位寬,因此,本發(fā)明實施例中,通過判別訪問地址的高位地址的值來通過從端口接口模塊確定從端口中的第一從端口,該第一從端口為第一主端口想要進行訪問的從端口。
需要說明的是,本發(fā)明實施例中的主端口接口模塊10與主機的主端口連接,從端口接口模塊12與從機的從端口連接,通過主端口接口模塊10對從端口接口模塊12的訪問就是主機對從機進行的訪問。
具體的,以全地址位寬是20bit地址的主機,訪問10bit從機為例,本發(fā)明實施例中采用高位選擇設(shè)計僅需要判斷11bit邏輯。如圖2所示,為全地址示意圖,從圖2中可知:片選比特位的數(shù)值的每一比特可以為0、1或Z。其中,片 選比特位是指地址中超出最小從端口地址位寬的部分。本發(fā)明實施例中的整個地址分配過程可以為:仲裁模塊11根據(jù)最小從端口地址大小,將全地址劃分為2n份(n為片選比特位的個數(shù)),每個從端口也根據(jù)自身地址大小占用2k個(k為片選比特位中Z的個數(shù))最小從端口模塊地址位寬。如果片選比特位中沒有Z,則只占用一個最小從端口模塊地址位寬,如果片選比特位最低位為Z,則占用2個最小從端口模塊地址位寬,如果片選比特位最低兩位為Z,則占用4個最小從端口模塊地址位寬,如果片選比特位最低三位為Z,則占用8個最小從端口模塊地址位寬,依次類推。這樣,仲裁模塊11就可以通過判斷高地址位(片選比特位)的比特值來確定要訪問的第一從端口了。
其中,片選比特位中的某一比特位為Z,表示占用了該比特位為0和1的地址,同時比該比特位低的比特位都必須為Z;每個從端口只能占用2k個最小空間。如果不滿足這兩個條件,則說明仲裁模塊11獲取的訪問地址不是任何一個從端口的地址,因此,將該訪問地址空閑,同時該訪問地址對應(yīng)的模塊為空。
示例性的,假設(shè)仲裁模塊11的總地址空間大小是1MB,最小從端口pcie_brg_csr是4KB,最大從端口pcie_ep_bkend是64KB。因此,“總線字節(jié)地址位寬”為20;“最小從模塊字節(jié)地址位寬”為12;“最大從模塊字節(jié)地址位寬”為16。對于從端口pcie_brg_csr,地址空間大小為4KB,“字節(jié)地址位寬”填12,僅占用一個最小地址空間,指定“字節(jié)片選地址范圍”為8’b0000_0000。從端口在仲裁模塊11實際分到的地址如圖3所示,“Z”表示可以為0也可以為1,即高8bit為8’b0000_0000的地址都會尋址到該從端口。
進一步地,仲裁模塊11判斷出訪問地址對應(yīng)第一從端口的地址后,仲裁模塊11將除高地址位外的第一從端口的有效地址通過從端口接口模塊12發(fā)送至從端口。
可以理解的是,本發(fā)明實施例中的仲裁模塊11采用高地址選擇設(shè)計,大大降低了仲裁和多路選擇時的組合邏輯量,而仲裁模塊11采用被動響應(yīng)方式,則保證數(shù)據(jù)訪問裝置1不會因為某個從端口異常沒有響應(yīng)而掛死。
可選的,本發(fā)明實施例提出的訪問命令可以包括讀命令和寫命令。
可選的,從端口接口模塊12,還具體用于傳輸對訪問數(shù)據(jù)進行訪問命令對應(yīng)的訪問操作至仲裁模塊11,以及仲裁模塊11通過主端口接口模塊10傳輸該訪問命令的響應(yīng)至第一主端口。
可以理解的是,主機向一個從機發(fā)送讀命令時,該從機需向主機發(fā)送該讀命令的響應(yīng),以完成主機對一個從機的讀操作。
可選的,從端口接口模塊12,還用于傳輸不響應(yīng)訪問命令的訪問操作。
仲裁模塊11,還用于在未通過從端口接口模塊12接收到對訪問命令的響應(yīng)之后,接收通過主端口接口模塊10發(fā)送的下一次訪問請求,并根據(jù)該下一次訪問請求進行通過該主端口接口模塊10與該從端口接口模塊12傳輸?shù)南乱淮卧L問操作。
可以理解的是,示例性的,當主機向一個從機發(fā)送讀命令時,該從機回存在不響應(yīng)該讀命令的情況,這時就出現(xiàn)了數(shù)據(jù)訪問裝置1掛死的情況,此時,由于本發(fā)明實施例中的仲裁模塊11采用被動響應(yīng)方式,因此,若仲裁模塊11在通過主端口接口模塊10接收到發(fā)送的下一次訪問請求時,仲裁模塊11放棄本次訪問請求,開始處理下一次訪問請求。這樣處理,避免了仲裁模塊一直為了等待通過從端口接口模塊12傳輸?shù)捻憫?yīng),而使得數(shù)據(jù)訪問裝置1出現(xiàn)掛死的情況的發(fā)生。
具體的,仲裁模塊11可以通過狀態(tài)機實現(xiàn)上述被動響應(yīng)方式可以規(guī)避數(shù)據(jù)訪問裝置1掛死的問題。如圖4所示,為狀態(tài)機流程圖。一個正常的AHB的訪問命令的響應(yīng)流程為:仲裁模塊11的初始處于空閑狀態(tài),當收到訪問請求(訪問命令)后,可以向命令狀態(tài)切換,該訪問命令被響應(yīng)后,該仲裁模塊11由空閑狀態(tài)切換到數(shù)據(jù)狀態(tài),訪問數(shù)據(jù)被響應(yīng)后再切換到完成狀態(tài),最后回到空閑狀態(tài),實現(xiàn)了一次AHB的仲裁傳送。當從機出現(xiàn)異常時,訪問命令和訪問數(shù)據(jù)可能不會被響應(yīng),如果此時主機一直在等待從機的響應(yīng),AHB協(xié)議中也沒有給出最大的等待時間,那總線將處于掛死狀態(tài)。為了不違背AHB協(xié)議,同時又能解決這個問題,本發(fā)明實施例中的仲裁模塊11增加一個是否有下一次訪問請求的判斷,如果主機能夠等待,可以無限長時間的等待,如果主機不想等待, 則可以再發(fā)起下一次訪問請求,狀態(tài)機會根據(jù)下一次訪問請求切換到空閑狀態(tài)并啟動新的訪問操作。這樣既可以不違背AHB協(xié)議,同時又能解決掛死風(fēng)險問題。
可選的,如圖5所示,數(shù)據(jù)訪問裝置1還包括:第一跨時鐘模塊13;仲裁模塊11通過該第一跨時鐘模塊13與從端口接口模塊12通信。
仲裁模塊11,還用于發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一跨時鐘模塊13。
第一跨時鐘模塊13,用于根據(jù)預(yù)設(shè)表格,將仲裁模塊11發(fā)送的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)所在的時鐘域切換至該第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的該第一從端口的對接,并發(fā)送切換時鐘域后的該第一從端口的有效地址、該訪問命令和該訪問數(shù)據(jù)至第一從端口。
從端口接口模塊12,還用于傳輸?shù)谝豢鐣r鐘模塊13發(fā)送的切換時鐘域后的第一從端口的有效地址、訪問命令和述訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)切換時鐘域后的第一從端口的有效地址和訪問命令,對切換時鐘域后的訪問數(shù)據(jù)進行訪問操作。
需要說明的是,仲裁模塊11通過第一跨時鐘模塊13與從端口接口模塊12通信的情況,包括:仲裁模塊11與第一跨時鐘模塊13通信,該第一跨時鐘模塊13又與從端口接口模塊12通信的情況,還包括:仲裁模塊11與第一跨時鐘模塊13通信,該第一跨時鐘模塊13又通過新的模塊(例如:第一流水線模塊14)與從端口接口模塊12通信的情況,還可以包括:仲裁模塊11與新的功能模塊(例如:第一流水線模塊14)通信后,通過第一跨時鐘模塊13與從端口接口模塊12通信的情況。具體的三者之間的通信關(guān)系由實際應(yīng)用中的需要的功能模塊來決定,本發(fā)明實施例不作限制。
特別的,本發(fā)明實施例中的第一跨時鐘模塊13可以為至少一個,具體的數(shù)量也由實際應(yīng)用的情況決定,本發(fā)明實施例不作限制。
可以理解的是,第一跨時鐘模塊13完成時鐘域切換功能,可以支持AHB接口的任意位地址、任意時鐘域間的轉(zhuǎn)換。
可選的,第一跨時鐘模塊13模塊可以采用兩種實現(xiàn)方式:先入先出隊列(FIFO,F(xiàn)irst Input First Output)方式和異步握手方式。
具體的,本發(fā)明實施例中的第一跨時鐘模塊13的設(shè)計框圖示例性的可以為圖6所示,源時鐘(訪問請求所在的時鐘域)發(fā)起讀寫請求,被存如讀寫FIFO,選擇模塊根據(jù)FIFO的空滿來讀取FIFO的請求,并轉(zhuǎn)換為AHB協(xié)議輸出到目的時鐘域(從端口接口模塊12),將目的時鐘域的響應(yīng)返回到完成響應(yīng)FIFO,并返回給源時鐘域的AHB。
進一步地,本發(fā)明實施例中的第一跨時鐘模塊13內(nèi)部設(shè)置超時保護機制,該超時保護機制用來監(jiān)控響應(yīng)時間,不會因為沒有響應(yīng)而掛住總線;設(shè)置主從端口傳輸類型分離機制,對不支持突發(fā)的從端口,仍然可以允許主端口以突發(fā)方式配置,提高了總線的配置速率。其保護方式具體為,如果超過預(yù)設(shè)時間操作仍沒有完成,則將一個特定數(shù)據(jù)的完成發(fā)給完成響應(yīng)FIFO,保證源時鐘域的AHB不會被掛死。
可選的,預(yù)設(shè)時間可以為1分鐘,具體的預(yù)設(shè)時間的選擇可以根據(jù)實際的響應(yīng)完成時間來決定,本發(fā)明實施例不作限制。
需要說明的是,本發(fā)明實施例中的模塊間都通過AHB接口進行連接,而通過從端口接口模塊12接收的訪問數(shù)據(jù)必須是與該從端口接口模塊12對應(yīng)的要接收的從端口的時鐘域一致,才能與該從端口連接的AHB接口(從端口接口)對接上。
可選的,如圖7所示,數(shù)據(jù)訪問裝置1還包括:第一流水線模塊14;仲裁模塊11通過該第一流水線模塊14與從端口接口模塊12通信。
仲裁模塊11,還用于發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一流水線模塊14。
第一流水線模塊14,用于將第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)按照時序輸出至第一從端口。
從端口接口模塊12,還用于傳輸?shù)谝涣魉€模塊14按照時序輸出的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根 據(jù)時序正確的第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。
需要說明的是,仲裁模塊11通過第一流水線模塊14與從端口接口模塊12通信的情況,包括:仲裁模塊11與第一流水線模塊14通信,該第一流水線模塊14又與從端口接口模塊12通信的情況,還包括:仲裁模塊11與第一流水線模塊14通信,該第一流水線模塊14又通過新的模塊(例如:第一跨時鐘模塊14)與從端口接口模塊12通信的情況,還可以包括:仲裁模塊11與新的功能模塊(例如:第一跨時鐘模塊13)通信后,通過第一流水線模塊14與從端口接口模塊12通信的情況。具體的三者之間的通信關(guān)系由實際應(yīng)用中的需要的功能模塊來決定,本發(fā)明實施例不作限制。
特別的,本發(fā)明實施例中的第一流水線模塊14可以為至少一個,具體的數(shù)量也由實際應(yīng)用的情況決定,本發(fā)明實施例不作限制。
需要說明的是,第一流水線模塊14的功能是完成AHB接口的流水線功能,透傳流水線兩側(cè)接口傳輸類型,當芯片后端綜合時序達不到時,采用第一流水線模塊14用來優(yōu)化時序,使用時只需設(shè)定地址位寬參數(shù),就可避免數(shù)據(jù)傳輸過程中出現(xiàn)時序邏輯錯誤的情況。
具體的,設(shè)計思路為:通常流水線模塊的思路是直接插入一級寄存器,如圖8所示,但對于AHB協(xié)議來說,通常的流水線模塊的方式會造成數(shù)據(jù)錯誤,所以我們提出了采用數(shù)據(jù)鎖存的流水線模塊的方式。示例性的如圖9所示,為第一流水線模塊的設(shè)計框圖。根據(jù)AHB協(xié)議,AHB的每個操作都是需要握手反饋的,普通流水線模塊的方式無法握手,會造成時序錯亂。而本發(fā)明實施例提出的AHB流水線模塊的方式具體的以A向B發(fā)讀請求為例,對經(jīng)過該第一流水線模塊14的數(shù)據(jù)傳輸進行說明:數(shù)據(jù)鎖存模塊始終鎖存最新的有效數(shù)據(jù)A;第一流水線模塊14給數(shù)據(jù)A的響應(yīng)默認為有效響應(yīng);當A發(fā)出新的訪問命令后,控制選擇A輸出給B為數(shù)據(jù)A信號,控制選擇B輸出給A為不響應(yīng)信號;如果數(shù)據(jù)B沒有響應(yīng)則控制選擇A輸出給B為數(shù)據(jù)A鎖存數(shù)據(jù);等待數(shù)據(jù)B響應(yīng)后控制選擇A輸出給B為數(shù)據(jù)A;再次等待數(shù)據(jù)B響應(yīng)后控制選擇B輸出給A為響應(yīng)信號。
可選的,如圖10所示,數(shù)據(jù)訪問裝置1還包括:下一級仲裁模塊15;仲裁模塊11通過該下一級仲裁模塊15與從端口接口模塊12通信。
仲裁模塊11,用于根據(jù)預(yù)設(shè)表格,通過下一級仲裁模塊15及從端口接口模塊12中確定與該訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址,并通過該下一級仲裁模塊15發(fā)送該第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口。
需要說明的是,由于有時仲裁模塊11的工作量大的問題,會有仲裁模塊11處理不過來的情況,因此,本發(fā)明實施例中還提出數(shù)據(jù)訪問裝置1中設(shè)置下一級仲裁模塊15,該下一級仲裁模塊15與仲裁模塊11共同完成仲裁功能。
特別的,本發(fā)明實施例中的下一級仲裁模塊15可以為至少一個,具體的數(shù)量也由實際應(yīng)用的情況決定,本發(fā)明實施例不作限制。
可選的,如圖11所示,AHB主線還包括:第二跨時鐘模塊16;下一級仲裁模塊15通過該第二跨時鐘模塊16與從端口接口模塊12通信。
仲裁模塊11,還用于根據(jù)預(yù)設(shè)表格,通過下一級仲裁模塊15及從端口接口模塊12中確定與訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址,并通過該下一級仲裁模塊15發(fā)送該第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至該第二跨時鐘模塊16。
第二跨時鐘模塊16,用于根據(jù)預(yù)設(shè)表格,將通過下一級仲裁模塊15發(fā)送的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)所在的時鐘域切換至第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的該第一從端口的對接,并發(fā)送切換時鐘域后的該第一從端口的有效地址、該訪問命令和該訪問數(shù)據(jù)至第一從端口。
從端口接口模塊12,還用于傳輸?shù)诙鐣r鐘模塊16發(fā)送的切換時鐘域后的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)切換時鐘域后的第一從端口的有效地址和訪問命令,對切換時鐘域后的訪問數(shù)據(jù)進行訪問操作。
需要說明的是,下一級仲裁模塊15通過第二跨時鐘模塊16與從端口接口 模塊12通信的情況,包括:下一級仲裁模塊15與第二跨時鐘模塊16通信,該第二跨時鐘模塊16又與從端口接口模塊12通信的情況,還包括:下一級仲裁模塊15與第二跨時鐘模塊16通信,該第二跨時鐘模塊16又通過新的模塊(例如:第二流水線模塊17)與從端口接口模塊12通信的情況,還可以包括:下一級仲裁模塊15與新的功能模塊(例如:第二流水線模塊17)通信后,通過第二跨時鐘模塊16與從端口接口模塊12通信的情況。具體的三者之間的通信關(guān)系由實際應(yīng)用中的需要的功能模塊來決定,本發(fā)明實施例不作限制。
特別的,本發(fā)明實施例中的第二跨時鐘模塊16可以為至少一個,具體的數(shù)量也由實際應(yīng)用的情況決定,本發(fā)明實施例不作限制。
需要說明的是,第二跨時鐘模塊16的功能與實現(xiàn)方式與第一跨時鐘模塊13的功能與實現(xiàn)方式原理相同,此處不再贅述。
可選的,如圖12所示,AHB主線還包括:第二流水線模塊17;下一級仲裁模塊15通過該第二流水線模塊17與從端口接口模塊12通信。
仲裁模塊11,用于根據(jù)預(yù)設(shè)表格,通過下一級仲裁模塊15及從端口接口模塊12確定與該訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址,并通過該下一級仲裁模塊15發(fā)送該第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至該第二跨時鐘模塊16。
第二流水線模塊17,用于將第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)按照時序輸出至第一從端口。
從端口接口模塊12,還用于傳輸?shù)诙魉€模塊17按照時序輸出的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)按照時序輸出至第一從端口,以供該第一從端口根據(jù)時序正確的第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。
需要說明的是,下一級仲裁模塊15通過第二流水線模塊17與從端口接口模塊12通信的情況,包括:下一級仲裁模塊15與第二流水線模塊17通信,該第二流水線模塊17又與從端口接口模塊12通信的情況,還包括:下一級仲裁模塊15與第二流水線模塊17通信,該第二流水線模塊17又通過新的模塊(例 如:第二跨時鐘模塊16)與從端口接口模塊12通信的情況,還可以包括:下一級仲裁模塊15與新的功能模塊(例如:第二跨時鐘模塊16)通信后,通過第二流水線模塊17與從端口接口模塊12通信的情況。具體的三者之間的通信關(guān)系由實際應(yīng)用中的需要的功能模塊來決定,本發(fā)明實施例不作限制。
特別的,本發(fā)明實施例中的第二流水線模塊17可以為至少一個,具體的數(shù)量也由實際應(yīng)用的情況決定,本發(fā)明實施例不作限制。
需要說明的是,第二流水線模塊17的功能與實現(xiàn)方式與第一流水線模塊14的功能與實現(xiàn)方式原理相同,此處不再贅述。
可選的,示例性的如圖13所示,數(shù)據(jù)訪問裝置1還包括:AHB轉(zhuǎn)換模塊18;該AHB轉(zhuǎn)換模塊18與從端口接口模塊12通信。
AHB轉(zhuǎn)換模塊18,用于解析通過從端口接口模塊12接收的訪問命令和訪問數(shù)據(jù)。
如圖14所示,以AHB協(xié)議中的信號為例,說明AHB轉(zhuǎn)換模塊18的控制實現(xiàn)流程:控制延遲寄存器始終存儲最新的控制信號,即圖13中連接的信號;解析輸出的讀寫信號是經(jīng)過控制信號做邏輯判斷后輸出的,比如write信號是HSEL為1,HTRANS為10,HWRITE為1時輸出為1,否則輸出為0;如果是寫操作沒有返回過程就可以結(jié)束了;如果是讀操作,數(shù)據(jù)返回時通過選擇控HREADY,僅當收到讀命令且沒有返回時HREADY信號為0。
需要說明的是,上述信號均為AHB協(xié)議中定義的信號,此處不再詳細地進行說明。
可以理解的是,AHB轉(zhuǎn)換模塊18將AHB接口轉(zhuǎn)換為存儲器接口功能,有效解決了從端口對AHB信號的解析問題。具體的AHB轉(zhuǎn)換模塊18實現(xiàn)了兩種轉(zhuǎn)換方式,一種為AHB轉(zhuǎn)換模塊18將AHB接口轉(zhuǎn)換為不帶流控的存儲器接口,這種方式不允許從端口反壓,保證讀寫操作都能正確接收,多用于芯片內(nèi)部寄存器配置;另一種為AHB轉(zhuǎn)換模塊18將AHB接口轉(zhuǎn)換為帶流控的存儲器接口,這種方式允許從端口不能接收讀寫操作時發(fā)起流控,配置流便會保持到流控消除,多用于芯片外部訪問,比如DDR 3等。用戶使用時根據(jù)項目需 要選擇這兩種方式之一,本發(fā)明實施例不作限制。
可選的,示例性的如圖15所示,數(shù)據(jù)訪問裝置1還包括:主端口選擇模塊19;主端口接口模塊10與該主端口選擇模塊19通信。
主端口選擇模塊19,用于從多個主端口中確定與仲裁模塊11通信的第一主端口,以實現(xiàn)該第一主端口與該仲裁模塊11的AHB數(shù)據(jù)傳輸。
具體的,主端口選擇模塊19用于有多主端口的情況,該主端口選擇模塊19可以用來實現(xiàn)上述多個主端口的仲裁,最終判決一個主端口來控制數(shù)據(jù)訪問裝置。
示例性的,本發(fā)明實施例可以采用select信號的方式實現(xiàn)多個主端口的選擇,這種方式相對簡單可靠,可以任意擴展,如圖16所示,為主端口選擇模塊19的結(jié)構(gòu)示意圖,以4個主機方式為例,結(jié)社當select為2時,主端口選擇模塊19就選通主機2,使得主機2對應(yīng)的主端口與AHB接口連通。
可以理解的是,示例性的如圖17所示,為數(shù)據(jù)訪問裝置1的可以實現(xiàn)的一種整體架構(gòu)框圖,本發(fā)明實施例中的各個模塊通過頂層互聯(lián),就可以實現(xiàn)任意數(shù)據(jù)訪問裝置1的連接方式。具體的本發(fā)明實施例提出的數(shù)據(jù)訪問裝置1的搭建方式,將上面實施例中提出的模塊按照圖1的方式連接起來,就可以實現(xiàn)任意多個主端口、任意多個從端口、任意總線層數(shù)、任意跨時鐘的數(shù)據(jù)訪問裝置,且不需要寫新的代碼。用戶可以根據(jù)自己的實際需求任意裁剪,解決端口和層數(shù)受限制的問題。
本發(fā)明實施例所提供的一種數(shù)據(jù)訪問裝置,該數(shù)據(jù)訪問裝置可以包括:主端口接口模塊,用于傳輸?shù)谝恢鞫丝诎l(fā)送的訪問請求至仲裁模塊,該訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù);仲裁模塊,用于根據(jù)預(yù)設(shè)表格,通過從端口接口模塊確定與訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址,并發(fā)送該第一從端口的有效地址、該訪問命令和該訪問數(shù)據(jù)至從端口,其中,仲裁模塊是根據(jù)預(yù)設(shè)表格生成的,該預(yù)設(shè)表格包括總線參數(shù);從端口接口模塊,用于傳輸仲裁模塊發(fā)送的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)該第一從端口的有效地址和訪問命令, 對訪問數(shù)據(jù)進行訪問操作。采用上述數(shù)據(jù)訪問裝置進行數(shù)據(jù)傳輸時,由于仲裁模塊是由預(yù)設(shè)表格生成的,不再通過用戶手工編碼進行仲裁模塊的改寫,因此,解決大規(guī)模芯片項目中由于數(shù)據(jù)訪問裝置端口多、改動頻繁造成的代碼維護工作量大、手工編碼易出錯的問題,從而可以簡潔有效地實現(xiàn)數(shù)據(jù)訪問裝置,提高了數(shù)據(jù)訪問裝置的可靠性。
實施例二
本發(fā)明實施例提供一種數(shù)據(jù)訪問方法,如圖18所示,該方法可以包括:
S101、數(shù)據(jù)訪問裝置接收第一主端口發(fā)送的訪問請求,該訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù)。
需要說明的是,本發(fā)明實施例中的數(shù)據(jù)訪問裝置可以為AHB總線。
S102、數(shù)據(jù)訪問裝置根據(jù)預(yù)設(shè)表格,確定與訪問地址對應(yīng)的第一從端口及第一從端口的有效地址。
S103、數(shù)據(jù)訪問裝置發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)第一從端口的有效地址和所述訪問命令,對訪問數(shù)據(jù)進行訪問操作。
需要說明的是,數(shù)據(jù)訪問裝置可以完成主端口和任意個從端口之間的任意地址仲裁及多路選擇功能,即仲裁主端口進行訪問請求的從端口的地址和路徑。本發(fā)明實施例中的仲裁模塊是通過預(yù)設(shè)表格生成的代碼實現(xiàn)的模塊。該預(yù)設(shè)表格包括總線參數(shù),示例性的,預(yù)設(shè)表格中總線參數(shù)可以包括:從端口名稱、從端口的地址位寬、從端口的地址范圍等參數(shù)。具體的,利用預(yù)設(shè)表格中的VB腳本,檢測預(yù)設(shè)表格中的總線參數(shù),根據(jù)總線參數(shù)生成仲裁模塊代碼,實現(xiàn)仲裁模塊的功能。
進一步地,本發(fā)明實施例中的數(shù)據(jù)訪問裝置采用高地址選擇設(shè)計方式,由于數(shù)據(jù)訪問裝置接收到的訪問請求中攜帶的訪問地址為某個要訪問的從端口的全地址,但是從端口的有效地址不一定占滿該全地址位寬,因此,本發(fā)明實施例中,通過判別訪問地址的高位地址的值來通過從端口接口模塊確定從端口中的第一從端口,該第一從端口為第一主端口想要進行訪問的從端口。
需要說明的是,本發(fā)明實施例中的數(shù)據(jù)訪問裝置與主機的主端口連接,以及從機的從端口連接,通過數(shù)據(jù)訪問裝置的訪問就是主機對從機進行的訪問。
具體的,以全地址位寬是20bit地址的主機,訪問10bit從機為例,本發(fā)明實施例中采用高位選擇設(shè)計僅需要判斷11bit邏輯。如圖2所示,為全地址示意圖,從圖2中可知:片選比特位的數(shù)值的每一比特可以為0、1或Z。其中,片選比特位是指地址中超出最小從端口地址位寬的部分。本發(fā)明實施例中的整個地址分配過程可以為:數(shù)據(jù)訪問裝置根據(jù)最小從端口地址大小,將全地址劃分為2n份(n為片選比特位的個數(shù)),每個從端口也根據(jù)自身地址大小占用2k個(k為片選比特位中Z的個數(shù))最小從端口模塊地址位寬。如果片選比特位中沒有Z,則只占用一個最小從端口模塊地址位寬,如果片選比特位最低位為Z,則占用2個最小從端口模塊地址位寬,如果片選比特位最低兩位為Z,則占用4個最小從端口模塊地址位寬,如果片選比特位最低三位為Z,則占用8個最小從端口模塊地址位寬,依次類推。這樣,數(shù)據(jù)訪問裝置就可以通過判斷高地址位(片選比特位)的比特值來確定要訪問的第一從端口了。
其中,片選比特位中的某一比特位為Z,表示占用了該比特位為0和1的地址,同時比該比特位低的比特位都必須為Z;每個從端口只能占用2k個最小空間。如果不滿足這兩個條件,則說明數(shù)據(jù)訪問裝置獲取的訪問地址不是任何一個從端口的地址,因此,將該訪問地址空閑,同時該訪問地址對應(yīng)的模塊為空。
示例性的,假設(shè)數(shù)據(jù)訪問裝置的總地址空間大小是1MB,最小從端口pcie_brg_csr是4KB,最大從端口pcie_ep_bkend是64KB。因此,“總線字節(jié)地址位寬”為20;“最小從模塊字節(jié)地址位寬”為12;“最大從模塊字節(jié)地址位寬”為16。對于從端口pcie_brg_csr,地址空間大小為4KB,“字節(jié)地址位寬”填12,僅占用一個最小地址空間,指定“字節(jié)片選地址范圍”為8’b0000_0000。從端口在數(shù)據(jù)訪問裝置實際分到的地址如圖3所示,“Z”表示可以為0也可以為1,即高8bit為8’b0000_0000的地址都會尋址到該從端口。
進一步地,數(shù)據(jù)訪問裝置判斷出訪問地址對應(yīng)第一從端口的地址后,該數(shù) 據(jù)訪問裝置將除高地址位外的第一從端口的有效地址發(fā)送至從端口。
可以理解的是,本發(fā)明實施例中的數(shù)據(jù)訪問裝置采用高地址選擇設(shè)計,大大降低了仲裁和多路選擇時的組合邏輯量,而數(shù)據(jù)訪問裝置采用被動響應(yīng)方式,則保證該數(shù)據(jù)訪問裝置不會因為某個從端口異常沒有響應(yīng)而掛死。
具體的,數(shù)據(jù)訪問裝置將第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)按照時序輸出至所述第一從端口,以供第一從端口根據(jù)時序正確的第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。
需要說明的是,數(shù)據(jù)訪問裝置還可以完成AHB接口的流水線功能,透傳流水線兩側(cè)接口傳輸類型,當芯片后端綜合時序達不到時,采用數(shù)據(jù)訪問裝置來優(yōu)化時序,使用時只需設(shè)定地址位寬參數(shù),就可避免數(shù)據(jù)傳輸過程中出現(xiàn)時序邏輯錯誤的情況。
具體的,設(shè)計思路為:通常流水線模塊的思路是直接插入一級寄存器,如圖8所示,但對于AHB協(xié)議來說,通常的流水線模塊的方式會造成數(shù)據(jù)錯誤,所以我們提出了采用數(shù)據(jù)鎖存的流水線模塊的方式。示例性的如圖9所示,為第一流水線模塊的設(shè)計框圖。根據(jù)AHB協(xié)議,AHB的每個操作都是需要握手反饋的,普通流水線模塊的方式無法握手,會造成時序錯亂。而本發(fā)明實施例提出的AHB流水線模塊的方式具體的以A向B發(fā)讀請求為例,對經(jīng)過該第一流水線模塊的數(shù)據(jù)傳輸進行說明:數(shù)據(jù)鎖存模塊始終鎖存最新的有效數(shù)據(jù)A;第一流水線模塊給數(shù)據(jù)A的響應(yīng)默認為有效響應(yīng);當A發(fā)出新的訪問命令后,控制選擇A輸出給B為數(shù)據(jù)A信號,控制選擇B輸出給A為不響應(yīng)信號;如果數(shù)據(jù)B沒有響應(yīng)則控制選擇A輸出給B為數(shù)據(jù)A鎖存數(shù)據(jù);等待數(shù)據(jù)B響應(yīng)后控制選擇A輸出給B為數(shù)據(jù)A;再次等待數(shù)據(jù)B響應(yīng)后控制選擇B輸出給A為響應(yīng)信號。
可選的,本發(fā)明實施例提出的訪問命令可以包括讀命令和寫命令。
進一步地,如圖19所示,S103之前,即數(shù)據(jù)訪問裝置發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口之前,本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法還包括:S104。具體如下:
S104、數(shù)據(jù)訪問裝置根據(jù)預(yù)設(shè)表格,將第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)所在的時鐘域切換至第一從端口所在的時鐘域,以實現(xiàn)與處于不同時鐘域的第一從端口的對接。
可以理解的是,數(shù)據(jù)訪問裝置還可以完成時鐘域切換功能,可以支持AHB接口的任意位地址、任意時鐘域間的轉(zhuǎn)換。
可選的,數(shù)據(jù)訪問裝置的跨時鐘模塊功能可以采用兩種實現(xiàn)方式:FIFO,方式和異步握手方式。
具體的,本發(fā)明實施例中的數(shù)據(jù)訪問裝置采用第一跨時鐘模塊跨時鐘功能,該第一跨時鐘模塊的設(shè)計框圖示例性的可以為圖6所示,源時鐘(訪問請求所在的時鐘域)發(fā)起讀寫請求,被存如讀寫FIFO,選擇模塊根據(jù)FIFO的空滿來讀取FIFO的請求,并轉(zhuǎn)換為AHB協(xié)議輸出到目的時鐘域,將目的時鐘域的響應(yīng)返回到完成響應(yīng)FIFO,并返回給源時鐘域的AHB。
進一步地,本發(fā)明實施例中的數(shù)據(jù)訪問裝置的第一跨時鐘模塊內(nèi)部設(shè)置超時保護機制,該超時保護機制用來監(jiān)控響應(yīng)時間,不會因為沒有響應(yīng)而掛住總線;設(shè)置主從端口傳輸類型分離機制,對不支持突發(fā)的從端口,仍然可以允許主端口以突發(fā)方式配置,提高了總線的配置速率。其保護方式具體為,如果超過預(yù)設(shè)時間操作仍沒有完成,則將一個特定數(shù)據(jù)的完成發(fā)給完成響應(yīng)FIFO,保證源時鐘域的AHB不會被掛死。
可選的,預(yù)設(shè)時間可以為1分鐘,具體的預(yù)設(shè)時間的選擇可以根據(jù)實際的響應(yīng)完成時間來決定,本發(fā)明實施例不作限制。
需要說明的是,本發(fā)明實施例中的模塊間都通過AHB接口進行連接,而數(shù)據(jù)訪問裝置接收的訪問數(shù)據(jù)必須是與要接收的從端口的時鐘域一致,才能與該從端口連接的AHB接口(從端口接口)對接上。
相應(yīng)的,S103可以與S104對應(yīng),具體如下:
S103、數(shù)據(jù)訪問裝置發(fā)送切換時鐘域后的第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口。
進一步地,如圖20所示,S101之前,即數(shù)據(jù)訪問裝置接收第一主端口發(fā) 送的訪問請求之前,本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法還包括:S105。具體如下:
S105、數(shù)據(jù)訪問裝置從多個主端口中確定第一主端口。
數(shù)據(jù)訪問裝置可以通過主端口選擇模塊19實現(xiàn)從多個主端口中確定第一主端口。
示例性的,本發(fā)明實施例可以采用select信號的方式實現(xiàn)多個主端口的選擇,這種方式相對簡單可靠,可以任意擴展,如圖16所示,為主端口選擇模塊19的結(jié)構(gòu)示意圖,以4個主機方式為例,結(jié)社當select為2時,主端口選擇模塊19就選通主機2,使得主機2對應(yīng)的主端口與AHB接口連通。
可以理解的是,示例性的如圖17所示,為數(shù)據(jù)訪問裝置的可以實現(xiàn)的一種整體架構(gòu)框圖,本發(fā)明實施例中的各個模塊通過頂層互聯(lián),就可以實現(xiàn)任意數(shù)據(jù)訪問裝置的連接方式。具體的本發(fā)明實施例提出的數(shù)據(jù)訪問裝置的搭建方式,將上面實施例中提出的模塊按照圖的方式連接起來,就可以實現(xiàn)任意多個主端口、任意多個從端口、任意總線層數(shù)、任意跨時鐘的數(shù)據(jù)訪問裝置,且不需要寫新的代碼。用戶可以根據(jù)自己的實際需求任意裁剪,解決端口和層數(shù)受限制的問題。
進一步地,如圖21所示,S102之后,S103之前,即數(shù)據(jù)訪問裝置根據(jù)預(yù)設(shè)表格,確定與訪問地址對應(yīng)的第一從端口及第一從端口的有效地址之后,數(shù)據(jù)訪問裝置發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至所述第一從端口之前,本發(fā)明實施例提供的一種數(shù)據(jù)訪問方法還包括:S106。具體如下:
S106、數(shù)據(jù)訪問裝置解析訪問命令和訪問數(shù)據(jù)。
數(shù)據(jù)訪問裝置采用AHB轉(zhuǎn)換模塊18解析訪問命令和訪問數(shù)據(jù)。
如圖14所示,以AHB協(xié)議中的信號為例,說明AHB轉(zhuǎn)換模塊18的控制實現(xiàn)流程:控制延遲寄存器始終存儲最新的控制信號,即圖13中連接的信號;解析輸出的讀寫信號是經(jīng)過控制信號做邏輯判斷后輸出的,比如write信號是HSEL為1,HTRANS為10,HWRITE為1時輸出為1,否則輸出為0;如果是寫操作沒有返回過程就可以結(jié)束了;如果是讀操作,數(shù)據(jù)返回時通過選擇控 HREADY,僅當收到讀命令且沒有返回時HREADY信號為0。
需要說明的是,上述信號均為AHB協(xié)議中定義的信號,此處不再詳細地進行說明。
可以理解的是,AHB轉(zhuǎn)換模塊將AHB接口轉(zhuǎn)換為存儲器接口功能,有效解決了從端口對AHB信號的解析問題。具體的AHB轉(zhuǎn)換模塊實現(xiàn)了兩種轉(zhuǎn)換方式,一種為AHB轉(zhuǎn)換模塊將AHB接口轉(zhuǎn)換為不帶流控的存儲器接口,這種方式不允許從端口反壓,保證讀寫操作都能正確接收,多用于芯片內(nèi)部寄存器配置;另一種為AHB轉(zhuǎn)換模塊將AHB接口轉(zhuǎn)換為帶流控的存儲器接口,這種方式允許從端口不能接收讀寫操作時發(fā)起流控,配置流便會保持到流控消除,多用于芯片外部訪問,比如DDR 3等。用戶使用時根據(jù)項目需要選擇這兩種方式之一,本發(fā)明實施例不作限制。
進一步地,數(shù)據(jù)訪問裝置傳輸對訪問數(shù)據(jù)進行訪問命令對應(yīng)的訪問操作,并傳輸該訪問命令的響應(yīng)至第一主端口。
可以理解的是,主機向一個從機發(fā)送讀命令時,該從機需向主機發(fā)送該讀命令的響應(yīng),以完成主機對一個從機的讀操作。
進一步地,數(shù)據(jù)訪問裝置傳輸不響應(yīng)訪問命令的訪問操作。
進一步地,數(shù)據(jù)訪問裝置未接收到對訪問命令的響應(yīng)之后,該數(shù)據(jù)訪問裝置接收下一次訪問請求,并根據(jù)該下一次訪問請求進行下一次訪問操作。
可以理解的是,示例性的,當主機向一個從機發(fā)送讀命令時,該從機回存在不響應(yīng)該讀命令的情況,這時就出現(xiàn)了數(shù)據(jù)訪問裝置掛死的情況,此時,由于本發(fā)明實施例中的數(shù)據(jù)訪問裝置的仲裁模塊采用被動響應(yīng)方式,因此,若數(shù)據(jù)訪問裝置的仲裁模塊在通過主端口接口模塊接收到發(fā)送的下一次訪問請求時,仲裁模塊放棄本次訪問請求,開始處理下一次訪問請求。這樣處理,避免了仲裁模塊一直為了等待通過從端口接口模塊傳輸?shù)捻憫?yīng),而使得數(shù)據(jù)訪問裝置出現(xiàn)掛死的情況的發(fā)生。
具體的,仲裁模塊可以通過狀態(tài)機實現(xiàn)上述被動響應(yīng)方式可以規(guī)避數(shù)據(jù)訪問裝置掛死的問題。如圖4所示,為狀態(tài)機流程圖。一個正常的AHB的訪問 命令的響應(yīng)流程為:數(shù)據(jù)訪問裝置的仲裁模塊的初始處于空閑狀態(tài),當收到訪問請求(訪問命令)后,可以向命令狀態(tài)切換,該訪問命令被響應(yīng)后,該仲裁模塊由空閑狀態(tài)切換到數(shù)據(jù)狀態(tài),訪問數(shù)據(jù)被響應(yīng)后再切換到完成狀態(tài),最后回到空閑狀態(tài),實現(xiàn)了一次AHB的仲裁傳送。當從機出現(xiàn)異常時,訪問命令和訪問數(shù)據(jù)可能不會被響應(yīng),如果此時主機一直在等待從機的響應(yīng),AHB協(xié)議中也沒有給出最大的等待時間,那總線將處于掛死狀態(tài)。為了不違背AHB協(xié)議,同時又能解決這個問題,本發(fā)明實施例中的仲裁模塊增加一個是否有下一次訪問請求的判斷,如果主機能夠等待,可以無限長時間的等待,如果主機不想等待,則可以再發(fā)起下一次訪問請求,狀態(tài)機會根據(jù)下一次訪問請求切換到空閑狀態(tài)并啟動新的訪問操作。這樣既可以不違背AHB協(xié)議,同時又能解決掛死風(fēng)險問題。
本發(fā)明實施例所提供的一種數(shù)據(jù)訪問方法,通過接收第一主端口發(fā)送的訪問請求,該訪問請求中攜帶訪問地址、訪問命令和訪問數(shù)據(jù);根據(jù)預(yù)設(shè)表格,確定與訪問地址對應(yīng)的第一從端口及該第一從端口的有效地址;發(fā)送第一從端口的有效地址、訪問命令和訪問數(shù)據(jù)至第一從端口,以供該第一從端口根據(jù)第一從端口的有效地址和訪問命令,對訪問數(shù)據(jù)進行訪問操作。采用上述數(shù)據(jù)訪問裝置進行數(shù)據(jù)傳輸時,由于仲裁模塊是由預(yù)設(shè)表格生成的,不再通過用戶手工編碼進行仲裁模塊的改寫,因此,解決大規(guī)模芯片項目中由于數(shù)據(jù)訪問裝置端口多、改動頻繁造成的代碼維護工作量大、手工編碼易出錯的問題,從而可以簡潔有效地實現(xiàn)數(shù)據(jù)訪問裝置,提高了數(shù)據(jù)訪問裝置的可靠性。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方 框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。