มีการใช้งานฟังก์ชั่นต่าง ๆ (เช่นเพิ่ม, ลบ, และอื่น ๆ ) ใน ALU อย่างไร


9

ฉันสงสัยว่าเนื่องจากมีฟังก์ชั่นมากมายที่ ALU ต้องทำฉันจะเริ่มใช้งานได้อย่างไร (การบ้านที่ฉันควรใช้ระบบ MIPS กับ Logisim โดยใช้เกตส์พื้นฐาน Flip-Flop เป็นต้น)

ส่วนที่ฉันสับสนคือฉันจะใช้ ALU ซึ่งสามารถทำหน้าที่ต่าง ๆ เช่น Add / Subtract / AND / OR / etc ได้อย่างไร ฉันต้องใช้ตรรกะในการควบคุมมากกว่านี้หรือไม่ (ดูด้านบนขวาใน "การมอบหมายก่อนหน้า" ด้านล่าง)

ในการมอบหมายก่อนหน้านี้ฉันใช้ ALU ที่สามารถเพิ่ม / ลบ / ลบได้ ตอนนี้ฉันคิดว่า ALU น่าจะสามารถทำหน้าที่ได้เช่น

การมอบหมายก่อนหน้าของฉัน

คำตอบ:


7

ในขณะที่คำนวณคำตอบทั้งหมดจากภายในแล้วใช้ mux เพื่อเลือกระหว่างเหล่านั้นจะได้ผลแน่นอนว่าไม่ใช่การออกแบบขั้นต่ำ

พิจารณาว่าคุณสามารถทำให้ปัญหาเกิดขึ้นได้ แทนที่จะเป็นตรรกะบล็อกเดียวที่มีอินพุต 8 บิตสองรายการคุณสามารถแบ่งพาร์ติชันนี้เป็นสองส่วน 4 บิตตราบใดที่คุณสามารถเชื่อมโยงพวกเขาเพื่อให้ได้ผลลัพธ์โดยรวมที่ถูกต้อง โชคดีที่การเชื่อมโยงชิ้นส่วนไม่ได้เลวร้ายไปกว่าบิตเพียงเล็กน้อยซึ่งในกรณีของการเพิ่มแสดงถึงบิตนำติดตัว ดังนั้น Slice 4 บิตแต่ละชิ้นจะมีบิตที่นำเข้าและบิตที่นำออกมา (โปรดทราบว่าโลจิคัลเช่น AND และ NOR จะไม่ต้องการสิ่งนี้แม้ว่าในภายหลังคุณจะใช้การเลื่อนซ้าย / ขวา แต่บิตนี้จะถูกนำมาใช้ใหม่ได้อย่างง่ายดาย)

ดำเนินการไปมากคุณสามารถใช้ 8 ชิ้นละ 1 บิต มีประโยชน์ในการคิดชิ้น 1 บิตเพราะทำให้ง่ายต่อการคิดเกี่ยวกับวิธีที่ปรับสเกลกลับเป็นชิ้นใหญ่ ดังนั้นด้วยการแบ่งบิต 1 บิตคุณมีเพียง 7 อินพุต: โค้ดฟังก์ชัน 4 บิต, บิตจากอินพุต A, บิตจากอินพุต B และบิตนำเข้า นอกจากนี้คุณยังมีเอาต์พุตเพียงสองตัว: ฟังก์ชันและดำเนินการ ดังนั้นตอนนี้คุณสามารถเขียนฟังก์ชั่นการส่งออกทั้งสองในแง่ของเพียง 7 อินพุตซึ่งอยู่ในขอบเขตของความสามารถของมนุษย์ที่จะลดลงอย่างสมเหตุสมผล คุณจะพบกับประตูจำนวนหนึ่งที่ไม่จำเป็นต้องคำนวณฟังก์ชั่นทั้งหมดเสมอไป แต่มันไม่สำคัญว่าจะเกิดอะไรขึ้นภายในชิ้นส่วนเท่านั้น แต่มันจะให้ผลลัพธ์ที่ถูกต้องเมื่อดูจากภายนอก

ตอนนี้คุณสามารถไปได้สองวิธี วิธีหนึ่งคือเพียงใช้ 8 ชิ้น 1 บิตเหล่านี้และคุณทำเสร็จแล้ว อีกวิธีหนึ่งคือการทำให้ชิ้นใหญ่ขึ้นและจากนั้นใช้ ตั้งแต่ 1 บิตถึง 2 บิตสมการจะเพิ่มจาก 7 อินพุตถึง 9 และ 4 บิตจะต้องการฟังก์ชัน 13 อินพุต ไม่ใช่เรื่องง่าย แต่จะให้ผลลัพธ์ที่กระชับกว่าวิธีการคำนวณทุกอย่างจากนั้น mux นอกจากนี้หากคุณดู internals ของชิ้นส่วน ALU 74181 4 บิตคุณจะไม่เห็น mux ในนั้น


