跳轉到內容

示波器設計

來自華夏公益教科書,開放的世界開放書籍
電視示波器

本書講述的是示波器是如何設計的。我旨在使用普通電視機進行顯示,但我的設計實際上也可以由 PC 使用,因為資料可以並行讀取。我將描述示波器所需的所有部件。實際上,我在大約 30 年前設計了這個版本,這是我的考試作品,我正在展示它。這個新版本不使用四個線繞電路板來完成所有邏輯閘,而是使用 Spartan FPGA。

電視示波器方框圖

[編輯 | 編輯原始碼]
電視示波器方框圖

這張圖片顯示了我們電視示波器的方框圖。它由五個模組組成。第一個模組是輸入介面 (KOI),它負責來自三個旋轉編碼器的訊號,這些編碼器用於設定不同的雙通道衰減 (Vots/DIV) 和掃描時間值 (掃描時間/DIV)。第二個模組 (KOA) 是我們電視示波器的模擬核心,它是一個高頻寬放大器。第三個模組是觸發器模組 (KOT),它使您能夠在選擇的訊號電平和斜率上觸發。第四個模組 (KOL) 是我們電視示波器的數字核心。第五個模組只是一個用於電視的介面 (KOV)。

KOF,示波器前端

[編輯 | 編輯原始碼]
示波器前端

在這裡你可以看到我的機械結構。每個單元都有自己的電路板。如您所見,它與上面的方框圖並不完全匹配,但在這裡更實用。如果你想出售一臺裝置,這更合適,這意味著不同的單元相互隔離,並且某種程度上是獨立的。我個人認為 KOA 具有最高的商業潛力,其次是 KOT,也許 KOR 對其他人也有用。但是,KOL 和 KOV 太專業了,沒有人會想要或需要它們。

我已經對這張圖片進行了升級,KOT 中的自動/正常觸發功能已被消除,因為它現在被硬連線到 KOL 中(參見 Ts_Enable 的新版本)。

關鍵元件

[編輯 | 編輯原始碼]
TVS 元件列表

此列表中的機械部件(粗體)是指上面的 KOF。電氣部件指的是我們電視示波器的其他部分。所有部件都相當重要。SRAM 在訪問時間方面至關重要 (12ns)。PROM 並不重要,除了記憶體空間。PROM 可以更改為任何型別,主要需要確保大小正確。我選擇 27C512 部分是因為我喜歡 (E)PROM,部分是因為我可以使用我的 Dataman S4 程式設計器對其進行程式設計。雖然整個速度都很重要,但我還選擇了一個快速的運算放大器 (LM318)。比較器 (CMP01) 已過時,但我之前從 eBay 購買了一些,並且很喜歡它(同時我也在我的原始電視示波器中使用它)。兩個關於複合電視同步生成和提取的專用 IC 是不必要的,因為 Spartan 可以模擬它們,但我將它們用於我的原始電視示波器,它們最大程度地減少了 Spartan 的設計工作量。


KOR,示波器穩壓器

[編輯 | 編輯原始碼]
示波器電源

在輸入處,穩壓器看到大約 17Vp。AVss 不需要 3m3 的緩衝電容,因為那裡的電流相當低,但我喜歡對稱。AVcc 也不消耗太多電流,但所有其他穩壓器都會消耗,所以這裡我們需要一個相當高的電容。為了檢視不同的供電電流,我們必須首先檢查不同穩壓器的電壓。對於 Vcc,我們有 12V,對於 Vdd,我們有 14V,對於 Vaux,我們有 15V,對於 Vint,我們有相同的 16V。

所有穩壓器都可以提供約 1.5A 的電流,但在不使用散熱器的情況下,TO220 無法處理超過 2W 的電流。例如,對於 Vint,這意味著最大電流為 2/16=125mA,這並不多。我不知道我的 Spartan 在 40MHz 時會消耗多少電流,但我認為不會太小。Spartan 有三個電源 (3.3/2.5/1.2V),哪個電源消耗電流?或者它們都消耗?

我認為 1.2V 是核心電源,我推測它是這裡消耗電流的地方,而 125mA 聽起來不夠。我的計劃是在所有 Spartan 電源上安裝散熱器。這個散熱器將是一個卡扣式散熱器,其 K 值約為 16K/W,據我所知,最大允許功耗為

