จุฬาลงกรณ์มหาวิทยาลัย คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมคอมพิวเตอร์ 2110-362 MICRO INTERF LAB |
ชื่อ............................................. เลขประจำตัว................................ หมายเลขเครื่อง............................ วันที่........................................... |
6. การออกแบบ CPU ที่มี I/O Bus |
วัตถุประสงค์
การทดลอง
1. ให้แสดงการออกแบบ และ สร้าง CPU ลงบน Xilinx FPGA ที่มีลักษณะและโครงสร้างดังนี้
กำหนดให้ CPU มี Databus ขนาด 8 บิต (P28:P35) มี Address Bus ขนาด 16 บิต (P39:P60) แบ่งเป็น Program Memory Space (EEPROM) และ Data Memory Space (ใช้ RAM) มี Accumulator (Acc) ขนาด 8 บิต Program Counter (PC) ขนาด 16 บิต และ Z Flag ซึ่งจะมีค่าเป็น 0 เมื่อข้อมูลใน Acc เป็น 0 หมดทุกบิต นอกจากนี้ยังมี Address และสัญญาณควบคุมของ I/O แยกเป็นอิสระจาก Address และสัญญาณควบคุมของ Memory โดยกำหนดให้ใช้ Port DC3 เป็น Address และ สัญญาณควบคุมที่ต่อพ่วงกับ I/O Board และ Port DC2 เป็น Bidirectional Port* เพื่อสื่อสารข้อมูลกับ I/O Board คำสั่งแต่ละคำสั่งอาจมีขนาด 1,2 หรือ 3 byte(s) ทั้งนี้กำหนดให้ Byte แรกเป็น Opcode และ Byte ถัดมาเป็น Operand (ุถ้ามี)
ลักษณะของ Opcode Byte
7 6 5 4 3 2 1 0 0 0 Addr . Mode Opcode กำหนดให้ CPU มี Addressing Mode ทั้งสิ้น 3 แบบ คือ Inherit(IH), Immediate(IM) และ Direct(DI) ดังแสดงในตาราง
Code Mode จำนวน Byte การทำงาน 00 IH 1 ไม่มี Operand ทำงานเฉพาะ 01 IM 2 Operand เป็น Data ขนาด 1 Byte 10 DI 3 Operand เป็น Address ขนาด 2 Byte 11 ไม่มีการใช้งาน กำหนดให้ CPU มีคำสั่งทั้งสิ้น 9 คำสั่งดังต่อไปนี้
Code คำสั่ง IH IM DI Flag การทำงาน หมายเหตุ 0000 NOP X ไม่มีการทำงาน 0001 LDA X X Z Load ค่าจาก Data Memory มาเก็บใน Acc. 0010 STA X Store ค่าของ Acc. เก็บใน Data Memory 0011 ADD X X Z Add ค่าจาก Data Mem เข้ากับค่าใน Acc. 0100 NAN X X Z Nand ค่าจาก Data Mem เข้ากับค่าใน Acc. 0101 JMP X Unconditional Jump Address ที่ระบุเป็น Program Memory เสมอ 0110 JPZ X Jump if Z is set 0111 LDP X Z Load ค่าจาก Program Mem มาเก็บใน Acc 1000 OUT X Output ค่าใน Acc ออกมาที่ I/O ตาม Address ที่ระบุ 1001 INP X Z Input ค่าจาก I/O ตาม Address ที่ระบุมายัง Acc.
2. จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อแสดงข้อความ เลขประจำตัวนิสิตออกมายัง 7 Segment ของ I/O Board
3. จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อแสดงข้อความ Hello, Word ออกมายังจอ LCD
4. จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อทำงานร่วมกับ LCD และ KeyPad ใน I/O Board โดยรับข้อมูลจาก KeyPad และแสดงออกมาเป็นตัวเลข / สัญลักษณ์ # , * บนจอ LCD และเมื่อมีการกดปุ่ม Reset ให้ลบค่าของข้อมูลในจอออกทั้งหมด ทั้งนี้หากข้อมูลที่แสดงเต็มจอแล้วให้ทำการ Clear หน้าจอก่อนเริ่มรับข้อมูลต่อไป
ข้อกำหนดในการส่ง
หมายเหตุ