欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一款簡(jiǎn)單強(qiáng)大的時(shí)序圖繪制工具

硬件攻城獅 ? 來(lái)源: FunIO ? 2023-08-15 12:26 ? 次閱讀

今天分享一個(gè)簡(jiǎn)單強(qiáng)大的時(shí)序圖繪制工具——WaveDrom

WaveDrom[1]

Digital Timing Diagram everywhere

WaveDrom draws your Timing Diagram or Waveform from simple textual description.It comes with description language, rendering engine and the editor.WaveDrom editor works in the browser or can be installed on your system.Rendering engine can be embeded into any webpage.

Wavedrom 是一款功能強(qiáng)大且簡(jiǎn)單易用的文本轉(zhuǎn)圖表工具,被廣泛應(yīng)用于生成時(shí)序圖、波形圖等交互式波形。其特點(diǎn)在于使用簡(jiǎn)單的文本語(yǔ)法,使得開(kāi)發(fā)人員能夠以可視化的方式表示數(shù)字信號(hào)和時(shí)間序列數(shù)據(jù)。Wavedrom 的優(yōu)勢(shì)在于其高度靈活性和可擴(kuò)展性,使用戶能夠快速繪制復(fù)雜的波形和圖表,并輕松與其他文檔和代碼進(jìn)行整合。

Wavedrom 的基本語(yǔ)法相對(duì)簡(jiǎn)單,以 JSON 對(duì)象或簡(jiǎn)潔的文本描述波形和時(shí)序信息。開(kāi)發(fā)人員只需編寫簡(jiǎn)短的描述,即可生成直觀的波形圖。通過(guò)使用不同的標(biāo)記和元素,用戶可以定義時(shí)序圖中的信號(hào)波形、時(shí)鐘周期、狀態(tài)轉(zhuǎn)換等內(nèi)容。Wavedrom 支持自定義樣式和布局,用戶可以根據(jù)需求美化波形圖,增加標(biāo)簽和注釋以增強(qiáng)可讀性。

時(shí)序圖是 Wavedrom 最常見(jiàn)的用途之一,通過(guò) Wavedrom 繪制的時(shí)序圖可以清晰地展示數(shù)字信號(hào)和數(shù)據(jù)的傳輸過(guò)程。例如,在硬件設(shè)計(jì)中,時(shí)序圖可以用于描述寄存器讀寫、信號(hào)傳輸和時(shí)鐘脈沖的情況,從而幫助開(kāi)發(fā)人員更好地理解和分析系統(tǒng)的工作狀態(tài)。

值得一提的是,Wavedrom 不僅可以獨(dú)立使用,還可以與 Markdown 等文檔格式無(wú)縫整合。通過(guò)將 Wavedrom 圖表代碼嵌入文檔中,開(kāi)發(fā)人員可以直接在文檔中呈現(xiàn)交互式的波形圖,提升文檔的可讀性和交互性。

總體來(lái)說(shuō),Wavedrom 是一個(gè)強(qiáng)大而簡(jiǎn)便的文本轉(zhuǎn)圖表工具,適用于各種應(yīng)用場(chǎng)景,如硬件設(shè)計(jì)、軟件開(kāi)發(fā)、文檔編寫等。其簡(jiǎn)單的語(yǔ)法和可視化的輸出,為開(kāi)發(fā)人員提供了一個(gè)高效、直觀的工具,幫助他們更好地表達(dá)和展示數(shù)字信號(hào)和時(shí)間序列數(shù)據(jù)。

用法和示例

WaveDrom 是一個(gè)基于 JavaScript 的應(yīng)用程序。WaveJSON 是一種描述數(shù)字時(shí)序圖的格式。WaveDrom 可以直接在瀏覽器中渲染這些圖表。"signal"元素是 WaveLane 的數(shù)組。每個(gè) WaveLane 都有兩個(gè)必填字段:"name"和"wave"。

WaveDrom 是一個(gè)強(qiáng)大的工具,可用于可視化數(shù)字信號(hào)和時(shí)序數(shù)據(jù)。通過(guò)使用 WaveJSON 格式來(lái)描述信號(hào)波形,用戶可以輕松地定義時(shí)序圖的各個(gè)部分,包括信號(hào)波形的名稱、周期和狀態(tài)。WaveDrom 支持多個(gè) WaveLane,可以同時(shí)顯示多個(gè)信號(hào)波形,從而實(shí)現(xiàn)更復(fù)雜的時(shí)序圖表。