其中 K 是散熱器的冷卻係數,Kiso 是隔離的熱阻,Kjc 是結點到外殼的熱阻。使用 Kiso=0.3,Kjc(TO220)=2 且 K=16,我們得到 7W。現在 Vint 可以消耗 7/16=0.44A 的電流,雖然所有其他穩壓器的壓差更小,但它們可以提供更大的電流。假設它們最大提供約 0.5A 的電流,緩衝電容足夠大嗎?如您所知,輸入濾波器電容電壓下降的一個很好的近似值為

因此,對於 10ms 的時間延遲,使用 50Hz 的交流電源,全波整流和 6.6mF,我們有 0.8V 峰峰值紋波。如果 AVcc/AVss (12V) 在任何時候都能工作,電壓降不能超過 17V-(12V+3V)=2V,而穩壓器需要 3V 的壓差才能調節,因此總體裕量並不高。換句話說,為系統供電的總電流不能超過 1A。

另一方面,我計劃使用一個能夠提供 1.7Aac 的交流電源介面卡,這意味著最大約為 1.2Adc。



KOI,示波器介面

[編輯 | 編輯原始碼]

這是一個理論上的單元,而我對於如何設計它還不太確定,因此我在這裡設計了適用於所有旋轉編碼器和衰減器的電路。兩種不同的旋轉編碼器解決方案將在稍後的階段合併到KOA和KOL中。我目標是設計一個雙通道示波器,因此將有兩個12步旋轉編碼器(在KOA中)和一個18步旋轉編碼器(在KOL中)。顯示的POR電路將駐留在所有這三個模組中,從而形成三個獨立的POR電路。

Tsw和POR控制

[編輯 | 編輯原始碼]
Tsw控制

這裡我展示了一個/POR電路的示意圖,該電路在施加電源電壓時變為低電平。它保持低電平一小段時間(約100毫秒),這使得所有IC都能設定為已知的起始值。我還展示了一個電路,該電路從旋轉編碼器生成五個輸出資料(讀取地址),這些地址然後用於設定不同的Tsw/DIV掃描時間。如今,使用旋轉編碼器是相當必要的,因為多極多檔旋轉開關已經過時,如果能找到,它們的價格也很高。我展示的另一個電路簡單地嗅探地址,並透過簡單的LED(在我的例子中是LED陣列)顯示設定。我從中國購買了一臺模擬示波器,我很喜歡它,但我非常不喜歡當超出範圍時它會發出蜂鳴聲的功能。在這裡,我使用的是當您順時針旋轉旋鈕超過最短Tsw(625ns)時,它會切換到最長Tsw(0,5s),但如果您逆時針旋轉旋鈕超過最長Tsw,它會停留在最長Tsw的功能。

我圍繞這一點的思考有點超前,因為現在我也希望將此功能用於伏特/DIV,這意味著如果您順時針(CW)翻轉旋鈕,您將從1mV轉到5V,但如果您逆時針(CCW)轉動旋鈕,您將停留在5V範圍。想象一下,您有一個大約50V的訊號,而您碰巧在5V範圍內逆時針(CCW)轉動旋鈕。您是否希望輸入放大器暴露在50V下?

輸入放大器(KOA)設定為1mV靈敏度,透過衰減器針對不同的伏特/DIV進行衰減,突然的50V在這裡可能不太好。我似乎已經設計好了,使輸入可以達到大約22V而不會破壞輸入保護二極體。這裡正常的示波器極限約為300Vp。


衰減器控制

[編輯 | 編輯原始碼]
衰減器控制

在這裡,我使用單個HC191計數器來選擇衰減器電壓電平(12個電平)。然後,我對4位地址進行譯碼,並使用優先編碼器為每個電平點亮一個LED。HC191將駐留在KOA中,而不是Spartan(或KOL)中,這使得整體設計由於KOA和KOL的獨立PCB而具有更多教學功能。

OOR功能(超出範圍)與上面相同,但在這裡,我們從1mV移動到5V(0h地址) while順時針旋轉旋鈕,在5V處逆時針旋轉旋鈕,則意味著我們停留在5V處。


衰減器

[編輯 | 編輯原始碼]
衰減器

