FPGA開發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch09】讀寫外部EEPROM實(shí)驗(yàn)_第1頁
FPGA開發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch09】讀寫外部EEPROM實(shí)驗(yàn)_第2頁
FPGA開發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch09】讀寫外部EEPROM實(shí)驗(yàn)_第3頁
FPGA開發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch09】讀寫外部EEPROM實(shí)驗(yàn)_第4頁
FPGA開發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch09】讀寫外部EEPROM實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

讀寫外部EEPROM實(shí)驗(yàn)卓越工程師培養(yǎng)系列FPGA開發(fā)實(shí)用教程——基于Xilinx和VerilogHDL第九章01實(shí)驗(yàn)內(nèi)容基于FPGA高級(jí)開發(fā)系統(tǒng)設(shè)計(jì)一個(gè)讀寫外部EEPROM實(shí)驗(yàn),實(shí)現(xiàn)當(dāng)按獨(dú)立按鍵KEY1時(shí),F(xiàn)PGA向EEPROM寫入數(shù)據(jù)76543210;當(dāng)按獨(dú)立按鍵KEY2時(shí),F(xiàn)PGA向EEPROM寫入數(shù)據(jù)89ABCDEF;當(dāng)按獨(dú)立按鍵KEY3時(shí),F(xiàn)PGA從EEPROM中讀取最后一次寫入的數(shù)據(jù),讀寫的數(shù)據(jù)都可以通過串口,在串口助手上顯示。實(shí)驗(yàn)內(nèi)容02實(shí)驗(yàn)原理FPGA高級(jí)開發(fā)系統(tǒng)上XC6SLX16芯片的E7引腳連接AT24C02芯片的SCL引腳,為時(shí)鐘引腳;XC6SLX16芯片的C7引腳連接AT24C02芯片的SDA引腳,為數(shù)據(jù)引腳。SDA和SCL都有4.7Ω的上拉電阻,空閑狀態(tài)時(shí)為高電平。AO、Al、A2引腳連接GND,表示I2C器件的片選地址為000。WP是寫保護(hù)引腳,當(dāng)WP接到VCC時(shí),存儲(chǔ)器被寫保護(hù)(只讀)。在FPGA高級(jí)開發(fā)系統(tǒng)上,WP引腳接到GND,這樣存儲(chǔ)器可讀可寫。實(shí)驗(yàn)原理另外,EEPROM硬件電路還包括3個(gè)獨(dú)立按鍵(編號(hào)為KEY1、KEY2、KEY3)和串口發(fā)送引腳CH330_TX,KEY1、KEY2和KEY3分別連接XC6SLX16芯片的G13、F13和H12引腳,CH330_TX連接XC6SLX16芯片的D17引腳。EEPROM電路原理圖I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線仲裁和高低速器件同步功能在內(nèi)的高性能串行總線。I2C總線只有兩根雙向信號(hào)線:數(shù)據(jù)線SDA和時(shí)鐘線SCL。每個(gè)連接到I2C總線上的器件都有唯一的地址。主機(jī)與其他器件間的數(shù)據(jù)傳送關(guān)系為主機(jī)發(fā)送數(shù)據(jù)到其他器件,這時(shí)主機(jī)為發(fā)送器,從總線上接收數(shù)據(jù)的器件則為接收器。I2C總線通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根信號(hào)線均為高電平。連接到總線上的任一器件輸出低電平,都將使總線信號(hào)變?yōu)榈碗娖?,即各器件的SDA及SCL都是線“與”關(guān)系。實(shí)驗(yàn)原理I2C總線在SCL為高電平期間,SDA由高電平向低電平變化表示起始信號(hào);在SCL為高電平期間,SDA由低電平向高電平變化表示停止信號(hào)。在進(jìn)行數(shù)據(jù)傳輸且SCL為高電平期間,SDA上的數(shù)據(jù)必須保持穩(wěn)定。只有在SCL為低電平期間,SDA上的數(shù)據(jù)才允許變化。起始和停止信號(hào)都由主機(jī)發(fā)出,在起始信號(hào)產(chǎn)生后,總線處于被占用狀態(tài);在停止信號(hào)產(chǎn)生后,總線處于空閑狀態(tài)。在SCL為高電平期間,SDA保持低電平,表示發(fā)送0或應(yīng)答;在SCL為高電平期間,SDA保持高電平,表示發(fā)送1或非應(yīng)答。在SCL為高電平期間,SDA保持低電平,表示發(fā)送0或應(yīng)答;在SCL為高電平期間,SDA保持高電平,表示發(fā)送1或非應(yīng)答。實(shí)驗(yàn)原理每個(gè)I2C器件都有一個(gè)器件地址,有的器件地址在出廠時(shí)就已經(jīng)設(shè)置好了,用戶不可更改,如OV7670器件地址固定為0x42;有的確定了其中幾位,剩下的位由硬件確定,如常見的具有Fc接口的EEPROM存儲(chǔ)器,留有3個(gè)控制地址的引腳,由用戶在進(jìn)行硬件設(shè)計(jì)時(shí)確定。實(shí)驗(yàn)原理嚴(yán)格地講,主機(jī)并不直接向從機(jī)發(fā)送地址,而是主機(jī)向總線發(fā)送地址,所有從機(jī)都能接收到主機(jī)發(fā)送的地址,然后每個(gè)從機(jī)都將主機(jī)發(fā)送的地址與自己的地址進(jìn)行比較。如果能匹配,則從機(jī)就會(huì)向總線發(fā)出一個(gè)響應(yīng)信號(hào)。主機(jī)收到響應(yīng)信號(hào)后,開始向總線發(fā)送數(shù)據(jù),這時(shí)與從機(jī)的通信就建立起來了。如果主機(jī)沒有收到響應(yīng)信號(hào),則表示尋址失敗。I2C器件地址如圖9-7所示為I2C控制命令傳輸數(shù)據(jù)格式示意圖。S為起始位,I2C協(xié)議在進(jìn)行數(shù)據(jù)傳輸時(shí),主機(jī)首先需要向總線發(fā)出控制命令(1010A2A1A0RAV),傳輸時(shí)按照從高位到低位的順序傳輸,控制字節(jié)的最低位為R/W(讀/寫)控制位。實(shí)驗(yàn)原理當(dāng)R/W位為0時(shí),表示主機(jī)對(duì)從機(jī)進(jìn)行寫操作;當(dāng)R/W位為1時(shí),表示主機(jī)對(duì)從機(jī)進(jìn)行讀操作。傳輸完控制命令后就等待從機(jī)響應(yīng)。AT24C02是一個(gè)2Kbit串行CMOSEEPROM,內(nèi)部含有32頁,每頁8字節(jié),該器件通過I2C總線接口進(jìn)行讀寫操作,有專門的寫保護(hù)功能。實(shí)驗(yàn)原理AT24C02芯片有8個(gè)引腳。相同器件型號(hào)的從機(jī)可以連接到總線上的數(shù)量由器件地址引腳決定。操作一個(gè)I2C器件,除了要訪問器件地址,還需要能夠指定器件數(shù)據(jù)地址。數(shù)據(jù)地址的長(zhǎng)度與容量有關(guān)。AT24C02芯片單字節(jié)寫時(shí)序主機(jī)發(fā)送起始命令和控制字節(jié)信息。在從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)發(fā)送要寫入數(shù)據(jù)的地址。主機(jī)在收到從機(jī)的應(yīng)答信號(hào)后,再傳輸待寫入的數(shù)據(jù)。從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)產(chǎn)生停止位,終止傳輸。頁寫時(shí)序主機(jī)發(fā)送起始命令和控制字節(jié)信息。在從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)發(fā)送要寫入數(shù)據(jù)的地址。主機(jī)在收到從機(jī)的應(yīng)答信號(hào)后,再傳輸待寫入的數(shù)據(jù)。從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)發(fā)送下一個(gè)數(shù)據(jù),從機(jī)響應(yīng)應(yīng)答信號(hào),直到N個(gè)數(shù)據(jù)寫完。在從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)產(chǎn)生停止位,終止傳輸。實(shí)驗(yàn)原理單字節(jié)寫時(shí)序和頁寫時(shí)序不同的I2C器件,器件地址字節(jié)可能不同,從而導(dǎo)致I2C單字節(jié)寫時(shí)序也可能不同。單字節(jié)讀時(shí)序主機(jī)發(fā)送起始命令和控制字節(jié)信息。在從機(jī)響應(yīng)應(yīng)答信號(hào)后,主機(jī)發(fā)送要讀取數(shù)據(jù)的地址。主機(jī)在收到從機(jī)的應(yīng)答信號(hào)后,發(fā)送起始命令和控制字節(jié)信息,并將R/W位設(shè)置為1,表明為讀操作。收到從機(jī)的應(yīng)答信號(hào)后,主機(jī)讀取數(shù)據(jù)完成后,產(chǎn)生無應(yīng)答信號(hào)。最后,主機(jī)產(chǎn)生停止位,終止傳輸。頁讀時(shí)序主機(jī)發(fā)送起始命令和控制字節(jié)信息。主機(jī)在收到從機(jī)的應(yīng)答信號(hào)后,發(fā)送起始命令和從機(jī)地址信息,并將R/W位設(shè)置為1,表明為讀操作。收到從機(jī)的應(yīng)答信號(hào)后,主機(jī)讀取數(shù)據(jù),然后主機(jī)發(fā)送應(yīng)答信號(hào),讀取下一個(gè)數(shù)據(jù),每讀完一個(gè)數(shù)據(jù),主機(jī)都要發(fā)送應(yīng)答信號(hào),直到R個(gè)數(shù)據(jù)讀完主機(jī)產(chǎn)生無應(yīng)答信號(hào)。最后,主機(jī)產(chǎn)生停止位,終止傳輸。實(shí)驗(yàn)原理單字節(jié)讀時(shí)序和頁讀時(shí)序結(jié)束狀態(tài)EEP_STOPEEPROM讀寫控制狀態(tài)讀操作狀態(tài)EEP_RD初始空閑狀態(tài)EEPJDLE寫操作狀態(tài)EEP_WR實(shí)驗(yàn)原理01020304①?zèng)]接收到讀寫操作命令為空閑狀態(tài)EEPJDLE③主機(jī)從從機(jī)讀取數(shù)據(jù)為讀操作狀態(tài)EEP_RD②主機(jī)向從機(jī)寫入數(shù)據(jù)為寫操作狀態(tài)EEP_WR④完成寫或讀操作為結(jié)束狀態(tài)EEP_STOP。該狀態(tài)機(jī)在eeprom.v文件中實(shí)現(xiàn)實(shí)驗(yàn)原理實(shí)驗(yàn)原理EEPROM讀寫控制狀態(tài)轉(zhuǎn)換條件當(dāng)前狀態(tài)下一狀態(tài)轉(zhuǎn)換條件EEPJDLEEEPJDLE沒有接收到讀寫操作命令EEP_IDLEEEP_WR接收到寫操作命令,啟動(dòng)寫操作EEP_WREEP_WR要寫入的數(shù)據(jù)未完成,寫操作還需要繼續(xù)EEP_WREEP_STOP寫操作完成EEPJDLEEEP_RD接收到讀操作命令,啟動(dòng)讀操作EEP_RDEEP_RD要讀取的數(shù)據(jù)未完成,讀操作還需要繼續(xù)EEP_RDEEP_STOP讀操作完成EEP_STOPEEP_IDLE寫或讀操作結(jié)束實(shí)驗(yàn)原理I2C讀寫控制狀態(tài)分為初始空閑狀態(tài)IDLE啟動(dòng)狀態(tài)START寫器件地址命令W_DEV_ADDR讀器件地址命令R_DEV_ADDR寫數(shù)據(jù)命令W_DATA讀數(shù)據(jù)命令R_DATA寫寄存器地址命令W_REG_ADDR讀起始命令RE_START發(fā)送8位地址數(shù)據(jù)IIC_SEND_8BITS_ADDR_DATA應(yīng)答信號(hào)ACK和停止位STOP實(shí)驗(yàn)原理讀寫外部EEPROM實(shí)驗(yàn)電路有8個(gè)引腳,引腳的名稱、類型、約束及描述如表所示。引腳名稱引腳類型引腳約束引腳描述clkjinV10時(shí)鐘輸入,50MHzrst_n_iinN7復(fù)位輸入,低電平復(fù)位btn_rd_iinG13按鍵輸入,按下為低電平btnl_wr__iinF13按鍵輸入,按下為低電平btn2_wr_iinH12按鍵輸入,按下為低電平uart_tx_ooutD17連接CH330N芯片的RXD引腳epr_sda_iooutC7連接AT24C02芯片的SDA引腳epr_scl_ooutE7連接AT24C02芯片的SCL引腳實(shí)驗(yàn)原理讀寫外部EEPROM實(shí)驗(yàn)內(nèi)部電路圖包括50Hz分頻模塊u_clken_50hz按鍵去抖模塊u_r_clr_Jitter_with_regl、u_w_clrJitter_with_reg1和u_w_clrJitter_with_reg2I2C讀寫控制模塊u_iic_com按鍵檢測(cè)模塊u_btn_wr_rd編碼模塊u_ascii_encode打包模塊u_npacket串口發(fā)送模塊u_uart_transEEPROM讀寫控制狀態(tài)機(jī)(fsm)03實(shí)驗(yàn)步驟復(fù)制工程文件夾并添加Verilog文件步驟一實(shí)驗(yàn)步驟將“D:\Spartan6FPGATest\Material”目錄中的exp08_eeprom文件夾復(fù)制到“D:\Spaitan6FPGATest\Product”目錄中。然后,雙擊運(yùn)行“D:\Spartan6FPGATest\Product\exp08_eeprom\project”目錄中的eeprom.xise文件打開工程,該工程的頂層文件為eeprom.v。完善btn_wr_rd.v文件步驟二實(shí)驗(yàn)步驟將程序清單中的代碼輸入btn_wr_rd.v文件的參數(shù)定義、信號(hào)定義和電路實(shí)現(xiàn)部分,并參考2.3節(jié)步驟5檢查語法,下面對(duì)關(guān)鍵語句進(jìn)行解釋。第56至57行代碼:讀寫狀態(tài)機(jī)啟動(dòng)標(biāo)志的輸出。將s_btnl_wr_flag和s_btn2_wrflag相或的結(jié)果輸出給eeprom_wr_run_o,輸出結(jié)果為1時(shí)啟動(dòng)寫狀態(tài)機(jī);將s_btn_rd_flag的值輸出給eeprom_rd_run_o,輸出結(jié)果為1時(shí)啟動(dòng)讀狀態(tài)機(jī)。實(shí)驗(yàn)步驟第59至99行代碼:讀寫標(biāo)志和讀寫數(shù)據(jù)完成標(biāo)志的輸出。第101至111行代碼:產(chǎn)生數(shù)據(jù)讀寫計(jì)數(shù)器。當(dāng)復(fù)位時(shí),計(jì)數(shù)器s_wr_rd_cnt清零;在clk