"wave"字段是 WaveLane 的關(guān)鍵部分,用于定義信號(hào)波形。它由一系列字符組成,包括數(shù)字 0 和 1,代表數(shù)字信號(hào)的高和低電平,以及".",代表未定義或無(wú)效狀態(tài)。此外,WaveDrom 還支持其他特殊字符,如"p"代表時(shí)鐘周期,"n"代表一個(gè)時(shí)鐘周期內(nèi)的半個(gè)周期,"|"用于分隔不同的時(shí)鐘周期。

通過(guò)將這些 WaveLane 組合成一個(gè)"signal"數(shù)組,并為每個(gè) WaveLane 指定名稱和波形描述,用戶可以創(chuàng)建詳細(xì)且直觀的數(shù)字時(shí)序圖。WaveDrom 渲染引擎會(huì)將這些描述解析并在瀏覽器中實(shí)時(shí)繪制出時(shí)序圖形。

總的來(lái)說(shuō),WaveDrom 提供了一種簡(jiǎn)單但強(qiáng)大的方式,通過(guò) WaveJSON 格式和 WaveLane 的組織,使用戶能夠在瀏覽器中生成各種數(shù)字時(shí)序圖。它在硬件設(shè)計(jì)、嵌入式系統(tǒng)開(kāi)發(fā)、通信協(xié)議分析等領(lǐng)域中有著廣泛的應(yīng)用,幫助開(kāi)發(fā)人員更好地理解和分析數(shù)字信號(hào)的行為和傳輸過(guò)程。

信號(hào)

從一個(gè)簡(jiǎn)單的例子開(kāi)始。下面的代碼將創(chuàng)建一個(gè)名為"Alfa"的 1 位信號(hào),并隨時(shí)間改變其狀態(tài)。

{"signal":[{"name":"Alfa","wave":"01.zx=ud.23.456789"}]}

在"wave"字符串中,每個(gè)字符代表一個(gè)時(shí)間周期。符號(hào)"."將前一個(gè)狀態(tài)延續(xù)一個(gè)周期?,F(xiàn)在,讓我們看一下它的圖示:

d22904cc-3b21-11ee-9e74-dac502259ad0.png"Alfa" 1位信號(hào)

時(shí)鐘

數(shù)字時(shí)鐘是一種特殊類型的信號(hào)。它在每個(gè)時(shí)間周期內(nèi)變化兩次,可以具有正極性或負(fù)極性。此外,它還可以在工作邊沿上帶有可選的標(biāo)記。時(shí)鐘的各個(gè)塊可以與其他信號(hào)狀態(tài)混合,以創(chuàng)建時(shí)鐘門控效果。下面是代碼和生成的圖示:

{"signal":[
{"name":"pclk","wave":"p......."},
{"name":"Pclk","wave":"P......."},
{"name":"nclk","wave":"n......."},
{"name":"Nclk","wave":"N......."},
{},
{"name":"clk0","wave":"phnlPHNL"},
{"name":"clk1","wave":"xhlhLHl."},
{"name":"clk2","wave":"hpHplnLn"},
{"name":"clk3","wave":"nhNhplPl"},
{"name":"clk4","wave":"xlh.L.Hx"},
]}

渲染后的時(shí)鐘圖示如下:

d23840a4-3b21-11ee-9e74-dac502259ad0.png時(shí)鐘信號(hào)

合在一起

在典型的時(shí)序圖中,我們通常會(huì)包含時(shí)鐘信號(hào)和其他信號(hào)(線路)。對(duì)于多位信號(hào),我們可以從"data"數(shù)組中獲取相應(yīng)的標(biāo)簽。

下面是一個(gè)例子,展示了一個(gè)包含時(shí)鐘信號(hào)、多位信號(hào)和單位信號(hào)的典型時(shí)序圖:

{"signal":[
{"name":"clk","wave":"P......"},
{"name":"bus","wave":"x.==.=x","data":["head","body","tail","data"]},
{"name":"wire","wave":"0.1..0."}
]}

在這個(gè)例子中,我們有三個(gè)信號(hào):"clk"代表時(shí)鐘信號(hào),"bus"代表多位信號(hào),"wire"代表單位信號(hào)。

時(shí)鐘信號(hào)"clk"用"P"表示,代表正極性的時(shí)鐘邊沿。

