暫存器定義
暫存器表給的是位元組,這個面板把位元組解成具名的位元欄位。所以它要和暫存器表 一起看才有意義——單獨一個解碼器,沒有東西可解。

怎麼用
- 載入定義檔:
regdef load <檔案路徑>,或☰ → File → Load REG DEF file。 - 把游標移到暫存器表的任何一格。
- 右邊就會顯示那個暫存器的名稱、可讀寫性、位元條,以及逐欄位的表格:
bits │ val │ field
─────┼─────┼──────────────────────
[7:4]│ 0x0 │ BW
│ │ Loop bandwidth
[3:2]│ 0x3 │ CLK_SEL (PLL)
[0] │ 1 │ ENbits 是位元範圍,val 是這個欄位的值(單一位元顯示 0/1,多位元顯示 0x…,值為 0 時淡色),
field 是欄位名稱,下一行是說明。名稱太長會在 _ 處換行(最多三行),不會被截掉。
名稱是 RESERVED/RSVD 的欄位整列淡色;如果它讀到的值不是 0,值會亮起來——那通常值得留意。
面板窄的時候不畫框線與表頭,也不顯示說明行,欄位順序不變。
上面的框線是終端機版的樣子;視窗版只在表頭下畫一條細線、欄與欄之間不畫直線,改用每個欄位交替的底色區分(一個欄位換行出來的續行、說明行跟它同一個顏色),WRITE/REVERT 是按鈕,有待寫入的變更才會亮起。
位元條上可以直接點某個位元切換,按 Space 也可以;改好之後 WRITE 送出,
REVERT 放棄。被改到的欄位在表格裡會變色。唯讀(RO)的暫存器在位元條下面顯示一行灰色的 read-only,
點位元不會有作用。對 W1C(寫 1 清除)與 W0C(寫 0 清除)的暫存器會先跳確認框——那類暫存器寫下去
就回不來。
可讀寫性(access)有這幾種:RW、RO、WO、W1C、RSVD,以及定義檔格式 1.3 新增的 W0C。
W0C 與 W1C 一樣屬於「寫入有副作用」:面板標籤同色,指令列 wr/set/clr 會記一則警告,
dump load 預設略過它;含 W0C 的定義檔要宣告 spec_version 1.3,舊版 nexus 打不開這種檔案。
列舉值、簡述與 VOLATILE(定義檔格式 1.2)
定義檔可以替欄位列出每個值的意義(values)、替暫存器與欄位寫一行簡述(brief),並標記「這個暫存器會自己變動」
(volatile)。面板這樣顯示:
- 欄位列:
[3:2] │ 0x3 │ CLK_SEL (PLL)——名稱後面括號裡是那個值的名字。定義檔沒列到的值顯示(?)(例如DIV (?)),那不是錯誤:列舉值不必窮舉。名字放不下那一列時,(…)會改放在欄位下面自成一列。 - 簡述:欄位的
brief是欄位名稱下面那一行說明(沒有brief時改顯示desc;desc只是把名稱的底線換成空白時就不顯示)。 暫存器的brief在標題0x2A CLK_STATUS下面獨立一行。 VOLATILE:標題列右邊,和RW/RO並列(RW · VOLATILE)。這種暫存器每次讀都可能不一樣,dump diff會略過它、dump load預設不寫它(見暫存器表的 dump 一節)。
選列舉值
把位元游標(←/→,或點位元格)移到有列舉值的欄位,按鈕列會提示 Enter = choose value。
按 Enter 會跳出清單(0 XTAL、3 PLL…),選好之後只改位元條上那個欄位的位元,其他位元不動——
它跟點位元一樣只是在位元條上「待寫入」,還沒送到晶片,要照常按 WRITE 才寫,REVERT 放棄。
W1C/W0C 的確認框、RO/RSVD 暫存器的拒絕、沒讀過的位元組不能改,都和手動點位元完全一樣。
在有列舉值的欄位上 Enter 是開清單,所以想直接打整個位元組時,改在這個欄位上打十六進位字元
(焦點要在這個面板、指令列要是空的)就會進入打字模式;點值格也可以。
依條件切換的欄位組(views)
有些暫存器的欄位定義隨另一個位元而變(例如 bit 7 = 1 時是 HDCP 模式)。定義檔把它寫成 views:
- 位元條下面、欄位表格上面是
view: PLL mode (0x2A & 0x0C == 0x0C)——目前生效的欄位組與它的條件。 - 自動選擇只看暫存器表已經讀到的值,面板不會為了判斷條件去讀晶片(條件在同一顆晶片的另一個 bank 時,
讀的是那個 bank 已經快取的值——你要先切到那個 bank 讀過一次)。條件用到的暫存器還沒讀過時,
標題會是
view: unknown (condition register 0x45 not read),並先顯示預設欄位組——不會假裝條件成立或不成立。 - 在位元條上改到條件位元,還沒按
WRITE欄位組就會跟著切換,讓你看到寫下去之後會是哪一組。 - 按
V(要先讓暫存器定義面板取得焦點,而且指令列是空的)或直接點view:那一行,手動循環「自動 → 各個 view → 預設 → 自動」; 手動時標題結尾會有[manual]。條件寫得不完整、無法判斷的 view 只能手動選到,標題是(condition unknown);沒有可用欄位的 view 顯示no usable fields。 - 沒有
views的暫存器完全不受影響。
⚠ 顯示「NO DEFINITION」不一定是檔案壞了
定義檔是逐 (裝置, 頁, 位移) 對應的,而且頁是用 8-bit 寫入位址宣告的。 所以:
- 定義檔宣告的頁位址是
0xB0,對到的是匯流排上的 7-bit0x58。 - 對不上那個裝置的定義檔,不管把游標移到哪一格都是
NO DEFINITION。 面板下方會印出它查了什麼(bus/slave/bank/offset),拿那組值去對定義檔即可。 - 同一顆 IC 的不同 bank 往往定義不同的暫存器。查不到時先確認 bank 對不對。
終端機版

相關指令
regdef——用法見指令參考。定義檔格式與編輯器隨 PDK 一起提供;不想下載也可以直接用下面的線上版。
線上定義檔編輯器
開啟線上定義檔編輯器(新分頁)編輯器是單一個網頁:可以開啟、編輯、驗證定義檔,也能從表格或 PDF 文字匯入,存回 .json。
和 PDK 裡的是同一份編輯器,離線時直接雙擊也能用。
- 檔案留在你的瀏覽器裡:開啟與存檔都只在本機進行,不會上傳到這個網站;草稿存在這個瀏覽器的儲存空間, 換瀏覽器或清掉網站資料就看不到。
- AI 功能是選用的:它呼叫的是你自己電腦上的 Ollama(
http://localhost:11434),文字不經過這個網站。 瀏覽器要放行這個網站的來源才連得上:把環境變數OLLAMA_ORIGINS設成https://nexus.pgl-tek.com後重啟 Ollama (編輯器裡的提示寫的是*,也可以,但那會讓你瀏覽的任何網站都能呼叫本機的 Ollama)。 較新的 Chrome/Edge 還會跳出「存取此裝置上的其他應用程式與服務」之類的提示,要選允許。