簧片繼電器消耗的電流超過25mA,這超過了HC-MOS所能提供的電流,因此我們需要某種緩衝器,我使用ULN2003。來自上面衰減器控制的輸出隨後被反轉,因此我們需要在驅動ULN之前對其進行反轉。當Cin不為零並且我們希望衰減與頻率無關時,我們需要在兩個衰減電阻上都加上一個電容。在1mV/DIV時,訊號直接進入KOA,因此在這裡我們只能看到Cin,但由於標準探頭預期為25pF,因此我們必須新增大約17pF。因此,1mV/DIV是一個特殊情況,但我們可以將其視為在任何衰減級別,探頭都必須看到25pF。

有四個控制公式需要考慮

其中

當我們需要考慮KOA輸入時,我們有

這是預期的探頭電阻,最後

其中25pF是預期的探頭電容。

這簡化為

這裡我們只需要考慮上面關於物理R3/C3元件的特殊情況。順便說一下,Att總是小於1,因為它只是一個簡單的分壓器,我認為如果我們使用1/Att,公式會更加流暢。


衰減器表

[edit | edit source]
衰減器表

我已經計算了我們12種不同設定的所有衰減器值。我的目標是在頻率和電平方面都達到約2%的容差。雖然這種容差相當窄,但我部分需要並聯電容器,部分需要使用E96系列的特殊1%電阻。電容器的容差通常很差(不要指望超過10%),因此衰減器表中的這部分並不那麼精確。對於高靈敏度電平(低衰減),必須考慮輸入級(KOA)的電容。我認為KOA的輸入電容將小於8pF,而輸入保護二極體(1N4148)據說最大電容為8pF,雖然該值是在零反向電壓下測量的,但它們在-12V偏置時的實際電容會更好。KOA在沒有二極體的情況下,輸入電容估計為0pF,主要是因為電流發生器的輸出電容相當低,而它與電晶體的極低輸入電容串聯。

我突然想到,我們的KOA輸入電阻(限制保護二極體電流)的電容約為0,1pF,這遠小於我們的25pF,並且也與約8pF的淨二極體電容串聯。因此,在實際應用中,我們可以忽略KOA輸入電容。我已經這樣做了,並相應地更正了衰減器表。

我選擇輸入電阻為470歐姆,因為我的兩個模擬示波器在通道輸入端標有250Vp最大值,而470歐姆將近似地將輸入保護二極體的電流限制在250V/470歐姆=0,5A,而1N4148可以承受0,5A的重複峰值電流(0,3A最大直流電流)。在現實生活中,輸入端不會有穩定的250V直流電壓(在最壞的情況下),而只是峰值電壓,所以我的限制就足夠了。

限制輸入電壓為250V的另一個原因是,這是電容器的標準電壓額定值。然而,不同的電容器承受著不同的電壓,如果我們看R2,它在5V設定下幾乎承受了所有電壓,而在1mV設定下則沒有任何電壓,但我覺得,如果所有電容器都能承受250V,這是一個好方法。唯一的問題是,我的電容器庫存並不都是250V的,所以我計劃在特殊定製訂單中購買它們(你可能很高興地知道,我不需要那麼多)。

KOA,示波器放大器

[edit | edit source]
示波器放大器

在差分輸入級(A)中,我使用一對BF245A JFET電晶體。這主要是因為我想能夠將輸入電阻設定為高,如果你用雙極性電晶體這樣做,你需要達林頓電晶體來限制輸入偏置電流,從而限制偏移(由於另一個電晶體使用較低的電阻工作),我不喜歡這樣。在這裡,我還使用了一個電流發生器(T3),主要是因為它可以輕鬆地設定偏置電流,同時它也產生了大量的CMRR。下一個級(B)是一個C級輸入電容驅動器,而高驅動阻抗會導致低頻寬。集電極電阻R3/R4不是那麼大,但它們的電阻遠大於發射極跟隨器的輸出電阻。在C級,我使用了一對鍺高頻電晶體(AF239),我這樣做主要是為了好玩。這是增益級,我將電晶體的差分連線一直使用到這裡,因為DM增益高於CM增益。你可以將一個單端增益電晶體的發射極電阻去耦來獲得相同的增益,但我不喜歡那樣,我認為保持訊號差分更平滑。在級(D)中,只是一個發射極跟隨器,以實現低輸出阻抗。然而,輸出連線會破壞一部分低阻抗,因為我將可變電位器設定為1k,並與一個470歐姆的電阻串聯。對最大輸出阻抗的粗略估計為250歐姆,對於單極點,你希望極點(fp)在頻率上高3倍以達到-0,5dB,所以如果我們希望測量10MHz而沒有問題,則極點應該位於30MHz。我們對250歐姆的粗略估計告訴我們,下一級的最大電容應該是21pF。

