新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM920T設(shè)計的SMC接口研究與PC/104總線仿真

基于ARM920T設(shè)計的SMC接口研究與PC/104總線仿真

作者: 時間:2010-12-13 來源:網(wǎng)絡(luò) 收藏

地址及訪問控制信號均由CPU驅(qū)動,外部設(shè)備始終處于被動接收狀態(tài),正確設(shè)定數(shù)據(jù)流向即可.

數(shù)據(jù)信號是時分雙向傳輸?shù)?,為遍免出現(xiàn)沖突,必須保證除非CPU 透過該收發(fā)器對外設(shè)進行讀訪問,否則收發(fā)器的CPU 側(cè)應(yīng)始終處于高阻狀態(tài).為此,16T245等具有輸出使能端的器件只需使輸出無效即可,而對于無使能端的收發(fā)器則應(yīng)使CPU側(cè)處于輸入狀態(tài)(高阻).

確認CPU 已向兼容PC/104總線發(fā)起讀操作的有效方法是檢查RDn的下降沿是否發(fā)生.一旦RDn下降,應(yīng)立即將收發(fā)器置成從外設(shè)流向CPU方向,且輸出使能有效,并至少保持至RDn上升沿之后,以保證可靠讀?。?p align="left">3.2 端口映射

的存儲器分組片選信號CSn可作為高位地址線參加這址譯碼.任取CSi和CSj組用于兼容總線,即可分別實現(xiàn)O-0x3FFFFFF的獨立存儲器地址和IO端口地址.可用地址數(shù)量已經(jīng)遠超出XT系統(tǒng)中的1 M(存儲器)和1 K(IO端口).

在Linux系統(tǒng)中,io.h文件中聲明了函數(shù)iore—map(),用于將兼容總線上外部資源的物理地址映射到核心虛地址空間中.iounmap()函數(shù)用于取消ioremap()所做的映射.上述操作都應(yīng)在設(shè)備驅(qū)動程序中執(zhí)行.在外部資源成功映射到核心虛地址后,使用指向核心虛地址的指針就可訪問相應(yīng)設(shè)備資源,但顯然這種訪問方式與在X86平臺下差異較大.

將兼容總線視為一個獨立的字符設(shè)備,為其編寫驅(qū)動程序,實現(xiàn)對指定偏移地址的讀寫函數(shù),此處的偏移地址即對應(yīng)PC/104總線中的物理地址 .

對inb(),outb()等X86平臺下的常見的底層端口操作函數(shù),可用宏替換的方式轉(zhuǎn)由驅(qū)動中的相應(yīng)讀寫函數(shù)實現(xiàn).

3.3 總線時序控制

綜合前文所述,盡管的SRAM 訪問時序非常接近PC/lO4總線,但是要實現(xiàn)高兼容性的PC/lO4,仍有兩方面問題需要解決,一是驅(qū)動的SRAM 讀寫速度遠高于PC/104總線,二是為解決電平兼容問題引入的總線收發(fā)器,其數(shù)據(jù)流向和輸出使能需要適當?shù)目刂疲?p align="left"> 以下VHDL代碼根據(jù)SMC輸出的RDn和WRn設(shè)置EIOR和EIOW 時序,并適時輸出信號EXIDR,EXOE控制收發(fā)器數(shù)據(jù)流向和輸出使能.

ECLK是頻率為27 MHz是時鐘脈沖.

If ECLK’EVENT and ECLK一‘1’then

if( )then __地址無效

EXoE 一:1’;

EXDlR 一‘1’;

EIOR 一‘1’;

rdreg 一0;

else

if rdreg 1 l then

rdreg 一rdreg+ 1;

EXOE 一‘0’;

else

rdreg 一0;

EXDIR 一‘1’;

EXoE 一‘1’;



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