本申請公開了一種本地總線數(shù)據(jù)位寬的轉換方法及裝置,通過利用CPU的32比特操作指令會自動產生兩個16比特的LOCAL?BUS操作指令的特點,由可編程邏輯單元通過暫存數(shù)據(jù)的辦法完成16比特/32比特數(shù)據(jù)的轉換,以實現(xiàn)高16比特和低16比特數(shù)據(jù)的“同時寫入”或“同時讀出”外設,使位寬轉換操作指令對驅動軟件來說沒有感知。通過本方法實現(xiàn)的窄數(shù)據(jù)位寬CPU本地總線對寬數(shù)據(jù)位寬外設芯片的操作指令,可進一步減少驅動軟件的工作量,提高CPU操作指令效率,降低系統(tǒng)開銷。
【技術實現(xiàn)步驟摘要】
本申請涉及數(shù)據(jù)通信中通用中央處理器(CPU)系統(tǒng)應用領域,尤其涉及到一種本地總線(Local Bus)數(shù)據(jù)位寬的轉換方法及裝置。
技術介紹
在一些嵌入式系統(tǒng)設計中,CPU是通過Local Bus總線對實現(xiàn)特定功能的外設芯片進行通信和管理的。CPU和外設芯片的Local Bus總線位寬有可能不對稱,現(xiàn)有技術中一般采取如下兩種方式之一解決該問題方式1:重新選取CPU或外設芯片,使兩者Local Bus總線對稱,此方法的優(yōu)點是不需要外加芯片橋接和外加任何處理,CPU就可以對外設芯片進行處理指令;但是通常情況下,由于CPU或外設芯片具有某種特殊功能,無可替代,并且重新選取CPU或外設芯片需要耗費大量的人力和物力,導致項目開發(fā)延期,使開發(fā)出的產品失去時效等嚴重后果。方式2 :選用復雜可編程邏輯器件(CPLD, Complex Programmable Logic Device)或現(xiàn)場可編程門陣列(FPGA, Field — Programmable Gate Array)等可編程邏輯芯片進行位寬轉換。如圖1所示為某系統(tǒng)中CPU對外設芯片管理的硬件框圖。CPU IOf的和CPLD102通過位寬為16比特(bit)的LOCAL BUS總線連接,CPLD 102和外設芯片103通過位寬為32比特的LOCAL BUS總線。在設計CPLD邏輯時,通常仍然會要求驅動程序按16比特操作指令在寫操作指令時,會為驅動程序提供一個高16比特寄存器和一個低16比特寄存器來緩存一個32比特的數(shù)據(jù),然后CPLD再按外設芯片要求的時序把這32比特數(shù)據(jù)寫入外設芯片,同時還要求驅動程序必須等此操作指令完成才能進行新的讀寫;在讀操作指令時,需要CPLD先對外設芯片發(fā)出一個讀命令,把32比特的數(shù)據(jù)緩存在CPLD中,然后CPU再按高低16比特寄存器把數(shù)據(jù)讀回來。這種處理方式有較高的系統(tǒng)開銷,導致CPU操作指令的效率不高。有鑒于于此,有必要提出一種新的解決方案,解決現(xiàn)有CPU和外設芯片本地總線不兼容的問題。
技術實現(xiàn)思路
本申請?zhí)峁┝艘环N本地總線數(shù)據(jù)位寬的轉換方法及裝置,可以減少驅動軟件的工作量,提高CPU操作指令效率,降低系統(tǒng)開銷。本申請實施例提供的一種本地總線數(shù)據(jù)位寬的轉換方法,包括CPU將收到的32比特的寫指令轉換為兩個16比特寫操作指令;可編程邏輯單元將CPU第一個16比特寫操作指令中的數(shù)據(jù)和高位地址暫存起來;可編程邏輯單元向CPU發(fā)出一個外部地址終止信號/TA終止第一個16比特寫操作指令;CPU發(fā)出第二個16比特寫操作指令至可編程邏輯單元,可編程邏輯單元把暫存的第一個16比特寫操作指令的高位地址與第二個16比特寫操作指令中的低位地址組合后發(fā)送到外設芯片的地址信號引腳上;可編程邏輯單元把CPU發(fā)過來的第二個16比特寫操作指令中的數(shù)據(jù)與可編程邏輯單元暫存的第一個16比特寫操作指令中的數(shù)據(jù)發(fā)送至外設芯片的32比特數(shù)據(jù)總線上,然后等待外設芯片發(fā)出終止信號Dtack_n ;可編程邏輯單元收到外設芯片發(fā)過來的Dtack_n后立即終止寫操作指令,同時向CPU發(fā)出一個/TA信號終止CPU的第二個16比特寫操作指令。較佳地,所述CPU將收到的32比特的寫操作指令轉換為兩個16比特寫操作指令的方法為CPU將收到的32比特的寫操作指令轉換為兩個地址按16比特對齊遞減的16比特寫操作指令。較佳地,所述可編程邏輯單元將CPU第一個16比特的寫操作指令中的數(shù)據(jù)和高位地址暫存起來的方法為可編程邏輯單元將CPU第一個16比特寫操作指令中的16比特高位地址通過地址鎖存允許端ALE信號寫入可編程邏輯單元的地址寄存器中暫存,第一個16比特寫指令中的低16比特數(shù)據(jù)則通過片選信號CSn和寫有效信號WRn寫入可編程邏輯單元的數(shù)據(jù)寄存器中暫存。較佳地,CPU發(fā)出第二個16比特寫指令至可編程邏輯單元,可編程邏輯單元把暫存的第一個16比特寫指令中的高位地址與第二個16比特寫操作指令中的低位地址組合后發(fā)送到外設芯片的地址信號引腳上的方法包括CPU發(fā)出第二個16比特寫操作指令至可編程邏輯單元,可編程邏輯單元向外設芯片發(fā)出CSn、地址選擇信號ASn和以及低電平的RWn,同時把暫存的16比特高位地址與第二個16比特寫操作指令中的地址信號中的16比特低位地址組合后發(fā)送到外設芯片的地址信號引腳上。較佳地,可編程邏輯單元把CPU發(fā)過來的第二個16比特寫操作指令的數(shù)據(jù)與可編程邏輯單元暫存的第一個16比特寫操作指令的數(shù)據(jù)發(fā)送至外設芯片的32比特數(shù)據(jù)總線上包括可編程邏輯單元把CPU發(fā)過來的高16比特數(shù)據(jù)與可編程邏輯單元數(shù)據(jù)寄存器上暫存的低16比特數(shù)據(jù)組合后發(fā)送至外設芯片的32比特數(shù)據(jù)總線上。本申請實施例還提供另一種本地總線數(shù)據(jù)位寬的轉換方法,包括CPU將收到的32比特的讀指令轉換為兩個地址按16比特對齊遞增的16比特讀指令;CPU發(fā)出第一個16比特讀指令至可編程邏輯芯片單元,可編程邏輯芯片單元在地址鎖存允許端ALE周期將第一個16比特讀操作指令中的16比特高位地址暫存起來,隨后向外設芯片發(fā)出片選信號CSn、地址選擇信號ASn和讀寫選擇信號RWn,把暫存的16比特高位地址與所述第一個16比特讀操作指令中的16比特低位地址組合后發(fā)送到外設芯片的地址信號引腳,啟動對外設芯片的32比特讀操作指令;外設芯片把32比特的數(shù)據(jù)放到數(shù)據(jù)總線上后,可編程邏輯芯片單元把其中的低16比特數(shù)據(jù)傳輸給CPU,把其中的高16比特數(shù)據(jù)用數(shù)據(jù)寄存器暫存起來;然后外設芯片通過發(fā)出Dtack_n向可編程邏輯芯片單元表示這個32比特的讀操作指令完成;可編程邏輯芯片單元收到外設發(fā)出的Dtack_n信號后,則向CPU發(fā)出一個/TA信號終止CPU的第一個16比特讀操作指令;CPU向可編程邏輯芯片單元發(fā)出第二個16比特讀操作指令,可編程邏輯芯片單元把暫存在數(shù)據(jù)寄存器里的16比特數(shù)據(jù)發(fā)送至CPU,并向CPU發(fā)出一個/TA信號終止CPU的第二個16比特讀操作指令。較佳地,所述可編程邏輯單元為復雜可編程邏輯器件CPLD或現(xiàn)場可編程門陣列FPGA。本申請實施例還提供一種本地總線數(shù)據(jù)位寬的轉換裝置,包括一個16比特本地總線的CPU、一個32比特本地總線的外設芯片,和一個分別連接所述CPU和外設芯片的可編程邏輯單元,所述CPU,用于將收到的32比特的寫指令轉換為兩個16比特寫操作指令,并將這兩個16比特寫操作指令在兩個相鄰時鐘周期分別發(fā)送到所述可編程邏輯單元;所述可編程邏輯單元,用于將CPU發(fā)出的第一個16比特寫操作指令中的數(shù)據(jù)和高 位地址暫存起來后,向CPU發(fā)出一個外部地址終止信號/TA終止第一個16比特寫操作指令;并在收到CPU發(fā)出第二個16比特寫操作指令后,把暫存的第一個16比特寫操作指令的高位地址與第二個16比特寫操作指令中的低位地址組合后發(fā)送到外設芯片的地址信號引腳上;把CPU發(fā)過來的第二個16比特寫操作指令中的數(shù)據(jù)與可編程邏輯單元暫存的第一個16比特寫操作指令中的數(shù)據(jù)發(fā)送至外設芯片的32比特數(shù)據(jù)總線上,然后等待外設芯片發(fā)出終止信號Dtack_n ;收到外設芯片發(fā)過來的0七&(^_11后立即終止寫操作指令,同時向CPU發(fā)出一個/TA信號終止CPU的第二個16比特寫操作指令。本申請實施例還提供了一種本地總線數(shù)據(jù)位寬的轉換裝置,包括一個16本文檔來自技高網...
【技術保護點】
一種本地總線數(shù)據(jù)位寬的轉換方法,其特征在于,包括:CPU將收到的32比特的寫指令轉換為兩個16比特寫操作指令;可編程邏輯單元將CPU第一個16比特寫操作指令中的數(shù)據(jù)和高位地址暫存起來;可編程邏輯單元向CPU發(fā)出一個外部地址終止信號/TA終止第一個16比特寫操作指令;CPU發(fā)出第二個16比特寫操作指令至可編程邏輯單元,可編程邏輯單元把暫存的第一個16比特寫操作指令的高位地址與第二個16比特寫操作指令中的低位地址組合后發(fā)送到外設芯片的地址信號引腳上;可編程邏輯單元把CPU發(fā)過來的第二個16比特寫操作指令中的數(shù)據(jù)與可編程邏輯單元暫存的第一個16比特寫操作指令中的數(shù)據(jù)發(fā)送至外設芯片的32比特數(shù)據(jù)總線上,然后等待外設芯片發(fā)出終止信號Dtack_n;可編程邏輯單元收到外設芯片發(fā)過來的Dtack_n后立即終止寫操作指令,同時向CPU發(fā)出一個/TA信號終止CPU的第二個16比特寫操作指令。
【技術特征摘要】
【專利技術屬性】
技術研發(fā)人員:鄭夢蛟,李建國,
申請(專利權)人:邁普通信技術股份有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。