我現在將描述不同的級,從輸入級(A)開始。雖然CM增益低得令人難以置信,但我省略了它,直接進入DM增益,DM增益是

這是一個相當低的增益,但與“板電阻”(rp)相比,我們使用了相當小的漏極電阻。在下一級,由於發射極跟隨器,電壓增益幾乎正好為1,我將不會顯示這一點。在C級,我們然後有我們的串聯增益,這些雙極性電晶體的增益表示式是

這裡,級B的輸出電阻(Rs)估計為25/Ic,而對於小訊號電晶體,gm據說為Ic[mA]/25。在AF239的資料表中,我發現g11在800MHz時為2mS,在200MHz時為45mS,雖然這是一個導納,但hie可能被評估為最壞的情況為500歐姆。

因此,總增益約為6*32=192。然而,這低於我的需求,我需要215。有趣!在我的位置,R3/R4可以增加很多,一方面,偏置電流需要減小,另一方面,級B有輸入電容,這並不是那麼關鍵,但會使頻寬變差,而我的目標是GBW為2,15GHz。另一方面,我在計算中使用了最差的g11。

構建這個“運算放大器”非常令人興奮,我會在增益方面超過215,在頻寬方面超過2,15GHz嗎?


KOT,示波器觸發器

[edit | edit source]
示波器觸發器

這個單元選擇四種不同的觸發源,併產生一個觸發脈衝,以便在想要的點開始取樣。這些源是CH1、CH2、EXT和LINE,通道輸入直接來自KOA,EXT來自外部觸發源,LINE來自50Hz交流電源線。還有一個探頭校準工具,可以用來校準探頭。還有一個旋轉開關(V-Mode),用於選擇傳送到ADC的內容。然而,在IC10:b之後,存在一個誤解,我在下面進行了更正。

新版本

[edit | edit source]
示波器觸發器

自動觸發將在KOL中啟用,因此不需要Ready訊號。自動觸發將始終啟用,以便可以顯示直流訊號。到目前為止,要顯示直流訊號,需要將觸發源設定為LINE,而KOT只對交流訊號提供觸發訊號。我將在Ts_Enable單元中進一步解釋。


KOL,示波器邏輯模組

[edit | edit source]

除了 SRAM、PROM、同步 IC、單穩態多諧振盪器和故障發生器外,所有數位電路都將在 Spartan FPGA 中實現。我認為 SRAM、單穩態多諧振盪器和故障發生器無法實現,但我認為 ROM 功能是可能的,但我不想將 Gate CAD (ECS) 與 VHDL/Verilog 混合,而且我程式設計也不擅長。同步 IC 可以用 Spartan 實現,但我認為如果使用現有的 IC,程式設計工作量會更少。

Ts_Enable

[edit | edit source]
Ts_Enable

該單元嗅探輸入觸發訊號,並使用單穩態多諧振盪器,在來自示波器模擬部分的觸發訊號出現時置位為高電平。多諧振盪器置位的時間略長於使用最大掃描時間 (10*Tsw_max) 掃描示波器所需的時間,而 x 方向上有 10 個“方塊”,每個 Tsw。

該單元必須位於 Spartan 之外。

新版本

[edit | edit source]
帶有自動觸發的 Ts_Enable

此版本包含一個自動觸發器,使 DC 訊號能夠顯示。它的工作方式是 Spartan 模擬整個 10Tsw(或螢幕寬度)延遲,如果在 10Tsw 之前沒有采樣,則會生成自動觸發。新的尖銳觸發訊號在自動觸發之前有 <10Tsw,這意味著如果其觸發在自動觸發之前到來,則靜態的 AC 訊號將接管,這對於螢幕寬度來說是正常情況,因為我們正在觀察可能只在一個 Tsw 內變化的訊號。

Ts/Tswap 生成器

[edit | edit source]
Tsw 生成器

在這裡,我們將 40MHz 晶體進行分頻,以提供不同的掃描時間。實際上,掃描時間 (Tsw) 本身並沒有生成,而是 Tsw/50,它提供了取樣時間 (Ts)。還建立了一個名為 Tswap (40MHz) 的訊號,用於在垂直同步時間內將取樣資料從取樣儲存器移動到讀取儲存器,因為除了垂直同步時間外,無法移動取樣,並且以最高速度移動取樣是件好事。

