# 2017q3 Homework1 (ternary) contributed by <`ian910297`> ### Reviewed by `jcyztw` * 作業區的 github 連結請修正為此份作業的 github repository 連結,目前的連結會連到 Homework1 作業區頁面。 * 如同老師在作業區的批閱評語,還有很多[作業要求](https://hackmd.io/s/Sym0UAk9Z#%E4%BD%9C%E6%A5%AD%E8%A6%81%E6%B1%82)尚未完成,有空的話趕快補上吧。(P.S. 我自己也還有很多要求沒做完,一起加油吧!) ## TODO * 實驗設計 * 案例觀察 ## Balanced Ternary > TODO: 詳細閱讀 [Fast Ternary Addition](http://homepage.divms.uiowa.edu/~jones/ternary/arith.shtml),理解 base-3 的原理 (並且複習數位邏輯),整理 base-3 基礎運算操作 > [name="jserv"][color=red] 這是一個不需要正負號,就能表示正負數的數值系統,由三個符號組成`T,0,1` `T` 表示 $-1$ `0` 表示 $0$ `1` 表示 $1$ ### 整數 將其表示成十進位的數學式 $\sum\limits_{i=1}^{n}a_{i} \times 3^{i-1}$ $a_{i} \in {T, 0, 1}$ * $n$ 表示有幾位數 * $i-1$ 表示從零次方開始 舉例說明 $10T_{bal3}$ $\to n = 3$ $\to -1 \times 3^0 + 0 \times 3^1 + 1 \times 3^2$ $\to 6$ ### 小數 ## 運算 ### ternary multiplexer 下圖電路設計,有 5 個 pin 腳`(sel, inN, inO, inP, out)`,表示會根據 selector 對應的三種狀態`(N, O, P)`輸出對應的值`(inN, inO, inP)` ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/multiplexer.png) >英文、數字與中文間請以空白隔開 >[name=課程助教][color=red] > ### unary functions 文中提到四種基本的單元,走馬看花即可,只是定義稍後會用到的基本單元 * $A+1$ * $A-1$ * $max(A,0)$ * $min(A,0)$ ### half-adder 以 half-adder 為例,推導過程。須先畫出真值表,並由後往前推導 已知 $S'$ 為 $A+B$ * $B=-1$,A必須是 $(1, -1, 0)$ * $B=0$,A必須是 $(-1, 0, 1)$ * $B=1$,A必須是 $(0, 1, -1)$ 只從真值表裡我們看不出這三個單元有什麼意義,但已知結果是$A+B$,那當 $B=-1$ 帶入就可以直接將其`inN`解讀為 $A-1$,同理可帶入值去解釋另外兩個輸入的意義 ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/A%2BB.png) ### Overflow 由於 consensus 與 fulladder,跟 half-adder 推倒過程相像,不再說明 這邊與前三者最大的不同在於複雜度,需要先列出可能的狀況,再寫出真值表輔助 比如說下圖在計算當$C_{in}=-1$,`inN`的輸入單元為何,先列出可能的狀況,在畫出真值表,即可湊數 ![](https://i.imgur.com/R9g2iNk.jpg) ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/overflow.png) > 請閱讀 [Ternary computing: basics](https://github.com/ssloy/tutorials/wiki/Ternary-computing:-basics),關注於 ternary multiplexer, Unary functions, half-adder, Consensus, full adder, Overflow > [name="jserv][color=blue] ## 參考文獻 * [Wikipedia: Balanced Ternary](https://en.wikipedia.org/wiki/Balanced_ternary) > "wiki" 是可供多人協同創作的超文本系統,而 Wikipedia 是運用 wiki 技術和概念而建構的線上百科全書,這兩者不同,所以你不能把 Wikipedia 簡稱 "wiki" > [name="jserv"][color=red] ## IOTA 案例分析 - [ ] 閱讀 [IOTA 繁體中文白皮書](https://hackmd.io/c/rkpoORY4W/https%3A%2F%2Fhackmd.io%2Fs%2FryriSgvAW)