基于Nios II的AT24C02接口電路設(shè)計
2.2 AT24C02A器件讀寫時序
圖2為寫(讀)AT24C02A器件中指定地址存儲單元的數(shù)據(jù)幀格式,圖2(a)為寫操作的幀格式,(b)為讀操作幀格式。要想把一個字節(jié)數(shù)據(jù)發(fā)送到器件中(或從器件中讀取一個字節(jié)數(shù)據(jù))除了給出具體的地址信息之外,還要給出該器件的控制信息:首先由控制器發(fā)出“啟動”信號,啟動I2C總線的通信,然后發(fā)送一個控制字節(jié),前7位為器件的片選地址,最后1位為讀寫控制位,“0”表示寫,“1”表示讀。當(dāng)傳完控制字節(jié)之后,掛在I2C總線的所有的器件比較控制字節(jié)片選地址(前7位)是否與自已的物理地址一致,如一致,則發(fā)一個應(yīng)答信號??刂破鹘邮盏綉?yīng)答信號之后,再發(fā)器件內(nèi)部存儲單元地址和其他的信息。
3 AT24C02A讀寫控制接口設(shè)計
3.1 寄存器組定義
為了實現(xiàn)NiosⅡI能與外部設(shè)備進(jìn)行交換數(shù)據(jù),首先要在AT24C08讀寫控制接口中定義寄存器,包括數(shù)據(jù)寄存器、狀態(tài)寄存器和控制寄存器。表4-1AT24C02A讀寫控制器內(nèi)部寄存器定義的情況:State_Re為此接口電路的狀態(tài)寄存器,最低位有效,用來表示接口電路的狀態(tài),“1”表示接口處于“忙”狀態(tài)中,此時表示接口正處于讀寫外部設(shè)備(AT24C02A)中,不能對此控制接口進(jìn)行操作,只到接口處于“0”狀態(tài)時為止;Address_Re為數(shù)據(jù)寄存器,用于存放NiosⅡ要訪問AT24C02A器件內(nèi)部單元的地址數(shù)據(jù);Control_Re為控制寄存器,控制著接口電路啟動或停止,“1”為啟動,“0”停止;Data_Re為數(shù)據(jù)寄存器,用于存放傳輸?shù)臄?shù)據(jù);Con_r/w_Re為控制寄存器,控制數(shù)據(jù)的傳輸方向,高電平為讀(輸入),低電平為寫(輸出)。
3.2 邏輯功能模塊設(shè)計
在接口電路中,除了定義接口電路的寄存器組之外,還要利用硬件描述語言來描述接口電路要實現(xiàn)的功能,即邏輯功能模塊的設(shè)計。接口電路要完成的主要功能是,用接口電路產(chǎn)生如圖3所示的時序,成功讀寫外部存儲器件。在本設(shè)計中,采用了有限狀態(tài)機(jī)來實現(xiàn)這一功能,圖4為本設(shè)計的各個狀態(tài)之間轉(zhuǎn)換狀態(tài)圖:當(dāng)NiosⅡ要交換數(shù)據(jù)時,首先要讀State_Re的值,并判定電路是否為“空閑”狀態(tài),只有狀態(tài)機(jī)處在空閑狀態(tài),才允許進(jìn)行一次讀寫操作,并修改狀態(tài)寄存器的值為“忙”狀態(tài);當(dāng)完成一次讀寫操作時,修改狀態(tài)寄存器的值為“閑”狀態(tài)。
評論