除了 PROM 外,元件型別編號並不相關,因為該單元將在 Spartan 中實現。

[我將在稍後刪除它,只需更新圖片即可。需要注意的是,我得出結論,在使用 500 個樣本的電視螢幕上顯示網格意味著我需要一個 128kB 的 PROM,而減少到 250 個樣本只需要一半,這意味著我可以使用我珍貴的 27C512-10 來完成 Tsw 分頻和網格。這樣,在設計方面,其餘部分將更加簡單(因為只有一個完整的位元組計數器),並且透過將每個分頻(Tsw)的樣本數量減半,我可以在 Tsw 方面降低,從而檢視更高頻率的訊號。缺點是我必須重新設計這張圖片以及下面的程式設計表,另一個缺點是解析度,即每個 Tsw 25 個樣本(而不是 50 個樣本)。]

新版本

[edit | edit source]
Tsw 生成器

下面,我將每個 Tsw 的樣本數量從 50 個減少到 25 個。這是因為我想使用我珍貴的 27C512,它們只有 64kx8,而我最初需要 128kx8。每個 Tsw 25 個樣本確實意味著我可以測量更高的頻率,而解析度會因此有所降低,但我認為每個 Tsw(分頻)25 個樣本就足夠了。超高速 SRAM 是限制因素。



PROM 程式設計表

[edit | edit source]
程式設計表

在這裡,40MHz 晶體被分頻,以提供我們需要的 Ts 和 Tsw(其中 Tsw 是每個分頻的掃描時間,示波器中 x 方向的分頻數為十個,每個 Tsw 在這裡被取樣 50 次)。如你所見,最短的 Ts 是晶體週期,我認為 SRAM 的訪問時間需要是這個時間的一半,因為我在使用 20ns 記憶體時遇到了一些問題。

新版本
[edit | edit source]
Tsw 程式設計表

在這裡,我更新了 Tsw PROM 的程式設計表。我還沒有做過太多研究,只是將上面的原始程式設計表更改為此表。我可能需要檢查一下,但這很容易。

取樣/交換模式開關

[edit | edit source]
取樣/交換模式開關

該單元在取樣 (Ts) 和交換 (Tswap) 之間切換。在取樣時,取樣儲存器將被資料填充,並且當最後一個地址被“取樣”時,會產生一個 LAR(最後一個地址就緒)。第一個 LAR 切換到交換,但交換隻能在垂直同步期間進行(這裡稱為交換開始),此外,總取樣時間可能超過 20ms(半個電視頁面時間),因此我們必須等到取樣完成後才能交換。在交換開始時,取樣儲存器的內容將以高速(在本例中為 40MHz)複製到讀取儲存器,由於速度如此之快,複製將在電檢視像的垂直部分結束之前完成。當所有資料都已交換後,會產生另一個 LAR,它透過 NTE 使能新的觸發。

在選定的起始行,將顯示樣本。電視螢幕上還有一個區域,該區域僅為我們的 256 ADC 資料範圍(En.D-lines)而啟用,該訊號還使水平調整顯示資料 (X-Pos) 成為可能。

新版本

[edit | edit source]
使用 VO 的取樣/交換模式開關

在這裡,我將“交換開始”更改為垂直脈衝 (VO),而 VO 的持續時間很短(約 200us),並且在 Spartan 內部不允許出現故障。透過這樣做,我可能還能夠跳過同步分離 IC (LM1881),而只使用同步發生器 IC (MSM5258),它具有我需要的訊號。

Ts/Tswap 地址

[edit | edit source]
Ts/Tswap 地址

在這裡,我們為 Ts 和 Tswap 生成地址。計數器初始化為 Fh,而第一個時鐘脈衝將它們設定為地址為 0h 的第一個樣本,從那裡開始,計數器只是向上遞增。我們還生成一個 LAR(最後一個地址就緒)訊號,它告訴我們已達到最大地址(即,所有 500 個樣本都已儲存)。LAR 生成兩次,第一次是在取樣後,第二次是在交換後,只有在交換完成後,LAR 才會生成 NTE(新觸發使能),以便可以進行新的取樣。

由於使用的計數器具有同步載入功能,因此時鐘需要延遲很短的時間(由一個小電容 C1 完成),因為 /LD 在時鐘到來時必須為低電平。我將改為使用非同步計數器。


