จุฬาลงกรณ์มหาวิทยาลัย

คณะวิศวกรรมศาสตร์

ภาควิชาวิศวกรรมคอมพิวเตอร์

2110-362 MICRO INTERF LAB

ชื่อ.............................................

เลขประจำตัว................................

หมายเลขเครื่อง............................

วันที่...........................................


6. การออกแบบ CPU ที่มี I/O Bus

วัตถุประสงค์

  1. เพื่อให้นิสิตสามารถออกแบบและสังเคราะห์ Processor ที่มี Memory Bus แยกจาก I/O Bus ได้
  2. เพื่อให้นิสิตได้พัฒนาทักษะในการออกแบบและสังเคราะห์วงจรมากขึ้น

การทดลอง

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 หน้าจอก่อนเริ่มรับข้อมูลต่อไป

ข้อกำหนดในการส่ง

หมายเหตุ