Adders และ flip-flops
| English | ไทย |
|---|---|
| carry/ˈkæri/ | carry |
| half adder/hɑːf ˈædə/ | HALF ADDER |
| full adder/fʊl ˈædə/ | adders.html full adder.html |
| flip-flop/flɪp flɒp/ | ฟลิป-ฟลอป |
| ripple-carry adder/ˈrɪpl ˈkæri ˈædə/ | adders.html ripple-carry adder.html |
| bistable/baɪˈsteɪbl/ | บิสเทเบิ้ล |
| counters/ˈkaʊntəz/ | เคาน์เตอร์ |
| SRAM/ˈesræm/ | SRAM |
| SR flip-flop/ˌes ˈɑː flɪp flɒp/ | SR flip-flop |
| JK flip-flop/ˌdʒeɪ ˈkeɪ flɪp flɒp/ | JK flip-flop |
| toggle/ˈtɒɡl/ | ทักเกิล |
เครื่องมือที่รู้เพียงจริงและเท็จ ทำคณิตศาสตร์ได้อย่างไร
- ตัวประมวลผลไม่มีเครื่องบวกในความหมายของสิ่งที่มีตัวเลขอยู่ข้างใน มีแต่เกตที่ตอบว่าจริงหรือเท็จ และไม่มีอย่างอื่น
- แต่ $1 + 1 = 10$ เกิดขึ้นจากเกตสองตัว: XOR ให้ผลรวม digit, AND ให้การยกตัว นั่นคือหน่วยคำนวณทั้งหมดในแบบจำลองเล็ก ๆ และการเชื่อมต่อกันหลายครั้งจะบวกเลขได้ทุกขนาด
- อีกครึ่งหนึ่งของคอมพิวเตอร์คือการจดจำ และหนึ่งบิตของหน่วยความจำก็คือเกตเช่นกัน ที่ต่อสายให้เอาต์พุตย้อนกลับเข้าอินพุตเพื่อคงค่าไว้
- บทเรียนนี้คือ half adder, full adder และ flip-flop ที่เก็บบิต
Half adder
- half adder บวกบิตเดี่ยวสองตัว คือ $A$ และ $B$, ผลลัพธ์คือ sum $S$ และ carry $C$
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
- อ่านตามคอลัมน์: $S$ เป็น 1 เมื่อมีอินพุตเป็น 1 พอดี ซึ่งคือ XOR. $C$ เป็น 1 ก็ต่อเมื่อทั้งสองเป็น 1 ซึ่งคือ AND. ดังนั้น $S = A \oplus B$ และ $C = A \cdot B$
- มันไม่สนใจ carry in做什么,所以它只是“半”加法器,不能单独级联使用。

เกตสองตัว และบวกไบนารีก็เกิดขึ้น
Gates ภายใน adder
บิตผลบวกของ half-adder เป็น XOR gate และ carry เป็น AND gate — เปลี่ยนค่า A และ B แล้วดูแถวใน truth table แสงสว่างขึ้น
ใน half adder, output ผลบวก S ผลิตโดย gate ใด?
$S = A \text{ XOR } B$ (1 เมื่อ inputs แตกต่างกัน); carry คือ $A \text{ AND } B$
ใน half adder, output carry C ผลิตโดย gate เดียวใด?
C เป็น 1 ก็ต่อเมื่อ inputs ทั้งคู่เป็น 1 ซึ่งคือ AND. ผลบวก S เป็น 1 เมื่อ inputs เป็น 1 เพียงตัวเดียว ซึ่งคือ XOR
Full adder
- Full adder บวก สาม บิต: $A$, $B$ และ carry-in, สร้างผลรวมและการยกตัวออก. $S = A \oplus B \oplus C_{\text{in}}$
- สามารถสร้างได้จาก half adder สองตัวบวกกับ OR gate: ตัวแรกบวก $A$ กับ $B$, ตัวที่สองบวกผลรวมนั้นกับ carry-in, และ OR รวมการยกตัวทั้งสอง
- เชื่อมต่อ full adders โดยให้ carry-out ของแต่ละตัวเข้า carry-in ของตัวถัดไป จะได้ ripple-carry adder แบบหลายบิต: สี่ตัวบวกเลข 4-bit สองจำนวน

