Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Đăng ký
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semi2_empowered.jpg

Ports And Signals Part IV

Email In PDF.

Resolved Vector Signals

Resolved vector signals have same property as Resolved Logic Vectors. Resolved vector signals are used for connecting two resolved logic vector ports. One key issue is, Resolved Vector signals should not be driven outside a process/methods.

Example : Resolved Vector Signals

  1 #include

  2

  3 SC_MODULE(resolve) {

  4   sc_in_rv<1>  in;

  5   sc_out_rv<1> out;

  6   sc_inout_rv<4> inout;

  7

  8   void body () {

  9     out.write(in);

 10     if (in.read() == 1) {

 11       out.write(1);

 12       inout.write(rand());

 13     } else {

 14       out.write("z");

 15       inout.write("zzzz");

 16     }

 17   }

 18 

 19   SC_CTOR(resolve) {

 20     SC_METHOD(body);

 21       sensitive << in;

 22   }

 23 };

 24

 25 // Testbench to generate test vectors

 26 int sc_main (int argc, char* argv[]) {

 27   sc_signal_rv<1> in1,in2;

 28   sc_signal_rv<1> out;

 29   sc_signal_rv<4> inout;

 30

 31   resolve rs1("RESOLVE1");

 32     rs1.in(in1);

 33     rs1.out(out);

 34     rs1.inout(inout);

 35   resolve rs2("RESOLVE2");

 36     rs2.in(in2);

 37     rs2.out(out);

 38     rs2.inout(inout);

 39

 40   sc_start(0);

 41   // Open VCD file

 42   sc_trace_file *wf = sc_create_vcd_trace_file("resolve");

 43     sc_trace(wf, in1, "in1");

 44     sc_trace(wf, in2, "in2");

 45     sc_trace(wf, out, "out");

 46     sc_trace(wf, inout, "inout");

 47   // Start the testing here

 48   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 49     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 50   sc_start(1);

 51   in1 = 0;

 52   in2 = 0;

 53   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 54     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 55   sc_start(1);

 56   in1 = 1;

 57   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 58     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 59   sc_start(1);

 60   in1 = 0;

 61   in2 = 1;

 62   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 63     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 64   sc_start(1);

 65   in2 = 0;

 66   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 67     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 68   sc_start(1);

 69   in1 = 1;

 70   in2 = 1;

 71   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 72     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 73   sc_start(1);

 74   in1 = 0;

 75   in2 = 0;

 76   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 77     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 78   sc_start(2);

 79   cout << "@" << sc_time_stamp() <<" in1 : " << in1

 80     <<" in2 : " << in2 <<" out : " << out <<" inout : " << inout << endl;

 81   sc_close_vcd_trace_file(wf);

 82   return 0;// Terminate simulation

 83 };

Simulation Output : Resolved Vector Signals
              SystemC 2.0.1 --- Oct  6 2006 19:17:37

         Copyright (c) 1996-2002 by all Contributors

                     ALL RIGHTS RESERVED

 @0 s in1 : X in2 : X out : Z inout : ZZZZ

 WARNING: Default time step is used for VCD tracing.

 @1 ns in1 : X in2 : X out : Z inout : ZZZZ

 @2 ns in1 : 0 in2 : 0 out : Z inout : ZZZZ

 @3 ns in1 : 1 in2 : 0 out : 1 inout : 0111

 @4 ns in1 : 0 in2 : 1 out : 1 inout : 0110

 @5 ns in1 : 0 in2 : 0 out : Z inout : ZZZZ

 @6 ns in1 : 1 in2 : 1 out : 1 inout : X0X1

 @8 ns in1 : 0 in2 : 0 out : Z inout : ZZZZ

Bạn Có Đam Mê Với Vi Mạch hay Nhúng      -     Bạn Muốn Trau Dồi Thêm Kĩ Năng

Mong Muốn Có Thêm Cơ Hội Trong Công Việc

Và Trở Thành Một Người Có Giá Trị Hơn

Bạn Chưa Biết Phương Thức Nào Nhanh Chóng Để Đạt Được Chúng

Hãy Để Chúng Tôi Hỗ Trợ Cho Bạn. SEMICON  

 

Lần cập nhật cuối ( Thứ ba, 29 Tháng 3 2022 00:49 )