基于GAL的I2C總線(xiàn)時(shí)序模擬
FI1200 MK2系列電視信號(hào)前端處理器是飛利浦公司專(zhuān)為計(jì)算機(jī)多媒體環(huán)境下的射頻應(yīng)用而設(shè)計(jì)的。FI1256 MK2是該系列中的一個(gè)型號(hào),它體積小,結(jié)構(gòu)緊湊,性能穩(wěn)定,可直接從射頻信號(hào)解調(diào)出視頻信號(hào)和音頻信號(hào),且只需單一5V電源,因而可在圖文電視接收、有線(xiàn)電視信號(hào)自動(dòng)監(jiān)測(cè)等許多場(chǎng)合得到廣泛的應(yīng)用。筆者曾用它開(kāi)發(fā)出圖文電視接收卡、電視信號(hào)檢測(cè)系統(tǒng)等多種設(shè)備。
FI1256 MK2可通過(guò)I2C串行總線(xiàn)接口進(jìn)行編程控制。當(dāng)使用單片機(jī)進(jìn)行編程控制時(shí),帶有I2C接口的單片機(jī)可以與FI1256 MK2直接連接,沒(méi)有I2C接口的單片機(jī)可以用I/O口線(xiàn)模擬I2C總線(xiàn)的時(shí)序。但是FI1256 MK2在計(jì)算機(jī)擴(kuò)展卡中使用時(shí),為了節(jié)省成本,通過(guò)計(jì)算機(jī)的總線(xiàn)直接對(duì)其進(jìn)行編程控制時(shí),就需要用計(jì)算機(jī)的總線(xiàn)模擬出I2C總線(xiàn)的時(shí)序。本文給出了用可編程邏輯器件GAL配合ISA總線(xiàn)模擬I2C總線(xiàn)時(shí)序來(lái)對(duì)FI1256 MK2進(jìn)行控制的方法。該方法與PCI總線(xiàn)進(jìn)行模擬的方法相類(lèi)似。
1 I2C總線(xiàn)操作方式
I2C總線(xiàn)是被廣泛應(yīng)用的串行多主控器總線(xiàn),它可以讓多個(gè)有控制總線(xiàn)能力的器件連接到總線(xiàn)上。I2C總線(xiàn)通過(guò)串行數(shù)據(jù)(SDA)和串行時(shí)鐘(SCL)兩條線(xiàn)使連接在該總線(xiàn)上的器件進(jìn)行數(shù)據(jù)傳輸,每個(gè)器件的識(shí)別由一特定地址確定。除了作為發(fā)送器和接收器外,該器件還可以被設(shè)定為主控器和被控器。主控器用于啟動(dòng)總線(xiàn)上的數(shù)據(jù)發(fā)送,并產(chǎn)生數(shù)據(jù)傳輸所需的時(shí)鐘信號(hào),其他被尋址的器件均認(rèn)為是被控器。SDA線(xiàn)和SCL線(xiàn)都是雙向傳輸線(xiàn),它們各通過(guò)一個(gè)上拉電阻連接到正電源。當(dāng)總線(xiàn)處于空閑狀態(tài)時(shí),兩條線(xiàn)均處于高電平。連接到總線(xiàn)的器件輸出級(jí)必須是集電極開(kāi)路或漏極開(kāi)路,以用來(lái)產(chǎn)生“線(xiàn)與”功能便于多個(gè)器件的接入。在標(biāo)準(zhǔn)方式下,I2C總線(xiàn)上的數(shù)據(jù)傳輸速率可達(dá)100kbps,在快速方式下則可達(dá)到400kbps。連接到總線(xiàn)上的器件數(shù)量只受400pF的總線(xiàn)電容的限制。進(jìn)行數(shù)據(jù)傳輸時(shí),SDA線(xiàn)上的數(shù)據(jù)在SCL為高電平期間必須是穩(wěn)定的,只有在SCL線(xiàn)上的時(shí)鐘信號(hào)為低時(shí),數(shù)據(jù)線(xiàn)上的狀態(tài)才可以改變。當(dāng)SCL線(xiàn)保持高電平時(shí),通常把SDA線(xiàn)上由高到低和由低到高的電平變化分別定義為開(kāi)始條件和停止條件。主控器啟動(dòng)數(shù)據(jù)傳輸時(shí),總是先給出開(kāi)始條件,然后傳輸若干字節(jié)的數(shù)據(jù),最后給出停止條件以結(jié)束一次數(shù)據(jù)傳輸過(guò)程。圖1是帶有開(kāi)始和停止條件的只傳輸一個(gè)字節(jié)的總線(xiàn)時(shí)序。
2 模擬I2C總線(xiàn)時(shí)序
可編程邏輯器件是近二十年發(fā)展起來(lái)的專(zhuān)用集成電路的一個(gè)分支,是設(shè)計(jì)新型數(shù)字系統(tǒng)的理想器件。它不僅速度快,集成度高,而且具有用戶(hù)可定義的邏輯功能,有的還可以加密,并可以重復(fù)編程,因此,它不僅能適應(yīng)各種應(yīng)用需要,而且可以大大簡(jiǎn)化硬件系統(tǒng),降低成本,提高系統(tǒng)的靈活性、可靠性和保密性,所以,近年來(lái)得到了迅速的發(fā)展。在各種可編程邏輯器件中,以CPLD功能最為強(qiáng)大,但價(jià)格較高,使用也較為復(fù)雜。而GAL不但有相當(dāng)強(qiáng)的功能和足夠的靈活性,而且編程控制容易(可使用普通的編程器),價(jià)格很低,接近通用集成電路,故在數(shù)字邏輯不是非常復(fù)雜的系統(tǒng)中使用GAL是非常合適的。
用計(jì)算機(jī)的ISA總線(xiàn)對(duì)FI1256 MK2進(jìn)行編程控制時(shí),可以將FI1256 MK2作為一個(gè)外設(shè),然后用兩根數(shù)據(jù)線(xiàn)模擬SCL和SDA。需要注意的是:由于計(jì)算機(jī)速度高,總線(xiàn)周期短,達(dá)不到I2C總線(xiàn)的定時(shí)要求,因此要在總線(xiàn)周期過(guò)后進(jìn)行延時(shí),這樣總線(xiàn)上出現(xiàn)的高阻狀態(tài)或與其它設(shè)備的通信數(shù)據(jù)就會(huì)破壞I2C的時(shí)序,所以應(yīng)將SDA和SCL的狀態(tài)鎖存,以滿(mǎn)足I2C總線(xiàn)的定時(shí)要求。圖2是用GAL實(shí)現(xiàn)ISA與I2C接口電路的設(shè)計(jì)方案。由于對(duì)FI1256 MK2的操作一般只是寫(xiě)入編程控制字節(jié),因此,為簡(jiǎn)單起見(jiàn),該電路只用來(lái)實(shí)現(xiàn)將計(jì)算機(jī)作為主控器的寫(xiě)操作時(shí)序。
評(píng)論