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