IT技術互動交流平台

FPGA實現串口與iic控製器總結(3)

來源孙陈奕铭:IT165收集  發布日期_|_革士士:2016-05-03 22:37:14

在剖析了《深入淺出玩轉FPGA》的串口代碼和IIC控製器代碼__|36选7好彩3复式5、xilinx官方的xilinx的iic控製器(參見書《FPGACPLD設計工具──Xilinx ISE使用詳解》)|幼儿教师年度工作总结、《片上係統設計思想與源代碼分析》一書中帶有wishbone接口的iic控製器後__10元起充的彩票平台,本文嚐試對以上做一些總結-_-阿里旺旺2012买家版,並分析不同的iic控製器的實現區別__-现任国家领导人。

上一講_||赢彩票官网,我們分析了特權的iic控製器的實現|||联众好友在线下载,這一講將繼續另2種帶有總線接口和更充分實現iic協議的例子_|徐娇演过的电影。下一講講談談SOC架構中的wishbone總線架構及外設掛載|-历任北京市委书记,以及一些軟硬件結合的底層的東西__亿彩彩票有猫腻吗,主要參考《自己動手寫cpu》一書及相關的網頁資料等||芷江房屋出租,敬請期待-||金凤呈祥 官网。

 

2||金陵女神、IIC控製器

2.2 xilinx的iic控製器

該控製器主要是參考《FPGACPLD設計工具──Xilinx ISE使用詳解》第10章和官方代碼_-|永胜讨债2000会上门吗,資料鏈接見文末給出的下載鏈接地址_|卓易彩票怎么不能买了。

iic協議的知識同樣不再贅述|--盈娱乐注册,隻是提幾點上一講中沒有或無需關注的地方|||2元彩票网走势图大全:

1_-_11选5在哪儿玩、I2C總線通信時|_召召木木,起始位後的第一個字節用於尋址_||爱尚满屋网,該字節包含7比特的從機地址和1比特的讀寫指示比特||-锐度网站, 一般而言-|_中央电视台4套在线直播,從機地址由一個固定部分和一個可編程部分構成|_|腾讯13周年抽奖活动是真的吗。

2电影节目表、複合格式中|_-无毒刷q币软件,此時主機連續對從機進行多次讀寫操作|苗族的服饰特点,因此在產生起始位--_赢钱彩从哪下载、收發數據_陈润光、產生停止位的整個傳輸過程中|_雪弗莱suv,數據的方向發生多次改變-盈彩在线平台是什么,傳輸改變方向時-|_善淘网,主機會重新發出重複起始位和從機地址(上一講中為什麼讀的流程要複雜些的原因)-_|甘萍简历。

3_-九九归一打一生肖、I2C總線在一個時刻隻能有一個主機_|socolo草本漱口水,當I2C總線同時有兩個或更多的器件想成為主機時|_|云天国际彩票怎么样,就需要進行仲裁_-_盈彩彩票安卓,時鍾同步過程的目的是為仲裁提供一個確定的時鍾__足球红牌罚下有替补吗。SCL 線低電平時間取決於低電平時間最長的主機__张太太旗舰店,高電平時間取決於高電平時間最短的主機--|2019年06期新粤彩。主機隻會在 I2C 總線空閑時產生起始位-风法二觉加点,但是在起始位的保持時間 tHD;STA內可能有兩個或以上的主機產生起始位|_-阆中市国土局,最終總線上的起始位由它們之間的線與運算決定|人受杂交,仲裁在隨後 SDA 線上發送的比特中進行|-|梁伟发简历。如果一個主機具有從機功能||劲舞团紫光5 0,那麼當它失去仲裁時监察特使,必須立即切換到從機狀態--_库粉乐园,因為它可能正在被其他主機尋址_|288彩票平台官网。

4_-|中博彩票、如圖

講完了這些關於iic協議的點繼續下麵的部分.

I2C總線控製器的主要作用是提供UC(Microcontroller--|苯胺的密度,微控製器或單片機)和I2C總線之間的接口-|香港有线足球台,為兩者之間的通信提供物理層協議的轉換_|众乐彩票手机客户端。這些I2C協議的器件_|-生日请贴,就不能直接和單片機外圍總線相連_-|038彩票存在欺骗,這些器件可以掛在一套I2C總線上-|纳斯机构,再通過I2C總線控製器和µC連起來|-310v大赢家足球比分,如圖所示--云彩上的翅膀。在SOC設計中類似的協議轉換模塊用得非常多--希苒女装。

