基于VHDL的單總線從機讀寫控制器_第1頁
基于VHDL的單總線從機讀寫控制器_第2頁
基于VHDL的單總線從機讀寫控制器_第3頁
基于VHDL的單總線從機讀寫控制器_第4頁
基于VHDL的單總線從機讀寫控制器_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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é)議。具有獨特的單總線通信方式以及較高的測量精度,目前在實際生活中獲得了廣泛應用。本文介紹了的基本原理和通信時序,并用軟件模擬單總線時序,實現(xiàn)與的通信。作為電子硬件設(shè)計的主流描述語言,采用層次化的設(shè)計方式,具有電路行為描述能力強、靈活、通用及運算仿真速度快等特點,能夠較容易地實現(xiàn)時序邏輯控制。本文以數(shù)字溫度傳感器為例,設(shè)計一個基于的單總線控制器,并對通信程序進行了仿真測試。本文介紹的單總線控制器,有較強的可擴展性,可以連接多種單總線器件,且微處理器可以不用被迫關(guān)閉中斷,滿足各類對實時性具有嚴格要求的應用。第1章單總線技術(shù)第1.1節(jié)單總線技術(shù)簡介單總線技術(shù)是達拉斯半導體公司推出的一項特有技術(shù)。它采用單根信號線,既可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)可以雙向傳輸。由于這種單總線技術(shù)線路簡單,硬件開銷少,所以其具有成本低廉,便于總線擴展和易于維護等優(yōu)點。單總線適用于單主機系統(tǒng),能夠控制一個或多個從機設(shè)備。主機可以是微控制器,從機可以是單總線器件,它們之間的數(shù)據(jù)交換只通過一條信號線。當只有一個從機設(shè)備時,系統(tǒng)可按單節(jié)點系統(tǒ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單總線硬件接口示意圖單總線要外接一個約的上拉電阻,這樣當總線閑置時,狀態(tài)為高電平。主機和從機之間的通信通過以下三個步驟完成:初始化器件,識別器件,交換數(shù)據(jù)。由于二者是主從結(jié)構(gòu),只有主機呼叫從機時,從機才能答應,因此主機訪問器件必須嚴格遵循單總線命令序列:初始化、命令、功能命令。如果出現(xiàn)序列混亂,器件則不會響應主機〔搜索命令,報警搜索命令除外。根據(jù)以上原理,可以畫出單總線硬件接口原理圖,如圖1.2所示。圖1.2單總線硬件接口原理圖單總線端口為漏極開路,在本文中令單總線外接一個約的上拉電阻,這樣,不管什么原因單總線的閑置狀態(tài)為高電平。如果傳輸過程需要暫時掛起,且要求傳輸過程還能夠繼續(xù)的話,總線必須處于空閑狀態(tài)。位傳輸之間的恢復時間沒有限制,只要總線在恢復期間處于空閑狀態(tài)〔即高電平即可。如果總線保持低電平超過則將總線上的所有器件將復位。此外,在使用寄生方式供電時,為了保證單總線器件在某些工作狀態(tài)下〔如溫度轉(zhuǎn)換期間、寫入等具有足夠的電源電流,必須在總線上提供強上拉源,如圖1.2中所示的。第1.3節(jié)單總線技術(shù)的信號方式所有單總線器件要求遵循嚴格的通信協(xié)議,以保證數(shù)據(jù)的完整性。協(xié)議定義了幾種信號類型:復位脈沖、答應脈沖、寫、寫、讀和讀時序。所有的單總線命令序列〔初始化、命令、功能命令都是由這些基本的信號類型組成。這些信號,除了應答脈沖外都是由主機發(fā)出同步信號,并且發(fā)出的所有命令和數(shù)據(jù)都是字節(jié)的低位在前。初始化時序包括主機發(fā)送的復位脈沖和從機發(fā)出的應答脈沖,主機通過拉低單總線以上,產(chǎn)生復位脈沖,然后主機釋放總線,并進入接收模式。當主機釋放總線時,總線由低電平跳變?yōu)楦唠娖綍r產(chǎn)生一上升沿,單總線器件檢測到這上升沿后,延時,接著單總線器件通過拉低總線產(chǎn)生應答脈沖。當主機接收到從機應答脈沖后,說明此時有單總線器件在線,然后主機就開始對從機進行命令和功能命令的操作。在每一個寫、寫或讀時序中,總線只能傳輸一位數(shù)據(jù)。所有的讀寫時序至少需要,且每兩個獨立的時序之間至少需要的恢復時間。讀寫時序均起始于主機拉低總線。在寫時序中,主機拉低總線后保持至少的低電平則向單總線器件寫。單總線器件在主機發(fā)出讀時序時才向主機傳送數(shù)據(jù),所以當主機向單總線器件發(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)單總線器件時要刻錄一個位的二進制代碼,用于標明單總線器件的號。目前,單總線器件的主要有數(shù)字溫度傳感器〔如、/轉(zhuǎn)換器〔如門禁、身份識別器〔如、單總線控制器〔如等等。其中數(shù)字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式等。其型號多種多樣,有,等等,主要根據(jù)應用場合的不同而改變其外觀。封裝后的可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。由于其耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐ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)品類型標號,接著的位是該自身的序列號,最后位是前面位的循環(huán)冗余校驗碼,可由下式得到:。光刻的作用是使每一個都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個的目的。光刻保存芯片的唯一的編碼。高速暫存存儲器高速暫存存儲器由個字節(jié)組成。高速暫存存儲器包含個連續(xù)的字節(jié),存放測得的溫度的補碼、和的拷貝數(shù)據(jù)、計數(shù)器余值和校驗等數(shù)據(jù),其結(jié)構(gòu)如圖2.4所示。其中所有數(shù)據(jù)均以最低有效位在前的方式讀寫。當溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第和第個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。對應的溫度計算規(guī)則為:當符號位時,直接將二進制位轉(zhuǎn)換為十進制;當時,先將補碼變?yōu)樵a,再計算十進制值。表2是對應的一部分溫度值。第九個字節(jié)是冗余檢驗字節(jié)。圖2.4存儲器由于芯片可以工作在寄生電源模式下工作,該模式允許工作在無外部電源的狀態(tài)。當總線為高電平時,寄生電源由單總線通過引腳,此時可以從總線得到能量,并將得到的能量儲存到寄生電源儲能電容中,當總線為低電平時釋放能量供給器件工作使用。簡單的說就是在信號線為高電平的時間周期內(nèi),把能量儲存在內(nèi)部的電容器中;在信號線為低電平期間,由存儲在電容器內(nèi)的電荷供電。所以,當工作在寄生電源模式時,引腳必須接地。工作時信號線須接的上拉電阻,以保證信號線有足夠的驅(qū)動能力。一個典型的硬件原理圖如圖2.5所示。圖2.5硬件原理圖如上圖所示,芯片通過達拉斯公司的單總線協(xié)議依靠一個單線端口通訊,當全部器件經(jīng)由一個三態(tài)端口或者漏極開路端口與總線連接時,控制線需要連接一個弱上拉電阻。在多只連接時,每個都擁有一個全球唯一的位序列號,在這個總線系統(tǒng)中,微處理器依靠每個器件獨有的位片序列號辨認總線上的器件并記錄總線上的器件地址,從而允許多只同時連接在一條單線總線上。因此,可以很輕松地利用一個微處理器去控制很多分布在不同區(qū)域的,這一特性在環(huán)境控制、探測建筑物、儀器等溫度以及過程監(jiān)測和控制等方面都非常有用。對于的電路連接,除了上面所說的傳統(tǒng)的外部電源供電時的電路連接圖,也可以工作在上文所述的寄生電源模式中。圖2.6表示了工作在寄生電源模式下的硬件原理圖。這樣可以使工作在寄生電源模式下,不用額外的電源就可以實時采集位于多個地點的溫度信息。圖2.6寄生電源模式硬件原理圖第2.3節(jié)DS1820時序及工作方式時序如圖2.72.9所示,時序波形的電平分為種類型:主機作用的高低電平、由輸出的高低電平和由上拉電阻拉起的高電平〔后種情況主機釋放信號線。閑置時信號線保持高電平,對的任何操作〔如讀、寫、復位等都是由主機對信號線的電平由邏輯高電平拉至低電平開始。圖2.7復位時序復位時序是工作的基礎(chǔ)。任何設(shè)備與間的通訊都需要以初始化序列開始。一個復位脈沖跟著一個存在脈沖表明已經(jīng)準備好發(fā)送和接收數(shù)據(jù)。在初始化序列期間,總線控制器拉低總線并保持以發(fā)出一個復位脈沖,然后釋放總線,進入接受狀態(tài)。單總線由上拉電阻拉倒高電平。當探測到/引腳上的上升沿后,等待,然后發(fā)出一個由的低電平信號構(gòu)成的存在脈沖。初始化時序見圖2.7。圖2.8寫時序的數(shù)據(jù)讀寫是通過時序處理位來確認信息交換的。有兩種寫時序:寫時序和寫時序。總線控制器通過寫時序?qū)戇壿嫷?寫時序?qū)戇壿嫷?。所有寫時序必須最少持續(xù),包括兩個寫周期之間至少的恢復時間。當總線控制器把數(shù)據(jù)線從邏輯高電平拉到低電平的時候,寫時序開始??偩€控制器要生產(chǎn)一個寫時序,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時序開始后的釋放總線。當總線被釋放的時候,上拉電阻將拉高總線??偪刂破饕梢粋€寫時序,必須把數(shù)據(jù)線拉到低電平并持續(xù)保持至少??偩€控制器初始化寫時序后,在一個到的窗口內(nèi)對/線采樣。如果線上是高電平,就是寫;如果線上是低電平,就是寫。寫時序見圖2.8。圖2.9讀時序當總線控制器發(fā)起讀時序時,僅被用來傳輸數(shù)據(jù)給控制器。因此,總線控制器在發(fā)出讀暫存器指令或讀電源模式指令后必須立刻開始讀時序,可以提供請求信息。除此之外,總線控制器在發(fā)出發(fā)送溫度轉(zhuǎn)換指令或召回指令之后讀時序。所有讀時序必須最少,包括兩個讀周期間至少的恢復時間。當總線控制器把數(shù)據(jù)線從高電平拉到低電平時,讀時序開始,數(shù)據(jù)線必須至少保持,然后總線被釋放。在總線控制器發(fā)出讀時序后,通過拉高或拉低總線上來傳輸或。當傳輸邏輯結(jié)束后,總線將被釋放,通過上拉電阻回到上升沿狀態(tài)。從輸出的數(shù)據(jù)在讀時序的下降沿出現(xiàn)后內(nèi)有效。因此,總線控制器在讀時序開始后必須停止把/腳驅(qū)動為低電平,以讀取/腳狀態(tài)。讀時序見圖2.9。由時序圖可知,單總線的通信協(xié)議由種信號類別組成:復位脈沖、存在脈沖、寫、寫、讀、讀。這些信號除了存在脈沖之外,均由總線主機產(chǎn)生。主機通過單總線對的操作必須首先由操作命令其中之一開始?,F(xiàn)以單總線只掛接一個讀取其中的溫度數(shù)據(jù)為例,說明其工作過程如下:<1>、主機產(chǎn)生復位脈沖,返回響應脈沖;<2>、主機寫入〔,跳過命令,該命令為種操作命令之一;<3>、主機寫入溫度轉(zhuǎn)換命令;<4>、主機再次產(chǎn)生復位脈沖,返回響應脈沖;<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)。當時,控制器對執(zhí)行復位操作;當時,控制器執(zhí)行寫入操作;當時,控制器執(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)門控制信號,當時輸出信號,時輸入信號??刂破鞑捎米鳛榛居嫊r單位,可以保證的時序關(guān)系留有一定的緩沖余地。圖3.2輸出引腳連接示意圖下面采用語言進行程序設(shè)計,實現(xiàn)以下功能:<1>、當從機模塊檢測到主機發(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;

--指示標志,用來顯示程序進行到哪一步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=>

--如果處在復位狀態(tài)

LED2<='0';

LED3<='0';

if

<cnt>=0

and

cnt<500>

then--

500μs的復位低電平

dq<='0';

--dq作為輸出

cnt<=cnt+1;

STATE<=RESET;

--在一定時序內(nèi)保持復位狀態(tài)

elsif

<cnt>=500

and

cnt<510>

then

dq<='Z';

--高阻態(tài)再輸入下一級電路的話,對下級電路無任何影響,和沒接一樣,高阻態(tài)可以應用在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;

--復位過程伴隨著忽略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--判斷當前write_temp第WRITE_BYTE_CNT上是否為'0'

STATE<=WRITE_LOW;

--如果當前write_temp第WRITE_BYTE_CNT上是'0',進入WRITE_LOW狀態(tài)〔即對DS18b20寫低

LED3<='1';

else

STATE<=WRITE_HIGH;

--如果當前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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論