新版本

[edit | edit source]
Ts/Tswap 地址

在這裡,我消除了一個計數器,將樣本數量從 500 個減少到 250 個。這與我珍貴的 27C512 EPROM 有關,同時它也簡化了很多。

在這張圖中,我使用 HC193 代替 HC163。這只是一個示意圖,而計數器將在 Spartan 內部實現。然而,我瞄準的是 Spartan 庫中的一個具有非同步載入功能的計數器。在以前版本中,我使用了一個具有同步載入功能的計數器,這會使事情變得複雜(載入脈衝必須延遲時鐘)。以前計數器的優點是它更快,但正如我所說,這並不重要(因為 Spartan 速度很快)。

我中繼 Ts/Tswap 時鐘的倒置版本(並將其稱為 /Ck),這非常重要,因為它在寫入儲存器時會對整個時鐘造成延遲。不能在生成地址的同時寫入儲存器。

LAR 訊號被檢查是否過沖(250 個樣本意味著 0-249),但發生的事情是,當樣本編號為 249 時,非同步載入會載入 FFh,以便當第一個 Ts/Tswap 到來時,我們具有地址 0。

LAR 脈衝很短,它只是一個大約 tpd 持續時間的尖峰。然而,我們在這裡不需要一個完整的脈衝,tpd 就足夠初始化計數器了。這樣,我們就有了大約 250 個 Ts/Tswap 的精確時間延遲。

TV_Read (adr+sim.data)

[edit | edit source]
TV_Read

這裡我們生成同步IC讀取的讀取地址。它從垂直輸出脈衝(VO)開始,該脈衝在奇數場時變高,地址由D-Read訊號向前遞增。訊號En.D-Lines告訴系統從哪裡開始讀取並在電視螢幕上顯示資料。En.D-lines設定了我們希望資料在螢幕上的位置。Sim.Data是一個模擬資料匯流排,用於與(反轉的)ADC資料進行比較。來自ADC的資料被反轉(模擬或數字方式),因為電視螢幕頂部的第一行行號為0,而行號向下增加,因此為了能夠將行資料與ADC資料進行比較,ADC必須被反轉。


新版本

[edit | edit source]
TV-Read,更簡單

在這裡,我還取消了處理250個樣本的計數器。當D-lines未使能且垂直脈衝(VO)到達時,模擬資料(Sim.Data)和讀取地址將被設定為FFh。在每次行讀取(D-Read)時,模擬資料將與讀取地址同時遞增。因此,在第一個D-read脈衝時,模擬資料為零,地址為零。模擬資料從電視螢幕頂部開始,因此A/D值將必須反轉以匹配行號(模擬資料)。當模擬資料等於反轉的A/D值時,畫素點亮。

此版本比原始版本更簡單,部分原因是我在這裡使用具有非同步載入和清除的上/下計數器,部分原因是地址/樣本數量只有兩位十六進位制數長。

在實踐中,這並不重要,因為我計劃使用Spartan庫中預定義的計數器,但我現在還不知道它們是什麼,另一方面,我可以只使用門來製造計數器,這正是我為我的CPU所做的,並且我知道它存在於庫中。

記憶體處理

[edit | edit source]
記憶體處理,方框圖
記憶體處理

取樣到取樣記憶體中進行。當取樣完成且垂直脈衝到達時,取樣的樣本將由交換時鐘移動到讀取記憶體。完成此操作後,讀取記憶體被讀取。這是因為樣本只能在電視顯示樣本時讀取,我們需要始終看到樣本。

網格PROM

[edit | edit source]
網格PROM

當模擬資料等於程式設計資料時,畫素點亮。模擬資料從螢幕頂部線性增加,第一行值為0,反轉資料使資料也為0。因此,當行號與資料相同時,畫素點亮。但是,網格PROM的程式設計並不那麼簡單。


新版本

[edit | edit source]
網格資料

這裡我減少了樣本數量,以便能夠使用我珍貴的27C512。這意味著每個Tsw(分度)的解析度將從每分度50個樣本變為每分度25個樣本。但是,它也使我能夠測量更高的頻率。考慮50Ts/Tsw,最短的Ts為25ns,那麼一個完整的分度將需要25ns*50=1,25us。現在,要視覺化的訊號的最短週期的估計值約為1,25us/5=250ns。反轉它使所能看到的最高頻率為4MHz。將解析度減半將能夠視覺化8MHz。

