freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于fpga的光電數(shù)據(jù)采集和處理采集系統(tǒng)設(shè)計畢業(yè)設(shè)計(已改無錯字)

2022-08-22 21:22:43 本頁面
  

【正文】 流的方向)。 3)讀寫:主機決定此次操作是從主機讀數(shù)據(jù)到從機數(shù)據(jù)還是從從機讀取數(shù)據(jù)到主機之中。 4)應(yīng)答 :根據(jù)指示位,數(shù)據(jù)在主設(shè)備和從設(shè)備之間傳輸。數(shù)據(jù)一般以 8 位傳輸,最重要的位放在前面;具體能傳輸多少量的數(shù)據(jù)并沒有限制。接收器上用一位的 ACK(回答信號)表明每一個字節(jié)都收到了。傳輸可以被終止和從新開始。 武漢理工大學(xué)畢業(yè)設(shè)計(論文) 13 5) 停止:信號結(jié)束傳輸。 I2C 總線數(shù)據(jù)傳送時序: 圖 33 i2c 總線數(shù)據(jù)傳送時序 在數(shù)據(jù)傳輸?shù)臅r候我們應(yīng)該注意幾點問題: 1)進行數(shù)據(jù)傳送時,在 SCL 為高電平期 間, SDA 線上電平必須保持穩(wěn)定,只有 SCL為低時,才允許 SDA 線上電平改變狀態(tài)。并且每個字節(jié)傳送時都是高位在前。 2)對于應(yīng)答信號, ACK=0 時為有效應(yīng)答位,說明接收器已經(jīng)成功接收到該字節(jié),若為 1 則說明接受不成功。 3)如果被控器需要延遲下一個數(shù)據(jù)字節(jié)開始傳送的時間,可以通過把 SCL 電平拉低并保持來強制主控器進入等待狀態(tài)。 4)主控器完成一次通信后還想繼續(xù)占用總線在進行一次通信,而又不釋放總線,就要利用重啟動信號 Sr。它既作為前一次數(shù)據(jù)傳輸?shù)慕Y(jié)束,又作為后一次傳輸?shù)拈_始。 5)總線沖突時,按“低電平優(yōu)先”的 仲裁原則,把總線判給在數(shù)據(jù)線上先發(fā)送低電平的主器件。 6)在特殊情況下,若需禁止所有發(fā)生在 I2C 總線上的通信,可采用封鎖或關(guān)閉總線,具體操作為掛接在總線上的任一器件將 SCL 鎖定在低電平即可 [12]。武漢理工大學(xué)畢業(yè)設(shè)計(論文) 14 4 系統(tǒng)中 FPGA 的設(shè)計及實現(xiàn) 設(shè)計需要 FPGA,所以得知道一些關(guān)于 FPGA 設(shè)計的一些東西,所以在下面講一下關(guān)于 FPGA 設(shè)計方面的東西。 FPGA 的通用設(shè)計過程 ● 文本編輯:用任何文本編輯器都可以進行,也可以用專用的 HDL 編輯環(huán)境。通常 VHDL 文件保存為 .vhd 文件, Verilog 文件保存為 .v文件 。 ● 功能仿真:將文件調(diào)入 HDL 仿真軟件進行功能仿真,檢查邏輯功能是否正確 。 ● 邏輯綜合:將源文件調(diào)入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式和信號的連接關(guān)系。邏輯綜合軟件會生成 .edf( edif)的 EDA 工業(yè)標(biāo)準(zhǔn)文件。 ● 布局布線:將 .edf 文件調(diào)入 PLD 廠家提供的軟件中進行布線,即把設(shè)計好的邏輯安放到 PLD/FPGA 內(nèi) 。 ● 時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序。 ● 編程下載:確認仿真無誤后,將文件下載到芯片中 。 FPGA 設(shè)計 在此次設(shè)計中的軟 件部分都是由 FPGA 完成,本次論文的目的就是為了能夠?qū)崿F(xiàn)FPGA 能夠高速運轉(zhuǎn)系統(tǒng)實現(xiàn)光電數(shù)據(jù)采集和處理,為了達到這個目的我們使用的是 I2C協(xié)議,下面來介紹一下軟件設(shè)計的思路:首先對 I2C 協(xié)議進行編寫,使其具有開始,讀,寫,應(yīng)答,結(jié)束的子模塊。然后用 I2C 協(xié)議驅(qū)動 DAC8571,使光源能夠得到一個穩(wěn)定功率的光源 LD,然后對 ADS1115 進行驅(qū)動使其能夠開始進行模數(shù)轉(zhuǎn)換,再把模數(shù)轉(zhuǎn)換后的數(shù)字信號傳輸給 FPGA,通過在 FPGA 中設(shè)置一個查表模塊,使得到的一個比較穩(wěn)定的溫度值,然后再通過 LCD1602 顯示出來。從而 達到實現(xiàn)光電數(shù)據(jù)采集和處理的功能。 I2C 協(xié)議設(shè)計 由于上面介紹的 I2C 協(xié)議我們可以看到, I2C 協(xié)議包括起始,讀,寫,應(yīng)答,停止五個狀態(tài),在這五個狀態(tài)中首先確定 SCL 時鐘信號,然后再根據(jù) SDA_link 信號來控制inout 型 SDA 信號是輸入信號還是輸出信號,最難點在于 8 為數(shù)據(jù)的處理怎么實現(xiàn)八位數(shù)據(jù)的處理尤為重要。然后就是狀態(tài)機的轉(zhuǎn)換問題。最后是用 FPGA 來驅(qū)動這三個芯片( DAC8571, ADS1115, LCD1602)完成光電轉(zhuǎn)換數(shù)據(jù)采集和處理。 第一,首先 FPGA 中的時鐘信號是 50MHz,遠遠 不能夠?qū)崿F(xiàn) I2C 協(xié)議中要求的 SCL時鐘線,第一步就是對 FPGA 所提供的時鐘信號進行分頻處理。 實現(xiàn): 武漢理工大學(xué)畢業(yè)設(shè)計(論文) 15 reg[8:0] t_delay。 //500 循環(huán)計數(shù),產(chǎn)生 iic 所需要的時鐘 reg scl_r。 //時鐘脈沖寄存器 always @ (posedge clk or negedge rst_n) if(!rst_n) t_delay = 939。d0。 else if(t_delay == 939。d499) t_delay = 939。d0。 //計數(shù)到 10us 為 scl 的周期,即 100KHz else t_delay = t_delay+139。b1。 //時鐘計數(shù) end 第二,根據(jù)時鐘信號我們就開始來設(shè)計開始信號如何產(chǎn)生和結(jié)束,以及傳輸過程中數(shù)據(jù)的傳輸讀寫控制還有就是主機如果來回復(fù)應(yīng)答信號的。在我們使用的 I2C 協(xié)議來驅(qū)動 ADS1115 和 DAC8571 時由于他們的狀態(tài)機都不止一個,我們就必須設(shè)計傳輸多個數(shù)據(jù)的狀態(tài)機。 狀態(tài)機的轉(zhuǎn)化圖如下: 圖 41 I2C 通信狀態(tài)機 通信時具體狀態(tài)機的實現(xiàn): 1)開始信號的實現(xiàn): START1: begin if(`SCL_HIG) begin //scl為高電平期間 sda_link = 139。b1。 //數(shù)據(jù)線 sda 為 output sda_r = 139。b0。 //拉低數(shù)據(jù)線 sda,產(chǎn)生起始位信號 cstate = ADD1。 num = 439。d0。 //num計數(shù)清零 end else cstate = START1。 //等待 scl高電平中間位置到來 end 2)開始信號之后我們要先選定我們想要的 I2C 器件是個七位的地址,然后在輸入SDA 信號的讀寫信號,他是第一個數(shù)字數(shù)據(jù)的第八位。 一個 Byte 字節(jié)數(shù)據(jù)的 傳輸方式: ADD1: begin 武漢理工大學(xué)畢業(yè)設(shè)計(論文) 16 if(`SCL_LOW) begin if(num == 439。d8) begin num = 439。d0。 //num計數(shù)清零 sda_r = 139。b1。 sda_link = 139。b0。 //sda 置為高阻態(tài) (input) cstate = ACK1。 end else begin cstate = ADD1。 num = num+139。b1。 case (num) 439。d0: sda_r = db_r[7]。 439。d1: sda_r = db_r[6]。 439。d2: sda_r = db_r[5]。 439。d3: sda_r = db_r[4]。 439。d4: sda_r = db_r[3]。 439。d5: sda_r = db_r[2]。 439。d6: sda_r = db_r[1]。 439。d7: sda_r = db_r[0]。 default: 。 endcase // sda_r = db_r[439。d7num]。 //送器件地址,從高位開始 end end // else if(`SCL_POS) db_r = {db_r[6:0],139。b0}。 //器件地址左移 1bit else cstate = ADD1。 end 3)此后我們需要編寫的是應(yīng)答信號,如果應(yīng)答則繼續(xù)發(fā)送數(shù)據(jù),非應(yīng)答就停止發(fā)送數(shù)據(jù)。應(yīng)答信號的實現(xiàn): ACK1: begin if(/*!sda*/`SCL_NEG) begin cstate = ADD2。 //從機響應(yīng)信號 db_r = `BYTE_ADDR。 // 1 地址 end else cstate = ACK1。 //等待從機響應(yīng) end 應(yīng)答信號之后就是多個數(shù)據(jù)的傳輸以及應(yīng)答,和上面的方法相似,所以就在此不提及。 4)然后就是結(jié)束信號: 武漢理工大學(xué)畢業(yè)設(shè)計(論文) 17 STOP1: begin if(`SCL_LOW) begin sda_link = 139。b1。 sda_r = 139。b0。 cstate = STOP1。 end else if(`SCL_HIG) begin sda_r = 139。b1。 //scl為高時, sda 產(chǎn)生上升沿(結(jié)束信號) cstate = STOP2。 end else cstate = STOP1。 end; 至此就實現(xiàn)了 I2C 協(xié)議中的五個重要狀態(tài)機的編寫,如果要使用我們所需要的狀態(tài)機時,我們就可以用主機實現(xiàn)我們想要的 I2C 協(xié)議的開始,讀,寫,應(yīng)答,結(jié)束這個五個狀態(tài)。至此我們的 I2C 協(xié)議就是個只有 SCL 時鐘線和 SDA 數(shù)據(jù)線的黑箱盒 [1415]。 DAC8571 驅(qū)動設(shè)計 首先我們介紹下 DAC8571 的引腳圖,以對 DAC8571 有一定的了解 圖 42 DAC8571 引腳圖 表 41 DAC8571 的引腳圖 引腳 引腳名 功能 1 VDD 提供模擬電壓輸入 2 VREF 正極提供參考電壓 3 V( SENSE) 模擬輸出意義 4 VOUT 從 DAC 中輸出的模擬電壓 5 A0 器件地址選擇位 6 SCL 串行時鐘輸入 7 SDA 輸入 /輸出串行數(shù)據(jù) 8 GND 參考接地 從上面的引腳圖我們可以看到信號只要從主機發(fā)送一定的數(shù)據(jù)到從機,使從機能夠得到一個穩(wěn)定的數(shù) 字信號我們就能夠?qū)崿F(xiàn)穩(wěn)定光源的作用。 接下來我們討論下主機如何給從機一定的信號。 I2C 協(xié)議首先當(dāng)總線為空閑的時候武漢理工大學(xué)畢業(yè)設(shè)計(論文) 18 開始也就是 SDA 和 SCL 都是高電平,主機把 SDA 信號拉低就可以產(chǎn)生一個開始信號。這個信號只能夠有主機產(chǎn)生。開始信號之后主機產(chǎn)生一個串行的時鐘脈沖,輸出一個數(shù)據(jù)地址 ADDRESS[7:0],在產(chǎn)生一個位時,主機必須保證能夠產(chǎn)生有效信息,也就是在SCL 信號為高電平時 SDA 必須保持穩(wěn)定狀態(tài),一個字節(jié)的數(shù)據(jù)包括七位的地址數(shù)據(jù)( 1001100,假設(shè) A0 為 0)和一位的讀寫數(shù)據(jù)位,在這八位后面的第九位為響應(yīng)信號 ,如果 DAC8571 和主機匹配,他會把 SDA 上信號拉低。然后把高八位和低八位的數(shù)字信號傳給 DAC8571,在低八位數(shù)據(jù)的最后一個數(shù)據(jù)傳輸完成后有一個應(yīng)答信號,數(shù)模轉(zhuǎn)換就完成了,在更新數(shù)字輸入時,重復(fù)的輸入高八位和低八位數(shù)列,在每次輸完之后都期待一個應(yīng)答信號,在幾組數(shù)據(jù)數(shù)模轉(zhuǎn)換完成之后,主機就可以停止和 DAC8571 的通信,而 DAC8571 仍然能夠保持我們輸入的數(shù)字信號,所以就能夠達到穩(wěn)定 LD 光源的作用[14]。 在此只需要調(diào)用 I2C 協(xié)議就能夠完成對 DAC8571 的驅(qū)動。 ADS1115 驅(qū)動設(shè)計 在仿真中之前首先得對 ADS1115 引腳圖以及作用,然后想想 I2C 通信怎么來實現(xiàn)ADS1115 的驅(qū)動。 圖 43 ADS1115 引腳圖 引腳說明: 表 42: ADS1115 的引腳說明 ADS1115 接口名 模擬 /數(shù)字輸入 /輸出 說明 1 ADDR 數(shù)字信號輸入 I2C 從地址選擇信號 2 ALERT/RDY 數(shù)字輸出 數(shù)字信號比較輸出 3 GND 模擬信號 接地 4 AIN0 模擬信號輸入 差分通道 1:正極輸入或者單端輸入 1 5 AIN1 模擬信號輸入 差分通道 1:負極輸入或者單端輸入 2 6 AIN2 模擬信號輸入 差分通道 2:正極輸入或者單端輸入 3 7 AIN3 模擬信號輸入 差分通道 2:負極輸入或者單端輸入 4 8 VDD 模擬信號 到 的電源供應(yīng) 9 SDA 數(shù)字信號 I/O 接口 數(shù)據(jù)總線:傳送和接收數(shù)據(jù) 10 SCL 數(shù)字信號輸出 數(shù)據(jù)時鐘: SDA 中的時鐘信號 武漢理工大學(xué)畢業(yè)設(shè)計(論文) 19 在 Verilog 中只需要書寫 I2C 協(xié)議,數(shù)據(jù)線的引腳圖之后我們對這塊芯片的工作方式就有了一定的了解。他是一個四選一輸入的模數(shù)轉(zhuǎn)換器。通過 SDA 來使能和接收想要的數(shù)據(jù)。 因此首先得給配置寄存器寫入一些 ADS1115 需要工作的配置,在此需要發(fā)送四個字節(jié)的數(shù)據(jù): 第一個字節(jié): 0b10010000(前七位 I2C 地址后接以一寫位)。 第二個字節(jié): 0b00000001(指向配置寄存器)。 第三個字節(jié): 0b10000100(配置寄存器 MSB 標(biāo)記為寫)。 第四個字節(jié): 0b10000011(配置寄存器的 LSB 標(biāo)記為寫)。 在此需要把配置 ADS1115 轉(zhuǎn)化為進行轉(zhuǎn)化狀態(tài),然后就給指針寄存器寫入這樣的指令。 第一個字節(jié) :0b10010000(前七位 I2C 地址后接一寫位)。 第二個字節(jié): 0b0000000(指向轉(zhuǎn)換寄存器)。 到這,需要 從轉(zhuǎn)換寄存器中讀取
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1