การยกตัวคือสิ่งที่ต้องเดินทาง นี่คือเหตุผลที่เรียกว่า ripple
จับคู่แต่ละส่วนประกอบพื้นฐานเข้ากับหน้าที่ของมัน
Adder บวกบิต (ต่อกันด้วย full adders เพื่อการบวกหลายบิต); flip-flop เก็บหนึ่งบิต (JK แก้ปัญหาสถานะห้ามของ SR)
Full adder แตกต่างจาก half adder อย่างไร?
Full adder บวก A, B และ carry-in (ดังนั้น adders สามารถต่อกันได้) — สร้างจาก half adders สองตัว plus OR gate หนึ่งตัว
ตัวอย่างวิธีทำ: ทำไมใช้ full adder ไม่ใช่ half adder สองตัว
- อธิบายว่าทำไมเครื่องบวก 4-bit จึงสร้างจาก full adders แทนที่จะเป็น half adders.
- การบวกเลข 4-bit สองจำนวนทีละคอลัมน์ คอลัมน์ใดที่ไม่ใช่คอลัมน์ขวาสุดอาจได้รับ carry จากคอลัมน์ทางขวา, ดังนั้นจึงมี สาม อินพุตที่ต้องบวก ไม่ใช่สอง
- Half adder ไม่มี carry-in ดังนั้นจึงรับอินพุตที่สามไม่ได้ และการยกตัวจะหายไป
- เฉพาะคอลัมน์ที่มีนัยสำคัญน้อยที่สุดเท่านั้นที่ไม่มี carry-in ดังนั้น half adder จึงใช้ได้ตรงนั้น; ในทางปฏิบัติทั้งสี่เป็น full adders—with carry-in ตัวแรกต่อเข้ากับ 0
ทำไม 4-bit adder จึงต้องใช้ full adders แทน half adders?
Half adder สร้าง carry ได้จริง; สิ่งที่ขาดไปคือ carry-in ดังนั้นจึงไม่สามารถรับ carry ที่เข้ามาจากคอลัมน์ก่อนหน้าได้
เรียงลำดับการสร้าง 4-bit ripple-carry adder
Gates สร้าง half adder, half adders สร้าง full adder, full adders ต่อกันเป็น adder ความกว้างของคำ Carry ที่ไหลไปตามนั้นคือสิ่งที่ให้ชื่อ它与 ripple-carry
Flip-flops
- Flip-flop คือวงจร bistable:它有 two stable states, 0 and 1, and it remembers the one it is in. It stores exactly one bit.
- มันเป็นองค์ประกอบพื้นฐานของ รีจิสเตอร์, ที่ $n$ บิต หมายถึง $n$ ฟลิปฟลอป, ของเคาน์เตอร์, และเซลล์หน่วยความจำ SRAMRAM.
- ต่างจากแอดเดอร์ (adder) ที่ผลลัพธ์ขึ้นอยู่กับอินพุตปัจจุบันเท่านั้น ผลลัพธ์ของฟลิปฟลอปขึ้นอยู่กับอินพุต ในอดีต (past inputs) นั่นคือความหมายของความจำในระดับวงจร
Flip-flop ใช้สำหรับ:
Flip-flop มีสองสถานะเสถียรและเก็บหนึ่งบิต — ส่วนประกอบพื้นฐานของ registers และ SRAM
Flip-flop มีสองสถานะเสถียร —它有 two stable states และจำหนึ่งบิต — ซึ่งทำให้มันเป็นส่วนประกอบพื้นฐานของ registers และ SRAM
การต่อกันของ flip-flops ให้ registers และ counters; SRAM cache สร้างจากพวกมัน (ไม่จำเป็นต้อง refresh ต่างจาก DRAM)
SR และ JK
- SR flip-flop SR มีอินพุต S (set) และ R (reset) และเอาต์พุต $Q$ และ $\overline{Q}$, สร้างจาก_TMP gates_ สองตัวที่เชื่อมต่อข้ามกัน
S=1, R=0ตั้ง $Q$ เป็น 1.S=0, R=1รีเซ็ต $Q$ เป็น 0.S=0, R=0เก็บ สถานะปัจจุบัน ซึ่งเป็นความจำ.S=1, R=1ไม่ถูกต้อง: เพราะมันขอทั้ง set และ reset พร้อมกัน- JK flip-flop JK ขจัดข้อบกพร่องนั้นโดยการให้ค่า
1,1ที่อินพุตมีความหมาย: toggle, ดังนั้นเอาต์พุตจึงสลับไปยังค่าตรงข้าม สิ่งนี้ทำให้มันเหมาะสำหรับ เคาน์เตอร์ เนื่องจากโซ่ของ flip-flop ที่ toggle จะนับในรูปเลขฐานสอง - JK มักจะมี นาฬิกา: อินพุตจะทำงานเฉพาะเมื่อขอบสัญญาณนาฬิกา ซึ่งทำให้ทุก flip-flop ในเครื่องอยู่ในจังหวะเดียวกัน

