完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>
標(biāo)簽 > 時(shí)序
這里所說(shuō)的時(shí)序其實(shí)就是指時(shí)序圖,又名序列圖、循序圖、順序圖,是一種UML交互圖。它通過(guò)描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。
這里所說(shuō)的時(shí)序其實(shí)就是指時(shí)序圖(Sequence Diagram),又名序列圖、循序圖、順序圖,是一種UML交互圖。它通過(guò)描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個(gè)用例行為時(shí),其中的每條消息對(duì)應(yīng)一個(gè)類操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。組成元素
時(shí)序圖中包括如下元素:角色,對(duì)象,生命線,控制焦點(diǎn)和消息。1、角色(Actor)系統(tǒng)角色,可以是人或者其他系統(tǒng),子系統(tǒng)。2、對(duì)象(Object)對(duì)象代表時(shí)序圖中的對(duì)象在交互中所扮演的角色,位于時(shí)序圖頂部和對(duì)象代表類角色。對(duì)象一般包含以下三種命名方式:第一種方式包含對(duì)象名和類名。第二種方式只顯示類名不顯示對(duì)象名,即為一個(gè)匿名對(duì)象。第三種方式只顯示對(duì)象名不顯示類名。3、生命線(Lifeline)生命線代表時(shí)序圖中的對(duì)象在一段時(shí)期內(nèi)的存在。時(shí)序圖中每個(gè)對(duì)象和底部中心都有一條垂直的虛線,這就是對(duì)象的生命線,對(duì)象間 的消息存在于兩條虛線間。4、控制焦點(diǎn)(Activation)控制焦點(diǎn)代表時(shí)序圖中的對(duì)象執(zhí)行一項(xiàng)操作的時(shí)期,在時(shí)序圖中每條生命線上的窄的矩形代表活動(dòng)期。它可以被理解成C語(yǔ)言語(yǔ)義中一對(duì)花括號(hào)“{}”中的內(nèi)容。5、消息(Message)消息是定義交互和協(xié)作中交換信息的類,用于對(duì)實(shí)體間的通信內(nèi)容建模,信息用于在實(shí)體間傳遞信息。允許實(shí)體請(qǐng)求其他的服務(wù),類角色通過(guò)發(fā)送和接受信息進(jìn)行通信。
這里所說(shuō)的時(shí)序其實(shí)就是指時(shí)序圖(Sequence Diagram),又名序列圖、循序圖、順序圖,是一種UML交互圖。它通過(guò)描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個(gè)用例行為時(shí),其中的每條消息對(duì)應(yīng)一個(gè)類操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。組成元素
時(shí)序圖中包括如下元素:角色,對(duì)象,生命線,控制焦點(diǎn)和消息。1、角色(Actor)系統(tǒng)角色,可以是人或者其他系統(tǒng),子系統(tǒng)。2、對(duì)象(Object)對(duì)象代表時(shí)序圖中的對(duì)象在交互中所扮演的角色,位于時(shí)序圖頂部和對(duì)象代表類角色。對(duì)象一般包含以下三種命名方式:第一種方式包含對(duì)象名和類名。第二種方式只顯示類名不顯示對(duì)象名,即為一個(gè)匿名對(duì)象。第三種方式只顯示對(duì)象名不顯示類名。3、生命線(Lifeline)生命線代表時(shí)序圖中的對(duì)象在一段時(shí)期內(nèi)的存在。時(shí)序圖中每個(gè)對(duì)象和底部中心都有一條垂直的虛線,這就是對(duì)象的生命線,對(duì)象間 的消息存在于兩條虛線間。4、控制焦點(diǎn)(Activation)控制焦點(diǎn)代表時(shí)序圖中的對(duì)象執(zhí)行一項(xiàng)操作的時(shí)期,在時(shí)序圖中每條生命線上的窄的矩形代表活動(dòng)期。它可以被理解成C語(yǔ)言語(yǔ)義中一對(duì)花括號(hào)“{}”中的內(nèi)容。5、消息(Message)消息是定義交互和協(xié)作中交換信息的類,用于對(duì)實(shí)體間的通信內(nèi)容建模,信息用于在實(shí)體間傳遞信息。允許實(shí)體請(qǐng)求其他的服務(wù),類角色通過(guò)發(fā)送和接受信息進(jìn)行通信。
結(jié)構(gòu)
時(shí)序圖描述對(duì)象是如何交互的,并且將重點(diǎn)放在消息序列上。也就是說(shuō),描述消息是如何在對(duì)象間發(fā)送和接收的。時(shí)序圖有兩個(gè)坐標(biāo)軸:縱坐標(biāo)軸顯示時(shí)間,橫坐標(biāo)軸顯示對(duì)象。每一個(gè)對(duì)象的表示方法是:矩形框中寫(xiě)有對(duì)象和 / 或類名,且名字下面有下劃線;同時(shí)有一條縱向的虛線表示對(duì)象在序列中的執(zhí)行情況 ( 即發(fā)送和接收的消息對(duì)象的活動(dòng) ) , 這條虛線稱為對(duì)象的生命線。對(duì)象間的通信用對(duì)象的生命線之間的水平的消息線來(lái)表示,消息線的箭頭說(shuō)明消息的類型,如同步,異步或簡(jiǎn)單 。 瀏覽時(shí)序圖的方法是,從上到下查看對(duì)象間交換的消息,分析那些隨著時(shí)間的流逝而發(fā)生的消息交換。時(shí)序圖中的消息可以是信號(hào)、操作調(diào)用或類似于 C++ 中的 RPC ( Remote Procedure Call,遠(yuǎn)程過(guò)程調(diào)用)或 Java 中的 RMI ( Remote Method Invocation , 遠(yuǎn)程方法調(diào)用)。當(dāng)對(duì)象接收到一個(gè)消息時(shí),該對(duì)象中的一項(xiàng)活動(dòng)就會(huì)啟動(dòng),我們把這一過(guò)程稱做激活 ( Activation )。 激活會(huì)顯示控制焦點(diǎn),表明對(duì)象在某一個(gè)時(shí)間點(diǎn)開(kāi)始執(zhí)行。一個(gè)被激活的對(duì)象或者是執(zhí)行它自身的代碼,或者是等待另一個(gè)對(duì)象的返回(該被激活的對(duì)象已經(jīng)向另一個(gè)對(duì)象發(fā)送了消息)。在圖形上,激活被繪制為對(duì)象生命線上的一個(gè)瘦高矩形。消息可以用消息名及參數(shù)來(lái)標(biāo)識(shí)。消息還可帶有條件表達(dá)式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個(gè)分支是相互排斥的,即在某一時(shí)刻僅可發(fā)送分支中的一個(gè)消息。消息也可以有順序號(hào),但是在時(shí)序圖中,消息的順序號(hào)很少使用,因?yàn)闀r(shí)序圖已經(jīng)將消息的順序顯式地表示出來(lái)了。一個(gè)對(duì)象可以通過(guò)發(fā)送消息來(lái)創(chuàng)建另一個(gè)對(duì)象,當(dāng)一個(gè)對(duì)象被刪除或自我刪除時(shí),該對(duì)象用 “X”標(biāo)識(shí)。
創(chuàng)建步驟
1、確定交互過(guò)程的上下文;2、識(shí)別參與過(guò)程的交互對(duì)象;3、為每個(gè)對(duì)象設(shè)置生命線;4、從初始消息開(kāi)始,依次畫(huà)出隨后消息;5、考慮消息的嵌套,標(biāo)示消息發(fā)生時(shí)的時(shí)間點(diǎn),則采用FOC(focus of control);6、說(shuō)明時(shí)間約束的地點(diǎn)。
如何看懂時(shí)序圖?
操作時(shí)序永遠(yuǎn)使用是任何一片IC芯片的最主要的內(nèi)容。一個(gè)芯片的所有使用細(xì)節(jié)都會(huì)在它的官方器件手冊(cè)上包含。所以使用一個(gè)器件事情,要充分做好的第一件事就是要把它的器件手冊(cè)上有用的內(nèi)容提取,掌握。介于中國(guó)目前的芯片設(shè)計(jì)能力有限,所以大部分的器件都是外國(guó)幾個(gè)IC巨頭比如TI、AT、MAXIM這些公司生產(chǎn)的,器件資料自然也是英文的多,所以,英文的基礎(chǔ)要在閱讀這些數(shù)據(jù)手冊(cè)時(shí)得到提高哦。即便有中文翻譯版本,還是建議看英文原版,看不懂時(shí)不妨再參考中文版,這樣比較利于提高。
我們首先來(lái)看1602的引腳定義,1602的引腳是很整齊的SIP單列直插封裝,所以器件手冊(cè)只給出了引腳的功能數(shù)據(jù)表:
我們只需要關(guān)注以下幾個(gè)管腳:
3腳:VL,液晶顯示偏壓信號(hào),用于調(diào)整LCD1602的顯示對(duì)比度,一般會(huì)外接電位器用以調(diào)整偏壓信號(hào),注意此腳電壓為0時(shí)可以得到最強(qiáng)的對(duì)比度。
4腳:RS,數(shù)據(jù)/命令選擇端,當(dāng)此腳為高電平時(shí),可以對(duì)1602進(jìn)行數(shù)據(jù)字節(jié)的傳輸操作,而此腳為低電平時(shí),則是進(jìn)行命令字節(jié)的傳輸操作。命令字節(jié),即是用來(lái)對(duì)LCD1602的一些工作方式作設(shè)置的字節(jié);數(shù)據(jù)字節(jié),即使用以在1602上顯示的字節(jié)。值得一提的是,LCD1602的數(shù)據(jù)是8位的。
5腳:R/W,讀寫(xiě)選擇端。當(dāng)此腳為高電平可對(duì)LCD1602進(jìn)行讀數(shù)據(jù)操作,反之進(jìn)行寫(xiě)數(shù)據(jù)操作。筆者認(rèn)為,此腳其實(shí)用處不大,直接接地永久置為低電平也不會(huì)影響其正常工作。但是尚未經(jīng)過(guò)復(fù)雜系統(tǒng)驗(yàn)證,保留此意見(jiàn)。
6腳:E,使能信號(hào),其實(shí)是LCD1602的數(shù)據(jù)控制時(shí)鐘信號(hào),利用該信號(hào)的上升沿實(shí)現(xiàn)對(duì)LCD1602的數(shù)據(jù)傳輸。
7~14腳:8位并行數(shù)據(jù)口,使得對(duì)LCD1602的數(shù)據(jù)讀寫(xiě)大為方便。
現(xiàn)在來(lái)看LCD1602的操作時(shí)序:
在此,我們可以先不讀出它的數(shù)據(jù)的狀態(tài)或者數(shù)據(jù)本身。所以只需要看兩個(gè)寫(xiě)時(shí)序:
?、?當(dāng)我們要寫(xiě)指令字,設(shè)置LCD1602的工作方式時(shí):需要把RS置為低電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫(xiě)入。
?、?當(dāng)我們要寫(xiě)入數(shù)據(jù)字,在1602上實(shí)現(xiàn)顯示時(shí):需要把RS置為高電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫(xiě)入。
發(fā)現(xiàn)了么,寫(xiě)指令和寫(xiě)數(shù)據(jù),差別僅僅在于RS的電平不一樣而已。以下是LCD1602的時(shí)序圖:
大家要慢慢學(xué)會(huì)看時(shí)序圖,要知道操作一個(gè)器件的精華便蘊(yùn)藏在其中,看懂看準(zhǔn)了時(shí)序,你操控這個(gè)芯片就是非常容易的事了。1602的時(shí)序是我見(jiàn)過(guò)的一個(gè)最簡(jiǎn)單的時(shí)序:
1、注意時(shí)間軸,如果沒(méi)有標(biāo)明(其實(shí)大部分也都是不標(biāo)明的),那么從左往右的方向?yàn)闀r(shí)間正向軸,即時(shí)間在增長(zhǎng)。
2、上圖框出并注明了看懂此圖的一些常識(shí):
?。?)。時(shí)序圖最左邊一般是某一根引腳的標(biāo)識(shí),表示此行圖線體現(xiàn)該引腳的變化,上圖分別標(biāo)明了RS、R/W、E、DB0~DB7四類引腳的時(shí)序變化。
(2)。有線交叉狀的部分,表示電平在變化,如上所標(biāo)注。
(3)。應(yīng)該比較容易理解,如上圖右上角所示,兩條平行線分別對(duì)應(yīng)高低電平,也正好吻合(2)中電平變化的說(shuō)法。
?。?)。上圖下,密封的菱形部分,注意要密封,表示數(shù)據(jù)有效,Valid Data這個(gè)詞也顯示了這點(diǎn)。
3、需要十分嚴(yán)重注意的是,時(shí)序圖里各個(gè)引腳的電平變化,基于的時(shí)間軸是一致的。一定要嚴(yán)格按照時(shí)間軸的增長(zhǎng)方向來(lái)精確地觀察時(shí)序圖。要讓器件嚴(yán)格的遵守時(shí)序圖的變化。在類似于18B20這樣的單總線器件對(duì)此要求尤為嚴(yán)格。
4、以上幾點(diǎn),并不是LCD1602的時(shí)序圖所特有的,絕大部分的時(shí)序圖都遵循著這樣的一般規(guī)則,所以大家要慢慢的習(xí)慣于這樣的規(guī)則。
也許你還注意到了上面有許多關(guān)于時(shí)間的標(biāo)注,這也是個(gè)十分重要的信息,這些時(shí)間的標(biāo)注表明了某些狀態(tài)所要維持的最短或最長(zhǎng)時(shí)間。因?yàn)槠骷墓ぷ魉俣纫彩怯邢薜?,一般都跟不上主控芯片的速度,所以它們直接之間要有時(shí)序配合。話說(shuō)現(xiàn)在各種處理器的主頻也是瘋狂增長(zhǎng),日后搞不好出現(xiàn)個(gè)雙核單片機(jī)也不一定就是夢(mèng)話。下面是時(shí)序參數(shù)表:
大家要懂得估計(jì)主控芯片的指令時(shí)間,可以在官方數(shù)據(jù)手冊(cè)上查到MCU的一些級(jí)別參數(shù)。比如我們現(xiàn)在用AVR M16做為主控芯片,外部12MHz晶振,指令周期就是一個(gè)時(shí)鐘周期為(2/12MHz)s,所以至少確定了它執(zhí)行一條指令的時(shí)間是us級(jí)別的。我們看到,以上給的時(shí)間參數(shù)全部是ns級(jí)別的,所以即便我們?cè)诔绦蚶锊患友訒r(shí)程序,也應(yīng)該可以很好的配合LCD1602的時(shí)序要求了。怎么看這個(gè)表呢?很簡(jiǎn)單,我們?cè)跁r(shí)序圖里可以找到TR1,對(duì)應(yīng)時(shí)序參數(shù)表,可以查到這個(gè)是E上升沿/下降沿時(shí)間,最大值為25ns,表示E引腳上的電平變化,必須在最大為25ns之內(nèi)的時(shí)間完成。大家看是不是這個(gè)意思?
現(xiàn)在我來(lái)解讀我對(duì)這個(gè)時(shí)序圖的理解:
當(dāng)要寫(xiě)命令字節(jié)的時(shí)候,時(shí)間由左往右,RS變?yōu)榈碗娖?,R/W變?yōu)榈碗娖?,注意看是RS的狀態(tài)先變化完成。然后這時(shí),DB0~DB7上數(shù)據(jù)進(jìn)入有效階段,接著E引腳有一個(gè)整脈沖的跳變,接著要維持時(shí)間最小值為tpw=400ns的E脈沖寬度。然后E引腳負(fù)跳變,RS電平變化,R/W電平變化。這樣便是一個(gè)完整的LCD1602寫(xiě)命令的時(shí)序。
建立時(shí)間(Tsu)是指在時(shí)鐘上升沿到來(lái)之前數(shù)據(jù)必須保持穩(wěn)定的時(shí)間,保持時(shí)間(Th)是指在時(shí)鐘上升沿到來(lái)以后數(shù)據(jù)必須保持穩(wěn)定的時(shí)間。一個(gè)數(shù)據(jù)需要在時(shí)鐘的上...
電源時(shí)序器能夠按照由前級(jí)設(shè)備到后級(jí)設(shè)備逐個(gè)順序啟動(dòng)電源,關(guān)閉供電電源時(shí)則由后級(jí)到前級(jí)的順序關(guān)閉各類用電設(shè)備,這樣就能有效的統(tǒng)一管理和控制各類用電設(shè)備,避...
分析和預(yù)測(cè)時(shí)序數(shù)據(jù)的主要方法,如何使用Python處理時(shí)序數(shù)據(jù)
讓我們從一個(gè)樸素的假設(shè)開(kāi)始——“明天會(huì)和今天一樣”,但是我們并不使用類似y^t=y(t-1)這樣的模型(這其實(shí)是一個(gè)適用于任意時(shí)序預(yù)測(cè)問(wèn)題的很好的基線,...
如圖1,LLC有兩個(gè)諧振頻率。一個(gè)由諧振分量 Lr 和 Cr 確定。另一個(gè)由 Lm、Cr 和負(fù)載條件確定。隨著負(fù)載越來(lái)越重,諧振頻率將向更高的頻率移動(dòng)。...
大多數(shù)FPGA芯片是基于 SRAM 的結(jié)構(gòu)的, 而 SRAM 單元中的數(shù)據(jù)掉電就會(huì)丟失,因此系統(tǒng)上電后,必須要由配置電路將正確的配置數(shù)據(jù)加載到 SRAM...
在簡(jiǎn)單電路中,當(dāng)頻率較低時(shí),數(shù)字信號(hào)的邊沿時(shí)間可以忽略時(shí),無(wú)需考慮時(shí)序約束。但在復(fù)雜電路中,為了減少系統(tǒng)中各部分延時(shí),使系統(tǒng)協(xié)同工作,提高運(yùn)行頻率,需要...
做嵌入式系統(tǒng)開(kāi)發(fā),少不了數(shù)電模電的知識(shí)
做嵌入式系統(tǒng)開(kāi)發(fā),經(jīng)常要接觸硬件。做嵌入式開(kāi)發(fā)對(duì)數(shù)字電路和模擬電路要有一定的了解。這樣才能深入的研究下去。下面我們簡(jiǎn)單的介紹嵌入式開(kāi)發(fā)中的一些硬件相關(guān)的知識(shí)。
2017-12-01 標(biāo)簽:譯碼器嵌入式開(kāi)發(fā)時(shí)序 1.4萬(wàn) 0
類別:存儲(chǔ)器技術(shù) 2011-07-12 標(biāo)簽:DDR時(shí)序
C語(yǔ)言指令與匯編指令總線時(shí)序關(guān)系立即下載
類別:C語(yǔ)言|源代碼 2011-06-09 標(biāo)簽:指令C語(yǔ)言總線
最近是跟內(nèi)存耗上了,其一是手里沒(méi)有其它硬件可測(cè),更重要的是想趁著這段時(shí)間,把內(nèi)存與性能之間的影響都慢慢測(cè)一下。今天測(cè)的就是時(shí)序與內(nèi)存性能之間的關(guān)系了。時(shí)...
組合電路中0型冒險(xiǎn)和1型冒險(xiǎn)及其消除方法
什么是競(jìng)爭(zhēng)和冒險(xiǎn)? (1)競(jìng)爭(zhēng) 在一個(gè)組合電路當(dāng)中,當(dāng)某一個(gè)變量經(jīng)過(guò)兩條以上的路徑到達(dá)輸出端的時(shí)候,由于每條路徑上的延遲時(shí)間的不同,到達(dá)終點(diǎn)的時(shí)間就會(huì)有...
今天要介紹的時(shí)序分析概念是fanout。中文名是扇出。指的是指定pin或者port的輸出端口數(shù)。 合理的選擇fanout的數(shù)目對(duì)設(shè)計(jì)來(lái)說(shuō)是非常重要的,f...
2021-11-26 標(biāo)簽:驅(qū)動(dòng)輸出端口時(shí)序 1.4萬(wàn) 0
時(shí)序邏輯電路的特點(diǎn) 在第三章所討論的組合邏輯電路中,任一時(shí)刻的輸出信號(hào)僅僅取決于該時(shí)刻的輸入信號(hào),而與電路原來(lái)
2009-09-30 標(biāo)簽:時(shí)序 1.0萬(wàn) 0
51 系列單片機(jī)具有完善的總線接口時(shí)序,可以擴(kuò)展控制對(duì)象,其直接尋址能力達(dá)到64k( 2的16次方) 。
何為信號(hào)完整性的分析信號(hào)完整性包含:波形完整性(Waveformintegrity)時(shí)序完整性(Timingintegrity)電源完整性(Poweri...
2023-08-17 標(biāo)簽:信號(hào)時(shí)序電路系統(tǒng) 5754 0
關(guān)于打拍優(yōu)化時(shí)序你真的全面了解嗎?
如果你參加過(guò)IC校招面試,自然會(huì)被問(wèn)到“setup/hold的概念,以及setup/hold違例怎么辦?”
時(shí)鐘的時(shí)序特性主要分為抖動(dòng)(Jitter)、偏移(Skew)、占空比失真(Duty Cycle DistorTIon)3點(diǎn)。對(duì)于低速設(shè)計(jì),基本不用考慮這...
編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專題
電機(jī)控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動(dòng)駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無(wú)刷電機(jī) | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機(jī) | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進(jìn)電機(jī) | SPWM | 充電樁 | IPM | 機(jī)器視覺(jué) | 無(wú)人機(jī) | 三菱電機(jī) | ST |
伺服電機(jī) | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國(guó)民技術(shù) | Microchip |
Arduino | BeagleBone | 樹(shù)莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |