版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
.PAGE....設(shè)計基于VHDL的單總線從機讀寫控制器目錄TOC\o"1-4"\h\u27462前言 120591第1章單總線技術(shù)211655第1.1節(jié)單總線技術(shù)簡介216502第1.2節(jié)單總線技術(shù)的原理與硬件結(jié)構(gòu)222837第1.3節(jié)單總線技術(shù)的信號方式327073第1.4節(jié)單總線技術(shù)的器件431091第2章DS18B20簡介 520811第2.1節(jié)DS18B20的封裝與管腳 55160第2.2節(jié)DS18B20內(nèi)部結(jié)構(gòu) 53792第2.3節(jié)DS1820時序及工作方式 811726第3章控制器設(shè)計 1123012第3.1節(jié)控制器結(jié)構(gòu) 1122685第3.2節(jié)讀寫時序的實現(xiàn) 1114579第4章仿真與結(jié)論 194642課堂感悟與致謝 20..前言是美國達拉斯公司生產(chǎn)的一種單總線數(shù)字溫度傳感器,采用總線通信協(xié)議。具有獨特的單總線通信方式以及較高的測量精度,目前在實際生活中獲得了廣泛應(yīng)用。本文介紹了的基本原理和通信時序,并用軟件模擬單總線時序,實現(xiàn)與的通信。作為電子硬件設(shè)計的主流描述語言,采用層次化的設(shè)計方式,具有電路行為描述能力強、靈活、通用及運算仿真速度快等特點,能夠較容易地實現(xiàn)時序邏輯控制。本文以數(shù)字溫度傳感器為例,設(shè)計一個基于的單總線控制器,并對通信程序進行了仿真測試。本文介紹的單總線控制器,有較強的可擴展性,可以連接多種單總線器件,且微處理器可以不用被迫關(guān)閉中斷,滿足各類對實時性具有嚴(yán)格要求的應(yīng)用。第1章單總線技術(shù)第1.1節(jié)單總線技術(shù)簡介單總線技術(shù)是達拉斯半導(dǎo)體公司推出的一項特有技術(shù)。它采用單根信號線,既可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)可以雙向傳輸。由于這種單總線技術(shù)線路簡單,硬件開銷少,所以其具有成本低廉,便于總線擴展和易于維護等優(yōu)點。單總線適用于單主機系統(tǒng),能夠控制一個或多個從機設(shè)備。主機可以是微控制器,從機可以是單總線器件,它們之間的數(shù)據(jù)交換只通過一條信號線。當(dāng)只有一個從機設(shè)備時,系統(tǒng)可按單節(jié)點系統(tǒng)操作;當(dāng)有多個從機設(shè)備時,系統(tǒng)則按多節(jié)點系統(tǒng)操作。第1.2節(jié)單總線技術(shù)的原理與硬件結(jié)構(gòu)單總線只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制都在這根線上完成。設(shè)備〔主機或從機通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,這樣便可允許設(shè)備在不發(fā)送數(shù)據(jù)時釋放總線,以便其他設(shè)備使用總線,其內(nèi)部等效電路如圖1.1所示。圖1.1單總線硬件接口示意圖單總線要外接一個約的上拉電阻,這樣當(dāng)總線閑置時,狀態(tài)為高電平。主機和從機之間的通信通過以下三個步驟完成:初始化器件,識別器件,交換數(shù)據(jù)。由于二者是主從結(jié)構(gòu),只有主機呼叫從機時,從機才能答應(yīng),因此主機訪問器件必須嚴(yán)格遵循單總線命令序列:初始化、命令、功能命令。如果出現(xiàn)序列混亂,器件則不會響應(yīng)主機〔搜索命令,報警搜索命令除外。根據(jù)以上原理,可以畫出單總線硬件接口原理圖,如圖1.2所示。圖1.2單總線硬件接口原理圖單總線端口為漏極開路,在本文中令單總線外接一個約的上拉電阻,這樣,不管什么原因單總線的閑置狀態(tài)為高電平。如果傳輸過程需要暫時掛起,且要求傳輸過程還能夠繼續(xù)的話,總線必須處于空閑狀態(tài)。位傳輸之間的恢復(fù)時間沒有限制,只要總線在恢復(fù)期間處于空閑狀態(tài)〔即高電平即可。如果總線保持低電平超過則將總線上的所有器件將復(fù)位。此外,在使用寄生方式供電時,為了保證單總線器件在某些工作狀態(tài)下〔如溫度轉(zhuǎn)換期間、寫入等具有足夠的電源電流,必須在總線上提供強上拉源,如圖1.2中所示的。第1.3節(jié)單總線技術(shù)的信號方式所有單總線器件要求遵循嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。協(xié)議定義了幾種信號類型:復(fù)位脈沖、答應(yīng)脈沖、寫、寫、讀和讀時序。所有的單總線命令序列〔初始化、命令、功能命令都是由這些基本的信號類型組成。這些信號,除了應(yīng)答脈沖外都是由主機發(fā)出同步信號,并且發(fā)出的所有命令和數(shù)據(jù)都是字節(jié)的低位在前。初始化時序包括主機發(fā)送的復(fù)位脈沖和從機發(fā)出的應(yīng)答脈沖,主機通過拉低單總線以上,產(chǎn)生復(fù)位脈沖,然后主機釋放總線,并進入接收模式。當(dāng)主機釋放總線時,總線由低電平跳變?yōu)楦唠娖綍r產(chǎn)生一上升沿,單總線器件檢測到這上升沿后,延時,接著單總線器件通過拉低總線產(chǎn)生應(yīng)答脈沖。當(dāng)主機接收到從機應(yīng)答脈沖后,說明此時有單總線器件在線,然后主機就開始對從機進行命令和功能命令的操作。在每一個寫、寫或讀時序中,總線只能傳輸一位數(shù)據(jù)。所有的讀寫時序至少需要,且每兩個獨立的時序之間至少需要的恢復(fù)時間。讀寫時序均起始于主機拉低總線。在寫時序中,主機拉低總線后保持至少的低電平則向單總線器件寫。單總線器件在主機發(fā)出讀時序時才向主機傳送數(shù)據(jù),所以當(dāng)主機向單總線器件發(fā)出數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時序,以便單總線能傳輸數(shù)據(jù)。在主機發(fā)出讀時序之后,單總線器件才開始在總線上發(fā)送或,若單總線器件發(fā)送,則保持總線高電平;若發(fā)送,則拉低總線。單總線器件發(fā)送數(shù)據(jù)之后,需保持有效的時間,因而,主機在讀時序期間必須釋放總線,并且必須在之內(nèi)對總線狀態(tài)進行采樣,接收從機發(fā)送的數(shù)據(jù)。第1.4節(jié)單總線技術(shù)的器件為了區(qū)分不同的單總線器件,廠家在生產(chǎn)單總線器件時要刻錄一個位的二進制代碼,用于標(biāo)明單總線器件的號。目前,單總線器件的主要有數(shù)字溫度傳感器〔如、/轉(zhuǎn)換器〔如門禁、身份識別器〔如、單總線控制器〔如等等。其中數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式等。其型號多種多樣,有,等等,主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。由于其耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域,目前有著廣泛的應(yīng)用,故我們選擇芯片來進行下面的設(shè)計。
第2章DS18B20簡介第2.1節(jié)DS18B20的封裝與管腳芯片的常見封裝為,如圖2.1所示,也就是普通直插三極管的樣子。也有其他形式的封裝,如圖2.2所示的封裝以及圖2.3所示的封裝。各種封裝的圖示及引腳圖如圖2.12.3所示。圖2.1TO-92封裝圖2.2SO封裝圖2.3μSOP封裝第2.2節(jié)DS18B20內(nèi)部結(jié)構(gòu)主要由部分組成:光刻、溫度敏感器件、高速暫存存儲器和溫度報警觸發(fā)器、。光刻中的序列號是出廠前被光刻好的,它可以看作是該的地址序列碼。光刻的排列是:開始位是產(chǎn)品類型標(biāo)號,接著的位是該自身的序列號,最后位是前面位的循環(huán)冗余校驗碼,可由下式得到:。光刻的作用是使每一個都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個的目的。光刻保存芯片的唯一的編碼。高速暫存存儲器高速暫存存儲器由個字節(jié)組成。高速暫存存儲器包含個連續(xù)的字節(jié),存放測得的溫度的補碼、和的拷貝數(shù)據(jù)、計數(shù)器余值和校驗等數(shù)據(jù),其結(jié)構(gòu)如圖2.4所示。其中所有數(shù)據(jù)均以最低有效位在前的方式讀寫。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第和第個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。對應(yīng)的溫度計算規(guī)則為:當(dāng)符號位時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)時,先將補碼變?yōu)樵a,再計算十進制值。表2是對應(yīng)的一部分溫度值。第九個字節(jié)是冗余檢驗字節(jié)。圖2.4存儲器由于芯片可以工作在寄生電源模式下工作,該模式允許工作在無外部電源的狀態(tài)。當(dāng)總線為高電平時,寄生電源由單總線通過引腳,此時可以從總線得到能量,并將得到的能量儲存到寄生電源儲能電容中,當(dāng)總線為低電平時釋放能量供給器件工作使用。簡單的說就是在信號線為高電平的時間周期內(nèi),把能量儲存在內(nèi)部的電容器中;在信號線為低電平期間,由存儲在電容器內(nèi)的電荷供電。所以,當(dāng)工作在寄生電源模式時,引腳必須接地。工作時信號線須接的上拉電阻,以保證信號線有足夠的驅(qū)動能力。一個典型的硬件原理圖如圖2.5所示。圖2.5硬件原理圖如上圖所示,芯片通過達拉斯公司的單總線協(xié)議依靠一個單線端口通訊,當(dāng)全部器件經(jīng)由一個三態(tài)端口或者漏極開路端口與總線連接時,控制線需要連接一個弱上拉電阻。在多只連接時,每個都擁有一個全球唯一的位序列號,在這個總線系統(tǒng)中,微處理器依靠每個器件獨有的位片序列號辨認(rèn)總線上的器件并記錄總線上的器件地址,從而允許多只同時連接在一條單線總線上。因此,可以很輕松地利用一個微處理器去控制很多分布在不同區(qū)域的,這一特性在環(huán)境控制、探測建筑物、儀器等溫度以及過程監(jiān)測和控制等方面都非常有用。對于的電路連接,除了上面所說的傳統(tǒng)的外部電源供電時的電路連接圖,也可以工作在上文所述的寄生電源模式中。圖2.6表示了工作在寄生電源模式下的硬件原理圖。這樣可以使工作在寄生電源模式下,不用額外的電源就可以實時采集位于多個地點的溫度信息。圖2.6寄生電源模式硬件原理圖第2.3節(jié)DS1820時序及工作方式時序如圖2.72.9所示,時序波形的電平分為種類型:主機作用的高低電平、由輸出的高低電平和由上拉電阻拉起的高電平〔后種情況主機釋放信號線。閑置時信號線保持高電平,對的任何操作〔如讀、寫、復(fù)位等都是由主機對信號線的電平由邏輯高電平拉至低電平開始。圖2.7復(fù)位時序復(fù)位時序是工作的基礎(chǔ)。任何設(shè)備與間的通訊都需要以初始化序列開始。一個復(fù)位脈沖跟著一個存在脈沖表明已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。在初始化序列期間,總線控制器拉低總線并保持以發(fā)出一個復(fù)位脈沖,然后釋放總線,進入接受狀態(tài)。單總線由上拉電阻拉倒高電平。當(dāng)探測到/引腳上的上升沿后,等待,然后發(fā)出一個由的低電平信號構(gòu)成的存在脈沖。初始化時序見圖2.7。圖2.8寫時序的數(shù)據(jù)讀寫是通過時序處理位來確認(rèn)信息交換的。有兩種寫時序:寫時序和寫時序??偩€控制器通過寫時序?qū)戇壿嫷?寫時序?qū)戇壿嫷?。所有寫時序必須最少持續(xù),包括兩個寫周期之間至少的恢復(fù)時間。當(dāng)總線控制器把數(shù)據(jù)線從邏輯高電平拉到低電平的時候,寫時序開始??偩€控制器要生產(chǎn)一個寫時序,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時序開始后的釋放總線。當(dāng)總線被釋放的時候,上拉電阻將拉高總線??偪刂破饕梢粋€寫時序,必須把數(shù)據(jù)線拉到低電平并持續(xù)保持至少。總線控制器初始化寫時序后,在一個到的窗口內(nèi)對/線采樣。如果線上是高電平,就是寫;如果線上是低電平,就是寫。寫時序見圖2.8。圖2.9讀時序當(dāng)總線控制器發(fā)起讀時序時,僅被用來傳輸數(shù)據(jù)給控制器。因此,總線控制器在發(fā)出讀暫存器指令或讀電源模式指令后必須立刻開始讀時序,可以提供請求信息。除此之外,總線控制器在發(fā)出發(fā)送溫度轉(zhuǎn)換指令或召回指令之后讀時序。所有讀時序必須最少,包括兩個讀周期間至少的恢復(fù)時間。當(dāng)總線控制器把數(shù)據(jù)線從高電平拉到低電平時,讀時序開始,數(shù)據(jù)線必須至少保持,然后總線被釋放。在總線控制器發(fā)出讀時序后,通過拉高或拉低總線上來傳輸或。當(dāng)傳輸邏輯結(jié)束后,總線將被釋放,通過上拉電阻回到上升沿狀態(tài)。從輸出的數(shù)據(jù)在讀時序的下降沿出現(xiàn)后內(nèi)有效。因此,總線控制器在讀時序開始后必須停止把/腳驅(qū)動為低電平,以讀取/腳狀態(tài)。讀時序見圖2.9。由時序圖可知,單總線的通信協(xié)議由種信號類別組成:復(fù)位脈沖、存在脈沖、寫、寫、讀、讀。這些信號除了存在脈沖之外,均由總線主機產(chǎn)生。主機通過單總線對的操作必須首先由操作命令其中之一開始?,F(xiàn)以單總線只掛接一個讀取其中的溫度數(shù)據(jù)為例,說明其工作過程如下:<1>、主機產(chǎn)生復(fù)位脈沖,返回響應(yīng)脈沖;<2>、主機寫入〔,跳過命令,該命令為種操作命令之一;<3>、主機寫入溫度轉(zhuǎn)換命令;<4>、主機再次產(chǎn)生復(fù)位脈沖,返回響應(yīng)脈沖;<5>、主機寫入〔,跳過命令;<6>、主機寫入讀暫存存儲器命令;<7>、讀暫存存儲器的溫度數(shù)據(jù)。第3章控制器設(shè)計第3.1節(jié)控制器結(jié)構(gòu)控制器結(jié)構(gòu)如圖3.1所示,控制器由部分組成,分別是邏輯控制部分、單總線時序控制部分、數(shù)據(jù)緩存部分以及計數(shù)器部分。邏輯控制部分用于實現(xiàn)與的通信,其中為位雙向數(shù)據(jù)線,為啟動信號,下降沿有效。與為地址信號,其不同組合決定控制器的工作狀態(tài)。當(dāng)時,控制器對執(zhí)行復(fù)位操作;當(dāng)時,控制器執(zhí)行寫入操作;當(dāng)時,控制器執(zhí)行讀出操作??刂破饔赏獠刻峁┑臅r鐘信號,用來產(chǎn)生的計數(shù)周期,控制器以為一個時間片形成的讀寫時序。讀寫周期則由計數(shù)器的計數(shù)輸出值控制。單總線時序控制部分的主要功能是產(chǎn)生單總線的讀寫時序,并向輸出控制命令,讀出測得的數(shù)字溫度值及其他輸出信息。圖3.1控制器結(jié)構(gòu)第3.2節(jié)讀寫時序的實現(xiàn)要求引腳驅(qū)動必須是漏極開路引腳,控制器用三態(tài)門與連接,如圖3.2所示。其中為三態(tài)門控制信號,當(dāng)時輸出信號,時輸入信號??刂破鞑捎米鳛榛居嫊r單位,可以保證的時序關(guān)系留有一定的緩沖余地。圖3.2輸出引腳連接示意圖下面采用語言進行程序設(shè)計,實現(xiàn)以下功能:<1>、當(dāng)從機模塊檢測到主機發(fā)送的復(fù)位信號時,相應(yīng)復(fù)位信號;<2>、從機接收主機發(fā)送的命令;<3>、從機接收主機發(fā)送的信號;<4>、從機接收主機發(fā)送的命令和/數(shù)據(jù);library
IEEE;
use
IEEE.STD_LOGIC_1164.ALL;
use
IEEE.STD_LOGIC_ARITH.ALL;
use
IEEE.STD_LOGIC_UNSIGNED.ALL;
entity
ds18B20
isport<clk
:
in
std_logic;
50MHz
dq
:
inout
std_logic;
--DQ數(shù)據(jù)輸出輸入端
rst:
in
std_logic;
LED
:
out
std_logic;
--指示標(biāo)志,用來顯示程序進行到哪一步LED2
:
out
std_logic;
LED3
:
out
std_logic;
dataout1,dataout2,dataout3
:
out
std_logic_vector<6
downto
0
>>;
--數(shù)據(jù)輸出端end
ds18B20;
architecture
Behavioral
of
ds18B20
isTYPE
STATE_TYPE
is
<RESET,CMD_CC,WRITE_BYTE,WRITE_LOW,WRITE_HIGH,READ_BIT,
<span
style="white-space:pre">
</span>CMD_44,CMD_BE,WAIT800MS,GET_TMP,WAIT4MS>;
--狀態(tài)機
signal
STATE:
STATE_TYPE:=RESET;
--初始化狀態(tài)機signal
clk_temp
:
std_logic:='0';
--監(jiān)測總線上的數(shù)據(jù)signal
clk1m
:
std_logic;
--分頻后得到的1M時鐘
signal
cp:
std_logic;
--
為時序而產(chǎn)生的1ms時鐘begin分頻程序,分到1MHzClkDivider:process
<clk,clk_temp>
beginif
rising_edge<clk>
then
if
<count
=
24>
thencount
<=
0;
clk_temp<=
not
clk_temp;
elsecount
<=
count
+1;
end
if;
end
if;
clk1m<=clk_temp;
end
Process;
為時序產(chǎn)生1ms時鐘process
<clk1m>
variable
n:
integer
range
0
to
12000:=0;
begincp
1ms
if
rising_edge<clk1m>
then
n:=n+1;
if
<n>12000>
then
n:=0;
cp<=not
cp;
end
if;
end
if;
end
Process;
STATE_TRANSITION:process<STATE,clk1m>
--主程序beginif
rising_edge<clk1m>
then
if<rst='0'>
then
STATE<=RESET;
elsecase
STATE
iswhen
RESET=>
--如果處在復(fù)位狀態(tài)
LED2<='0';
LED3<='0';
if
<cnt>=0
and
cnt<500>
then--
500μs的復(fù)位低電平
dq<='0';
--dq作為輸出
cnt<=cnt+1;
STATE<=RESET;
--在一定時序內(nèi)保持復(fù)位狀態(tài)
elsif
<cnt>=500
and
cnt<510>
then
dq<='Z';
--高阻態(tài)再輸入下一級電路的話,對下級電路無任何影響,和沒接一樣,高阻態(tài)可以應(yīng)用在inout端口里面,這樣在inout沒有輸出的時候就弄個高阻態(tài),這樣就其電平就可以由外面的輸入信號決定了
cnt<=cnt+1;
STATE<=RESET;
--拉高dq
elsif
<cnt>=510
and
cnt<750>
then--
240μstemp<=dq;
--dq作為輸入〔對于控制器來說是輸入,對于DS18b20來說是輸出
if<cnt=580>
thentemp<=dq;
if<temp='1'>
then--如果temp為1說明DS18B20存在〔因為檢測到了存在脈沖
LED<='0';
else
LED<='1';
end
if;
end
if;
cnt<=cnt+1;
STATE<=RESET;
elsif
<cnt>=750>
then--初始化時序結(jié)束
cnt<=0;
--計數(shù)器清零
STATE<=CMD_CC;
--復(fù)位過程伴隨著忽略rom指令"CC"end
if;
when
CMD_CC=>
--忽略rom指令"CC"
LED2<='1';
LED3<='0';
write_temp<="11001100";
--將write_temp設(shè)為"11001100"
STATE<=WRITE_BYTE;
when
WRITE_BYTE=>
case
WRITE_BYTE_CNT
iswhen
0
to
7=>
if
<write_temp<WRITE_BYTE_CNT>='0'>
then--判斷當(dāng)前write_temp第WRITE_BYTE_CNT上是否為'0'
STATE<=WRITE_LOW;
--如果當(dāng)前write_temp第WRITE_BYTE_CNT上是'0',進入WRITE_LOW狀態(tài)〔即對DS18b20寫低
LED3<='1';
else
STATE<=WRITE_HIGH;
--如果當(dāng)前write_temp第WRITE_BYTE_CNT上是'1',進入WRITE_HIGH狀態(tài)〔即對DS18b20寫高end
if;
WRITE_BYTE_CNT<=WRITE_BYTE_CNT+1;
--判斷write_temp的下一位when
8=>
if
<WRITE_BYTE_FLAG=0>
then--
第一次寫0XCC完畢
STATE<=CMD_44;
--
WRITE_BYTE_FLAG<=1;
elsif
<WRITE_BYTE_FLAG=1>
then--寫0X44完畢
STATE<=RESET;
WRITE_BYTE_FLAG<=2;
elsif
<WRITE_BYTE_FLAG=2>
then--第二次寫0XCC完畢
STATE<=CMD_BE;
WRITE_BYTE_FLAG<=3;
elsif
<WRITE_BYTE_FLAG=3>
then--寫0XBE完畢
STATE<=GET_TMP;
WRITE_BYTE_FLAG<=0;
end
if;
WRITE_BYTE_CNT<=0;
when
others=>STATE<=RESET;
endcase;
when
WRITE_LOW=>
--進入寫0時序,參看前面
LED3<='1';
case
WRITE_LOW_CNT
iswhen
0=>
dq<='0';
if
<cnt=70>
then--等待時序
cnt<=0;
WRITE_LOW_CNT<=1;
else
cnt<=cnt+1;
end
if;
when
1=>
dq<='Z';
if
<cnt=5>
then
cnt<=0;
WRITE_LOW_CNT<=2;
else
cnt<=cnt+1;
end
if;
when
2=>
STATE<=WRITE_BYTE;
WRITE_LOW_CNT<=0;
when
others=>WRITE_LOW_CNT<=0;
endcase;
when
WRITE_HIGH=>
--進入寫1時序,參看前面case
WRITE_HIGH_CNT
iswhen
0=>
dq<='0';
if
<cnt=8>
then
cnt<=0;
WRITE_HIGH_CNT<=1;
else
cnt<=cnt+1;
end
if;
when
1=>
dq<='Z';
if
<cnt=72>
then
cnt<=0;
WRITE_HIGH_CNT<=2;
else
cnt<=cnt+1;
end
if;
when
2=>
STATE<=WRITE_BYTE;
WRITE_HIGH_CNT<=0;
when
others=>WRITE_HIGH_CNT<=0;
endcase;
when
CMD_44=>
write_temp<="01000100";
--寫指令44h
STATE<=WRITE_BYTE;
when
CMD_BE=>
write_temp<="10111110";
--寫指令BEh
STATE<=WRITE_BYTE;
when
READ_BIT=>
case
READ_BIT_CNT
iswhen
0=>
dq<='0';
--4μs的低電平
if
<cnt=4>
then
READ_BIT_CNT<=1;
cnt<=0;
else
cnt<=cnt+1;
end
if;
when
1=>
dq<='Z';
--4μs的高電平
if
<cnt=4>
then
READ_BIT_CNT<=2;
cnt<=0;
else
cnt<=cnt+1;
end
if;
when
2=>
dq<='Z';
TMP_BIT<=dq;
--12μs讀出數(shù)據(jù)
,就是最后一次賦值的結(jié)果。
if
<cnt=4>
then
READ_BIT_CNT<=3;
cnt<=0;
else
cnt<=cnt+1;
end
if;
when
3=>
dq<='Z';
--控制器拉高總線
if
<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘋果素描課件教學(xué)課件
- 質(zhì)量方針目標(biāo)培訓(xùn)課件
- 內(nèi)分泌治療儀設(shè)備使用
- 學(xué)涯規(guī)劃演講
- 你好法語課件教學(xué)課件
- 企業(yè)文化工作規(guī)劃行動方案
- 高三化學(xué)一輪復(fù)習(xí) 原電池課件
- 第二章 相互作用-共點力的平衡 2025年高考物理基礎(chǔ)專項復(fù)習(xí)
- 3.4 1沉淀溶解平衡 課件 高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 防臺風(fēng)暴雨演練動員大會
- 中學(xué)班會-奮戰(zhàn)“冬三月”課件
- 人工智能與機器人(小學(xué)版第1單元)課件
- 高考語文總復(fù)習(xí)必備課件作文中古詩詞的運用
- 全科醫(yī)學(xué):常見急診的處理和轉(zhuǎn)診課件
- 支氣管肺炎完整版課件
- 二年級下冊道德與法治課件 節(jié)約糧食 北師大版
- 寶石的分類及命名課件
- 環(huán)境影響評價文件編寫
- 教培用針灸治療學(xué)痤瘡課件
- 部編版四年級語文上冊PPT課件(精美版)21 古詩三首
- 公益廣告廣告策劃書
評論
0/150
提交評論