The invalid input turned into a useful one
สำหรับ SR flip-flop, ข้อใดถูกต้อง? เลือก ทุก ข้อที่ถูกต้อง
การสลับสถานะที่ 1,1 คือการพัฒนาของ JK Flip-flop ส่วน SR ที่ต้องการ Set และ Reset พร้อมกันนั้นจะถือว่าไม่ถูกต้อง
พฤติกรรมในการสลับสถานะ (Toggle) ของ JK Flip-flop ทำให้เหมาะสำหรับการสร้างตัวนับ
สายโซ่ของ Flip-flop ที่แต่ละตัวสลับสถานะตามอินพุตจะนับเป็นระบบเลขฐานสอง การป้อนสัญญาณนาฬิกาจะทำให้ทุกขั้นตอนทำงานพร้อมกัน
Worked example: trace an SR flip-flop
- $Q$ is currently 0. Give $Q$ after the inputs S=1 R=0, then S=0 R=0, then S=0 R=1.
- S=1, R=0 sets the output, so $Q$ becomes 1.
- S=0, R=0 มีไว้, so $Q$ stays 1. This is the step that shows it is a memory: the inputs say nothing, and the output persists.
- S=0, R=1 resets, so $Q$ becomes 0. If S=1 and R=1 were applied, the answer is that the input is invalid, not a value.
คะแนนที่หลุดหายไป
- $S = A \oplus B$ และ $C = A \cdot B$: XOR สำหรับผลบวก, AND สำหรับการเบี่ยงเบน การสลับทั้งสองจะสูญเสียคะแนนทั้งหมด
- "Half" หมายถึง ไม่มี carry-in, ไม่ใช่ "ครึ่งหนึ่งของบิต"
- Full adder คือ half adder สองตัว plus OR, โดย OR จะรวมcarry ทั้งสองเข้าด้วยกัน
- บน SR flip-flop,
0,0เก็บสถานะ และ1,1ไม่ถูกต้อง. การปรับปรุงของ JK คือ1,1toggle
คุณเข้าใจแล้ว
- half adder: เข้าสองบิต, $S = A \oplus B$ มาจาก XOR และ $C = A \cdot B$ มาจาก AND; ไม่มี carry-in
- full adder: รับสามบิต สร้างจาก half adders สองตัวบวกกับ OR; เชื่อมต่อกัน โดย carry-out ไปเป็น carry-in สำหรับ ripple-carry adder
- flip-flop เป็น bistable และเก็บข้อมูลได้หนึ่งบิต; $n$ flip-flop ทำเป็น register ขนาด $n$ บิต และเป็นเซลล์ของ SRAM
- SR: set, reset,
0,0เก็บสถานะไว้,1,1ไม่ถูกต้อง · JK:1,1toggles, ซึ่งเป็นสิ่งที่ทำให้เป็น counter ได้ และทำงานแบบ clocked เพื่อรักษาการซิงโครไนซ์