国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

零基礎(chǔ)學(xué)FPGA(十)初入江湖之i2c通信

發(fā)布時(shí)間:2016-2-24 09:56    發(fā)布者:designapp
關(guān)鍵詞: FPGA , i2c , verilog
  相信學(xué)過(guò)單片機(jī)的同學(xué)對(duì)I2C總線都不陌生吧,今天我們來(lái)學(xué)習(xí)怎么用verilog語(yǔ)言來(lái)實(shí)現(xiàn)它,并在FPGA學(xué)習(xí)版上顯示。
  i2c總線在近年來(lái)微電子通信控制領(lǐng)域廣泛采用的一種新型的總線標(biāo)準(zhǔn),他是同步通信的一種特殊方式,具有接口少,控制簡(jiǎn)單,器件封裝形式小,通信速率高等優(yōu)點(diǎn)。在主從通信中,可以有多個(gè)i2c總線器件同時(shí)接到i2c總線上,所有與i2c兼容的器件都有標(biāo)準(zhǔn)的接口,通過(guò)地址來(lái)識(shí)別通信對(duì)象,使他們可以經(jīng)由i2c總線互相直接通信。
  i2c總線由兩條線控制,一條時(shí)鐘線SCL,一條數(shù)據(jù)線SDA,這里以E2PROM芯片AT24C08來(lái)介紹i2c通信方式。這是我學(xué)習(xí)版上的E2PROM芯片
  


  下面是AT24系列芯片的器件地址說(shuō)明
  


  前四位是已經(jīng)默認(rèn)的地址,接下來(lái)三位是可編程部分,可以自己擬定器件的地址,就像上面的芯片,A0,A1,A2全部接地,所以我的開(kāi)發(fā)板上的E2PROM的地址就為1010_000x,最后一位是讀寫(xiě)標(biāo)志位,若為1,則表示我要從E2PROM里讀數(shù)據(jù),若為0,則表示我要往里面寫(xiě)數(shù)據(jù)。
  下面是AT24C08的寫(xiě)時(shí)序
  


  想要理解這段時(shí)序,讓我們來(lái)慢慢將它分解來(lái)看,從上到下,從左到右
  1、SCL
  由芯片的datasheet我們可以知道芯片的工作頻率范圍,一般是100KHZ到400KHZ,這里我們用100KHZ的工作頻率。因?yàn)槲覀兊腇PGA芯片是50MHZ的頻率,所以要用到分頻,周期是20ns,所以計(jì)數(shù)500次就是10us,也就是100KHZ了,下面是分頻部分的代碼
  


  


  由芯片的資料可知,在SCL是低電平器件數(shù)據(jù)才可以變化,也就是說(shuō),只有在SCL在低電平器件才可以向E2PROM里面寫(xiě)數(shù)據(jù),在SCL高電平期間數(shù)據(jù)穩(wěn)定,所以我們可以從里面讀數(shù)據(jù),所以我們將SCL的一個(gè)時(shí)鐘周期分為四部分,分別是高電平中間時(shí)刻(用于讀數(shù)據(jù)),下降沿,低電平中間時(shí)刻(用于寫(xiě)數(shù)據(jù)),上升沿。上升沿和下降沿來(lái)控制SCL的時(shí)序。
  2、START
  開(kāi)始信號(hào),在SCL為高電平期間,SDA有一個(gè)從高電平到低電平的跳變,大家可以參考上傳的源代碼,從一上電開(kāi)始,SCL就按照100KHZ的頻率在變化,我們需要控制的只是SDA即可。
  3、DEVICE-ADDRESS
  器件地址,當(dāng)開(kāi)始信號(hào)作用后,就可以將器件的地址送人數(shù)據(jù)總線SDA,由于SDA是串行的,所以要一位一位的送,而且要從高位開(kāi)始送,下面是狀態(tài)機(jī)尋器件地址部分代碼,注意地址的最后一位是讀寫(xiě)位,這里要送寫(xiě)地址,即1010_0000;
  


  下面我來(lái)解釋一下上圖的代碼為什么這樣寫(xiě)
  (1)首先在SCL在低電平期間屬于數(shù)據(jù)穩(wěn)定期,我們可以向里面寫(xiě)數(shù)據(jù)。
  (2)進(jìn)入ADD1狀態(tài)后,sda_num就開(kāi)始計(jì)數(shù),由于我們用的是非阻塞賦值,所以第一個(gè)時(shí)鐘周期case捕獲的sda_num的值是0而不是1,有些朋友可能不明白這里,總是覺(jué)得case語(yǔ)句上來(lái)不就捕獲了1嘛,在這里給大家講解一下
  (3)這樣一連送8個(gè)時(shí)鐘周期的器件地址,送完之后sda_num清零,并釋放sda總線,進(jìn)入下一個(gè)狀態(tài)
  4、ACK
  應(yīng)答信號(hào),當(dāng)器件地址發(fā)送完畢后,主機(jī)要向從機(jī)要一個(gè)應(yīng)答信號(hào),用來(lái)表示從機(jī)已經(jīng)接收到了主機(jī)發(fā)送的數(shù)據(jù),如果一段時(shí)間內(nèi)主機(jī)沒(méi)有收到從機(jī)發(fā)來(lái)的應(yīng)答信號(hào),則主機(jī)默認(rèn)從機(jī)收到的主機(jī)發(fā)送的數(shù)據(jù)。在這里我們利用狀態(tài)機(jī)等待一個(gè)時(shí)鐘周期,作為應(yīng)答等待時(shí)間,并在這個(gè)時(shí)間內(nèi)給db_r寄存器送數(shù)據(jù)地址
  5、WORD_ADDRESS
  數(shù)據(jù)地址,當(dāng)找到要往哪個(gè)器件里寫(xiě)數(shù)據(jù)之后,就要開(kāi)始尋址往這個(gè)器件的哪個(gè)地址里寫(xiě)數(shù)據(jù)了,AT24C08的存儲(chǔ)容量為1024x8,也就是可以寫(xiě)1024個(gè)字節(jié),共有1024個(gè)地址,往哪個(gè)地址里寫(xiě)呢,需要我們自己確定。和上面發(fā)送器件地址一樣,直接將地址數(shù)據(jù)發(fā)送至SDA總線即可。
  接下來(lái)從機(jī)再給主機(jī)一個(gè)應(yīng)答信號(hào),如果此時(shí)我們按下鍵1的話(huà)那么就會(huì)進(jìn)入寫(xiě)狀態(tài),然后我們就可以寫(xiě)數(shù)據(jù)了,具體代碼和上面尋址的代碼類(lèi)似,直接將數(shù)據(jù)發(fā)送到數(shù)據(jù)總線SDA。
  下面是讀時(shí)序
  


  讀時(shí)序和寫(xiě)時(shí)序的唯一不同點(diǎn)就是當(dāng)發(fā)送玩數(shù)據(jù)地址后,接收到應(yīng)答信號(hào)后,如果想要執(zhí)行讀命令,那還要進(jìn)行一次開(kāi)始信號(hào),即START2,然后再發(fā)送一次器件地址,當(dāng)再收到應(yīng)答信號(hào)后就可以從里面讀數(shù)據(jù)了,注意讀數(shù)據(jù)的時(shí)候我們是在scl的高電平期間,因?yàn)檫@個(gè)時(shí)候數(shù)據(jù)穩(wěn)定,而在寫(xiě)數(shù)據(jù)的時(shí)候,我們是在scl的低電平器件,因?yàn)檫@個(gè)器件數(shù)據(jù)才允許變化,代碼如下
  


  還有一點(diǎn)要注意,因?yàn)镾DA是輸入輸出信號(hào)inout,所以為了當(dāng)數(shù)據(jù)線作為輸出或者輸入時(shí)不被干擾,這里定義了一個(gè)變量sda_link,來(lái)控制它,當(dāng)sda作為輸入信號(hào)時(shí),我們讓它處于高阻態(tài),當(dāng)sda作為輸出信號(hào)時(shí),將其賦予sda_r的值
  


  下面是生成的RTL視圖
  


  下面是狀態(tài)機(jī)的模型
  


  下面是板子上實(shí)驗(yàn)
  

                               
               
本文地址:http://www.4huy16.com/thread-161115-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專(zhuān)區(qū)
  • Microchip第22屆中國(guó)技術(shù)精英年會(huì)——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國(guó)技術(shù)精英年會(huì)深圳站回顧
  • 常見(jiàn)深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • 電動(dòng)兩輪車(chē)設(shè)計(jì)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表