激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

轉(zhuǎn)換精簡(jiǎn)ISA總線為16bit總線接口

 2020-11-6     作者:Emtronix         

  為了減少精簡(jiǎn)ISA總線的信號(hào)管腳數(shù)量,英創(chuàng)工控主板(ESM335x、ESM7000、ESM6802等)的精簡(jiǎn)ISA總線采取了地址數(shù)據(jù)時(shí)分復(fù)用的方式,總線的寬度為8-bit,總線周期在200ns內(nèi),這樣支持10MB/s的數(shù)據(jù)率。在客戶的某些應(yīng)用場(chǎng)合,總線接口是獨(dú)立的地址總線和數(shù)據(jù)總線,總線寬度則為16-bit。為了支持客戶已有設(shè)計(jì)保持不變,需要把精簡(jiǎn)ISA總線轉(zhuǎn)換為16-bit的總線格式,本文將介紹相應(yīng)的轉(zhuǎn)換電路及對(duì)應(yīng)的操作代碼。


  轉(zhuǎn)換的基本思路是使用兩個(gè)寄存器做地址寄存器,提供16-bit的地址總線,另外再使用兩個(gè)寄存器作為數(shù)據(jù)寄存器。軟件對(duì)轉(zhuǎn)換過(guò)程的數(shù)據(jù)緩存是完全透明的。


轉(zhuǎn)換電路


  在下面的電路中,精簡(jiǎn)ISA總線的地址A0高低分別表示16-bit地址或數(shù)據(jù)的高位字節(jié)和低位字節(jié),譯碼信號(hào)為BHE;而精簡(jiǎn)ISA總線的地址A1的高低分別表示16-bit數(shù)據(jù)讀寫周期和16-bit地址寫周期,譯碼信號(hào)為D_A_FLG。


  采用74‘s系列經(jīng)典器件來(lái)實(shí)現(xiàn)總線的轉(zhuǎn)換,可幫組理解轉(zhuǎn)換的技術(shù)要點(diǎn)。在實(shí)際應(yīng)用中,把這部分電路用FPGA或CPLD來(lái)實(shí)現(xiàn)會(huì)更加簡(jiǎn)便。


  電路圖中信號(hào)名稱帶“#”或“_B”后綴的,表示信號(hào)是低電平有效。


轉(zhuǎn)換精簡(jiǎn)ISA總線為16bit總線接口.png


  放大各個(gè)部分電路。


  譯碼部分:


轉(zhuǎn)換精簡(jiǎn)ISA總線為16bit總線接口.png


  延時(shí)展寬部分。在FPGA或CPLD中,也可采用其它電路獲得更好的效果:


轉(zhuǎn)換精簡(jiǎn)ISA總線為16bit總線接口.png


  總線多路切換:


轉(zhuǎn)換精簡(jiǎn)ISA總線為16bit總線接口.png


  上面的電路導(dǎo)出的16bit接口信號(hào)包括:

  ● BUS16_A[0..15]:16-bit地址總線;總線周期時(shí)有效,非總線周期保持原狀態(tài)。

  ● BUS16_D[0..15]:雙向16-bit數(shù)據(jù)總線;總線周期時(shí)有效,非總線周期為高阻態(tài)。

  ● BUS16_RD_B:讀脈沖,低電平有效。

  ● BUS16_WE_B:寫脈沖,低電平有效,上升沿鎖存總線數(shù)據(jù)。


代碼實(shí)例


  在WEC7平臺(tái)ESM335x上的ISA總線操作函數(shù)如下:


// open "ISA1:"
HANDLE  hISA = CreateFile(_T("ISA1:"),                         // name of device
                            GENERIC_READ|GENERIC_WRITE,         // desired access
                            FILE_SHARE_READ|FILE_SHARE_WRITE,      // sharing mode
                            NULL,                                                      // security attributes
                            OPEN_EXISTING,                                    // creation disposition
                            FILE_FLAG_RANDOM_ACCESS,                    // flags/attributes
                            NULL);


  打開設(shè)備文件獲得HANDLE后,就可以對(duì)總線進(jìn)行讀寫操作了。


// convert ISA to 16-bit width for both address and data
#define BUS16_ADDR_REG_INDEX             ((DWORD)0) // ISA_A1 = 0: address registers
#define BUS16_DATA_REG_INDEX              ((DWORD)2) // ISA_A1 = 1: data register
 
BOOL Isa_Read16(HANDLE hISA, WORD wPortOffset, WORD* pBuf)
{
       DWORD dwValue;
       DWORD dwNbBytesReturn = 0;
 
       // write 16-bit address
       dwValue = (BUS16_ADDR_REG_INDEX << 16) | wPortOffset;
       WriteFile(hISA, &dwValue, sizeof(DWORD), &dwNbBytesReturn, NULL);
 
       // read 16-bit data
       *pBuf = (WORD)(BUS16_DATA_REG_INDEX & 0xFE);
       ReadFile(hISA, pBuf, sizeof(WORD), &dwNbBytesReturn, NULL);
 
       return TRUE;
}
 
BOOL Isa_Write16(HANDLE hISA, WORD wPortOffset, WORD wValue)
{
       DWORD dwValue;
       DWORD dwNbBytesReturn = 0;
 
       // write 16-bit address
       dwValue = (BUS16_ADDR_REG_INDEX << 16) | wPortOffset;
       WriteFile(hISA, &dwValue, sizeof(DWORD), &dwNbBytesReturn, NULL);
 
       // write 16-bit data
       dwValue = (BUS16_DATA_REG_INDEX << 16) | wValue;
       WriteFile(hISA, &dwValue, sizeof(DWORD), &dwNbBytesReturn, NULL);
 
       return TRUE;
}


  以上代碼也可在ESM7000 WEC7平臺(tái)上使用。在Linux平臺(tái),客戶可編寫類似的代碼,也可請(qǐng)英創(chuàng)的技術(shù)編寫相應(yīng)的代碼。

主站蜘蛛池模板: 日本中文字幕一区二区 | 久久久精品电影| 又黄又爽的视频| 免费看的黄色录像| 清纯偷拍精品视频在线观看| 视频一区 精品自拍| a在线免费观看视频| 亚洲精品美女国产一区| 国产特级毛片aaaaaaa高清| 国产精品一区二区国产| 亚洲欧美日韩精品久久亚洲区色播| 中出在线播放| 在线播放免费人成毛片乱码| 国产福利毛片| 91免费看视频| 国产网站麻豆精品视频| 亚洲精品二区中文字幕| 久久国产经典| 成人男女网18免费软件大全| 国产成人久久久精品一区二区三区 | 国产福利视频精品| 婷婷亚洲综合五月天小说在线| 久久6免费视频| 亚洲精品一区二区三区国产| 免黄网站| 欧美中文一区| 国产操视频| 粉嫩极品国产在线播放| 国内精品久久久久影院不卡| 亚洲精品一区二区综合| 最新亚洲手机在线人成网站| 日本一区欧美| 日韩一级欧美一级一级国产| 成人综合网址| 欧美性黑人巨大gaysex| 俄罗斯胖老太与小伙交| 高清欧美一区二区免费影视| 久久久夜色精品国产噜噜| 亚洲成人在线播放视频| a级午夜| 91精品综合久久久久m3u8|