在
forward star:學習筆記:二極體與邏輯電路zhuanlan.zhihu.com
一文中,我們講到了與非、或非等幾種邏輯門。但是它們的運作都需要輸入端持續輸入訊號,一旦中止,資訊就會丟失。
時序電路(sequential circuits)就旨在解決這一問題,它能夠儲存資訊;同樣地,它也有幾種基本的結構。
光看這個圖是很令人困惑的,因為儘管兩個或非門中,r、s的輸入給定,但是另外乙個輸入端卻是需要從結果推過來。如果把右邊那個表直接代進去,可以發現這確實成立;然而,究竟為什麼會這樣呢?我們可以對電路動態地分析。如果一次只能轉變
中的乙個,那麼
的變換為
.我們就對這過程進行分析。
假設初始時
注意r、s以外的輸入端,分別與另乙個或非門的結果相連,因此它們是相同的
當我們把
轉化為0時,顯然先影響上面乙個或非門,但由於或非的結果
仍為0,因此不會對下面的或非門產生影響,即
維持原狀——這也是它能儲存資訊的原因;此時
,它記錄的是上一次的訊號。
可以看到只有r發生了變化 而
從 轉化為
時, 由0變為1,那麼首先影響下面的或非門,
變成0;之後,上面的或非門中輸入訊號「1」也將變成「0」,於是或非運算後的結果
變為1;再之後下面或非門中的輸入訊號「0」變為「1」,但是不影響
的結果,於是狀態就穩定了下來。如圖:
因此便有了右邊那個對應的表,當
時, 記錄上一次的訊號;否則
。但注意
不能同時為1.
sr latch在電路中的符號如下圖:
d latch在sr latch的基礎上改造而成。首先用乙個非門把d轉換為s、r:
這樣clk就決定了其是否工作,如果clk為0,兩個與門的結果為0,那麼r、s為0,根據sr latch,
維持原來的值;否則當clk為1時,
才記錄新值。
儘管latch實現了儲存資訊的功能,但是訊號的傳輸有延時,這是因為非門轉化器無法與d的另一端同步:
d flip-flop的想法是用兩個d latch,其中乙個用於同步d的值,另乙個決定這個值是否傳給q:
這樣clk就並非與之前一樣,0是儲存,1是同步;而是當clk從0變為1或從1變為0時進行重新整理。以上圖第乙個結構為例,當clk從0變為1時,右邊d latch的clk輸入端瞬時改變,使q與n同步;而左邊d latch因非門影響,短暫地維持了1的狀態,即d與n仍然同步。因此,此時q、n、d保持一致,實現重新整理:
register將多個d flip-flop連在同乙個clk上,由於每個d flip-flop可傳遞乙個二進位制位,因此register可以表示二進位制數:
將組合電路與register結合,可以同時實現邏輯運算和資料儲存,其中組合電路用於邏輯運算,register用於儲存。
給所有register接上相同的clk訊號:
由於register之間的邏輯運算需要時間,我們給clk接上週期性的訊號,就可以讓資訊傳遞和邏輯運算交替進行。
如果我們把乙個任務拆成多個邏輯運算的部分,使得它們能平行計算,就可以提高計算的效率:
不過這也要求clk的頻率更高,因此任務不可能無限拆分。
現在有乙個二進位制序列,每次操作你可以選擇乙個子串行,將子串行所有數右移一位,即
;求出最少的操作次數,使得新序列與原序列按位異或後的值全為1(即每位取反)。
注意乙個序列
為另乙個序列
的子串行,當且僅當
刪掉若干字元(可以不刪)後等於
.分析:我們先分析題目,顯然可以發現每次子串行必須是01交替出現,即01010或10101;如果中間有連續的0或1,那麼右移的時候連續的一段其實和不移的效果是一樣的。那麼問題就轉化為最少可以把原序列分成多少個01序列。這樣我們只需要看最長的一段1與最長一段0中長度的最大值即可。
我們構造:
,那麼答案就是 :
即最大/最小連續子串行和.
考慮動態規劃,inputs是序列中當前的數
,state就是遞推出的
,state logic則是狀態轉移方程,output logic則是判斷當前序列是否讀入完。那麼每次clk重新整理,
由next state同步到到state,並和inputs通過state logic的狀態轉移方程來求出next state.
以下函式中,和其他函式不屬於一類的是
以下函式中,和其他函式不屬於一類的是 解析 strcpy 拷貝字串strncpy 複製某一長度的字串到另乙個字串中strcat 連線兩個字串strtok 查詢指定字元之前的子串strncat 連線某一長度的兩個字串snprintf 將可變引數按照format格式化成字串,然後複製到str中首先標頭檔...
不屬於python標準庫 Python標準庫概覽
總結 這個部分講了一些常用的python庫的方法。一下子也記不住,不過基本都自己敲了 試了試。os模組 os模組介紹了一些作業系統級別的方法 os.getcwd 得到當前工作目錄 os.chdir 改變工作目錄 os.system mkdir haha 建立資料夾haha 字串正則匹配 匯入re模組...
windows 刪除使用者 使用者不屬於此組
答案 1 執行regedt.exe登錄檔編輯器,選擇hkey local machine sam sam,點滑鼠右鍵,在彈出的選單上的選擇 許可權 更改administrators的許可權為完全控制。退出登錄檔編輯器。2 再次執行regedit,檢視 hkey local machine sam s...