新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用GAL配合ISA總線模擬I2C總線時序?qū)崿F(xiàn)對FI1256MK2的編程

用GAL配合ISA總線模擬I2C總線時序?qū)崿F(xiàn)對FI1256MK2的編程

作者: 時間:2012-03-19 來源:網(wǎng)絡(luò) 收藏

FI1200 MK2系列電視信號前端處理器是飛利浦公司專為計算機多媒體環(huán)境下的射頻應(yīng)用而設(shè)計的。FI1256 MK2是該系列中的一個型號,它體積小,結(jié)構(gòu)緊湊,性能穩(wěn)定,可直接從射頻信號解調(diào)出視頻信號和音頻信號,且只需單一5V電源,因而可在圖文電視接收、有線電視信號自動監(jiān)測等許多場合得到廣泛的應(yīng)用。筆者曾用它開發(fā)出圖文電視接收卡、電視信號檢測系統(tǒng)等多種設(shè)備。

本文引用地址:http://2s4d.com/article/149390.htm

FI1256 MK2可通過串行接口進行控制。當(dāng)使用單片機進行控制時,帶有接口的單片機可以與FI1256 MK2直接連接,沒有接口的單片機可以用I/O口線I2C。但是FI1256 MK2在計算機擴展卡中使用時,為了節(jié)省成本,通過計算機的直接對其進行控制時,就需要用計算機的總線出I2C總線的。本文給出了用可編程邏輯器件總線I2C總線來對FI1256 MK2進行控制的方法。該方法與PCI總線進行模擬的方法相類似。

1 I2C總線操作方式

I2C總線是被廣泛應(yīng)用的串行多主控器總線,它可以讓多個有控制總線能力的器件連接到總線上。I2C總線通過串行數(shù)據(jù)(SDA)和串行時鐘(SCL)兩條線使連接在該總線上的器件進行數(shù)據(jù)傳輸,每個器件的識別由一特定地址確定。除了作為發(fā)送器和接收器外,該器件還可以被設(shè)定為主控器和被控器。主控器用于啟動總線上的數(shù)據(jù)發(fā)送,并產(chǎn)生數(shù)據(jù)傳輸所需的時鐘信號,其他被尋址的器件均認為是被控器。SDA線和SCL線都是雙向傳輸線,它們各通過一個上拉電阻連接到正電源。當(dāng)總線處于空閑狀態(tài)時,兩條線均處于高電平。連接到總線的器件輸出級必須是集電極開路或漏極開路,以用來產(chǎn)生“線與”功能便于多個器件的接入。在標(biāo)準方式下,I2C總線上的數(shù)據(jù)傳輸速率可達100kbps,在快速方式下則可達到400kbps。連接到總線上的器件數(shù)量只受400pF的總線電容的限制。進行數(shù)據(jù)傳輸時,SDA線上的數(shù)據(jù)在SCL為高電平期間必須是穩(wěn)定的,只有在SCL線上的時鐘信號為低時,數(shù)據(jù)線上的狀態(tài)才可以改變。當(dāng)SCL線保持高電平時,通常把SDA線上由高到低和由低到高的電平變化分別定義為開始條件和停止條件。主控器啟動數(shù)據(jù)傳輸時,總是先給出開始條件,然后傳輸若干字節(jié)的數(shù)據(jù),最后給出停止條件以結(jié)束一次數(shù)據(jù)傳輸過程。圖1是帶有開始和停止條件的只傳輸一個字節(jié)的總線時序。

2 模擬I2C總線時序

可編程邏輯器件是近二十年發(fā)展起來的專用集成電路的一個分支,是設(shè)計新型數(shù)字系統(tǒng)的理想器件。它不僅速度快,集成度高,而且具有用戶可定義的邏輯功能,有的還可以加密,并可以重復(fù)編程,因此,它不僅能適應(yīng)各種應(yīng)用需要,而且可以大大簡化硬件系統(tǒng),降低成本,提高系統(tǒng)的靈活性、可靠性和保密性,所以,近年來得到了迅速的發(fā)展。在各種可編程邏輯器件中,以CPLD功能最為強大,但價格較高,使用也較為復(fù)雜。而不但有相當(dāng)強的功能和足夠的靈活性,而且編程控制容易(可使用普通的編程器),價格很低,接近通用集成電路,故在數(shù)字邏輯不是非常復(fù)雜的系統(tǒng)中使用是非常合適的。

用計算機的總線對FI1256 MK2進行編程控制時,可以將FI1256 MK2作為一個外設(shè),然后用兩根數(shù)據(jù)線模擬SCL和SDA。需要注意的是:由于計算機速度高,總線周期短,達不到I2C總線的定時要求,因此要在總線周期過后進行延時,這樣總線上出現(xiàn)的高阻狀態(tài)或與其它設(shè)備的通信數(shù)據(jù)就會破壞I2C的時序,所以應(yīng)將SDA和SCL的狀態(tài)鎖存,以滿足I2C總線的定時要求。圖2是用GAL與I2C接口電路的設(shè)計方案。由于對FI1256 MK2的操作一般只是寫入編程控制字節(jié),因此,為簡單起見,該電路只用來將計算機作為主控器的寫操作時序。

圖2中,撥碼開關(guān)K用以設(shè)定作為計算機外設(shè)的FI1256 MK2的地址,U1用于計算機訪問外設(shè)時地址的譯碼,U2則用于用ISA總線的兩條數(shù)據(jù)線模擬I2C總線時序。下面給出兩片GAL的邏輯方程(以FAST-MAP格式書寫),并對照方程簡要說明電路所實現(xiàn)的功能。