我不打算實現模擬示波器標準功能,即10倍放大,因此我們只能測量大約8MHz的最大頻率。

但是,此網格PROM的程式設計並不那麼簡單。在30年前的最初情況下,它需要查爾默斯大學最快的可用計算機花費大約兩個小時!

影片輸出發生器

[edit | edit source]
影片輸出發生器

此圖是初步的,但相當重要,因為它從根本上決定了如何讀取取樣記憶體。我的計劃不同於最初的版本,在最初的版本中,我們有一個名為“Swap-start”的輸出訊號。我這次使用了兩個SRAM,但現在正在考慮只使用每個通道一個SRAM,而MSM5258 PAL同步發生器實際上有一個復位,也許可以用來在受控的螢幕位置啟動對取樣SRAM的讀取。最初的解決方案必須等到垂直同步。

新版本

[edit | edit source]
影片輸出發生器

在這裡,我取消了同步分離器IC(LM1881),而是使用同步發生器IC(MSM5258)。垂直輸出脈衝(VO)的長度約為200us,它是在奇數場變正的脈衝。我預料到這裡會出現問題,因為如果我們使用最短的Tsw,一個10Tsw掃描(整個螢幕)將需要250*25ns=6,25us,這也與交換速度相同。因此,強制的取樣+交換將需要12,5us,也就是說,如果它花費的時間比取樣時間長,這意味著交換必須等到下一個垂直脈衝(VO)。但是,如果我們考慮長的Tsw,其中10Tsw可以長達5s(10*0,5s/DIV),這種情況總是會發生。在這裡,我們希望在螢幕上看到一些東西,儘管取樣還沒有準備好。所以這不是問題。

問題可能是,我沒有嗅探VO的實際邊緣,而是打算使用200us VO脈衝(而Spartan無法處理危險),這意味著如果10Tsw小於200us,我們必須等到下一個VO。另一方面,如果10Tsw大於VO,我們必須等到VO。

我已經得出結論,同步發生器IC的輸出是開漏的。這樣,很容易將輸出電壓適應Spartan。電阻器的值無關緊要,但我將使用10k。


行場解碼器

[edit | edit source]
行使能

此模組生成一個訊號,該訊號在所有256行(這是我們的資料範圍)期間為高電平。我很難理解它,並將嘗試更好地理解它。它被複製為LM1881同步分離器的應用示例。

我認為我現在更好地理解了它,並進行了一些修正,最徹底的修正是從連續行數量的借位輸出中取消了反相器,而這在所有連續行都被計數時是負的脈衝。在那個階段,閂鎖必須復位,以便連續行的最終計數在倒計時(CD)輸入上使能一個1來停止計數。連續行是最後發生的事件,然後生成奇偶螢幕。

但是,我當時認為,雖然這裡有電容器,但我需要將這部分放在Spartan之外。但我現在認為,這是不必要的,因為複合同步(CS)和垂直脈衝(VO)實際上都是脈衝。但是,行的精確開始可能需要在事後調整。

我這樣推理,雖然它們是脈衝,但它們何時處於控制狀態並不重要,因為它們無論如何都會同步出現。如果內部計數器的觸發相對於CS延遲14us脈衝或不延遲並不重要,同樣,如果VO脈衝的觸發延遲200us也不重要。


TV-Read時鐘

[edit | edit source]
TV-Read時鐘

此單元提供偏移可能性,用於我們希望在水平方向上顯示樣本的位置。它還為網格和資料提供獨立的偏移可能性。因此,我們可以將網格水平調整到電視螢幕的中心,並調整資料的X-POS。X-POS相當重要,因為我們經常希望調整它,以便訊號在某個位置穿過網格,以便我們可以更容易地估計它的頻率。

外部讀取

[edit | edit source]
外部讀取

這裡我們嘗試在外部讀取取樣資料。這是透過在PC中建立兩個訊號(VO和D-read)來初步完成的。VO是一個持續時間很短的正脈衝(通常約為200us),D-Read是一個合成的水平脈衝,它與讀取地址同步讀取資料。此同步在內部實現,因此為了在沒有PAL同步的情況下讀取資料,我們需要注意。當出現NTE(取樣和交換完成)時,這意味著新資料駐留在讀取記憶體中,但讀取讀取記憶體可能需要更短的時間(與10Tsw相比)才能達到下一個NTE(例如,新的取樣和交換),在這種情況下,我們只需等待NTE 併發送VO 直到NTE 變高,也就是說,我們讀取一次併發送VO 直到NTE 變高,然後我們再次讀取(新資料)。

