• 正文
    • 1. 硬件設(shè)計(jì)
    • 2. 軟件設(shè)計(jì)
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

FPGA入門基礎(chǔ)之I2C接口設(shè)計(jì)(二)

2024/06/23
3561
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

引言:本文基于上一篇博文I2C理論知識(shí),通過FPGA實(shí)現(xiàn)讀寫EEPROMAT24C02芯片實(shí)戰(zhàn)操作,進(jìn)一步了解如何利用HDL實(shí)現(xiàn)I2C接口驅(qū)動(dòng)設(shè)計(jì)。

1. 硬件設(shè)計(jì)

1.1 概述

Atmel?AT24C01C/02C提供1024/2048位的串行電可擦除可編程只讀存儲(chǔ)器(EEPROM),其組織為128/256個(gè)字,每個(gè)字8位。這兩種設(shè)備都包含級(jí)聯(lián)功能,最多允許八個(gè)設(shè)備共享一條通用的2線總線。這些設(shè)備被優(yōu)化用于許多工業(yè)和商業(yè)應(yīng)用,其中低功率和低電壓操作是必不可少的。

圖1:AT24C01C/02C管腳及常見封裝

AT24C01C/02C有節(jié)省空間的8引腳PDIP、8引腳SOIC、8引腳TSSOP、8引腳UDFN、5引腳SOT23和8球VFBGA封裝。此外,整個(gè)系列的工作電壓為1.7V至5.5V VCC。

1.2 管腳描述

串行時(shí)鐘(SCL):SCL輸入用于將上升沿沿時(shí)鐘數(shù)據(jù)輸入每個(gè)EEPROM設(shè)備,并將下降沿沿時(shí)鐘數(shù)據(jù)輸出每個(gè)設(shè)備。該引腳是開漏極驅(qū)動(dòng)的。

串行數(shù)據(jù)(SDA):SDA引腳是雙向的,用于串行數(shù)據(jù)傳輸。該引腳是開漏極驅(qū)動(dòng)的。

設(shè)備/頁面地址(A2、A1、A0):A2、A1和A0引腳是AT24C01C/02C的硬接線設(shè)備地址輸入。在單個(gè)總線系統(tǒng)上可以尋址多達(dá)八個(gè)1-Kbit或2-Kbit設(shè)備。

寫保護(hù)(WP):AT24C01C/02C有一個(gè)寫保護(hù)引腳,可提供硬件數(shù)據(jù)保護(hù)。當(dāng)連接到地(GND)時(shí),寫保護(hù)引腳允許正常的讀/寫操作。當(dāng)寫入保護(hù)引腳連接到VCC時(shí),寫入保護(hù)功能被啟用,并如表1所示進(jìn)行操作。

表1:寫保護(hù)管腳

1.3 原理圖設(shè)計(jì)

圖2:AT2C02原理圖設(shè)計(jì)

2. 軟件設(shè)計(jì)

2.1 器件地址寄存器

設(shè)備地址字由前四個(gè)最高有效位的強(qiáng)制性“1010”(0xA)序列組成,如圖4所示,這對(duì)所有串行EEPROM設(shè)備都是通用的。

圖3:AT2C02器件地址寄存器

接下來的三個(gè)位是1K和2K EEPROM的A2、A1和A0設(shè)備地址位。這三個(gè)位必須與其相應(yīng)的硬接線輸入引腳A2、A1、和A0進(jìn)行比較,以便部件進(jìn)行確認(rèn)。設(shè)備地址的第八位是讀/寫操作選擇位。如果該位為高,則啟動(dòng)讀操作,如果該位低,則啟動(dòng)寫操作。

2.2 寫操作

(1)單字節(jié)寫操作

EEPROM單字節(jié)寫操作如圖4所示。

圖4:字節(jié)寫操作時(shí)序圖

①主機(jī)產(chǎn)生起始信號(hào)(START)給從機(jī);

②主機(jī)將控制命令(含器件地址DEveice address、WRITE)給從機(jī);

③從機(jī)接收到控制命令后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);

④主機(jī)收到從機(jī)回傳的應(yīng)答信號(hào)(ACK)后,發(fā)送Word Address給從機(jī);

⑤從機(jī)接收到寫地址后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);

⑥主機(jī)收到從機(jī)回傳的應(yīng)答信號(hào)(ACK)后,發(fā)送寫Data給從機(jī);

⑦從機(jī)接收到寫數(shù)據(jù)后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);⑧主機(jī)收到從機(jī)回傳的應(yīng)答信號(hào)(ACK)后,產(chǎn)生STOP信號(hào)從機(jī),單字節(jié)寫操作結(jié)束。

(2)頁寫操作

Atmel AT24C02,2K串行EEPROM:內(nèi)部組織32頁,每頁8字節(jié),2K需要一個(gè)8位數(shù)據(jù)字地址用于隨機(jī)字尋址。

頁面寫入與字節(jié)寫入相同,但主機(jī)在第一個(gè)數(shù)據(jù)字被計(jì)時(shí)后不會(huì)發(fā)送停止條件。相反,在EEPROM確認(rèn)接收到第一個(gè)數(shù)據(jù)后,主機(jī)最多可以發(fā)送七個(gè)字節(jié)。在接收到每個(gè)數(shù)據(jù)字之后,EEPROM將以ACK作為響應(yīng)。主機(jī)必須在“停止”條件下終止頁面寫入序列。

