ผลต่างระหว่างรุ่นของ "Com sys lab/testing ALU"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 33: แถว 33:
 
[[Image:Systemc-alu-latch.png‎]]
 
[[Image:Systemc-alu-latch.png‎]]
  
'''อ่านเพิ่มเติม''': [http://www.asic-world.com/systemc/ports_signals6.html การใช้งาน clock]
+
'''อ่านเพิ่มเติม''':  
 +
 
 +
* [http://www.asic-world.com/systemc/process1.html การตั้ง edge และ level sensitive]
 +
* [http://www.asic-world.com/systemc/ports_signals6.html การใช้งาน clock]
  
 
== Register file ==
 
== Register file ==

รุ่นแก้ไขเมื่อ 01:19, 22 มิถุนายน 2559

จากวิชา com sys lab

ในส่วนนี้เราจะหัดใช้ latch เพื่อทดสอบ ALU จากนั้นเราจะลองนำ ALU มาต่อกับ register file (มีให้) เพื่อทดลองส่งสัญญาณควบคุมการทำงานของระบบ

Latch

สร้าง module latch4 ที่มี port ดังนี้:

  • sc_in<sc_uint<4> > a;
  • sc_out<sc_uint<4> > b;
  • sc_in_clk clk;

โดย latch จะเปลี่ยนค่า output b ให้เท่ากับ input a เมื่อ clk เปลี่ยนค่าจาก 0 -> 1 (positive edge triggered) นอกจากนี้ใน module ให้เพิ่ม method get และ set สำหรับอ่านและเขียนค่า b โดยตรงด้วย (เพื่อเป็นการตั้งค่าเริ่มต้น)

Hint: ในการเลือก positive edge trigger นั้น ตอนใส่ clk ใน sensitive ให้ใส่ clk.pos() แทน

หมายเหตุ: ที่ลงท้ายว่า 4 เพราะจะเป็น latch 4 บิต (ในงานถัด ๆ ไปจะต้องทำ latch 8 บิตด้วย สำหรับ program counter)

จากนั้นให้นำ latch ไปต่อกับ ALU เพื่อทดสอบการทำงาน โดยมีแผนภาพการเชื่อมต่อดังนี้ (ด้านล่างเป็นตัวอย่างการทดสอบ op = 0 (add) )

    +-------+        +-------+
 +->| LATCH |------->|a     c|------+
 |  |       |        |  ALU  |      |
 |  +-------+    1-->|b   op |      |
 |     |             +-------+      |
 |    clk                  |        |
 |                         0        |
 +----------------------------------+

ด้านล่างเป็นตัวอย่าง signal ที่ควรเห็น (y=1 เอาหนึ่งไปบวกตลอด; ผลลัพธ์อยู่ที่ z) ควรเพิ่ม signal ของ zero flag ด้วย

Systemc-alu-latch.png

อ่านเพิ่มเติม:

Register file