多位信號(hào)"bus"用"x.==.=x"表示,其中"x"表示未定義的狀態(tài),"="表示穩(wěn)定的高電平或低電平,"."表示未穩(wěn)定狀態(tài)。"data"數(shù)組包含多位信號(hào)的標(biāo)簽,分別是:"head"、"body"、"tail"和"data"。

單位信號(hào)"wire"用"0.1..0."表示,表示在時(shí)間周期內(nèi)信號(hào)從低電平切換到高電平再切換回低電平。

渲染后的時(shí)序圖如下:

d25226e0-3b21-11ee-9e74-dac502259ad0.png典型時(shí)序信號(hào)

空白和間隙

在時(shí)序圖中,我們有時(shí)需要添加間距和空白,以便更好地組織信號(hào)和使時(shí)序圖更易于閱讀。下面是一個(gè)帶有間距和空白的時(shí)序圖示例:

{"signal":[
{"name":"clk","wave":"p.....|..."},
{"name":"Data","wave":"x.345x|=.x","data":["head","body","tail","data"]},
{"name":"Request","wave":"0.1..0|1.0"},
{},
{"name":"Acknowledge","wave":"1.....|01."}
]}

在這個(gè)例子中,我們添加了一些間距和空白,以便更好地分隔不同的信號(hào)。

"clk"信號(hào)用"p"表示,代表正極性時(shí)鐘邊沿,后面有 3 個(gè)間距".",然后是"|...",代表 3 個(gè)空白周期。

"Data"信號(hào)由"x"、"="、"."組成,數(shù)據(jù)數(shù)組"data"提供了多位信號(hào)各個(gè)部分的標(biāo)簽:"head"、"body"、"tail"和"data"。后面有一個(gè)間距"|",然后是"=.",代表一個(gè)空白周期后緊跟著一個(gè)穩(wěn)定高電平。

"Request"信號(hào)由"0"、"1"、"."組成,代表低電平、高電平和未定義狀態(tài)。后面有一個(gè)間距"|",然后是"1.0",代表一個(gè)高電平后緊跟著一個(gè)空白周期。

接著有一個(gè)空白行,表示兩個(gè)信號(hào)之間的空白。

最后,"Acknowledge"信號(hào)由"1"、"."組成,后面有一個(gè)間距"|",然后是"01.",代表一個(gè)高電平后緊跟著一個(gè)低電平和一個(gè)空白周期。

渲染后的時(shí)序圖如下:

d25f0e32-3b21-11ee-9e74-dac502259ad0.png帶間隙的時(shí)序圖

在這個(gè)時(shí)序圖中,我們可以看到信號(hào)之間的間距和空白,使得時(shí)序圖更加整齊和易讀。通過(guò)添加適當(dāng)?shù)拈g距和空白,我們可以更好地組織信號(hào)和時(shí)鐘邊沿,使時(shí)序圖更具可視化效果。接下來(lái),我們將繼續(xù)探索 WaveDrom 的其他高級(jí)功能和實(shí)際應(yīng)用,幫助您更好地運(yùn)用這個(gè)強(qiáng)大的文本轉(zhuǎn)圖表工具。

分組

在時(shí)序圖中,我們可以將 WaveLane 組合成具有名稱的分組,分組表示為數(shù)組形式。['分組名稱', {...}, {...}, ...] 數(shù)組的第一個(gè)條目是分組的名稱。分組之間還可以嵌套。

下面是一個(gè)包含分組的時(shí)序圖示例:

{"signal":[
{"name":"clk","wave":"p..Pp..P"},
["Master",
["ctrl",
{"name":"write","wave":"01.0...."},
{"name":"read","wave":"0...1..0"}
],
{"name":"addr","wave":"x3.x4..x","data":"A1A2"},
{"name":"wdata","wave":"x3.x....","data":"D1"},
],
{},
["Slave",
["ctrl",
{"name":"ack","wave":"x01x0.1x"},
],
{"name":"rdata","wave":"x.....4x","data":"Q2"},
]
]}

在這個(gè)例子中,我們使用了分組來(lái)組織不同的信號(hào),將它們放在名為"Master"和"Slave"的兩個(gè)分組中。

"clk"信號(hào)用"p..Pp..P"表示,代表正極性時(shí)鐘邊沿和負(fù)極性時(shí)鐘邊沿。

"Master"分組包含了三個(gè)子信號(hào),它們分別在名稱為"ctrl"的子分組中,表示控制信號(hào)"write"和"read",以及名稱為"addr"的信號(hào),"data"數(shù)組提供了信號(hào)的標(biāo)簽。