通過以上方程可使U1完成地址的譯碼功能。當(dāng)ISA總線上出現(xiàn)的外設(shè)地址與撥碼開關(guān)設(shè)定的地址相匹配時,在其地址有效輸出端ADDR上將得到高電平。由于GAL最多只能有8個或項,所以方程中使用了ADD1和ADD2兩個中間運算結(jié)果,他們被當(dāng)作反饋信號在GAL內(nèi)部重新引到輸入端。使用AEN信號是為了在DMA周期內(nèi)屏蔽總線上出現(xiàn)的地址。

U2的時鐘信號是由地址ADDR和外設(shè)寫信號IOW的引入是為了消除總線上出現(xiàn)訪問內(nèi)存的信號,同時利用其上升沿鎖存數(shù)據(jù)。SCL和SDA可分別用數(shù)據(jù)線D0和D1模擬。當(dāng)一個外設(shè)寫周期過后,D0和D1的數(shù)據(jù)將鎖存在SDA和SCL上,而在下一個對相同外設(shè)地址的外設(shè)寫周期到來之前是不變的。這就使得I2C總線的時序可以在D0和D1兩根數(shù)據(jù)線上通過間隔輸出數(shù)據(jù)的方式獲得。

節(jié) 通過分析圖1給出的數(shù)據(jù)傳輸格式,可以把傳送的數(shù)據(jù)流劃分為三種傳送狀態(tài),即傳送起始信號、傳送終止信號和傳送一個字節(jié)(后面帶一個應(yīng)答位)。不同的數(shù)據(jù)過程只是寫入的數(shù)據(jù)字節(jié)數(shù)目不同。只要模擬軟件能實現(xiàn)上述三種傳送狀態(tài),就可以模擬出任何的主控器寫操作過程。因此可以用下列子程序分別實現(xiàn)上述三種傳送狀態(tài)。

(1)字節(jié)傳送子程序

由于SCL和SDA是用D1和D0模擬的,所以,只要往設(shè)定的I/O地址傳送相應(yīng)的數(shù)據(jù)就可以模擬傳送不同的數(shù)據(jù)字節(jié)。為了保證數(shù)據(jù)的可靠傳輸,I2C總線規(guī)范對總線上的時序作了嚴格的規(guī)定。實驗證明,ISA總線上信號的上升沿和下降沿都在10ns以內(nèi),完全可以滿足I2C總線對上升沿與下降沿的要求,所以不需考慮信號的上升與下降時間,而只需考慮信號的建立和保持所需的時間即可。

根據(jù)對I2C的定時要求,可以在SCL低電平的中點將信號進行分割,并把一個字節(jié)數(shù)據(jù)分為8個比特來分別進行傳送(傳送0和1分別用兩個子程序?qū)崿F(xiàn)),從而使SDA線上的數(shù)據(jù)變化總是處在SCL低電平的中點。圖3所示是傳送一比特數(shù)據(jù)的定時時序圖。

由于在對FI1256 MK2的操作過程對實時性要求不是太高,所以可以使傳送一比特數(shù)據(jù)的三個狀態(tài)都持續(xù)5.0μs,這樣,就可以滿足所有的定時要求。把圖3中的兩個定時圖進行組合即可傳送任意的數(shù)據(jù)字節(jié)。在每個數(shù)據(jù)字節(jié)的8比特數(shù)據(jù)后,都會在SCL上送出一個時鐘周期而讓SDA保持高電平,以使FI1256 MK2送出應(yīng)答信號。應(yīng)答信號定時圖與圖3(a)相同。

(2)起始信號和終止信號模擬子程序

起始信號和終止信號實際上是SCL為高電平期間在SDA上出現(xiàn)一個由高到低或由低到高的變化。起始信號和終止信號的定時圖如圖4所示。操作時,往D1和D0送相應(yīng)的數(shù)據(jù)即可模擬此定時圖,從而實現(xiàn)I2C總線傳輸?shù)钠鹗己徒K止。

3 FI1256 MK2的功能與控制

FI1256 MK2在輸入75Ω射頻信號時可以直接解調(diào)出峰-峰值為1V的視頻信號和聲音信號(同時給出第二伴音中頻信號)。輸入射頻信號可從49.75MHz無縫覆蓋至863.25MHz,其中包括所有增補頻道。其調(diào)諧和波段切換均可通過內(nèi)置的I2C總線接口進行。由于內(nèi)建了直流-直流變換器,故只需單一5V電源即可,由此可見,F(xiàn)I1256 MK2是真正的5V器件,簡化了外圍電路的設(shè)計。

對FI1256 MK2的控制有讀和寫兩種模式。寫模式可將調(diào)諧信息通過I2C總線寫入,而讀模式則可以讀出內(nèi)部鎖定狀態(tài)。一般只使用寫模式,寫模式時需寫入5個字節(jié),可用于設(shè)置地址、鎖相環(huán)、調(diào)諧速度、調(diào)諧步長、工作模式、波段和編程頻率。寫模式下的編程方式有以下四種:

其中,前兩種用于在所有頻道間調(diào)諧,后兩種用于在同波段內(nèi)的頻道間調(diào)諧。各種編程方式的不同點在于寫入字節(jié)數(shù)的區(qū)別,只要按照I2C時序的要求將給定的字節(jié)依次寫入即可實現(xiàn)編程控制。

可編程邏輯器件的應(yīng)用是數(shù)字電路的設(shè)計方向。實際應(yīng)用證明,GAL的功能與靈活性對于一般的數(shù)字電路系統(tǒng)是非常合適的,它不但能有效地提高系統(tǒng)的可靠性和保密性,而且可以降低成本,提高系統(tǒng)的靈活性。



評論


相關(guān)推薦

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

關(guān)閉