KOS,示波器Spartan

[編輯 | 編輯原始碼]
Spartan 連線

雖然它被整合在 KOL 中,但這並不是一個獨立的單元。然而,我需要指定 Spartan 的幾個步驟(和門程式設計)。關鍵在於這裡只使用純門技術,因為我對它瞭解不多,並且為了簡化(在我的世界中),儘可能減少使用 Spartan,同時將整體尺寸縮至最小。

所有進入 Spartan 的訊號將從 5V 外部系統透過一個 100 歐姆的串聯電阻,而 Spartan 並不耐受 5V 電壓。然而,Ts_Enable 可以使用 3.3V 實現(HC-MOS 可以工作到 2V)。40MHz 晶體打算使用一個 5V DIL 晶體,需要一個 100 歐姆電阻,這也適用於 5V Tsw PROM(IC3)和旋轉編碼器計數器(IC6-7,HC191)的輸出,然而,旋轉編碼器計數器可以使用 3.3V 以及施密特觸發器(IC8)。

雖然 Ts_Enable 的觸發脈衝來自一個“模擬”5V 系統,但我認為在 Spartan 之前串聯一個 100 歐姆電阻會更具吸引力。

總的來說,我需要新增 10 個 100 歐姆電阻(我檢查過,3.3V 足夠用於 5V 系統上的高電平)。


新版本

[編輯 | 編輯原始碼]
Spartan 連線

這個版本將有一個用於自動觸發功能(10Tsw)的計數器輸出。它還將整合所有用於 Spartan 介面所需的電阻。

我有點認為來自 5V 系統的 100 歐姆電阻有點太低了,因為假設 Spartan 存在輸入保護二極體,那麼最大輸入電壓為 4V(3.3V+0.7V)。那麼(5V-4V)/100 為 10mA。Spartan 本身可能可以承受這個電流,但是提供這個電流的單元必須能夠提供 10mA。而現在我不確定它們是否能夠做到。PROM 可以,但 DIL 晶體和同步發生器 IC 呢?我檢查過,同步發生器 IC 的推薦最小電源電壓為 4V。

我得出的結論是,同步發生器 IC 具有開漏輸出,這意味著我可以將輸出設定為任何我喜歡的值(只要它低於 5V 電源)。所以這個 IC 不需要一個串聯輸入電阻連線到 Spartan。

我已經對這張圖片進行了升級,我的理念是現在所有 Spartan 外部的 IC 都將在 5V 下執行。然而,這個電壓(Vcc)並沒有標註,只有 3.3V(Vdd)情況下的電源電壓標註了。Spartan 需要透過電阻接受 5V,但它的 3.3V“核心”可以驅動 5V 邏輯。

我已經修改了這個圖紙,因為我突然決定將旋轉編碼器的計數器放在 Spartan 中。計數器實際上並不那麼特別,只是我很難意識到這一點。計數器只是使用 U/D' 輸入和 CLK 輸入的簡單向上/向下計數器。這些在 Spartan 庫中一定可以使用,如果不存在,我實際上可以使用普通門來製造它們。

KOV,示波器電視模組

[編輯 | 編輯原始碼]
示波器電視模組

行使能(LE)部分將從 Spartan(藉助內部計數器)生成,因此為 3.3V,所有其他訊號都是外部的,幅度為 5V。

門將使用 5V 電源,我已經檢查過 3.3V 足夠用於高電平。


我使用分立邏輯封裝設計了這個電視示波器。因此,整個設計可以使用封裝來構建。唯一的問題是封裝的數量相當多。因此,我試圖透過使用 Spartan FPGA 來減少封裝數量。我已經進行了一些初步計算,這似乎意味著封裝數量從大約 50 個減少到 10 個。然而,分立式設計意味著使用 HC193(我的建議),但是這個計數器只工作到大約 32MHz 的頻率(根據資料手冊,通常情況下),而我們有時執行 40MHz。所以這個計數器可能需要修改。最後一點是,我強烈建議將 PC 讀取功能中的所有訊號都進行緩衝,這將節省 Spartan 和讀取記憶體。HC541 可能適合這個目的。

華夏公益教科書