接著有一個(gè)空白行,表示兩個(gè)分組之間的空白。

"Slave"分組包含了兩個(gè)子信號(hào),都在名稱為"ctrl"的子分組中,表示控制信號(hào)"ack",以及名稱為"rdata"的信號(hào),"data"數(shù)組提供了信號(hào)的標(biāo)簽。

渲染后的時(shí)序圖如下:

d276430e-3b21-11ee-9e74-dac502259ad0.png分組時(shí)序圖

在這個(gè)時(shí)序圖中,我們可以看到不同分組內(nèi)的信號(hào)在不同時(shí)間周期內(nèi)的狀態(tài)。使用分組可以更好地組織和顯示復(fù)雜的時(shí)序圖,幫助我們更好地理解和分析數(shù)字信號(hào)之間的時(shí)序關(guān)系。通過(guò) WaveDrom 的強(qiáng)大功能,我們可以輕松地在時(shí)序圖中添加分組,使其更具可視化效果和清晰度。

周期和相位

在時(shí)序圖中,我們可以使用"period"和"phase"參數(shù)來(lái)調(diào)整每個(gè) WaveLane 的周期和相位。

下面是一個(gè) DDR 讀取事務(wù)的時(shí)序圖示例:

{"signal":[
{"name":"CK","wave":"P.......","period":2},
{"name":"CMD","wave":"x.3x=x4x=x=x=x=x","data":"RASNOPCASNOPNOPNOPNOP","phase":0.5},
{"name":"ADDR","wave":"x.=x..=x........","data":"ROWCOL","phase":0.5},
{"name":"DQS","wave":"z.......0.1010z."},
{"name":"DQ","wave":"z.........5555z.","data":"D0D1D2D3"}
]}

在這個(gè)例子中,我們使用"period"參數(shù)來(lái)設(shè)置時(shí)鐘信號(hào)"CK"的周期為 2 個(gè)時(shí)間周期。這意味著時(shí)鐘信號(hào)每隔 2 個(gè)時(shí)間周期變化一次。

同時(shí),我們使用"phase"參數(shù)來(lái)調(diào)整信號(hào)"CMD"和"ADDR"的相位。相位的值為 0.5,表示信號(hào)的波形在時(shí)間軸上整體向右偏移了 0.5 個(gè)時(shí)間周期。這樣做可以讓信號(hào)在時(shí)鐘邊沿之前或之后發(fā)生狀態(tài)變化。

"CMD"信號(hào)表示了 DDR 讀取事務(wù)的命令序列,"ADDR"信號(hào)表示了地址序列。"data"數(shù)組提供了每個(gè)部分的標(biāo)簽。

"DQS"信號(hào)和"DQ"信號(hào)分別表示數(shù)據(jù)校驗(yàn)和數(shù)據(jù)信號(hào)。其中,"DQS"信號(hào)在時(shí)鐘邊沿之前有一個(gè)延遲,"DQ"信號(hào)在時(shí)鐘邊沿之后有一個(gè)延遲。

渲染后的時(shí)序圖如下:

d286dd2c-3b21-11ee-9e74-dac502259ad0.pngDDR讀時(shí)序

在這個(gè)時(shí)序圖中,我們可以看到時(shí)鐘信號(hào)"CK"每隔 2 個(gè)時(shí)間周期發(fā)生一次變化。"CMD"和"ADDR"信號(hào)的波形整體向右偏移了 0.5 個(gè)時(shí)間周期,以達(dá)到與時(shí)鐘信號(hào)的相位差。"DQS"信號(hào)在時(shí)鐘邊沿之前有一個(gè)延遲,"DQ"信號(hào)在時(shí)鐘邊沿之后有一個(gè)延遲。

通過(guò)調(diào)整"period"和"phase"參數(shù),我們可以更靈活地控制時(shí)序圖中各個(gè)信號(hào)的周期和相位,從而更好地表達(dá)復(fù)雜的數(shù)字信號(hào)行為。WaveDrom 提供了豐富的功能,幫助我們創(chuàng)建詳細(xì)和直觀的數(shù)字時(shí)序圖,用于硬件設(shè)計(jì)、嵌入式系統(tǒng)開(kāi)發(fā)、通信協(xié)議分析等領(lǐng)域。

config{}屬性

在時(shí)序圖中,config{}屬性用于控制渲染的不同方面。

hscale

