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

正文內(nèi)容

基于fpga的數(shù)據(jù)采集器(編輯修改稿)

2024-10-08 13:03 本頁面
 

【文章內(nèi)容簡介】 線就處于空閑狀態(tài)。接收器件收到一個完整的數(shù)據(jù)字節(jié)后,有可能需要完成一些其它工作,如處理內(nèi)部中斷服務(wù)等,可能無法立刻接收下一個字節(jié),這時接收器件可以將SCL 線拉成低電平,從而使主機(jī)處于等待狀態(tài)。直到接收器件準(zhǔn)備好接收下一個字節(jié)時 ,再釋放 SCL 線使之為高電平,從而使數(shù)據(jù)傳送可以繼續(xù)進(jìn)行。 連接到 I2C 總線上的器件,若具有 I2C 總線的硬件接口,則很容易檢測到起始和終止信號。對于不具備 I2C 總線硬件接口的 FPGA 來說,為了檢測起始和終止信號,必須保證在每個時鐘周期內(nèi)對數(shù)據(jù)線 SDA 采樣兩次 .圖 給出了 I2C 規(guī)定的起始和終止信號。 14 圖 起始和終止信號 I2C 規(guī)定每一個字節(jié)必須保證是 8 位長度。數(shù)據(jù)傳送時,先傳送最高位( MSB),每一個被傳送的字節(jié)后面都必須它收到最后一個數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個結(jié)束傳送的信號。這個信號是由 對從機(jī)的 “ 非應(yīng)答 ” 來實(shí)現(xiàn)的。然后,從機(jī)釋放 SDA線,以允許主機(jī)產(chǎn)生終止信號跟隨一位應(yīng)答位(即一幀共有 9 位)。由于某種原因從機(jī)不對主機(jī)尋址信號應(yīng)答時(如從機(jī)正在進(jìn)行實(shí)時性的處理工作而無法接收總線上的數(shù)據(jù)),它必須將數(shù)據(jù)線置于高電平,而由主機(jī)產(chǎn)生一個終止信號以結(jié)束總線的數(shù)據(jù)傳送。 I2C 總線上傳送的數(shù)據(jù)信號是廣義的,既包括地址信號,又包括真正的數(shù)據(jù)信號。在起始信號后必須傳送一個從機(jī)的地址( 7 位),第 8 位是數(shù)據(jù)的傳送方向位( R/),用 “0” 表示主機(jī)發(fā)送數(shù)據(jù)( T), “1” 表示主機(jī)接收數(shù)據(jù)( R)。每次數(shù)據(jù)傳送總是由主 機(jī)產(chǎn)生的終止信號結(jié)束。但是,若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號,馬上再次發(fā)出起始信號對另一從機(jī)進(jìn)行尋址。典型的 I2C 通信方式下圖所示。 S 從機(jī)地址 O A 數(shù) 據(jù) A 數(shù) 據(jù) A|A P 圖 典型的 I2C通信數(shù)據(jù)幀 “ 0” 表示數(shù)據(jù)由主機(jī)向從機(jī)傳送, “ 1” 則表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。 A 表示應(yīng)答, A 表示非應(yīng)答(高電平)。 S 表示起始信號, P 表示終止信號。 通過分析可知, 由于 FPGA 不具備 I2C 接口,在設(shè)計過程中我們必須保證 FPGA 不斷對通信總線進(jìn)行掃描,而且每個周期內(nèi)掃描兩次。并且要嚴(yán)格的按照 I2C 協(xié)議給出SCL 信號,以保證整個通信過程準(zhǔn)確無誤。由于 FPGA 的 IO 口需要進(jìn)行大量數(shù)據(jù)處理,因此 FPGA 的速度和硬件接口速度將會產(chǎn)生較大的偏差。為此, I2C 數(shù)據(jù)總線上的數(shù)據(jù)傳輸要有一個較長的起始過程加以引導(dǎo)。 至此,針對溫度采集所面臨的問題基本得以解決。按照分析結(jié)果,溫度采集模塊由兩部分組成: AD7416 控制模塊和 I2C 通信模塊。根據(jù)已有的資料和自己不斷總結(jié), 15 最終得到了實(shí)現(xiàn)目標(biāo)要求的代碼。部分代碼如下所示: designed by L_YM and H_YS the I2C BLOCK ENTITY simple_i2c IS PORT( clk : in std_logic。 enable : in std_logic。 nReset : in std_logic。 clk_t : in unsigned(7 downto 0)。 4x SCL input signals start,stop,read_1,write_1,ack_in : std_logic。 Din : in std_logic_vector(7 downto 0)。 output signals cmd_ack : out std_logic。 ack_out : out std_logic。 Dout : out std_logic_vector(9 downto 0)。 i2c signals SCL : inout std_logic。 SDA : inout std_logic )。 END ENTITY simple_i2c。 designed by H_YS and L_YM the ad7416 BLOCK entity AD7416_I2C_TEST is port ( clk_sys : in std_logic。 50MHz nReset : in std_logic。 Dout : out std_logic_vector(9 downto 0)。 data read from AD7416 I2C_OTI: in std_logic。 warning : out std_logic。 error : out std_logic。 no correct ack received SCL : inout std_logic。 SDA : inout std_logic 16 )。 end entity AD7416_I2C_TEST。 上面兩段代碼表示 AD7416模塊的接口定義。 ADC0809電壓采樣模塊 由第二節(jié)分析我們知道 ADC0809 采樣原理比較 簡單:首先我們給出一個有效的START 信號(高電平),隨后狀態(tài)信號 EOC 隨即變成低電平。此時進(jìn)入轉(zhuǎn)換狀態(tài),周期約為 100181。s。 轉(zhuǎn)換結(jié)束后, EOC 變?yōu)楦唠娖?,此時外部可以控制 OE 由低電平變?yōu)楦唠娖剑M(jìn)入有效輸出階段。下圖是 ADC0809 的采樣狀態(tài)圖。 圖 ADC0809 采樣狀態(tài)圖 由狀態(tài)圖我們可以發(fā)現(xiàn),運(yùn)用狀態(tài)機(jī)來控制 ADC0809 模塊無疑是最佳選擇。其核心代碼如下: designed by L_YM and H_YS BEGIN CASE current_state IS when st0= next_state=st1。 when st1=next_state=st2。 when st2= IF(EOC=39。139。)THEN next_state=st3。 ELSE next_state=st2。 END IF。 when st3=next_state=st4。 when st4=next_state=st0。 when OTHERS = next_state=st0。 17 END CASE。 END PROCESS。 由于 ADC0809 采用通用串口通信方式。此種通信方式比較簡單,并且 FPGA 的IO 口也支持此種通信協(xié)議。因此 ADC0809 在與 FPGA 通信時,無需再對 IO 口進(jìn)行編程,它的數(shù)據(jù)總線可以直接與 FPGA 的 IO 口連接,進(jìn)行數(shù)據(jù)交換。 LCD12232 顯示模塊 液晶顯示屏已廣泛應(yīng)用于人們的日常生活中,在各種領(lǐng)域中起到越來越重要的位置。為了方便數(shù)據(jù)監(jiān)測,并使的設(shè)計具有實(shí)用性,在本次設(shè)計中,加入 LCD12232模塊,用來顯示系統(tǒng)采集到的數(shù)據(jù)。在第 節(jié)我們已經(jīng)對 LCD12232 進(jìn)行了初步的探討,線面我們將深入的對 LCD12232 進(jìn)行分析。 LCD12232 由兩片 SED1520 芯片通過主從方式控制??刂?LCD 的輸出,從本質(zhì)上來講就是控制 SED1520 芯片。 SED1520 控制指令有 13 條,在本次設(shè)計中我們只使用最常用的 8 條指令。下面給出了本次設(shè)計中使用到的 SED1520 芯片的指令集。 指令代碼( 2 進(jìn)制) 代碼功能 格 式 1 1 1 0 0 0 1 0 復(fù)位 1 0 1 0 0 1 0 0 中斷休眠 1 0 1 0 1 0 0 X 占空比設(shè)置 1 0 1 0 0 0 0 1 AC 顯示 1 1 0 L4 L3 L2 L1 L0 起始行設(shè)置 1 0 1 0 1 1 1 X 顯示開關(guān) 1 0 1 1 1 1 P1 P0 頁地址選擇 0 C6 C5 C4 C3 C2 C1 C0 列地址選擇 表 SED1520 指令集 對于占空比設(shè)置,當(dāng) X=1 時,為 1/16,當(dāng) X=0 時為 1/32。對于起始行設(shè)置,由于液晶屏共有 32 行,其地址從 00H 開始到 1FH 截止。對于顯示開關(guān),當(dāng) X=1 時,顯示開, X=0 時顯示關(guān)。頁地址為 B8H 到 BBH,列地址從 00H 到 4FH。在使用時,只需將填入指定地址即可。 LCD12232 是字符點(diǎn)陣液晶。列地址指針和頁地址寄存器組合唯一指定了顯示屏上的一個點(diǎn)。值得注意的是列地址指針在每次操作后都會自加 1,這使我們的設(shè)計難度下降了許多。字符點(diǎn)陣液晶的顯示原理非常簡單,即當(dāng)顯示屏上某一點(diǎn)所對應(yīng)寄存器值為邏輯值“ 1”時,該點(diǎn)就顯示。因此欲實(shí)現(xiàn)對 LCD12232 顯示的控制,除了要熟悉它的指令集之外,還必須了解它的顯示方法與待顯示字字符模型。 通過實(shí)驗(yàn)我們得到結(jié)論:液晶顯示屏共有 2 屏(左、右屏), 4 頁。其顯示方法為,先顯示高位寄存器,再顯 示低位寄存器(針對同一列)。也就是說,它采用的是自頂 18 向下的顯示方法。因此在生成字模時,我們應(yīng)將待顯示字“取反”后,再生成。 LCD12232同樣采用通用串行通信方式。因此只需將其數(shù)據(jù)總線與 FPGA 的 IO 相連即可進(jìn)行數(shù)據(jù)傳遞。 SED1520 的讀寫時序如下圖所示: 圖 SED1520 的讀寫時序 通過 FPGA控制 SED1520顯示芯片的步驟如下: ( 1)初始化顯示屏,設(shè)置占空比為 1/32,采用順時針( AC)顯示模式,打開顯示開關(guān),設(shè)定初始頁地址與列地址。 ( 2)由于 SED1520的顯示寄存器在初始化后 均默認(rèn)存儲數(shù)值為 “1”,顯然這不利與我們進(jìn)一步的顯示操作。因此我們將 SED1520顯示寄存器全部清零,實(shí)現(xiàn)清屏的效果。 ( 3)通過使能信號選中左半屏(由主 SED1520控制),將已產(chǎn)生的字模送往顯示寄存器。在這里需要指出的是, LCD12232每半屏只有 61列,因此為了顯示的美觀,我們需要精確的確定每個字符的大小。 ( 4)選中右半屏,發(fā)送數(shù)據(jù)給顯示寄存器 ( 5)設(shè)定刷新頻率,檢測數(shù)據(jù)更新,操作結(jié)束。 其接口部分代碼如下: ENTITY LCD12232 IS PORT( CLR,CLK : IN STD_LOGIC。 CLK 50M AD7416 : IN STD_LOGIC_VECTOR(9 DOWNTO 0)。 ADC0809 : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 UART : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 E1, E2 : OUT STD_LOGIC。 RW, A0 : OUT STD_LOGIC。 Reset : OUT STD_LOGIC。 19 DB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END ENTITY LCD12232。 從代碼我們看出, LCD12232 控制模塊的任務(wù)是接收 AD741 ADC080串口的數(shù)據(jù),控制 LCD 的工作狀態(tài),顯示待顯示的數(shù)據(jù)。 串口通信模塊 異步串行 通信 要求的傳輸線
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1