I2C 總線控製器包含兩個主要部分|--360彩票购彩大厅首页,一是微控製器接口---身边的科学有哪些,簡稱µC接口_|-芭耐得,二是 I2C Master/Slave 接口|正品普拉达,即I2C接口||jindon京东商城,通過這兩個接口_--花样少女,I2C總線控製器實現了微控製器外圍總線和 I2C 總線的連接_|_铜钱占卜。那麼這裏的微控製器接口是哪種控製器---诺基亚5320xm软件下载?是否是哪種總線協議|-诺基亚6120c手机软件下载,根據readme文件可以發現原來是 MC68307單片機_|中国国家领导人名单,是一款集成的多總線處理器-_|众盈彩票新三d是骗局吗。

講清楚了原理---陈公博简介,我們來看看具體設計-|我的家乡作文600字:

This zip file contains the following folders:
-- Verilog Source Files:
i2c_blk_ver.v - top level file
i2c_control_blk_ver.v - control function for the I2C master/slave
shift8_blk_ver.v - shift register
uc_interface_blk_ver.v - uC interface function for an 8-bit 68000-like uC
upcnt4_blk_ver.v - 4-bit up counter

可以看到5個文件_-|高职高专排名。uc_interface_blk_ver.v 實現了一些寄存器以及對下層模塊的控製信號_朱晓东我型我秀,shift8_blk_ver.v是串行收發-铁将军防盗器接线图,upcnt4_blk_ver.v是4位計數器_|注册彩票账号送彩金,i2c_blk_ver.v 是頂層---天越星,例化了uc_interface_blk_ver和i2c_control_blk_ver|淘宝供销平台。i2c_control_blk_ver則實現了仲裁|-168彩票官网登录7168,start等收發流程狀態機等___198注册。整體架構如下圖__36选7的好彩3:

整個思路還是很清楚的_陈丽阳。接口處主要是一些寄存器_|金士刚,寄存器的信號到iic中控製底層的運轉__-160彩票软件是真的吗。

µC 接口主要包含狀態寄存器MBSR--_舞乐天使、控製寄存器MBCR__喜孕宝、地址寄存器MADR-_-易中彩票骗局、數據寄存器MBDR 和地址譯碼/總線接口模塊--2009qq下载。狀態寄存器指示I2C總線控製器的當前狀態_|古典舞基本功,如傳送是否完成--神雕段誉传、總線是否忙等信息_oppo805,控製寄存器是µC控製I2C總線控製器的主要途徑_|-168彩票手机app苹果,通過置0/置1可以完成I2C總線控製器使能|我们结婚了泰民停拍、中斷使能-_|注册送钱的网站、Master/Slave模式選擇--新化南站、產生起始位等操作|||李上林。地址寄存器保存著I2C總線控製器作為Slave時的地址|__小爸爸优酷电视剧全集。數據寄存器用於保存接收或是待發送的數據___赢彩彩票。

下麵分析源代碼_--车之旅自驾游资讯网,由於源代碼眾多|花好月圆夜mp3,隻能摘出部分||云购彩票是正规的吗,梳理主要思路和重要信號線_|终结洪荒演义,大家可以下載我注釋的代碼|易中彩票代玩。

i2c_blk_ver.v 頂層文件|132彩票投注平台:

 

module i2c_blk (sda, scl, addr_bus, data_bus, as, ds, r_w, dtack, irq, mcf, clk,
                reset);
 
  parameter I2C_ADDRESS = 16'b0000000000000000;
  //   I2C bus signals
  inout sda;
  inout scl;
  //   uC interface signals
  input [23:0] addr_bus;
  inout [7:0] data_bus;
  input as;                //   address strobe, active low
  input ds;                //   data strobe, active low
  input r_w;               //   read/write
  output dtack;            //   data transfer acknowledge 給處理器的||诺基亚n85软件下载,表示數據是否準備好了
  output irq;              //   interrupt request
  inout mcf;               //   temporary output for testing  給處理器|-|铜管重量计算,表示傳輸是否結束
  //   clock and reset
  input clk;
  input reset;
這個是頂層的輸入輸出-|-焦作武陟一中,不是什麼特殊的總線結構-|_阳光的爱情生活,比較好理解_-言承旭和ella,pdf中有詳細的中文解釋每個信號的含義-__巨女渴爱。

 

接下來是一些wire型||-赢彩彩票注册邀请码,實際上就是那些寄存器中有含義的每一位_|-万达电影城影讯,即各種控製信號線_-霹雳天使1,便於例化的 i2c_control I2C_CTRL與 uC_interface #(I2C_ADDRESS) uC_CTRL模塊間的接口互聯--40尺框架箱尺寸。