config:{hscale:#}屬性用于調(diào)整時(shí)序圖的水平縮放比例。用戶可以設(shè)置任何大于 0 的整數(shù)值。

下面是一個(gè)示例,展示了如何使用 config{hscale:#}屬性來(lái)調(diào)整時(shí)序圖的水平縮放比例:

{"signal":[
{"name":"clk","wave":"p...."},
{"name":"Data","wave":"x345x","data":["head","body","tail"]},
{"name":"Request","wave":"01..0"}
],
"config":{"hscale":1}
}

在這個(gè)例子中,我們使用 config{hscale:1}屬性將水平縮放比例設(shè)置為 1。這意味著時(shí)序圖將以原始比例進(jìn)行渲染,每個(gè)時(shí)間周期占據(jù)一個(gè)單位寬度。

渲染后的時(shí)序圖如下:

d29d6470-3b21-11ee-9e74-dac502259ad0.png水平比例1 d2aa8c86-3b21-11ee-9e74-dac502259ad0.png水平比例2

skin

在時(shí)序圖中,我們可以使用 config:{skin:'...'}屬性來(lái)選擇WaveDrom 的皮膚樣式[2]。該屬性僅在頁(yè)面上的第一個(gè)時(shí)序圖中起作用。WaveDrom 編輯器包含兩種標(biāo)準(zhǔn)皮膚:'default'和'narrow'。

head/foot

head:{...}和 foot:{...}屬性用于定義時(shí)序圖上方和下方的內(nèi)容區(qū)域??梢栽谶@些屬性中添加文本或其他元素。

tick/tock

tick 屬性可以添加與垂直標(biāo)記對(duì)齊的時(shí)間線標(biāo)簽,而 tock 屬性可以在垂直標(biāo)記之間添加時(shí)間線標(biāo)簽。

text

text 屬性用于添加標(biāo)題或說(shuō)明文本。

every

every 屬性用于指定僅在每 N 個(gè)周期渲染一次標(biāo)記和時(shí)間線標(biāo)簽。

下面是一個(gè)示例,展示了如何使用這些屬性來(lái)定義一個(gè)時(shí)序圖:

{"signal":[
{"name":"clk","wave":"p...."},
{"name":"Data","wave":"x345x","data":"abc"},
{"name":"Request","wave":"01..0"}
],
"head":{
"text":"WaveDromexample",
"tick":0,
"every":2
},
"foot":{
"text":"Figure100",
"tock":9
}
}

在這個(gè)例子中,我們添加了頭部(head)和底部(foot)的文本內(nèi)容。頭部文本設(shè)置為"WaveDrom example",并使用 tick 屬性指定不添加時(shí)間線標(biāo)簽。每隔 2 個(gè)周期渲染一次標(biāo)記和時(shí)間線標(biāo)簽。底部文本設(shè)置為"Figure 100",并使用 tock 屬性在垂直標(biāo)記之間添加時(shí)間線標(biāo)簽。

渲染后的時(shí)序圖如下:

d2bc1aaa-3b21-11ee-9e74-dac502259ad0.png屬性示例

在 WaveDrom 中,head 和 foot 屬性用于定義時(shí)序圖上方和下方的文本內(nèi)容,這些文本內(nèi)容支持 SVG text 的所有屬性。可以使用 JsonML 標(biāo)記語(yǔ)言來(lái)表示 SVG 文本內(nèi)容,并且可以使用一些預(yù)定義的樣式來(lái)設(shè)置文本的字體大小和顏色。除此之外,還可以使用其他 SVG tspan 屬性來(lái)自由地定制文本的樣式。

下面是一個(gè)示例,展示了如何使用不同的樣式來(lái)設(shè)置時(shí)序圖頭部和底部的文本內(nèi)容:

{"signal":[
{"name":"clk","wave":"p.....PPPPp...."},
{"name":"dat","wave":"x....2345x.....","data":"abcd"},
{"name":"req","wave":"0....1...0....."}
],
"head":{"text":
["tspan",
["tspan",{"class":"errorh1"},"error"],
["tspan",{"class":"warningh2"},"warning"],
["tspan",{"class":"infoh3"},"info"],
["tspan",{"class":"successh4"},"success"],
["tspan",{"class":"mutedh5"},"muted"],
["tspan",{"class":"h6"},"h6"],
"default",
["tspan",{"fill":"pink","font-weight":"bold","font-style":"italic"},"pink-bold-italic"]
]
},
"foot":{"text":
["tspan","E=mc",
["tspan",{"dy":"-5"},"2"],
["tspan",{"dy":"5"},"."],
["tspan",{"font-size":"25"},"B"],
["tspan",{"text-decoration":"overline"},"over"],
["tspan",{"text-decoration":"underline"},"under"],
["tspan",{"baseline-shift":"sub"},"sub"],
["tspan",{"baseline-shift":"super"},"super"]
],"tock":-5
}
}

在這個(gè)例子中,我們使用 JsonML 標(biāo)記語(yǔ)言來(lái)表示頭部和底部的文本內(nèi)容,并為每個(gè)文本段落設(shè)置了不同的樣式。例如,我們使用了類名"h1"、"h2"、"h3"等來(lái)設(shè)置不同的字體大小。使用類名"error"、"warning"、"info"、"success"、"muted"等來(lái)設(shè)置不同的字體顏色樣式。我們還可以使用其他 SVG tspan 屬性來(lái)設(shè)置文本的斜體、粗體、填充顏色等。

渲染后的時(shí)序圖如下:

d2c8cf98-3b21-11ee-9e74-dac502259ad0.pnghead/foot文本屬性示例

箭頭

曲線

在 WaveDrom 中,我們可以使用箭頭和曲線來(lái)連接不同的信號(hào),以表示它們之間的關(guān)聯(lián)和數(shù)據(jù)傳遞。

以下是一些常用的箭頭和曲線符號(hào):

~:普通曲線

-~:從左到右的曲線箭頭

<~>:雙向曲線箭頭

<~>:雙向曲線箭頭

~>:從左到右的直線箭頭

-~>:從左到右的實(shí)心箭頭

~->:從右到左的實(shí)心箭頭

下面是一個(gè)示例,展示了如何使用箭頭和曲線來(lái)連接不同的信號(hào):

{"signal":[
{"name":"A","wave":"01........0....","node":".a........j"},
{"name":"B","wave":"0.1.......0.1..","node":"..b.......i"},
{"name":"C","wave":"0..1....0...1..","node":"...c....h.."},
{"name":"D","wave":"0...1..0.....1.","node":"....d..g..."},
{"name":"E","wave":"0....10.......1","node":".....ef...."}
],
"edge":[
"a~bt1","c-~at2","c-~>dtime3","d~-e",
"e~>f","f->g","g-~>h","h~>isometext","h~->j"
]
}

渲染后的時(shí)序圖如下:

d2dc0266-3b21-11ee-9e74-dac502259ad0.png箭頭和曲線

折線

在 WaveDrom 中,我們還可以使用尖銳的線條符號(hào)來(lái)表示不同信號(hào)之間的連接關(guān)系。這些尖銳的線條符號(hào)可以更直觀地展示信號(hào)之間的交互和數(shù)據(jù)傳遞。

以下是一些常用的尖銳線條符號(hào):

-:直線連接

-|:從左到右的尖銳連接

|->:從右到左的尖銳連接

<->:雙向尖銳連接

<-|>:從左到右的雙向尖銳連接

|-|:從左到右的尖銳連接(包含短橫線)

下面是一個(gè)示例,展示了如何使用尖銳線條來(lái)連接不同的信號(hào):

{"signal":[
{"name":"A","wave":"01..0..","node":".a..e.."},
{"name":"B","wave":"0.1..0.","node":"..b..d.","phase":0.5},
{"name":"C","wave":"0..1..0","node":"...c..f"},
{"node":"...g..h"},
{"node":"...I..J","phase":0.5},
{"name":"D","wave":"0..1..0","phase":0.5}
],
"edge":[
"b-|at1","a-|ct2","b-|-ct3","c-|->et4","e-|>fmoretext",
"e|->dt6","c-g","f-h","g<->h3ms","I+J5ms"
]
}

在這個(gè)例子中,我們有 6 個(gè)信號(hào)(A、B、C、D)和 4 個(gè)連接節(jié)點(diǎn)(e、g、h、I、J),它們之間通過(guò)尖銳線條連接起來(lái)。每個(gè)信號(hào)都有相應(yīng)的波形圖,而尖銳線條則通過(guò)edge屬性來(lái)定義連接關(guān)系。

例如,b-|a t1表示從信號(hào) B 到信號(hào) A 的從左到右的尖銳連接,并在連接上方添加了文本標(biāo)簽"t1"。c-|->e t4表示從信號(hào) C 到節(jié)點(diǎn) e 的從左到右的尖銳連接,并在連接上方添加了文本標(biāo)簽"t4"。

渲染后的時(shí)序圖如下:

d2e99804-3b21-11ee-9e74-dac502259ad0.png箭頭和折線

一些代碼

在 WaveDrom 中,我們可以使用 JavaScript 代碼來(lái)生成復(fù)雜的時(shí)序圖。這些代碼可以用來(lái)生成特定的信號(hào)和波形,以及自定義時(shí)序圖的展示效果。

以下是一個(gè)示例代碼,展示了如何使用 JavaScript 代碼生成一個(gè)特定的時(shí)序圖:

(function(bits,ticks){
vari,t,gray,state,data=[],arr=[];
for(i=0;i>1)^t)>>i)&1;
arr[i].wave+=(gray===state)?'.':gray+'';
state=gray;
}
}
arr.unshift('gray');
return{signal:[
{name:'bin',wave:'='.repeat(ticks),data:data},arr
]};
})(5,16)

