高中數位邏輯實習_加法器及減法器實驗_並列加減法器實驗_Part C四位元二之補數並減器實驗_張元庭

. DeltaMOOCx
50粉絲
2023年12月3日
DeltaMOOCx 台達磨課師是高中/高工及大學的免費公益磨課師(MOOCs)平臺。練習題、討論、教師輔導及更多數位課程資源,請至https://high.deltamoocx.net 註冊。本影片採用「創用CC-姓名標示-非商業性-禁止改作4.0」臺灣授權條款,相關授權作業依「創用CC-姓名標示-非商業性-禁止改作4.0」規範辦理。
歡迎收看數位邏輯實習,我是張元梃老師
我們在設計一個電路裡面,當然必須要考量很多個情況
當然我們在上個單元講到做減法器的時候
假設使用1的補速會造成電路的延遲的效果
進而才會有更新的一種技術來發明
所以這個技術我們當然就變成2的補速的減法器的電路
而這個章節我們將介紹這個電路是如何設計的
那麼我們來看一下
那在講並減器之前我們再複習一下
1的補速的並減器是將減速的數值做反向
再跟被減速做加法運算
而2的補速的並減器會將減速的值反向再加1
那這邊的加1的動作
就可以在進位的輸入端Ci輸入一個1的一個數值
那最後再跟被減速做加法運算
那運算的結果會得到進位的輸出
我們是不用去理會的
那我們看到這邊的例子是
7減3等於4的一個例子
那其中7就變成011
那3的話就是0011所以是減0011
那這邊有一個減所以要經過2的補速的轉換
也就是變成加1101
或是正1101
那我們把這兩個數值相加列出值是
那答案就可以看到
1加1會得到01
那接下來這邊是1加1加0會得到10
那接下來是1加1再加1會得到11
那1加0再加1會得到10
那這邊的進位輸出就不用去理會
答案是0100也就是4
那接下來我們看一下輸出是負的一個例子
5減7會得到負2
那5的話是0101
減7就是負7就是負的0111
那經過2的補速的轉換
會得到正的1001
那這邊再列出值是的一個運算
可以得到結果
1加1會得到10
1加0再加0會得到01
這邊是1加0會得到1
0加1會得到1
那我們可以看到最大位元這個是1
所以我們經過2的補速的轉換
就是負的010也就是負2
那我們可以看到右邊這個圖
右邊這個圖就是2的補速的並減器的電路
那A代表值就是被減速
而B就是減速
那減速的話要先經過反向
然後再加1會得到4bit的輸出
而顯示的範圍
2的補速顯示範圍就是正的括號2的n-1次方再減1
到負的括號2的n-1次方括號
那以4個位元為一個例子
我們可以看到輸入是dcba
最大位元是d
所以它顯示範圍是000到0111
也就是0到7
所以正數的最大值是正7
那在負值的部分
我們可以看到負值的顯示是1000到1111
也就是負8到負1
所以負值的最大顯示是負8
那在這個地方我們有一個觀察
可以看到在2的補速的一個並減器
它的電路進位輸出是不用去理會的
所以在這個地方使用2的補速的一個動作
是不會有進位的延遲
那在運算的過程
我們還要注意到一個東西就是
運算的值會不會是對的
如果是不對的
那我們要怎麼去做處理
那檢查這個動作
就是叫做意味的檢查
所以我們可以利用意味的檢查的輸出
來檢查它是不是有錯的
那意味的意思就是說
我們在java的運算後
會得到一個最大位元的進位
還有次大的一個位元進位
那這兩個bit要做SO的運算
那輸出等於1的時候代表是有意味
就答案是錯的
那解決的方法我們可以增加輸出的位元長度
那通常我們會有四種的一個
結果是會有意味的
那我們來看一下
第一個意味的情況就是
正數加正數
那正數加正數的話
假設最大位元是等於1
那最大位元輸出等於1的時候
那代表電路就是錯的
因為正數加正數應該是正的
所以msb應該是等於0
以這個6加4的例子來看
這會等到10
那10的話就是0110再加上0100
那我們看到這邊就是它的值是
它運算的結果
0加0會得到0
然後1加0會得到1
1加1會得到10
然後1加0再加0會得到1
這邊沒有經位
那這就是最大位元的經位
這個是次大位元的經位
那這兩個bit要做SOR
我們可以發現這個SOR的結果是1
也就是意味的
那意味代表答案是錯的
因為我們說答案的話是這四個bit
那現在是6加4
6加4換一個是正10
所以這個地方最大位元不該是等於1
那解決方法就是
這邊輸出再多加一個bit
就可以解決了
那接下來我們看一下第二個例子
負數加負數
那負數加負數會得到負值
所以最大位元假設等於0的時候
代表我們的運算結果是有意味的
那我們以這個例子
負2加負7
答案等於負9
所以負2的話就是2的補數是1110
然後負7就是11001
那我們這邊是它的一個直式運算
我們可以看到
這邊運算這邊是1
1加0會得到1
1加2會得到1
這邊沒有經位
然後1加1
這邊會得到10
這兩個是有意味的
我們會看到這個結果是0111
你看這個數值就已經變成是正數了
答案就是錯的
所以這個是有意味的
那第三個情況是正數減負數
那正數減負數
減負嘛
會得到正
所以變成正加正會得到正
那假設我們碰到的狀況是
最大位元等於1的時候
代表就錯的
那老師這邊以7減負4的例子
答案應該是等於11
那這邊就是
011加上0100
那我們看到這個地方
這邊運算的結果
這個是1
這邊是1
這是0
這邊是1
然後1加0再加0
得到01
你看這兩個也是有意味的
這個最大位元是1
所以代表就是答案是錯的
那第四個是負數減正數
那負數減正數
應該是會得到負的輸出
那假設輸出的一個最大位元是等於0
那這代表也是有意味
我們看到這個地方是負4減5
答案是負9
那負4就是1100
那再加上11011
那我們列出直式的運算
這個是0加1等於1
0加1等於1
1加0等於1
這邊沒有進位
0加1再加1得到10
這兩個是有意味的
那我們說負數減正數
應該得到負的
可是這邊的最大位元是0
所以這個是答案就錯的
那我們接著再來看
我們剛剛已經瞭解
它的一個動作原理
接下來我們Quartus的電路圖
會是這樣子做
就是在A的部分是被減數
而B的部分是經過反向進來
而CI會送一個1的訊號
就可以得到4bit的輸出
那接下來我們來看
老師來示範Quartus的操作
以及時序模擬的影片
接著老師來示範
使用Quartus軟體來設計
四位元二次補數並減氣的實驗
那在這個電路圖
跟之前的單元
一次補數並減氣有點類似
唯一的不同就是在於
它的進位的一個輸入角
我們因為做二次補數
所以就是1的補數的反向
所以這邊我們把它接VCC
也就是反向V
反向V再加1
那我們來看電路圖
首先就是要把
之前的這個並駕器的一個模組
這六個檔案
我們要先做複製
那複製完畢之後
我們再來這個資料夾
建立好
那我們這個地方叫做PAS
然後2S
接著我們打開Quartus
那這個Quartus我們要建立專案
所以在這個地方
我們就create a new project
那這邊按下一步
那這邊選擇資料夾的儲存路徑
我們就選這個
然後開啟
那在這個地方
我們就是要做project
project name的一個命名
我們就跟資料夾一樣
然後再按下一步
然後接著再按下一步
那這邊選的晶片就是MAX3000A
的ALC44-10這一顆
按下一步
下一步finish
那專案就已經建置完畢
接著我們就開始要
繪製電路圖
那繪製電路圖之前
我們要再看一下
我們資料夾是不是有
把剛剛的檔案丟上去
那原來這個地方是沒有丟上去
我們再一次
在這個並駕器這六個檔案
先做複製
接著在這個地方做貼上
那這個我們就可以直接拿來用
那我們回來Quartus這邊
那Quartus這個地方
我們要先建立電路圖
所以按new
這邊有一個segmented file
按ok
那我們再按這個
Simple tool
去把剛剛的一個並駕
並駕器模組把它叫出來
我們再按ok
那在這個地方
我們所需要的一個
元件有一個VCC
這邊要key到VCC
那這邊建入它
然後接著就是input
然後還有nut
然後還有輸出
output
那我老師這邊就把那個電路圖
把它做放大
那我們放好之後
在這個命名
把它命名叫A0
然後我們按複製
貼上
然後複製這兩個
再貼上
那接著我們去碰
A的這個port
那碰好之後
接下來我們要去
把V的部分設計好
那這邊我們滑鼠左鍵按兩下
輸入V0
那這個是nut
然後這個地方我們把它
全選複製
貼上
然後再把這兩個
複製
貼上
然後接著要畫電路
把這個接線接好
這邊去碰它
這邊碰它
最後的V3也碰好
那我們再把這個輸出
這邊滑鼠左鍵按兩下
這邊把它叫做S0
那我們這邊複製
貼上
然後這個地方也是複製
貼上
那這邊就已經完成了
接著我們來做
儲存的動作
那我們在compiler
那compiler我們發現
電路沒問題
接著我們要去做
時序模擬來驗證
輸入跟輸出之間的關係
所以我們點選這個new
然後選retwebform file
按ok
在這個框框滑鼠左鍵點兩下
這邊有notified
那我們這邊拼選all list
丟到右邊
ok再ok
那這邊的
A要把它設為羣組
那我們命名A
接著這邊的
最大位元我們必須要做一個
Bus Big Order的設定
那這邊A就ok了
那我們再看V
V的羣組把它叫做V
接著也要把它設為
Bus Big Order
那我們檢查看看
這邊是V3是可以的
接著我們再看S
結果的部分
把它設為group
那這邊就把它叫做S
那這邊也要做
Bus Big Order的設定
那這邊已經ok了
那我們接著就按
這個edit
去設定它的group size
那這邊老師把它設100
那設好之後
我們把畫面縮一下
那縮好之後我們一樣的去做
設定
這個地方我們滑鼠左鍵點兩下
這邊把它點入
0110
這邊是6
那這邊把它點入
0010
那這邊就是6-2
所以這邊的答案應該正常是4
那接著我們再繼續
這邊把它輸入的值是
00
11
接著
這邊再給它輸入
0100
那這邊按
ok
那我們輸入這兩個
來觀察結果
按存檔
接著按simulation
那simulation我們來看
觀測一下它的一個結果
我們可以看到這邊是
6-2
答案是01004
那我們再看這個地方
是3-4
那3-4是-1
那這邊顯示的是
二之補數
是這個001
就是-1
所以我們可以驗證這邊的
電路是正常
可以用的
那老師的示範就到這邊
在
這一個課程的最後
老師來做一個總結
我們在這個課程裡面
講到了一個觀念叫做意味
那在這個意味到底是什麼意思
它主要就提示的
就是你在運算的過程是
算錯的
那通常我們要怎麼去解決它
這個地方同學很多人都不知道
那當然在這個單元裡面
我們就可以學到原來是
很簡單的只要增加單位的
資料的單位長度
就可以解決了
那進而我們再來看一下
這個單元裡面又講到
二之補數的一個電路原理
那當然我們再看一下
它的電路特點
也就是補足了一之補數的
一個缺點也就是不需要端回
進位
所以二之補數的一個並減器
在實際的CPU
或者是計算機裡面
是比較通用的
那我們在這個課程就到尾聲了
謝謝各位同學觀賞