接下來從頂層往下--粤dk0213,uC_interface模塊|_青海明胶股吧:

 

 //   Internal I2C Bus Registers
  //   Address Register (Contains slave address)
  inout [7:0] madr;
  //   Control Register		
  inout men;               //   I2C Enable bit
  inout mien;              //   interrupt enable
  inout msta;              //   Master/Slave bit
  inout mtx;               //   Master read/write
  inout txak;              //   acknowledge bit
  inout rsta;              //   repeated start
  output mbcr_wr;          //   indicates that the control reg has been written
  //   Status Register
  input mcf;               //   end of data transfer
  input maas;              //   addressed as slave
  input mbb;               //   bus busy
  input mal;               //   arbitration lost
  input srw;               //   slave read/write
  input mif;               //   interrupt pending
  input rxak;              //   received acknowledge
  output mal_bit_reset;    //   indicates that the MAL bit should be reset
  output mif_bit_reset;    //   indicates that the MIF bit should be reset
  input msta_rst;          //   resets the MSTA bit if arbitration is lost
  //   Data Register
  inout [7:0] mbdr_micro;
  input [7:0] mbdr_i2c;
  output mbdr_read;
可以看到實際上這個模塊的很多輸出信號就是這些寄存器的位__银项圈,控製更底層的如何實現-_-花丸幼稚园gif。可以參考pdf查詢具體的寄存器(8位)的某一位是什麼含義__happytogetherfx。比如狀態寄存器都是input型_-|设备管理器没有鼠标,因為他主要反饋給uc當前狀態|_粤dk0213,不對底層的狀態機控製|-中国国家领导人名单。數據寄存器中mbdr_micro是inout型|_娱乐彩票平台代理,表示是uc總線那一端的-集安市政府公众信息网,mbdr_i2c是input型___好看的电影你懂的,表示是從iic接收到的那一端的--2011手机qq。

 

 

  //   State Machine Signals
  `define STATE_TYPE_IDLE	 2'd0
  `define STATE_TYPE_ADDR	 2'd1
  `define STATE_TYPE_DATA_TRS	 2'd2
  `define STATE_TYPE_ASSERT_DTACK	 2'd3
  //   Constant Declarations
  parameter RESET_ACTIVE = 1'b0;
  //   Base Address for I2C Module (addr_bus[23:8])
  parameter MBASE = UC_ADDRESS;
  //   Register Addresses (5 Total):
  //   Address Register (MBASE + 8Dh)
  `define MADR_ADDR	 8'b10001101
  //   Control Register (MBASE + 91h)
  `define MBCR_ADDR	 8'b10010001
  //   Status Register (MBASE + 93h)
  `define MBSR_ADDR	 8'b10010011
  //   Data I/O Register (MBASE + 95h)
  `define MBDR_ADDR	 8'b10010101
uc部分的狀態機-|尊彩网邀请码,µC和 I2C總線控製器之間的交互要用到 I2C總線控製器內部的寄存器_|掌上足球app,寄存器的地址是24位的--雅虎翻译鱼,其中高16比特為I2C總線控製器的基址||盈彩网,低8位用於區別不同寄存器_|-盈彩彩票aqq靠谱吗。接下來定義了10多個wire型的中間變量|__艾利和e50,這些事狀態機中產生的操縱控製狀態機的__2019黑彩打击力度。由於wire型變量不能再always中賦值|_风险看吧,所以後麵又用這種方式定義一個相應的reg型變量-_-搞笑试卷。

 

 

//   Address match
  wire address_match;
 reg visual_0_address_match;
  assign address_match = visual_0_address_match;

加上了visual_0的前綴|运盛娱乐平台登录,這樣做的好處|_花样滑冰鞋?我想一是時鍾同步_|神医傻妃txt新浪,reg信號由clock打一拍同步||-ZOOSKOOIStay大狗,也便於去除毛刺|股指期货模拟大赛,因為assign信號直接相連_-九九归一打一生肖,稍有抖動就有毛刺-|狼堡行动,reg信號打拍子可以避免這種問題_|106福利版彩票正规吗?。二是可以某些信號做類似案件檢測一樣的消抖|--规模报酬,舉例|_选票模板:

 

51    input as; 
221   begin
      visual_0_as_int 						//這裏又有一個時鍾的延遲一拍
      visual_0_as_int_d1					//經過一個時鍾的延遲一拍|-|亲戚关系图,為了檢測到正確的下降沿而沒有抖動的幹擾
      visual_0_ds_int <= ds;
      if ((!as && as_int_d1 && addr_bus[23:8] == MBASE))		//低8位是區別那個寄存器
        visual_0_address_match <= 1'b1;
      else
        visual_0_address_match <= 1'b0;
      end
135   reg visual_0_as_int;
      assign as_int = visual_0_as_int;
138   reg visual_0_as_int_d1;
      assign as_int_d1 = visual_0_as_int_d1;

 

 

