女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

《基于FPGA的IIC設計》

電子工程師 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2020-11-20 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《基于FPGA 的 IIC設計

設計背景:

IIC 簡單來說,就是一種串行通信協議,IIC 的通信協議和通信接口在很多工程中有廣泛的應用,如數據采集領域的串行 AD,圖像處理領域的攝像頭配置,工業控制領域的 X 射線管配置等等。除此之外,由于 IIC 協議占用的 IO 資源特別少,連接方便,所以工程中也常選用 IIC 接口做為不同芯片間的通信協議。

設計原理:

IIC 電路原理圖如下:

24LC64 各引腳定義:

1、A0,A1,A2 為 24LC64 的片選信號,由于 IIC 總線可以掛載多個 IIC 接口器件,所以每個器件都應該有自己的“身份標識”,通過對 A0,A1,A2 輸入不同的高低電平,就可以設置該 EEPROM 的片選信號。

2、WP 為讀寫使能信號,當 WP 懸空或者接地,EEPROM 可讀可寫,當 WP 接電源,EEPROM 只能讀不能寫。

3、SCL 為 IIC 接口的時鐘線。

4、SDA 為 IIC 接口的數據線。

IIC 接口的讀寫時序:

IIC 接口讀寫時序分為隨機讀寫(單字節讀寫)和頁面讀寫(多字節讀寫),先分析隨機讀寫(Byte Write/Read)時序。Byte Write 時序如下:

時序解讀:如果我們要向 EEPROM 寫入一個字節,那么必須經過以下步驟:

1. 發送啟動信號

2. 發送控制字

3. 接收并檢測 EEPROM 發來的應答信號 ACK

4. 發送高字節地址位

5. 接收并檢測 EEPROM 發來的應答信號 ACK

6. 發送低字節地址位

7. 接收并檢測 EEPROM 發來的應答信號 ACK

8. 發送 8bit 有效數據

9. 接收并檢測 EEPROM 發來的應答信號 ACK

10.發送停止信號

Byte Read 時序如下:

時序解讀:如果我們要從 EEPROM 讀出一個字節,那么必須經過以下步驟:

1. 發送啟動信號

2. 發送控制字 1010_A2A1A0_0

3. 接收并檢測 EEPROM 發來的應答信號 ACK

4. 發送高字節地址位

5. 接收并檢測 EEPROM 發來的應答信號 ACK

6. 發送低字節地址位

7. 接收并檢測 EEPROM 發來的應答信號 ACK

8. 發送啟動信號

9. 發送控制字 1010_A2A1A0_1

10. 接收并檢測 EEPROM 發來的應答信號 ACK

11. 讀取一個字節數據

12. 發送 NO ACK 信號

13. 發送停止信號

接下來則需要分析各步驟具體意義:

1.啟動信號

在 SCL 保持高電平期間,如果 SDA 出現由高到低的跳變沿,代表啟動信號

2. 控制字

我們的控制字為 1010_0000,其中 1010 為 EEPROM 的型號標識,為一組固定的序列,緊接著 A2,A1,A0 就是我們的片選信號,最后一位為讀寫控制位,低電平代表寫,高電平代表讀,我們這里首先需要對 EEPROM 寫入地址位,所以我們最后一位為 0。

3. 高/低位地址

由于 24LC64 有 64Kbit 的存儲空間,所以我們需要 13 位的地址位寬才能尋址所有的存儲空間,由于 IIC 協議規定只能以字節形式寫入,所以必須將 13 位的地址擴展為 16 位的地址,分為高八位和低八位,多出來的前三位填充任意數據即可,對我們的尋址地址沒有影響。

3. 停止信號

4. 應答信號 ACK

應答信號是由數據接收方發出的,當 SCL 為高電平期間,如果監測到 SDA 為低電平,說明有應答信號。

5. 非應答信號 NO ACK

非應答信號也是由數據接收方發出的,當 SCL 為高電平期間,如果 SDA 為高電平,說明有非應答信號。

說明:由于 IIC 總線協議啟動和停止信號都是在 SCL 高電平期間發生跳變,這就決定了我們其他數據的改變只能發生在 SCL 低電平期間,在 SCL 為高電平期間,數據必須保持穩定。即在 SCL 低電平改變數據,在 SCL 高電平采集數據。相比于單字節讀寫,頁面讀寫只是增加了幾個狀態,具體時序如下,這里和后面的設計代碼不做詳細論述。

Page Write 時序如下:

Page Read 時序如下:

設計架構圖:

本設計用兩個按鍵控制 EEPROM 讀寫,當寫按鍵按下時,向EEPROM 某一固定地址寫入一個字節數據,當讀按鍵按下時,將該地址數據讀出,并顯示到數碼管LED 燈是一個標志信號,LED 亮說明數據寫入完畢。設計架構如下:

設計代碼:

iic_wr 模塊代碼:負責進行 IIC 數據的讀寫

seg7_lut 模塊代碼,負責數碼管顯示

IIC 頂層模塊代碼:

tb 頂層測試模塊代碼:

仿真圖:

隨機讀寫,仿真寫時序:

隨機讀寫,仿真讀時序:

在仿真時,需要將檢測應答的狀態跳過,直接向下一狀態跳轉,觀察讀寫時序,當讀寫按鍵按下時,都會產生對應的動作。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1645

    文章

    22050

    瀏覽量

    618490
  • IIC
    IIC
    +關注

    關注

    11

    文章

    306

    瀏覽量

    39508
  • 工業控制
    +關注

    關注

    38

    文章

    1546

    瀏覽量

    87037

