• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

李皇谛>帮助页面>WaveDrom时序图编辑工具

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

WaveDrom時序圖編輯工具
製圖工具其它網頁

序言

WaveDrom是一個用於繪製時序圖與邏輯門電路圖的JavaScript便捷工具,可以直接運行在HTML網頁上,亦或者通過GitHub下載源碼與本地系統版,該工具免費、開源且商用不付費。

目前,李皇谛[更多]討論頁貢獻上傳歷史封禁及歷史被刪貢獻移動日誌巡查日誌用戶權限有將其收錄至萌娘百科的計畫,但完全沒學習JavaScript。

網頁導航
🏠項目主頁✏️在線編輯器🕮查看原始教程GitHub logo.svg訪問GitHub

基本語法

正常訪問編輯器之後,根據教程,用戶可直接以簡易的文本語言進行繪圖,最基本的時序圖代碼是這類格式:

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

編寫完這類代碼後,將會以下圖形式呈現:

需要上傳圖片

仔細分析上述代碼,可以發現name關鍵詞跟隨的是信號的名稱,wave關鍵詞跟隨的是要呈現的時序圖內容,至於signal則是向編譯器說明裡面的內容要在信號圖(以下替換為「時序圖」)區域呈現,這個區域聲明作為一級關鍵詞是不能省略的。

以下內容為基本編寫格式,用< >框起來的內容為通配符,實際編寫時要使用對應的英文單詞寫入才能實現對應效果。

{
<区域1声明>:
	[ 
	{<行1属性1>: '<行1内容1>', <行1属性2>:'<行1内容2>',<行1属性n>:'<行1内容n>'},
	{<行2属性1>: '<行2内容1>', <行2属性2>:'<行2内容2>',<行2属性n>:'<行2内容n>'},
	]
<区域2声明>:
	[
	{<行1属性1>: '<行1内容1>', <行1属性2>:'<行1内容2>',<行1属性n>:'<行1内容n>'},
	{<行2属性1>: '<行2内容1>', <行2属性2>:'<行2内容2>',<行2属性n>:'<行2内容n>'},
	]
}
  • 跟HTML編譯器相同的是,不論你加入了多少空格和換行符,都不會影響編譯器呈現內容,只會讓代碼看起來更易於閱讀而已,你也可以適當縮減空格與換行符減輕頁面滾動壓力。
  • 如果不是用於直接呈現文本,只能使用🌙英文半角符號,記得檢查你的輸入法是否為☀️全形輸入

接下來看下面的多繪製區域代碼。

{/*信号图注释*/
signal: [{name:'clk',wave:'p....'},{name:'Data',wave:'x345x',data:'abc'},{name:'Request', wave:'01..0'}],
head:{text:'WaveDrom example',tick:0,every:2},
foot:{text:'Figure 100',tock:9},
}

我們看到,這段代碼還有與signal同級聲明的headfoot,分別用於聲明繪製區域為時序圖的頁眉頁腳。雖然它在官方教程裡面放到後面介紹,但為了明確各級聲明的重要性還是要提前說明,上述代碼的呈現效果是這樣的:

需要上傳圖片

只有嚴格按照格式與語法進行編寫,才能讓編譯器生成你想要的時序圖且內容準確無誤。對編程語法有基本的了解之後,你就可以自由編寫時序圖了。

接下來的內容將按步驟幫助你編寫多種類型的時序圖。

字母與波形樣式

上文介紹了繪製時序圖的過程中需要遵循的基本語法,現在我們可以編寫自己的時序圖了。

接下來我們看一下這個實例:

{ 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' },
]}

呈現內容是這樣的:

????

根據這個實例我們可以總結出三個特點:

  • 每一個字母代表著一個時鐘周期對應的波形。
  • wave區域聲明的波形會因為字母大小寫的不同而呈現不同內容。
  • 可以用{},換行。

但上面這些字母分別代表著什麼,這很讓人一頭霧水,因為官方教程沒有說明這些內容,還需要慢慢修改才能理解。

這可太麻煩了,相信還在讀中小學的學生還有正在工作的社畜都會叫苦連連。因為社會節奏的飛快,學習時間遭到大幅壓縮,因此學習成本呈現斷崖式增高態勢。

此時簡單明了的代碼對照表才是幫助學習的靈魂所在,話不多說,上對照表。

字母對應波形種類 對照表
.續寫前一字母
p一次上升沿
n一次下降沿
h高電平,理想態
l低電平,理想態
1高電平,有時延
0低電平,有時延
z高阻態
2 或 =任一電平,塗1號色,可放標籤
4任一電平,塗3號色,可放標籤
6任一電平,塗5號色,可放標籤
8任一電平,塗7號色,可放標籤
|剪裁,剪裁前後波形相符
P一次上升沿,箭頭標記變化
N一次下降沿,箭頭標記變化
H高電平,理想態,箭頭標記變化
L低電平,理想態,箭頭標記變化
u高電平,後接虛線
d低電平,後接虛線
x任一電平,塗陰影*
3任一電平,塗2號色,可放標籤
5任一電平,塗4號色,可放標籤
7任一電平,塗6號色,可放標籤
9任一電平,塗8號色,可放標籤
  • 如果沒有特殊說明,輸入其他字母、非ASCII單字、所有全形字母統一呈現為「任一電平,塗陰影」。
  • 如果配置了其他類型的皮膚樣式,呈現的顏色也會出現差異。

標籤與頁眉頁腳

錨點與跳轉箭頭