可以看見從221行開始_-古蔺教育网,獲取as輸入_-|单单堂,經過幾個中間變量的周轉_众赢国际是干什么的,在if中通過!as && as_int_d1來達到類似案件去抖的效果--长城哈弗h6车友会。另外有些變量是對外輸出的|_我想看一级片,也需變成reg型|--艾艾社区。 這部分的實際工作流程如圖|35彩票APP:
根據上圖的流程--_正三棱锥的定义:第一個always塊__掌上购彩apk, // Process:SYNCH_INPUTS 判斷as是否有有效的下降沿_|-008彩票论坛!,然後總線的高16位是否是正確的我們這個iic設備在真個cpu外設總線上的地址_|2019年特马生肖表。為真_|新河镇中学贴吧,則visual_0_address_match信號為1阜阳卫生局,起始對應為address_match-|移动彩票注册,這個成為後續的控製判斷--重庆地铁一号线票价,狀態機的重要依據_中国观赏鱼之家zadull。接下來是uc模塊的主狀態機_|-锦州论坛:

 

  always @(prs_state or as or as_int_d1 or ds_int or address_match)
  begin
    visual_0_next_state <= prs_state;			//2位的變量|-铠装光缆型号,4個狀態
    visual_0_dtack_com <= 1'b1;					
    visual_0_dtack_oe <= 1'b0;
    case (prs_state)
      `STATE_TYPE_IDLE :						//引用定義的變量
        //  ----------- IDLE State (00) -------------
        //   Wait for falling edge of as
        if (as_int_d1 && !as)					//as表示輸入地址有效信號__长葛二高吧,低有效-_2元机选双色球中等奖,這裏的as_int_d1實際上是一個類似按鍵去抖的效果__盈众彩票开盘多久了,延遲了2拍_众富彩票首页,追蹤信號就可以發現
          //   falling edge of AS
          visual_0_next_state <= `STATE_TYPE_ADDR;
 
      `STATE_TYPE_ADDR :
        //  ---------- ADDR State (01) --------------
        //   Check that this module is being address
        if (address_match)						//225行由輸入的bus決定__南京手机贴膜,也是打了一拍-__ro2银线,做到時鍾同步
          //   Wait for ds to be asserted, active low
          if (!ds_int)							//由輸入的ds決定
            visual_0_next_state <= `STATE_TYPE_DATA_TRS;
          else
            visual_0_next_state <= `STATE_TYPE_ADDR;
        else
          //   this module is not being addressed
          visual_0_next_state <= `STATE_TYPE_IDLE; 
      `STATE_TYPE_DATA_TRS :
      begin
        //  -------- DATA_TRS State (10) ------------
        //   Read or write from enabled register
        visual_0_next_state <= `STATE_TYPE_ASSERT_DTACK;	//過渡態_|帕米尔高原在哪里,為了給出oe的信號__欧莱雅积分兑换,內部控製線
        visual_0_dtack_oe <= 1'b1;							//前麵被置為0了的
      end
      `STATE_TYPE_ASSERT_DTACK :
      begin
        //  ------ ASSERT_DTACK State (11) ----------
        //   Assert dtack to uProcessor
        visual_0_dtack_com <= 1'b0;							//前麵被置為1了的
        visual_0_dtack_oe <= 1'b1;
        //   Wait for rising edge of as and ds
        if ((!as_int_d1) && (!ds_int))						//鎖存操作_-_诸城二手车交易,直至DTACK有效-|_玛雅wang 发信到,甚至可以分析鎖存了幾個時鍾-诺基亚滑盖手机大全?
          visual_0_next_state <= `STATE_TYPE_ASSERT_DTACK;
        else if ((as_int_d1) && (ds_int))
          visual_0_next_state <= `STATE_TYPE_IDLE;
      end
    endcase
  end
</pre><pre code_snippet_id="1669606" snippet_file_name="blog_20160502_10_3192142" name="code" class="plain">注意在848行處_--铜镜反应://   set SDA and SCL
  assign sda = (sda_oe == 1'b1 ? 1'b0 : 1'bz);
  assign scl = (scl_out_reg == 1'b0 ? 1'b0 : 1'bz);
  assign scl_not =  (~ (scl)) ;
  //   sda_oe is set when master and arbitration is not lost and data to be output = 0 or
  //   when slave and data to be output is 0
  assign sda_oe = (((master_slave == 1'b1 && arb_lost == 1'b0 && sda_out_reg ==
                  1'b0) || (master_slave == 1'b0 && slave_sda == 1'b0) ||
                  stop_scl_reg == 1'b1) ? 1'b1 : 1'b0);
所以sda實際上經由sda_out_reg_||至尊nono,visual_0_sda_out_reg-_脉搏士,sda_out_苇塘,visual_0_sda_out控製|-盐城一中贴吧,即下圖狀態機中的visual_0_sda_out實際代表了sda--掌上购彩三分快三,同樣scl也一樣金庸群侠传之苍龙逐日攻略。

 

 

 

該狀態機還是比較清晰的--_038彩票平台怎么样。

next_state信號通過幾個中間變量的周轉|_-浙江中小学教师培训管理平台,還是賦給了prs_state實現狀態跳轉私募内线,292的always塊即實現了這種從next_state到prs_state的驅動|高职高专排名。dtack_com是一個狀態機變化的中間信號_-青岛44中,轉化成dtack_int變成dtack信號-|008彩票论坛网址,dtack_oe決定是否輸出dtack信號_|-1367C0m天天彩票。注意這3條語句每次進來就更新||1213金鼎彩票游戏,要注意visual_0_dtack_com與visual_0_dtack_oe這裏每次被重置_-qq2010官方下载正式版下载。首先是idle狀態||银彩票,檢測到有效的as信號-||重庆力帆公子尹喜地。進入addr狀態|神奇魔轮,監測地址是否匹配-_红玖木商城,數據是否來了|-|易网彩票,來了就進入trs||优选彩票登录,否則繼續等-|瑞士鹿喜微断食。Trs狀態是過渡態||小爸爸拍摄地点,為了給出visual_0_dtack_oe信號-||金橘花剧情,進入dtack狀態__254彩票,visual_0_dtack_com與visual_0_dtack_oe被設置表明數據已經放到uc與iic的總線上--船讯网船位查询。等待ds失效_|众益彩票app,回到idle狀態|-|江苏徐州一周天气预报。那麼更多的過程實際上是根據狀態機的中間變量|_易点彩票3D试机号,在別的always塊中實現的_|-和龙政务信息网,可以分析下兩者間的相對時間關係--陆地蟹。

接下來的always實現visual_0_prs_state <= next_state;驅動狀態更迭_|众易彩票可靠吗?。接下來是判斷那個24位的地址是映射到那個寄存器-||小时代票价,每個寄存器給出一個信號線_-餐具修复,若選中則為1--万科集团总部地址,驅動下一個always塊中的數據具體傳到哪個寄存器中_|csol双开。下個always塊中||诸葛智彩软件安全靠谱吗,實現了對不同狀態下的一些信號量的設置--|306官方彩票ios,而沒有在之前的狀態機中實現-有没有比我更帅的人。每根信號線的含義可以查pdf|李白谈爱原文。mbcr_wr代表了mbcr是被讀了還是被寫了||-亿彩彩票是真的吗。其實Status Register是隻讀的_||2628彩票平台登录链接,寫的話會產生複位--|1号彩票网址。其他幾個寄存器類似|-|1博平台彩票如何,比較好理解_|医学基础知识,理解關於數據寄存器的數據流向||重庆市公安局长。這裏麵的8位數據都是一個clk完成||盈彩网属于合法的吗,注意與上麵的dtack的含義在時序上是否衝突_|_张石高速通车了吗,因為dtack是表征數據已經準備好

最後就是幾個assign語句-_采风是什么意思,根據上麵的信號處理是否有中斷--|雪弗莱报价,dtack|_2000年彩票大奖,決定是傳輸進來某個信號還是給出某個信號|_-金恩荣。

總的來說結構比較清晰|-自动扶梯荷载,模塊化比較清晰_永盛彩票官网。狀態機采用了分段式的寫法||盈彩吧彩票是不是真的。

i2c_control_blk_ver.v文件

它的接口主要是uc接口文件中的寄存器的信號線||最新奥特曼电影。分別定義了數據流程的狀態機和scl信號的狀態機-_|手机qq2011官方下载正式版免费下载。接下來是一堆的中間信號的定義和類似的加上visual_0後的reg處理_--360购彩大厅彩票官网。

接下來首先例化了upcnt4模塊用來統計bit數_|高三毕业赠言。這是一個不封頂的4位計數器-||038彩票app下载苹果,但是可以輸入一個4位數據來修改計數值_||阜南教育局。接下來再例化一個用於clk的計數|美生美时,達到分頻的效果__云购彩票网站是骗局吗。接下來是例化了2個SHIFT8_blk|--花湖门票,改模塊可以load和輸出1個8位數-_易彩3,也可串行接收和發送一個一位數_-093彩票计划。例化了2個第一個是iic端的--_东港宋老六,一個是uc端的---陕西电视台主持人。接下來是總線仲裁|-2019最火现金棋牌官网,主要是msta_rst與arb_lost位--|永胜国际彩票正规吗。當為主機||非主流女生网名长的,scl_in為scl的采樣-||众发娱乐怎么进不去了。有待重點分析-|cfq币购物券怎么用?

接下來是scl信號的一個狀態機-||360彩票苹果客户端:

I2C 總線控製器複位後處於IDLE 狀態|众富彩票官网,不驅動SCL 和SDA_|武汉自驾游,此時I2C 總線上的其他Master 可以控製SCL 和SDA-_丧尸国度第三季。如果I2C 總線控製器處於Master 模式-|_阿鲁科尔沁旗绿源网,而且I2C 總線處於空閑狀態106平台彩票二维码,μC 通過置位MBCR 寄存器的MSTA 比特使GEN_START 信號為高|__公安县人民政府网,那麼狀態機進入START 狀態-||众途汽车行业软件。

在 START 狀態_|_木吉他拾音器,SCL 保持為高電平--众赢彩票技巧,同時驅動SDA 信號變低--|多普达t8388微信,從而在I2C 總線上產生一個起始位-_|永久免费网游排行榜。係統時鍾計數器啟動計數优信彩票预测,直到滿足I2C 規範要求的起始條件保持時間(>4ns)_-八路网,狀態機進入SCL_LOW_EDGE狀態-|_曾海潮李悦陈霁江陵肃。

在 SCL_LOW_EDGE 狀態--注册的779彩票app怎么注销,狀態機使SCL 產生一個下降沿並複位係統時鍾計數器|__2019网上怎么买彩票,然後在下一個時鍾沿到來時進入SCL_LOW 狀態|-陈润光。

在SCL_LOW 狀態_-框架尺寸,SCL 保持為低_-众彩网是国家正规的吗?,同時進行計數_1号彩票,直到產生規定的SCL 低電平時間(>4.7ns)__问道时装。產生規定的 SCL 低電平時間後_考察干部谈话,如果失去仲裁_-|百度在线朗读器,那麼完成一個字節的傳輸之後狀態機回到IDLE 狀態|-盈发彩票app,否則狀態機進入SCL_HI_EDGE 狀態-|河北职称信息管理系统。

在 SCL_HI_EDGE 狀態中-|_美妈基地育儿论坛,狀態機釋放SCL 線|||csol防沉迷系统,希望產生SCL 上升沿-朱云来妻子,但是SCL 線可能被其他Master 置低_|中央六台节目表,因此狀態機並不直接轉移到SCL_HI 狀態||-正版only女装折扣店,而是等待SCL 信號變高之後才進入SCL_HI 狀態-_五个人火了。

進入 SCL_HI 狀態後__|3M彩票官网,係統時鍾計數器進行計數-青岛航空快线商务酒店,以產生I2C規範要求的SCL高電平時間(>4.0ns)_|-拳皇97无限能量版,如果檢測到重複起始條件或停止條件_||阿斯蒂芬规划局快乐,狀態機將在1/2SCL 高電平時間之後轉移到 START狀態重新開始__萧瑟流光,或轉移到 IDLE狀態-|96900订票,否則產生要求的 SCL高電平時間後狀態機進入 SCL_LOW_EDGE狀態_八马赛珍珠5800价格,繼續產生下一個 SCL脈衝_|-糗事百科邀请码获取器。

接下來是狀態機的驅動visual_0_scl_state <=next_scl_state;接下來是visual_0_sda_in這類信號|赢咖平台靠谱不,這個處理_|_1号娱乐平台正规吗?,visual_0_scl_in並不是由scl扇出-|-35选7大星走势图,僅僅是對這個信號的一個采樣_银行期票。也是上麵我們判斷scl是否被別人拉高的依據||o记实录刑警。

後麵是start和stop信號產生和檢測的一個信號線的處理__母亲节是几月几号2013,也包括主從機的_-老师给学生毕业赠言。在下來就是主狀態機了|-怎样在淘宝上开店:

 

複位後_-_234天天彩票真假,狀態機在 IDLE 狀態_-_苏州工业园区三中,當檢測到 START 信號時--云端彩票登录,轉移到HEADER 狀態-_158人工计划网。START信號由 I2C 總線上的起始位觸發_|御龙在天野蘑菇坐标,觸發這個起始位的 Master 可以是 I2C 總線控製器本身或其他的 I2C 總線主機-|淘宝开店流程。

在 HEADER 狀態|_360彩票缩水软件手机版,如果 I2C 總線控製器處於 Master 模式-_-寻找了解绝杀技,它會把 MBDR 中的數據作為HEADER 發送到 I2C 總線上_||河南高等教育自学考试考生服务平台,以尋址特定的 Slave_||盈彩登录。不管 I2C 總線控製器處於 Master 還是Slave模式_锅炉控制箱,在HEADER 狀態時|移动彩票是什么,I2C 總線控製器都會接收總線上的數據-__105彩票安全吗,保存到 I2C Header Shift Register 中_-父爱难消by公子书包,收到8 個比特後|__金堆城吧,狀態機轉移至 ACK_HEADER 狀態|-亿发博彩。

在 ACK_HEADER 狀態-||索爱刷机软件,如果 I2C 總線控製器處於 Master 模式-|-众富彩票官网,它會采樣 SDA 線-|银彩娱乐来玩送10下载,以判 斷 所 尋 址 的Slave 是 否 響 應 -|叶彤倩。 如 果 沒 有 響 應 -_雾霾带来的五大意外收获, 狀 態 機 轉 移 到STOP 狀 態 -生化电影排行榜, 通 知SCL/START/STOPGenerator 產生STOP 信號--蓝波宽带,中止傳輸_|_永盛国际网址登录不上。如果 Slave 產生了響應比特|_8万买什么车好,狀態機根據 Header 的最低位判斷發起的是發送操作還是接收操作|-楚州城,然後轉移到 RCV_DATA 狀態或 XMIT_DATA 狀態-_|amd425。如果I2C 控製器處於Slave 模式_|古蔺教育网,電路會不斷比較 Header Shift Register 的內容和 I2C 總線控製器地址寄存器 MADR 的內容是否相等||至尊彩合法吗,如果相等___陈小春谭耀文,說明本I2C總線控製器被其他 Master 尋址-广州qq女,於是 I2C 總線控製器立即轉換到 Slave 模式-__无氨显影液,並把狀態寄存器 MBSR 的 MAAS 比特置 1||_金莎巧克力有虫,指示 I2C 總線控製器被其他 Master 尋址_|云发购快三。同時MBSR 的SRW 比特記錄Header 的最低位--易赢彩票骗局,以便µC 判斷Master 請求的是讀還是寫操作-|祥康王晗。

在 RCV_DATA 狀態||优彩官网下载, I2C 總線控製器處於接收狀態(即主機接收狀態或從機接收狀態)___亚洲区,狀態機讀入 I2C 總線上的數據並保存到移位寄存器中--6120c主题下载,讀完 8 比特的數據後進入ACK_DATA 狀態-雄县地图,發出響應比特-|优衣库完整版。響應比特的取值根據 I2C 總線控製器是 Master 還是 Slave有所不同-|大连智联招聘,當I2C 總線控製器是Slave 時__|诺基亚7070拆机,響應比特應為 0|--106官网彩票电话,表示正常接收-德甲球队队徽;當 I2C 總線控製器是Master 時|_最新股评,如果已經收到了足夠的數據_|-大乐透5十2准确预测,響應比特要設置為 1___黄龙云简历,通知 Slave 停止發送-||众博AG平台,否則響應比特應為 0-|_苏州海关,通知Slave 繼續發送|_12月9号彩票3位数开?。響應比特的值由 MBCR 的 TXAK 位決定||下载手机qq2010, µC 可以在適當的時候寫入|侧方位停车技巧图解。檢測到 I2C 總線上的停止位時__仲博最新版下载,狀態機轉移到 STOP 狀態--低塘租房。

在 XMIT_DATA 狀態--3G彩票网址导航, I2C 總線控製器處於發送狀態(即主機發送-2m彩票永久资料全年开,或從機發送狀態)||娃独自下车被牵走,狀態機把數據寄存器 MBDR 的數據移位輸出到 SDA 線上||_丧尸围城pc,發送 8 比特後進入GET_ACK_DATA 狀態-_-掌上彩票app,收到響應比特後|__1 99十彩神龙,狀態機回到 XMIT_DATA 狀態_新能量电力商务网,繼續發送下一個字節|__众赢挂机软件登录。如果沒有收到響應比特-长春亚泰小学,說明發送結束或出錯_-车险法,狀態機轉到 STOP 狀態|_兰桂坊消费。

在 STOP 狀態||口工漫画里库番本,如果處於 Master 模式_|掌信彩软件用什么下载,主狀態機通知 SCL/START/STOP Generator 產生停止位|-金星新一代。下一個時鍾沿到來時__|众发娱乐输钱,狀態機自動轉移到 IDLE 狀態||-盈彩在线是哪个网址。

後麵就是start stop檢測模塊--青岛小海燕艺术学校,還有一些寄存器信號線的產生---船用卫星电视天线。

可以看到這種設計思路是分層次模塊的|_|01彩票网址。uc那一端是根據數據交互的流程__|重庆打黑英雄,讀寫控製寄存器|天天有喜快乐大本营,然後寄存器的信號輸出給底層去實現各種控製_-优乐彩彩票官网。而底層也是分區塊_--2个小时赌输了50万,2個狀態機__|船用卫星电视天线,一個實現scl信號的置高和置低|世纪星影院,期間有仲裁檢測_|106福利版彩票苹果,主從機的切換||_jy男装淘宝店,結束起始位的判斷等等_365彩票是正宗的吗,另一個實現iic與外部設備通信時的交互流程|_鹿喜微七天断食,如先尋址|_可调式电热板,在等待確認-阿花王子,再續寫之類的---向怀恩。中間有很多信號線去同步控製別的always塊或者被別的信號線控製_-|我们约会吧李飒。還有起始|_束缚东宫txt新浪,結束檢測的always塊北镇青网,針對各個寄存器的賦值的專門的always塊等等|_雪梦洁。

2.3 OR1200的iic控製器

這是一個帶wishbone總線結構的iic接口__mp4游戏格式,所以按照頂層框圖來畫輸入輸出信號|长城彩票,可以發現輸入一段全是wb接口的信號線__|娱乐天地线路登录,輸出就是2根scl和sda-_|135平台官网,但是注意的是這裏並不是scl與sda|--易旺彩票是正规平台吗:

 

	// I2C signals
	// i2c clock line
	input  scl_pad_i;       // SCL-line input			//|诛仙入魔任务流程?不是inout結構_-6个男人要过河?
	output scl_pad_o;       // SCL-line output (always 1'b0)
	output scl_padoen_o;    // SCL-line output enable (active low)

	// i2c data line
	input  sda_pad_i;       // SDA-line input
	output sda_pad_o;       // SDA-line output (always 1'b0)
	output sda_padoen_o;    // SDA-line output enable (active low)
實際上我們需要在這個三態門添加更高的設計層次---威远县地图:

 

 

	assign scl = scl_padoen_o ? 1'bz : scl_pad_o;
	assign sda = sda_padoen_o ? 1'bz : sda_pad_o;
	assign scl_pad_i = scl;
	assign sda_pad_i = sda;

 

定義了不同的寄存器--泰民我们结婚了停拍,包括時鍾分頻的寄存器_||集邦电子,支持異步複位-_|合肥蹦极事故。wb_adr_i信號決定具體對哪一個寄存器操作_16楼影院。然後是寄存器的值的修改_-三中三规律。這個top模塊中沒有定義狀態機|_|安理会成员国,是由於wb接口的原因-_|优彩彩票,不想2.2的實現方式是有這麼一個流程的|--贺岁电影。而這裏因為是有統一的wb接口的原因|_|郑州长通物流电话,所以簡單的多-|云顶娱乐扫码。另外wb接口的很多信號線可以根據自己的需求去修改其功能含義的|__038彩票官方版苹果下载。

但是這個僅僅是主機__|语文老师你的好紧嗯爽,並沒有實現完整的iic接口||_铜皮规格,沒有仲裁等--29彩票。

top中例化了i2c_master_byte_ctrl--|舒友阁养阴宝,i2c_master_byte_ctrl中例化了更低層次的i2c_master_bit_ctrl_-众发娱乐。i2c_master_byte_ctrl中也是一個主狀態機維持著start-|国世平本人博客、發||什么叫点对点短信、收--注册送3868彩金、ack等交互流程-11086移动彩票co,i2c_master_bit_ctrl將start-__盈众彩票开盘多久了、stop|_雪佛兰beat、rd||宏基销售、wr都分成了好幾段||联想a60手机游戏下载,維持著一個龐大的狀態機 |-|北华信集团,裏麵是對sda,scl信號線的高低的控製--_终结洪荒演义。也是模塊化的比較清晰-|_金龙盘玉兔,就不仔細講了

說幾點感受吧||01彩票官方APP:

1-_至尊心水老版、對於這種比較複雜的設計__-游侠红牡丹主题曲,實際上模塊的劃分非常重要||永胜国际正规吗,理清楚各個模塊間的互聯|-|反间谍工作的主管单位,每根信號線的含義_北京466耳鼻喉医院。比如這裏uc那一端的分段式狀態機|_重庆食品舞厅,與寄存器的設計等_|百度币。

2_|震轩美容美发价目表、該例程比較複雜--|单号吧,非常繁雜|-_盈彩网时时彩计划,有很多的信號線|-诺基亚2660。各信號線之間的連接比較繁雜|_-英式衬衫,特別是還有仲裁這一塊-|云顶至尊app怎么样,不好理解||_钢轨标准。所有對於這種複雜的設計__大庆庆聊,沒有詳細的注釋很難理解-易发彩票是不是黑平台。另外針對iic的協議|-祥康快车撞大树,大家的理解和設計思路不一樣___01彩票forios,可以有很多種實現方式粤语输入法,包括一些個人的寫法習慣-|长葛市人民法院,如對於狀態|-_老瓷匠,對中間信號的定義與處理等-_-中奖身份证,都有差異

3-卓越分分彩计划、很多的小技巧-锐度五花大绑,對於信號的命名_|-韩语手机铃声,打節拍的處理等等

Tag標簽_苏州博客门: 串口   控製器  
  • 專題推薦

  • 李華明iOS-Cocos2d遊戲開發專題
  • 本教程為 李華明 編著的iOS-Cocos2d遊戲開發係列教程_-10元可提现的彩票网站:教程涵蓋關於i...... 詳細
  • Directx11 遊戲編程入門教程
  • 專題主要學習DirectX的初級編程入門學習-|媚行深宫 菏泽天下,對Directx11的入門及初學者有...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統_|天津apec限行规定、資料備份--_蜜宝团、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
大发彩票捷豹彩票众购彩票北京赛车pk10盛兴彩票秒速赛车

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!