原文標題:FPGA入門課程《基于 FPGA 的 IIC設計》

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    IIC接口的IIC_SCL和IIC_SDA引腳做普通GPIO,程序啟動不起來怎么解決?

    想用IIC接口的IIC_SCL和IIC_SDA引腳做普通GPIO,兩個引腳對應的是GPIO58和GPIO59,更改代碼將設置為普通GPIO引腳模式后,程序啟動不起來。問:這種情況如何解決,官方支持這種應用嗎?
    發表于 05-06 08:59

    ZYNQ FPGA的PS端IIC設備接口使用

    zynq系列中的FPGA,都會自帶兩個iic設備,我們直接調用其接口函數即可運用。使用xilinx官方提供的庫函數,開發起來方便快捷。
    的頭像 發表于 04-17 11:26 ?1094次閱讀
    ZYNQ <b class='flag-5'>FPGA</b>的PS端<b class='flag-5'>IIC</b>設備接口使用

    巨霖科技IIC Shanghai 2025精彩回顧

    近日,全球半導體行業矚目的國際集成電路展覽會暨研討會(IIC Shanghai 2025)在上海金茂君悅大酒店盛大開幕。
    的頭像 發表于 03-28 11:27 ?550次閱讀

    為什么IIC總線會難住這么多人?

    為什么 IIC 總線讓很多人頭疼?其實可以把它想象成一場復雜的 "設備對話游戲",新手容易在這些地方栽跟頭:
    的頭像 發表于 03-12 10:14 ?520次閱讀
    為什么<b class='flag-5'>IIC</b>總線會難住這么多人?

    在APP FPGA 中通過IIC接口對DLPC910寄存器進行配置遇到的兩個問題求解

    在APP FPGA 中通過IIC接口對DLPC910寄存器進行配置,有兩個問題想要請教: 1、DLPC910被封裝成了FPGA,通過IIC改變它的寄存器的值,掉電后,該值會被保留還是
    發表于 02-25 06:47

    使用FPGA控制DLPC3438,采用IIC協議進行讀寫操作,讀取的數據存在錯誤,無法正確從寄存器中讀取數據怎么解決?

    我使用FPGA控制DLPC3438,采用IIC協議進行讀寫操作,主要存在如下問題: (1)當寫入8個字節到0x2E地址時,通過Xilinx工具ChipScope抓取IIC信號,發現DLPC3438
    發表于 02-24 07:47

    DLPC350怎么才能實現iic通訊?

    我想通過單片機iic接口控制DLPC350,從地址是0x34和0x35,然后對對應寄存器進行讀寫,設置的頻率是100khz,但是發現無法通訊上,我想知道怎么才能實現iic通訊?
    發表于 02-21 08:07

    DLPC3479 IIC通訊異常的原因?

    電路是按照TI硬件方案自主設計的電路,但是沒有使用Cypress,直接用了一個FPGA通過IIC控制,上電后DLP3479的HOST_IRQ引腳正常拉低,但是遇到如下問題: 1. 按照說明發送
    發表于 02-18 07:04

    請問DS90UB903Q的IIC工作頻率必須為100KHz嗎?

    ;PCLK=10MHz。芯片完成上電,使用FPGAIIC訪問DS90UB903Q的ID,結果為0xFF。這與芯片默認的地址0xB0不符。FPGAIIC頻率為20KHz。 經過調試,
    發表于 12-26 07:08

    如何通過FPGA配置CDCI6214?

    我想直接采用FPGA通過IIC接口配置CDCI6214內部寄存器,而不是先寫入EEPROM再由EEPROM寫入內部寄存器。在這種配置下,RESETN和EEPROMSEL引腳應該如何接?
    發表于 11-11 06:24

    愛芯元智亮相IIC Shenzhen 2024

    近日,國際集成電路展覽會暨研討會(IIC Shenzhen 2024)在深圳福田會展中心拉開帷幕。作為業界最具影響力的系統設計盛會之一,IIC匯聚了國內外電子產業領袖、管理人員、設計精英及決策者。在
    的頭像 發表于 11-07 15:41 ?751次閱讀

    愛芯元智邀您相約IIC Shenzhen 2024峰會

    11月5日-6日,國際集成電路展覽會暨研討會(IIC Shenzhen 2024)將于深圳福田會展中心7號館舉行。作為集成電路產業洞見趨勢的風向標,IIC集行業交流、渠道聯動、資源聚合為一體,為半導體產業搭建專業交流平臺,助推產業創新發展。
    的頭像 發表于 10-31 11:53 ?587次閱讀

    MCU通過IIC口控制TLV320AIC3204,請問MCU的IIC接口和TLV320AIC3204的IIC接口對接時需要電平轉換嗎?

    MCU通過IIC口控制TLV320AIC3204,該芯片的IOVDD接1.8V,MCU的IIC上拉電平是3.3V,請問MCU的IIC接口和TLV320AIC3204的IIC接口對接時
    發表于 10-30 06:02

    IIC信號線需要增加上拉電阻,是因為IIC的IO是什么

    IIC(Inter-Integrated Circuit,即集成電路總線)信號線需要增加上拉電阻,這主要是因為IIC的IO(輸入輸出)設計采用了開漏(Open-Drain)輸出方式。開漏輸出方式在
    的頭像 發表于 10-06 15:50 ?2085次閱讀

    FPGA通過IIC給TLV320AIC3204寫入寄存器,讀出來的數據一直是零,為什么?

    FPGA通過IIC給TLV320AIC3204寫入寄存器,但好像沒寫進去,讀出來的數據一直是零
    發表于 09-29 06:06