在接收到每個(gè)數(shù)據(jù)字之后,數(shù)據(jù)字地址的低三位在內(nèi)部遞增。較高的數(shù)據(jù)字地址位不遞增,保留存儲(chǔ)器頁行位置。當(dāng)內(nèi)部生成的字地址到達(dá)頁面邊界時(shí),下面的字節(jié)被放置在同一頁面的開頭。如果超過八個(gè)數(shù)據(jù)字被傳輸?shù)紼EPROM,數(shù)據(jù)字地址將“翻轉(zhuǎn)”,并且先前的數(shù)據(jù)將被覆蓋。

EEPROM頁寫操作如圖5所示,頁寫操作與單字節(jié)寫操作類似,不在描述。

圖5:頁寫操作時(shí)序圖

2.3 讀操作

(1)隨機(jī)讀操作

EEPROM隨機(jī)讀操作如圖6所示。

圖6:隨機(jī)讀操作時(shí)序圖

①主機(jī)產(chǎn)生起始信號(hào)(START)給從機(jī);

②主機(jī)將控制命令(含器件地址DEveice address、WRITE)給從機(jī);

③從機(jī)接收到控制命令后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);

④主機(jī)收到從機(jī)回傳的應(yīng)答信號(hào)(ACK)后,發(fā)送Word Address給從機(jī);

⑤從機(jī)接收到讀地址后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);

⑥主機(jī)再次產(chǎn)生起始信號(hào)(START)給從機(jī);

⑦主機(jī)將控制命令(含器件地址DEveice address、READ)給從機(jī);

⑧從機(jī)接收到讀命令后,回傳應(yīng)答信號(hào)(ACK)給主機(jī);

⑧~⑨主機(jī)收到從機(jī)回傳的應(yīng)答信號(hào)(ACK)后,開始接收從機(jī)發(fā)送過來的讀數(shù)據(jù);

⑩數(shù)據(jù)接收完成后,主機(jī)產(chǎn)生一個(gè)時(shí)鐘的高電平無應(yīng)答信號(hào);

?主機(jī)產(chǎn)生STOP信號(hào)從機(jī),隨機(jī)讀操作結(jié)束。

注意,隨機(jī)讀操作先進(jìn)行了一次寫操作然后進(jìn)行讀操作。因?yàn)槲覀冃枰箯臋C(jī)內(nèi)的存儲(chǔ)單元地址指針指向我們想要讀取的存儲(chǔ)單元地址處,所以首先發(fā)送了一次Dummy Write也就是虛寫操作,只所以稱為虛寫,是因?yàn)槲覀儾⒉皇钦娴囊獙憯?shù)據(jù),而是通過這種虛寫操作使地址指針指向虛寫操作中字地址的位置,等從機(jī)應(yīng)答后,就可以以當(dāng)前地址讀的方式讀數(shù)據(jù)了。

(2)順序讀操作

I2C 順序讀操作就是對(duì)寄存器或存儲(chǔ)單元數(shù)據(jù)的順序讀取。假如要讀取 n字節(jié)連續(xù)數(shù)據(jù),只需寫入要讀取第一個(gè)字節(jié)數(shù)據(jù)的存儲(chǔ)地址,就可以實(shí)現(xiàn)連續(xù)n字節(jié)數(shù)據(jù)的順序讀取。EEPROM隨機(jī)讀操作如圖7所示。

圖7:順序讀操作時(shí)序圖

2.4 FPGA實(shí)現(xiàn)

(1)軟件實(shí)現(xiàn)
本文要利用FPGA通過I2C接口實(shí)現(xiàn)AT24C02 EEPROM讀寫操作。具體功能如下:

(1)I2C總線接口讀寫功能;

(2)將讀出的數(shù)據(jù)顯示在數(shù)碼管上;

(3)按鍵消抖功能。軟件功能模塊劃分如圖8所示。

圖8:軟件功能模塊框圖

各個(gè)模塊功能:

(1)eeprom_byte_rd_wr.v模塊為頂層模塊,實(shí)現(xiàn)模塊間互聯(lián);(2)i2c_ctrl.v實(shí)現(xiàn)I2C總線接口對(duì)外通信功能;
(3)i2c_rw_data.v實(shí)現(xiàn)I2C讀寫控制功能;
(4)Segma.v實(shí)現(xiàn)EEPROM讀出數(shù)據(jù)顯示功能;

(5)KeyJitters.v實(shí)現(xiàn)按鍵操作消抖功能。

?(2)測(cè)試結(jié)果

軟件下載至電路板,EEPROM讀出數(shù)據(jù)正常顯示在數(shù)碼管上,如圖9所示。

圖9:EEPROM讀出數(shù)據(jù)顯示

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
XC7A75T-2FGG676C 1 AMD Xilinx Field Programmable Gate Array, 5900 CLBs, 1286MHz, 75520-Cell, CMOS, PBGA676, FBGA-676

ECAD模型

下載ECAD模型
$1103.58 查看
LFE3-35EA-8FN484C 1 Lattice Semiconductor Corporation Field Programmable Gate Array, 500MHz, 33000-Cell, PBGA484, 23 X 23 MM, LEAD FREE, FPBGA-484

ECAD模型

下載ECAD模型
$48.92 查看
A3P125-VQG100T 1 Microsemi FPGA & SoC Field Programmable Gate Array, 3072 CLBs, 125000 Gates, 350MHz, 3072-Cell, CMOS, PQFP100, 0.50 MM PITCH, GREEN, VQFP-100
$3.24 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

專注FPGA技術(shù)開發(fā),涉及Intel FPGA、Xilinx FPGA技術(shù)開發(fā),開發(fā)環(huán)境使用,代碼風(fēng)格、時(shí)序收斂、器件架構(gòu)以及軟硬件項(xiàng)目實(shí)戰(zhàn)開發(fā),個(gè)人公眾號(hào):FPGA技術(shù)實(shí)戰(zhàn)。