在這個(gè)例子中,我們使用了一個(gè)自執(zhí)行函數(shù)來(lái)生成一個(gè)包含 5 個(gè)信號(hào)的時(shí)序圖。每個(gè)信號(hào)的波形圖都是根據(jù)格雷碼(Gray code)生成的,其中 bits 參數(shù)表示信號(hào)的位數(shù),ticks 參數(shù)表示時(shí)間周期數(shù)。代碼使用循環(huán)來(lái)生成信號(hào)的波形圖,并將生成的數(shù)據(jù)存儲(chǔ)在 data 數(shù)組中。

最終的時(shí)序圖包含 6 個(gè)信號(hào),其中一個(gè)是用來(lái)表示二進(jìn)制計(jì)數(shù)的信號(hào)(bin),其波形圖是一個(gè)等號(hào)序列。其他 5 個(gè)信號(hào)的波形圖是根據(jù)格雷碼生成的,分別對(duì)應(yīng) 0 位、1 位、2 位、3 位和 4 位格雷碼的波形。

渲染后的時(shí)序圖如下:

d2fa7796-3b21-11ee-9e74-dac502259ad0.pngjs代碼生成時(shí)序圖

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2804

    瀏覽量

    77072
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1746

    瀏覽量

    131775
  • 時(shí)序圖
    +關(guān)注

    關(guān)注

    2

    文章

    58

    瀏覽量

    22485
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68995
  • 數(shù)字時(shí)鐘
    +關(guān)注

    關(guān)注

    2

    文章

    151

    瀏覽量

    20434