i的上升沿,如果s_wr_rd_cnt計(jì)數(shù)值為3且讀寫操作完成標(biāo)志done_sig_i為1,則表示數(shù)據(jù)讀寫完成,將計(jì)數(shù)器s_wr_rd_cnt清零;如果只有done_sig_i為1,則s_wr_rdent執(zhí)行加1計(jì)數(shù)。第113至194行代碼:進(jìn)行數(shù)據(jù)的讀或?qū)懖僮?。完善ascii_encode.v文件步驟三實(shí)驗(yàn)步驟將程序清單中的第5至34行代碼輸入ascii_encode.v文件的電路實(shí)現(xiàn)部分,并參考2.3節(jié)步驟5檢查語法。在第5至34行代碼中,第6行用于存儲(chǔ)表示寫入或讀取的字符,用于在計(jì)算機(jī)的串口助手上區(qū)分得到的數(shù)據(jù)是寫入的還是讀取的,第8至30行用于存儲(chǔ)寫入或讀取的數(shù)據(jù),第32至34行則用于存儲(chǔ)換行符。完善eeprom.v文件步驟四實(shí)驗(yàn)步驟將程序清單中的代碼分別輸入eeprom.v文件的信號(hào)定義、模塊例化和電路實(shí)現(xiàn)部分,并參考2.3節(jié)步驟5檢查語法,下面對(duì)關(guān)鍵語句進(jìn)行解釋。第62至95行代碼:EEPROM讀寫控制狀態(tài)機(jī)。第97至125行代碼:產(chǎn)生EEPROM讀寫開始信號(hào),輸出的信號(hào)在iic_com.v文件的狀態(tài)機(jī)中起作用。仿真測(cè)試步驟五實(shí)驗(yàn)步驟檢查完eeprom.v文件的語法之后,對(duì)EEPROM模塊進(jìn)行仿真。在仿真之前,需要先對(duì)clk_gen_50hz模塊的分頻頻率進(jìn)行修改,以減少仿真過程的等待時(shí)間。打開clk_gen_50hz.v文件,如程序清單9-4所示,將CNT_HALF和CNT_MAX的值分別修改為4和9,對(duì)原來的值先進(jìn)行注釋,待仿真驗(yàn)證成功后再將數(shù)值修改回原值。實(shí)驗(yàn)步驟本實(shí)驗(yàn)巳經(jīng)提供了完整的測(cè)試文件eeprom_tf.v,可以直接參考2.3節(jié)步驟7對(duì)EEPROM模塊進(jìn)行仿真。如圖9-17所示板級(jí)驗(yàn)證

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論