《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > FPGA教學——FPGA實現IIC協議

FPGA教學——FPGA實現IIC協議

2022-08-23
作者: 電擊小子
來源: 電子技術應用專欄作家 FPGA之旅
關鍵詞: FPGA IIC協議

  一. 簡介

  這是FPGA之旅設計的第五例啦!今天給大家帶來的是IIC通信,IIC協議應用非常廣泛,例如與MPU6050進行通信,配置OV5640攝像頭、驅動OLED屏幕等等,都需要使用到IIC協議,所以掌握它是非常必要的,廢話不多說,接著往下看。文末獲取完整代碼。

  二. IIC簡介

  IIC協議分為主機和從機,所有的請求都是由主機發出,從機進行響應,從機是沒有辦法對主機進行讀或寫的。IIC協議共有兩根線,數據線SDA和時鐘線SCL,兩根線就可以完成所有的通信請求,簡直是太給力了。

  三. IIC協議

  終于到了IIC協議的部分。IIC協議簡單來說,共有五種狀態,這五種狀態的有序組合就組成了完整的IIC通信,學習IIC協議,就是學習這五種狀態。

  空閑態:  SCL 和 SDA 都為高電平,不進行通信的時候。

  起始態:在SCL為高電平的時候,將SDA拉低,主機通知從機,開始進行通信。

  數據傳輸態:數據傳輸態,又可以分為讀和寫兩個部分,過程都是一樣的,就合在一起了,都是在SCL為低電平的時候,SDA將數據發送,在SCL為高電平的時候,將數據接收。

  (非)應答態:數據傳輸態完成后,必須接一個應答態或者非應答態,為了確定對方接收到了數據。在SCL為高電平的時候,檢測到SDA為低電平,則為應答,否則為非應答。

  停止態:一次數據傳輸完成,由主機發起,在SCL為高電平的時候,SDA由低電平變成高電平。

  了解了這五種狀態后,接下來就要學習如何使用這五種狀態來進行讀寫操作了。

  (一)  IIC寫操作

  下面就是一個完整的寫操作,共包含三次數據傳輸態,第一次發送的是從機地址 + 0,第二次發送的是寄存器的地址,第三次寫的是數據,寫入寄存器中的數據。從機地址一般為7bit,與另外一bit共同組成8bit,0表示寫,1表示讀。

  微信截圖_20220823161653.png  

  (二)IIC讀操作

  讀操作要比寫操作復雜一點,需要的狀態多一些。一共有五個數據傳輸態,狀態圖如下了。

  微信截圖_20220823161712.png

  上面的流程圖都是對從機的地址為7位以及從機的寄存器地址為8位的操作。

  四. Verilog代碼實現

  有了上面的各個狀態中,SDA和SCL的變換關系,以及讀寫的序列,就可以很方便的來寫程序啦。

  1. 首先,當然離不開狀態機,根據上面敘述的五種狀態,編寫狀態機,狀態機中,將數據傳輸態分成了讀和寫兩種狀態。有了各個狀態,操作SDA和SCL兩根線不是易如反掌嘛!

  /*IIC 狀態*/

  localparam IIC_IDLE       =   6'b000_001;  /*空閑態*/

  localparam IIC_START      =   6'b000_010;  /*起始態*/

  localparam IIC_WRDATA     =   6'b000_100;  /*寫數據態*/

  localparam IIC_RDDATA     =   6'b001_000;  /*讀數據態*/

  localparam IIC_ACK        =   6'b010_000;  /*應答態*/

  localparam IIC_STOP       =   6'b100_000;  /*停止態*/

  2. 狀態機的跳轉條件如下,跳轉條件和上面敘述的一樣。單獨看這個有點難懂,有些變量不明白其具體含義,可以結和仿真圖形和完整代碼進行理解。

  /*狀態機*/

  always @(*)

  begin

  case(state)

  IIC_IDLE:

  if(IICWriteReq == 1'b1 || IICReadReq == 1'b1)

  next_state <= IIC_START;

  else

  next_state <= IIC_IDLE;

  IIC_START:

  if(IICCnt == (IIC_Pre * 'd2))

  next_state <= IIC_WRDATA;

  else

  next_state <= IIC_START;

  IIC_WRDATA:

  if(IICBitCnt == 'd8 && IICCnt == IIC_Pre /4 && iicCLK == 1'b0)

  next_state <= IIC_ACK;

  else

  next_state <= IIC_WRDATA;

  IIC_RDDATA:

  if(IICBitCnt == 'd8 && IICCnt == IIC_Pre /4 && iicCLK == 1'b0)

  next_state <= IIC_ACK;

  else

  next_state <= IIC_RDDATA;

  IIC_ACK:

  if(IICACKStopCnt == 'd1 && IICCnt == IIC_Pre /4 && iicCLK == 1'b0)

  if(IICSendBytes == 'd3)

  if(IICWriteReq == 1'b1)         /*三個字節發送完成,進入停止態*/

  next_state <= IIC_STOP;

  else

  next_state <= IIC_RDDATA;

  else if(IICSendBytes == 'd2 && IICReadReq == 1'b1)

  next_state <= IIC_START;

  else if(IICSendBytes == 'd4)

  next_state <= IIC_STOP;

  else

  next_state <= IIC_WRDATA;

  else

  next_state <= IIC_ACK;

  IIC_STOP:

  if(IICACKStopCnt == 'd1 && IICCnt == IIC_Pre/4 && iicCLK == 1'b1)

  next_state <= IIC_IDLE;

  else

  next_state <= IIC_STOP;

  default:  next_state <= IIC_IDLE;

  endcase

  end

  各個部分實現的詳細代碼,就不列舉出來啦,代碼總計280多行,也不算多。通過本IIC模塊,可以驅動OV5640攝像頭,MPU6050模塊和0.96寸OLED屏幕等等,后續會基于此模塊,來驅動這些外設。

  五. testbeach編寫

  還是按照流程走,編寫完模塊后,進行一下仿真,還真有錯誤,幸虧仿真了,哈哈哈。

  `timescale 1ns/1ps

  module testbench();

  reg  clk;

  reg  rst;

  wire  SDA;

  wire  SCL;

  reg IICWriteReq;

  reg IICReadReq;

  wire IICWriteDone;

  wire IICReadDone;

  always # 50 clk = ~clk;

  initial begin

  clk = 1'b1;

  rst = 1'b1;

  IICWriteReq = 1'b0;

  IICReadReq = 1'b1;

  #100   /*手動復位*/

  rst = 1'b0;

  #100

  rst = 1'b1;

  end

  always@(posedge clk)

  if(IICReadDone == 1'b1)   /*讀完成后,readReq為0,只進行一次讀寫操作*/

  IICReadReq <= 1'b0;

  else

  IICReadReq <= IICReadReq;

  IIC_Driver  IIC_DriverHP(

  .sys_clk            (clk),           /*系統時鐘*/

  .rst_n              (rst),             /*系統復位*/

  .IICSCL             (SCL),            /*IIC 時鐘輸出*/

  .IICSDA             (SDA),             /*IIC 數據線*/

  .IICSlave           ('h1234),

  .IICWriteReq        (IICWriteReq),       /*IIC寫寄存器請求*/

  .IICWriteDone        (IICWriteDone),      /*IIC寫寄存器完成*/

  .IICWriteData        ('h5a), /*IIC發送數據 8bit的從機地址 + 8bit的寄存器地址 + 8bit的數據(讀忽略,后默認為0)*/

  .IICReadReq         (IICReadReq),        /*IIC讀寄存器請求*/

  .IICReadDone        (IICReadDone),       /*IIC讀寄存器完成*/

  .IICReadData        ()/*IIC讀取數據*/

  );

  endmodule

  需要完整代碼的可以關注微信公眾號 FPGA之旅 回復 :FPGA之旅設計99例之第五例


更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg


微信截圖_20220708161426.png

電子技術應用專欄作家  FPGA之旅

原文鏈接:https://mp.weixin.qq.com/s/3qwZRqjHEZzj4V8uMo0T4g

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧美怡红院| 久久免费99精品久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲婷婷免费| 欧美不卡在线视频| 久久www免费人成看片高清| 欧美日韩综合在线免费观看| 老色鬼久久亚洲一区二区| 欧美日韩精品在线| 国产精品揄拍500视频| 在线视频一区观看| 国产一区二区电影在线观看| 欧美一级一区| 欧美精品免费观看二区| 亚洲第一中文字幕在线观看| 影音先锋久久资源网| 国产亚洲精品久久久久久| 亚洲欧美一区二区在线观看| 欧美日韩性生活视频| 一本到高清视频免费精品| 一本大道久久精品懂色aⅴ| 亚洲韩国一区二区三区| 欧美成人国产va精品日本一级| 性欧美video另类hd性玩具| 亚洲精品小视频在线观看| 中文在线资源观看网站视频免费不卡| 国产美女扒开尿口久久久| 欧美一级播放| 欧美日韩亚洲不卡| 国产一区在线视频| 欧美一级久久| 亚洲欧美日韩精品久久久| 国产精品一级| 欧美日韩视频| 一区二区三区成人| 国产综合在线视频| 久热精品视频在线免费观看| 久久一区二区三区四区五区| 激情视频亚洲| 欧美一区二区高清| 亚洲人精品午夜| 欧美日韩国产影片| 蜜臀91精品一区二区三区| 欧美日韩天天操| 久久超碰97人人做人人爱| 国产精品超碰97尤物18| 久久久久久久久蜜桃| 91久久亚洲| 欧美日韩一区二区三区免费看| 中日韩美女免费视频网站在线观看| 国产精品视频一二三| 久久激情视频久久| 国产精品福利网站| 国产精品卡一卡二卡三| 欧美一区二区高清在线观看| 久久国产主播| 99精品视频免费在线观看| 老牛嫩草一区二区三区日本| 欧美日韩国产二区| 欧美日韩一二三四五区| 欧美激情精品久久久久| 国内成人在线| 久久久国产精品一区二区三区| 性久久久久久久久久久久| 亚洲视频碰碰| 国产精品私拍pans大尺度在线| 欧美激情久久久久| 欧美va亚洲va国产综合| 亚洲尤物影院| 国内精品久久国产| 欧美激情乱人伦| 久久久久久自在自线| 91久久国产自产拍夜夜嗨| 亚洲国产欧洲综合997久久| 国产欧美va欧美不卡在线| 欧美成人午夜激情| 欧美v亚洲v综合ⅴ国产v| 久久亚洲欧美国产精品乐播| 欧美日韩和欧美的一区二区| 国产精品人成在线观看免费| 欧美成人蜜桃| 久久久午夜视频| 久久午夜电影网| 国产偷国产偷精品高清尤物| 欧美日韩亚洲三区| 亚洲一区二区三区乱码aⅴ| 六月婷婷一区| 欧美91福利在线观看| 韩国免费一区| 欧美午夜不卡视频| 亚洲一区二区三区777| 亚洲视频在线观看| 日韩一区二区久久| 欧美日韩国产精品专区| 亚洲国产婷婷香蕉久久久久久| 国产精品igao视频网网址不卡日韩| 性欧美长视频| 久久综合影视| 国产精品亚洲产品| 国产日韩欧美一区在线| 欧美在线中文字幕| 美女网站久久| 欧美淫片网站| 欧美护士18xxxxhd| 黄色成人免费观看| 欧美系列一区| 伊人成人在线视频| 国产区精品视频| 激情综合五月天| 国产主播喷水一区二区| 久久精品一二三区| 在线播放国产一区中文字幕剧情欧美| 国产精品99一区| 国产一区二区丝袜高跟鞋图片| 美女精品国产| 午夜精品偷拍| 亚洲电影免费在线观看| 国产网站欧美日韩免费精品在线观看| 国产精品网站在线播放| 9人人澡人人爽人人精品| 国产精品成人va在线观看| 美女视频黄a大片欧美| 亚洲女女做受ⅹxx高潮| 欧美极品一区二区三区| 欧美电影在线播放| 欧美日韩国产黄| 黄色精品免费| 国产精品久久夜| 免费观看在线综合| 欧美一区二区在线免费播放| 欧美极品aⅴ影院| 国产精品网站在线播放| 一本色道久久综合狠狠躁的推荐| 国内成人精品一区| 亚洲视频在线观看一区| 亚洲日本一区二区三区| 一区二区三区精密机械公司| 欧美另类综合| 一区二区三区视频在线观看| 国产日产精品一区二区三区四区的观看方式| 欧美视频一区二| 欧美视频在线免费| 在线日韩电影| 在线精品国精品国产尤物884a| 91久久精品www人人做人人爽| 一区二区三区日韩精品| 欧美精品18videos性欧美| 欧美成人久久| 欧美性片在线观看| 亚洲人成网站在线观看播放| 欧美日韩视频在线观看一区二区三区| 久久国产欧美精品| 亚洲一区影音先锋| 国产精品国产三级国产专播精品人| 国产欧美亚洲视频| 亚洲黄网站在线观看| 香蕉久久夜色精品国产使用方法| 欧美在线观看一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧洲精品一区二区精品久久久| 欧美a级理论片| 久久精品免费播放| 国产精品免费在线| 午夜影视日本亚洲欧洲精品| 欧美三级在线播放| 欧美国产视频在线观看| 日韩视频一区二区三区在线播放免费观看| 在线播放中文一区| 精品成人一区二区三区四区| 国产亚洲电影| 亚洲综合欧美日韩| 欧美理论视频| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品不卡在线| 国产农村妇女毛片精品久久莱园子| 红桃视频成人| 韩日欧美一区二区三区| 欧美一区二区三区在| 亚洲已满18点击进入久久| 一本一本久久a久久精品牛牛影视| 欧美激情一区二区三区全黄| 香蕉久久一区二区不卡无毒影院| 欧美激情1区| 亚洲欧美资源在线| 欧美在线免费观看视频| 国产精品久久久久久久久久免费| 久久久蜜桃精品| 亚洲一区视频在线观看视频| 久久爱www久久做| 欧美久久综合| 国产精品永久免费观看| 一区二区免费在线观看| 99精品国产99久久久久久福利| 久久免费99精品久久久久久| 亚洲中字黄色| 精品av久久久久电影| 精久久久久久久久久久| av成人免费在线| 好吊视频一区二区三区四区| 中日韩美女免费视频网站在线观看| 亚洲国产精品美女| 免费亚洲婷婷| 一本久久青青| 国内外成人免费激情在线视频| 国产日韩精品视频一区二区三区| 国产日韩综合| 国产精品美女久久久久久免费| 国产精品99一区二区| 欧美日韩精品一区视频| 欧美主播一区二区三区美女 久久精品人| 久久精品国产亚洲aⅴ| 欧美一区二区三区四区在线观看| 久久精品国产清高在天天线| 国产视频亚洲精品| 亚洲第一精品影视| 欧美国产日韩在线观看| 欧美一区二区三区在线观看| 亚洲一区二区在线观看视频| 欧美一区二区日韩一区二区| 欧美va天堂va视频va在线| 欧美日韩aaaaa| 羞羞视频在线观看欧美| 美女精品视频一区| 黑人巨大精品欧美黑白配亚洲| 国产视频一区免费看| 国产视频在线观看一区二区| 国精品一区二区| 影音先锋日韩有码| 亚洲一区二区三区四区中文| 在线视频日韩| 欧美88av| 麻豆九一精品爱看视频在线观看免费| 国产精品成av人在线视午夜片| 一本色道久久88精品综合| 国产精品久久久久久久第一福利| 亚洲综合精品四区| 欧美久久婷婷综合色| 欧美一区二区在线免费播放| 欧美激情在线狂野欧美精品| 国产精品久久婷婷六月丁香| 亚洲高清在线| 一区二区亚洲欧洲国产日韩| 狠狠色伊人亚洲综合网站色| 一本一本大道香蕉久在线精品| 一本高清dvd不卡在线观看| 国产精品日本| 午夜亚洲性色视频| 亚洲丁香婷深爱综合| 另类春色校园亚洲| 亚洲人体1000| 久久精品国产精品| 午夜精品av| 国产欧美va欧美va香蕉在| 欧美啪啪一区| 亚洲美女在线一区| 亚洲国产精品激情在线观看| 国产一区视频网站| 亚洲国产午夜| 欧美日韩国产影院| 欧美亚洲日本国产| 欧美日本三级| 国产专区一区| 日韩一级裸体免费视频| 在线电影国产精品| 欧美精品成人一区二区在线观看| 国产一区自拍视频| 国产精品video| 午夜精品久久久久久久久久久| 国产日韩成人精品| 欧美另类视频在线| 欧美77777| 国产一区二区精品久久99| 亚洲第一毛片| 欧美日韩网址| 亚洲免费视频网站| 欧美激情第1页| 蜜桃av综合| 国产欧美日韩91| 亚洲欧美日韩国产综合| 欧美性猛交99久久久久99按摩| 亚洲欧美久久久久一区二区三区| 在线欧美日韩国产| 国产麻豆精品久久一二三| 亚洲综合二区| 亚洲综合999| 99国产精品久久久久老师| 欧美日一区二区在线观看| 国产精自产拍久久久久久| 噜噜噜久久亚洲精品国产品小说| 亚洲女性喷水在线观看一区| 黄色综合网站| 欧美日韩一区二区精品| 欧美第一黄网免费网站| 一区二区三区在线观看视频| 美日韩丰满少妇在线观看| 国产精品午夜视频| 国产毛片一区二区| 一区二区亚洲精品国产| 亚洲一区二区三区精品视频| 亚洲美女在线观看| **欧美日韩vr在线| 国产视频精品网| 先锋影音国产精品| 欧美日本一区| 亚洲欧美日产图| 欧美黄色片免费观看| 欧美日韩不卡视频| 欧美黑人在线播放| 日韩一级成人av| 免费观看一区| 一本一本久久a久久精品牛牛影视| 免费一级欧美在线大片| 国产精品www| 国产精品videossex久久发布| 韩国女主播一区二区三区| 国产亚洲一区二区三区在线播放| 久久综合免费视频影院| 欧美女人交a| 国产三级欧美三级日产三级99| 好看的亚洲午夜视频在线| 欧美激情精品久久久久久大尺度| 国产精品区二区三区日本| 欧美一区二区三区视频在线| 国产九九精品| 国产一区在线看| 亚洲一区二区精品在线观看| 日韩写真视频在线观看| 国产精品一区二区在线观看不卡|