原文標(biāo)題:給大家分享一個(gè)簡(jiǎn)單強(qiáng)大的時(shí)序圖繪制工具

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一款功能強(qiáng)大的串口監(jiān)視、檢測(cè)、分析工具,Serial Monitor

    Serial Monitor是一款功能強(qiáng)大的串口監(jiān)視、檢測(cè)、分析工具,軟件使用更加簡(jiǎn)單,尤其適合開(kāi)發(fā)人員使用。 
    發(fā)表于 05-26 09:05

    好用的時(shí)序繪制軟件(含破解)

    TimeGen軟件是一款非常簡(jiǎn)單易用的時(shí)序繪制軟件,壓縮包內(nèi)有破解方法,請(qǐng)按照順序操作,先安裝,再替換。
    發(fā)表于 10-24 09:08

    stm32最小系統(tǒng)繪制的電路原理繪制

    摘要:Altium Designer是一款強(qiáng)大的PCB設(shè)計(jì)軟件,本篇將是我學(xué)習(xí)記錄的上半篇,stm32最小系統(tǒng)繪制的電路原理繪制。將從AD
    發(fā)表于 08-04 08:38

    介紹基于AD來(lái)繪制一款屬于自己的DAPLink在線仿真+脫機(jī)燒錄器

    概述本篇文章只要是介紹基于AD來(lái)繪制一款屬于自己的DAPLink在線仿真+脫機(jī)燒錄器,做這個(gè)起源與,
    發(fā)表于 03-01 06:18

    簡(jiǎn)單電路原理繪制_實(shí)驗(yàn)1

    PCB簡(jiǎn)單原理繪制。這是個(gè)關(guān)于Altium designer 的簡(jiǎn)單原理設(shè)計(jì)步驟。對(duì)初學(xué)
    發(fā)表于 12-08 18:01 ?0次下載

    mongodb可視化工具如何使用_介紹一款好用 mongodb 可視化工具

    RockMongo是個(gè)MongoDB管理工具,連接數(shù)據(jù)庫(kù)的時(shí)候,輸入 相應(yīng)的地址用戶名和密碼就好了,些小伙伴想知道m(xù)ongodb可視化工具如何使用,下面就讓小編為大家為什
    發(fā)表于 02-07 09:31 ?7389次閱讀
    mongodb可視化<b class='flag-5'>工具</b>如何使用_<b class='flag-5'>介紹</b><b class='flag-5'>一款</b>好用 mongodb 可視化<b class='flag-5'>工具</b>

    流行國(guó)內(nèi)外的5簡(jiǎn)單易用電路軟件大全

    聽(tīng)說(shuō)你還在找電路軟件?你還在苦惱如何繪制電路?你還在擔(dān)心繪制不出新元件嗎?下面給你介紹流行國(guó)內(nèi)外的5電路軟件,肯定有
    的頭像 發(fā)表于 06-12 11:57 ?2.3w次閱讀

    一款強(qiáng)大的電腦清理軟件下載

    一款強(qiáng)大的電腦清理軟件下載
    發(fā)表于 02-17 13:48 ?2次下載

    介紹一款功能強(qiáng)大的自動(dòng)化Deauth滲透測(cè)試工具

    autodeauth是一款功能強(qiáng)大的自動(dòng)化Deauth滲透測(cè)試工具,該工具可以幫助廣大研究人員以自動(dòng)化的形式針對(duì)本地網(wǎng)絡(luò)執(zhí)行Deauth滲透測(cè)試,或者枚舉公共網(wǎng)絡(luò)。
    的頭像 發(fā)表于 09-26 09:26 ?1300次閱讀

    介紹一款有源濾波器的設(shè)計(jì)工具

      濾波器分為有源濾波器和無(wú)源濾波。有源濾波器主要有,Sallen-Key和Multiple Feedback濾波器。 現(xiàn)在介紹一款有源濾波器的設(shè)計(jì)工具,這是一款ADI自帶的設(shè)計(jì)
    的頭像 發(fā)表于 11-23 16:06 ?4658次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>一款</b>有源濾波器的設(shè)計(jì)<b class='flag-5'>工具</b>

    開(kāi)發(fā)一款segmentation標(biāo)記的工具

    PixelAnnotationTool是一款簡(jiǎn)單方便的segmentation工具,之前所訓(xùn)練的道路區(qū)域檢測(cè)模型,便是用這工具來(lái)標(biāo)記道路區(qū)域。
    的頭像 發(fā)表于 01-13 17:07 ?1962次閱讀

    使用PlantUml繪制邏輯時(shí)序/波形

    使用PlantUml繪制時(shí)序,波形簡(jiǎn)單說(shuō)明如下。
    的頭像 發(fā)表于 05-14 09:28 ?2165次閱讀
    使用PlantUml<b class='flag-5'>繪制</b>邏輯<b class='flag-5'>時(shí)序</b><b class='flag-5'>圖</b>/波形<b class='flag-5'>圖</b>

    UML時(shí)序詳解

    本篇介紹了UML時(shí)序的基礎(chǔ)知識(shí),并通過(guò)visio繪制個(gè)物聯(lián)網(wǎng)設(shè)備WIFI配網(wǎng)的UML時(shí)序
    的頭像 發(fā)表于 05-16 09:09 ?2263次閱讀
    UML<b class='flag-5'>時(shí)序</b><b class='flag-5'>圖</b>詳解

    如何畫時(shí)序?畫時(shí)序工具有哪些?

    TimeGen 是一款圖形界面的波形繪制軟件,使用鼠標(biāo)進(jìn)行操作,廣泛應(yīng)用于IC設(shè)計(jì)、硬件設(shè)計(jì)、集成電路等領(lǐng)域,安裝在windows系統(tǒng)中。TimeGen提供了直觀的用戶界面和豐富實(shí)用的繪圖工具,可以
    的頭像 發(fā)表于 08-04 10:42 ?1.5w次閱讀
    如何畫<b class='flag-5'>時(shí)序</b><b class='flag-5'>圖</b>?畫<b class='flag-5'>時(shí)序</b><b class='flag-5'>圖</b>的<b class='flag-5'>工具</b>有哪些?

    介紹一款智能Web弱口令爆破工具

    Boom 是一款基于無(wú)頭瀏覽器的 Web 弱口令爆破工具。
    的頭像 發(fā)表于 08-04 11:28 ?2048次閱讀