用GAL配合ISA總線(xiàn)模擬I2C總線(xiàn)時(shí)序實(shí)現對FI1256MK2的編程
FI1200 MK2系列電視信號前端處理器是飛利浦公司專(zhuān)為計算機多媒體環(huán)境下的射頻應用而設計的。FI1256 MK2是該系列中的一個(gè)型號,它體積小,結構緊湊,性能穩定,可直接從射頻信號解調出視頻信號和音頻信號,且只需單一5V電源,因而可在圖文電視接收、有線(xiàn)電視信號自動(dòng)監測等許多場(chǎng)合得到廣泛的應用。筆者曾用它開(kāi)發(fā)出圖文電視接收卡、電視信號檢測系統等多種設備。
本文引用地址:http://dyxdggzs.com/article/149390.htmFI1256 MK2可通過(guò)I2C串行總線(xiàn)接口進(jìn)行編程控制。當使用單片機進(jìn)行編程控制時(shí),帶有I2C接口的單片機可以與FI1256 MK2直接連接,沒(méi)有I2C接口的單片機可以用I/O口線(xiàn)模擬I2C總線(xiàn)的時(shí)序。但是FI1256 MK2在計算機擴展卡中使用時(shí),為了節省成本,通過(guò)計算機的總線(xiàn)直接對其進(jìn)行編程控制時(shí),就需要用計算機的總線(xiàn)模擬出I2C總線(xiàn)的時(shí)序。本文給出了用可編程邏輯器件GAL配合ISA總線(xiàn)模擬I2C總線(xiàn)時(shí)序來(lái)對FI1256 MK2進(jìn)行控制的方法。該方法與PCI總線(xiàn)進(jìn)行模擬的方法相類(lèi)似。
1 I2C總線(xiàn)操作方式
I2C總線(xiàn)是被廣泛應用的串行多主控器總線(xiàn),它可以讓多個(gè)有控制總線(xiàn)能力的器件連接到總線(xiàn)上。I2C總線(xiàn)通過(guò)串行數據(SDA)和串行時(shí)鐘(SCL)兩條線(xiàn)使連接在該總線(xiàn)上的器件進(jìn)行數據傳輸,每個(gè)器件的識別由一特定地址確定。除了作為發(fā)送器和接收器外,該器件還可以被設定為主控器和被控器。主控器用于啟動(dòng)總線(xiàn)上的數據發(fā)送,并產(chǎn)生數據傳輸所需的時(shí)鐘信號,其他被尋址的器件均認為是被控器。SDA線(xiàn)和SCL線(xiàn)都是雙向傳輸線(xiàn),它們各通過(guò)一個(gè)上拉電阻連接到正電源。當總線(xiàn)處于空閑狀態(tài)時(shí),兩條線(xiàn)均處于高電平。連接到總線(xiàn)的器件輸出級必須是集電極開(kāi)路或漏極開(kāi)路,以用來(lái)產(chǎn)生“線(xiàn)與”功能便于多個(gè)器件的接入。在標準方式下,I2C總線(xiàn)上的數據傳輸速率可達100kbps,在快速方式下則可達到400kbps。連接到總線(xiàn)上的器件數量只受400pF的總線(xiàn)電容的限制。進(jìn)行數據傳輸時(shí),SDA線(xiàn)上的數據在SCL為高電平期間必須是穩定的,只有在SCL線(xiàn)上的時(shí)鐘信號為低時(shí),數據線(xiàn)上的狀態(tài)才可以改變。當SCL線(xiàn)保持高電平時(shí),通常把SDA線(xiàn)上由高到低和由低到高的電平變化分別定義為開(kāi)始條件和停止條件。主控器啟動(dòng)數據傳輸時(shí),總是先給出開(kāi)始條件,然后傳輸若干字節的數據,最后給出停止條件以結束一次數據傳輸過(guò)程。圖1是帶有開(kāi)始和停止條件的只傳輸一個(gè)字節的總線(xiàn)時(shí)序。
2 模擬I2C總線(xiàn)時(shí)序
可編程邏輯器件是近二十年發(fā)展起來(lái)的專(zhuān)用集成電路的一個(gè)分支,是設計新型數字系統的理想器件。它不僅速度快,集成度高,而且具有用戶(hù)可定義的邏輯功能,有的還可以加密,并可以重復編程,因此,它不僅能適應各種應用需要,而且可以大大簡(jiǎn)化硬件系統,降低成本,提高系統的靈活性、可靠性和保密性,所以,近年來(lái)得到了迅速的發(fā)展。在各種可編程邏輯器件中,以CPLD功能最為強大,但價(jià)格較高,使用也較為復雜。而GAL不但有相當強的功能和足夠的靈活性,而且編程控制容易(可使用普通的編程器),價(jià)格很低,接近通用集成電路,故在數字邏輯不是非常復雜的系統中使用GAL是非常合適的。
用計算機的ISA總線(xiàn)對FI1256 MK2進(jìn)行編程控制時(shí),可以將FI1256 MK2作為一個(gè)外設,然后用兩根數據線(xiàn)模擬SCL和SDA。需要注意的是:由于計算機速度高,總線(xiàn)周期短,達不到I2C總線(xiàn)的定時(shí)要求,因此要在總線(xiàn)周期過(guò)后進(jìn)行延時(shí),這樣總線(xiàn)上出現的高阻狀態(tài)或與其它設備的通信數據就會(huì )破壞I2C的時(shí)序,所以應將SDA和SCL的狀態(tài)鎖存,以滿(mǎn)足I2C總線(xiàn)的定時(shí)要求。圖2是用GAL實(shí)現ISA與I2C接口電路的設計方案。由于對FI1256 MK2的操作一般只是寫(xiě)入編程控制字節,因此,為簡(jiǎn)單起見(jiàn),該電路只用來(lái)實(shí)現將計算機作為主控器的寫(xiě)操作時(shí)序。
圖2中,撥碼開(kāi)關(guān)K用以設定作為計算機外設的FI1256 MK2的地址,U1用于計算機訪(fǎng)問(wèn)外設時(shí)地址的譯碼,U2則用于實(shí)現用ISA總線(xiàn)的兩條數據線(xiàn)模擬I2C總線(xiàn)時(shí)序。下面給出兩片GAL的邏輯方程(以FAST-MAP格式書(shū)寫(xiě)),并對照方程簡(jiǎn)要說(shuō)明電路所實(shí)現的功能。
通過(guò)以上方程可使U1完成地址的譯碼功能。當ISA總線(xiàn)上出現的外設地址與撥碼開(kāi)關(guān)設定的地址相匹配時(shí),在其地址有效輸出端ADDR上將得到高電平。由于GAL最多只能有8個(gè)或項,所以方程中使用了ADD1和ADD2兩個(gè)中間運算結果,他們被當作反饋信號在GAL內部重新引到輸入端。使用AEN信號是為了在DMA周期內屏蔽總線(xiàn)上出現的地址。
U2的時(shí)鐘信號是由地址ADDR和外設寫(xiě)信號IOW的引入是為了消除總線(xiàn)上出現訪(fǎng)問(wèn)內存的信號,同時(shí)利用其上升沿鎖存數據。SCL和SDA可分別用數據線(xiàn)D0和D1模擬。當一個(gè)外設寫(xiě)周期過(guò)后,D0和D1的數據將鎖存在SDA和SCL上,而在下一個(gè)對相同外設地址的外設寫(xiě)周期到來(lái)之前是不變的。這就使得I2C總線(xiàn)的時(shí)序可以在D0和D1兩根數據線(xiàn)上通過(guò)間隔輸出數據的方式獲得。
節 通過(guò)分析圖1給出的數據傳輸格式,可以把傳送的數據流劃分為三種傳送狀態(tài),即傳送起始信號、傳送終止信號和傳送一個(gè)字節(后面帶一個(gè)應答位)。不同的數據過(guò)程只是寫(xiě)入的數據字節數目不同。只要模擬軟件能實(shí)現上述三種傳送狀態(tài),就可以模擬出任何的主控器寫(xiě)操作過(guò)程。因此可以用下列子程序分別實(shí)現上述三種傳送狀態(tài)。
(1)字節傳送子程序
由于SCL和SDA是用D1和D0模擬的,所以,只要往設定的I/O地址傳送相應的數據就可以模擬傳送不同的數據字節。為了保證數據的可靠傳輸,I2C總線(xiàn)規范對總線(xiàn)上的時(shí)序作了嚴格的規定。實(shí)驗證明,ISA總線(xiàn)上信號的上升沿和下降沿都在10ns以?xún)?,完全可以滿(mǎn)足I2C總線(xiàn)對上升沿與下降沿的要求,所以不需考慮信號的上升與下降時(shí)間,而只需考慮信號的建立和保持所需的時(shí)間即可。
根據對I2C的定時(shí)要求,可以在SCL低電平的中點(diǎn)將信號進(jìn)行分割,并把一個(gè)字節數據分為8個(gè)比特來(lái)分別進(jìn)行傳送(傳送0和1分別用兩個(gè)子程序實(shí)現),從而使SDA線(xiàn)上的數據變化總是處在SCL低電平的中點(diǎn)。圖3所示是傳送一比特數據的定時(shí)時(shí)序圖。
由于在對FI1256 MK2的操作過(guò)程對實(shí)時(shí)性要求不是太高,所以可以使傳送一比特數據的三個(gè)狀態(tài)都持續5.0μs,這樣,就可以滿(mǎn)足所有的定時(shí)要求。把圖3中的兩個(gè)定時(shí)圖進(jìn)行組合即可傳送任意的數據字節。在每個(gè)數據字節的8比特數據后,都會(huì )在SCL上送出一個(gè)時(shí)鐘周期而讓SDA保持高電平,以使FI1256 MK2送出應答信號。應答信號定時(shí)圖與圖3(a)相同。
(2)起始信號和終止信號模擬子程序
起始信號和終止信號實(shí)際上是SCL為高電平期間在SDA上出現一個(gè)由高到低或由低到高的變化。起始信號和終止信號的定時(shí)圖如圖4所示。操作時(shí),往D1和D0送相應的數據即可模擬此定時(shí)圖,從而實(shí)現I2C總線(xiàn)傳輸的起始和終止。
3 FI1256 MK2的功能與控制
FI1256 MK2在輸入75Ω射頻信號時(shí)可以直接解調出峰-峰值為1V的視頻信號和聲音信號(同時(shí)給出第二伴音中頻信號)。輸入射頻信號可從49.75MHz無(wú)縫覆蓋至863.25MHz,其中包括所有增補頻道。其調諧和波段切換均可通過(guò)內置的I2C總線(xiàn)接口進(jìn)行。由于內建了直流-直流變換器,故只需單一5V電源即可,由此可見(jiàn),FI1256 MK2是真正的5V器件,簡(jiǎn)化了外圍電路的設計。
對FI1256 MK2的控制有讀和寫(xiě)兩種模式。寫(xiě)模式可將調諧信息通過(guò)I2C總線(xiàn)寫(xiě)入,而讀模式則可以讀出內部鎖定狀態(tài)。一般只使用寫(xiě)模式,寫(xiě)模式時(shí)需寫(xiě)入5個(gè)字節,可用于設置地址、鎖相環(huán)、調諧速度、調諧步長(cháng)、工作模式、波段和編程頻率。寫(xiě)模式下的編程方式有以下四種:
其中,前兩種用于在所有頻道間調諧,后兩種用于在同波段內的頻道間調諧。各種編程方式的不同點(diǎn)在于寫(xiě)入字節數的區別,只要按照I2C時(shí)序的要求將給定的字節依次寫(xiě)入即可實(shí)現編程控制。
可編程邏輯器件的應用是數字電路的設計方向。實(shí)際應用證明,GAL的功能與靈活性對于一般的數字電路系統是非常合適的,它不但能有效地提高系統的可靠性和保密性,而且可以降低成本,提高系統的靈活性。
評論