Adders และ flip-flops
แนะนำใหม่| English | ความหมาย |
|---|---|
| carry/ˈkæri/ | การถ่วง |
| half adder/hɑːf ˈædə/ | ฮาล์ฟแอดเดอร์ |
| full adder/fʊl ˈædə/ | เครื่องบวกเต็ม |
| flip-flop/flɪp flɒp/ | ฟลิป-ฟลอป (Flip-flop) |
| ripple-carry adder/ˈrɪpl ˈkæri ˈædə/ | เครื่องบวกแบบนำพากระแสวน |
| bistable/baɪˈsteɪbl/ | สภาวะสองเสถียรภาพ |
| counters/ˈkaʊntəz/ | ตัวนับ |
| SRAM/ˈesræm/ | SRAM (หน่วยความจำ RAM แบบสถิต) |
| SR flip-flop/ˌes ˈɑː flɪp flɒp/ | _flip-flop SR_ |
| JK flip-flop/ˌdʒeɪ ˈkeɪ flɪp flɒp/ | _flip-flop JK_ |
| 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 ใด?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
$S = A \text{ XOR } B$ (1 เมื่อ inputs แตกต่างกัน); carry คือ $A \text{ AND } B$
ใน half adder, output carry C ผลิตโดย gate เดียวใด?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
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
จับคู่แต่ละส่วนประกอบพื้นฐานเข้ากับหน้าที่ของมัน
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Adder บวกบิต (ต่อกันด้วย full adders เพื่อการบวกหลายบิต); flip-flop เก็บหนึ่งบิต (JK แก้ปัญหาสถานะห้ามของ SR)
Full adder แตกต่างจาก half adder อย่างไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
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?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Half adder สร้าง carry ได้จริง; สิ่งที่ขาดไปคือ carry-in ดังนั้นจึงไม่สามารถรับ carry ที่เข้ามาจากคอลัมน์ก่อนหน้าได้
เรียงลำดับการสร้าง 4-bit ripple-carry adder
Difficulty 3/5 · 200 coins + a small bonus on first completion today
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 ใช้สำหรับ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Flip-flop มีสองสถานะเสถียรและเก็บหนึ่งบิต — ส่วนประกอบพื้นฐานของ registers และ SRAM
Flip-flop มีสองสถานะเสถียร —它有 two stable states และจำหนึ่งบิต — ซึ่งทำให้มันเป็นส่วนประกอบพื้นฐานของ registers และ SRAM
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การต่อกันของ flip-flops ให้ registers และ counters; SRAM cache สร้างจากพวกมัน (ไม่จำเป็นต้อง refresh ต่างจาก DRAM)
SR และ JK
- SR flip-flop มีอินพุตคือ S (set) และ R (reset) และมีเอาต์พุต $Q$ และ $\overline{Q}$ สร้างจาก NOR gate สองตัวที่เชื่อมต่อข้ามกัน
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 แก้ไขข้อบกพร่องนี้โดยกำหนดความหมายให้กับอินพุต
1,1คือ toggle ทำให้เอาต์พุตเปลี่ยนเป็นค่าตรงกันข้าม เหมาะสำหรับการสร้าง counters เพราะการต่อ flip-flop ที่ toggle กันเป็น سلسلةจะนับในรูปเลขฐานสอง - JK มักจะมี clock: อินพุตจะทำงานเฉพาะเมื่อมีสัญญาณ clock edge เพื่อทำให้ทุก flip-flop ในเครื่องทำงานพร้อมกัน

The invalid input turned into a useful one
สำหรับ SR flip-flop, ข้อใดถูกต้อง? เลือก ทุก ข้อที่ถูกต้อง
Difficulty 2/5 · 140 coins + a small bonus on first completion today
การสลับสถานะที่ 1,1 คือการพัฒนาของ JK Flip-flop ส่วน SR ที่ต้องการ Set และ Reset พร้อมกันนั้นจะถือว่าไม่ถูกต้อง
พฤติกรรมในการสลับสถานะ (Toggle) ของ JK Flip-flop ทำให้เหมาะสำหรับการสร้างตัวนับ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
สายโซ่ของ 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 เก็บค่าไว้ ดังนั้น $Q$ จึงคงเป็น 1 นี่คือขั้นตอนที่แสดงว่าเป็นหน่วยความจำ: อินพุตไม่มีการเปลี่ยนแปลง และเอาต์พุตยังคงอยู่เดิม
- S=0, R=1 รีเซ็ต ทำให้ $Q$ กลายเป็น 0 หากมีการใช้ S=1 และ R=1 คำตอบคืออินพุตนั้น ไม่ถูกต้อง ไม่ใช่ค่า
คะแนนที่หลุดหายไป
- $S = A \oplus B$ และ $C = A \cdot B$: ใช้ XOR สำหรับผลบวก และ AND สำหรับ nation carry การสลับตำแหน่งจะทำให้เสียคะแนนทั้งสองข้อ
- "Half" หมายถึง ไม่มี carry-in ไม่ใช่ "ครึ่งหนึ่งของบิต"
- Full adder คือ half adder สองตัวบวกกับ OR, โดย OR จะรวม nation carries ทั้งสองเข้าด้วยกัน
- บน 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 adder สองตัวบวกกับ OR; เชื่อมต่อกัน nation carry-out ไปยัง nation carry-in เพื่อสร้าง ripple-carry adder
- flip-flop เป็น bistable และเก็บข้อมูลหนึ่งบิต; $n$ flip-flops สร้าง $n$-bit register และเป็นเซลล์ของ SRAM
- SR: set, reset,
0,0เก็บค่าไว้,1,1ไม่ถูกต้อง · JK:1,1toggle ซึ่งเป็นสิ่งที่ทำให้ทำ counters ได้ และมี clock เพื่อรักษาการซิงโครไนซ์