ฉันกำหนดเป้าหมายคำตอบของฉันเพิ่มเติมที่ "ง่ายต่อการเริ่มต้นด้วย" ปลายสเปกตรัม แต่ขอบคุณสำหรับการชี้ให้เห็นถึงความเป็นไปได้ที่ดีที่สุด (ฮาร์ดแวร์ฉลาด)
Martin Thompson

5

ใช่คุณต้องการตรรกะการควบคุมมากขึ้น

การมอบหมายก่อนหน้านี้ของคุณนั้นมีความเกี่ยวกับคณิตศาสตร์อย่างแท้จริง (นั่นคือคำ?) ดังนั้นคุณสามารถใช้ตัวบวกเดียวและนวดอินพุตโดยใช้สัญญาณควบคุมเพื่อสร้างฟังก์ชั่นที่คุณต้องการ

ฟังก์ชั่นใหม่ของคุณเป็นแบบลอจิกดังนั้นคุณต้องมีบล็อกอื่นเพื่อดำเนินการทางตรรกะ สัญญาณควบคุมจะเปลี่ยนการทำงานของบล็อกนี้

จากนั้นที่ด้านล่างของแผนภาพคุณจะต้องใช้มัลติเพล็กเซอร์ (บางครั้งเรียกว่า 'mux') ซึ่งขับเคลื่อนโดยสัญญาณควบคุมเพื่อเลือกคำตอบที่คุณต้องการส่งออก (อันจากแอดเดอร์และวงจร "อินพุตการนวด" หรืออันใดอันหนึ่งจากโอเปอเรเตอร์ตรรกะ)

หากคุณสามารถเลือกการเข้ารหัสใหม่สำหรับสายควบคุม ALU ของคุณฉันอาจถูกล่อลวงให้ใช้ MSB เป็น "เลขคณิต / ตรรกะ" เลือกและอื่น ๆ เพื่อเลือก "ฟังก์ชั่นย่อย" หากเหมาะสมเพราะมันทำให้การถอดรหัสสำหรับ mux สุดท้าย


ใช่คณิตศาสตร์เป็นคำ :)
Majenko

1
ดูเหมือนว่าฉันแค่เลขคณิตเป็นคำที่คุณต้องการ หมายเหตุคำนี้มีสำเนียงที่สามพยางค์ ด้วยสำเนียงที่สองของพยางค์มันเป็นคำที่แตกต่างกันซึ่งหมายถึงกลไกการแสดงโอเปอเรชันเชิงตัวเลขขั้นพื้นฐานเช่นเดียวกับที่คุณเรียนในชั้นประถม
Olin Lathrop

1

วิธีการที่ดีวิธีหนึ่งในการจัดการการดำเนินการเชิงตรรกะคือการให้บิตของตัวถูกดำเนินการทั้งสองทำหน้าที่เป็นตัวเลือกอินพุตไปยังมัลติเพล็กเซอร์ 4 อินพุตและป้อนอินพุต "ข้อมูล" ของมัลติเพล็กเซอร์เป็นรูปแบบสี่บิต 8 บิต ALU จะมีแปด multiplexers - หนึ่งสำหรับแต่ละบิต - และอินพุต "data" ของ 8 multiplexers ทั้งหมดจะถูกผูกเข้าด้วยกัน)


การจัดเรียงของการใช้มัลติเพล็กเซอร์เป็น ROM ขนาดเล็กมาก - และนั่นเป็นอีกวิธีหนึ่งในการใช้ ROM จริง
JustJeff

Nx1-ROM ROM เป็นมัลติเพล็กเซอร์ซึ่งอินพุต "data" เป็นแบบใช้สายยาก ในสถานการณ์ที่ฉันอธิบายอินพุต "data" ของ multiplexer จะเป็นโอเปอเรเตอร์ที่เลือก ในทางปฏิบัติเราอาจใช้ ROM ขนาดเล็กเพื่อเลือกการดำเนินการทางตรรกะที่เป็นไปได้ 16 ข้อรวมถึงการดำเนินการอื่น ๆ จาก opcode 3- หรือ 4 บิต (ถ้าทำได้ให้ส่ง opcode โดยตรงไปที่ หน่วยโลจิคัล แต่ใช้มัลติเพล็กเซอร์อื่นเพื่อเลือกการดำเนินการอื่น ๆ ในกรณีที่ opcode จะไม่สร้างการดำเนินการทางตรรกะที่มีประโยชน์)
supercat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.