Mô hình Mức Cổng

Một phần của tài liệu Tổng quan về verilog (Trang 112 - 142)

And/Or Gates

Mơ hình Mức Cổng

 Các cổng này được sự thể hiện để xây dựng mạch logic trong verilog.xem ví dụ dứoi đây:

Wire OUT, IN1, IN2;

// sự khai báo cổng cơ bản and a1( OUT,IN1,IN2 ); nand na1( OUT,IN1,IN2 ) ; or or1( OUT, IN1,IN2 ); nor nor1( OUT, IN1,IN2 ); xnor nx1( OUT, IN1,IN2 );

Mơ hình Mức Cổng

Buf/Not Gates

 Các cổng này thực thi lệnh và đảo theo thứ tự có sẵn,chúng có một ngõ vào và 2 hoặc nhiều ngõ ra

Mơ hình Mức Cổng

Ví dụ

Mạch ghép kênh 4 sang 1 với 2 tín hiệu điều khiển. chúng ta có thể liên kết 2 hay nhiều sources đến 1 ngõ ra. Chúng ta cũng có thể dùng để thực thi hàm bool

Mơ hình Mức Cổng

 Già sử tín hiệu s1 và s0 khơng lấy giá trị x và z. Thì chúng ta được bảng sự thật trên. Sơ đồ logic cho mạch ghép kênh trên

Mơ hình Mức Cổng

 Sự kích thích có thể kiểm tra mỗi kết hợp của việc chọn tín hiệu kết nối thích hợp từ đầu vào đến đầu ra. Tín hiệu OUTPUT được hiển thị

trong 1 đơn vị thời gian sau khi nó thay đổi. khi đó ta sử dụng task để dùng cho việc hiển thị này

and( y0,i0,s1n,s0n ); and( y1,i1,s1n,s0 ); and( y2,i2,s1,s0n ); and( y3,i3,s1,s0 );

// 4 input or sự khai báo cổng Or( out,,y0,y1,y2,y3 );

Mơ hình Mức Cổng

// định nghĩa kích thích- module( no ports ) Module stimulus;

// khai báo biến kết nối reg IN0,IN1,IN2,IN3; reg S1,S0;

// khai báo wire ra Wire OUTPUT;

// sự thể hiện mạch dồn kênh 4 to 1

Mux4_to_1 mymux( PUTPUT,IN0,IN1,IN3,S1,S0 ); Initial

Begin

// khoi tao đầu ra

IN0 = 1; IN1 = 0; IN2 = 1; IN3 = 0;

#1 $display( “IN0 = %B,IN1 = %B,IN2 = %b,IN3 = % \N,IN0,IN1,IN2,IN3 ); // chọn IN0

Mơ hình Mức Cổng

 Sự hiển thị mô phỏng :

IN0 = 1,IN1 = 0,IN2 = 1,IN3 = 0S1 = 0, s0 = 0,OUTPUT = 1 S1 = 0, s0 = 0,OUTPUT = 1 S1 = 0, s0 = 1,OUTPUT = 0 S1 = 1, s0 = 0,OUTPUT = 1 S1 = 1, s0 = 1,OUTPUT = 0

Mơ hình Mức Cổng

Mạch cộng tồn phần 4 bit

 Trong ví dụ này,chúng ta thiết kế mạch cộng toàn phần 4 bit, chúng ta dùng cổng logic cơ bản, và chúng ta ứng dung kích thích đối với mạch cộng tồn phần 4 bit để kiểm tra kết

quả. Khối xây dựng cơ bản là mạch cộng 1 bit. Biểu thức toán mạch cộng 1 bit:

 Sum = ( a + b + cin)

Mơ hình Mức Cổng

Mơ hình Mức Cổng

Chúng ta chuyển thành code verilog: // đinh nghia mach cong 1 bit

Module add( sum,c_out,a,b,c_in ); Input a,b,c_in; Output a,b,c_in; Wire s1,c1,c2; xor( s1,a,b ); and( c2,c1,c_in ); or( c_out,c2,c1 ); endmodule

Mơ hình Mức Cổng

 Khi đó mạch cộng 4 bit có thể được xây dựng từ 4 mạch cộng 1 bit:

Các tên port dùng trong 1 bit và trong 4 bit là giống nhau tuy nhiên

chúng dùng trong các module khác nhau nên không sao. output sum trong module 1 bit là đại lương vơ hướng cịn sum trong 4 bit là

Mơ hình Mức Cổng

// định nghĩa mạch cộng 4 bit

Module fulladd4( sum,c_out,a,b,c_in ); // khai báo I/O port

output [3:0] sum; output [3:0] c_out; input c_in;

// net

Wire c1,c2,c3;

// khai báo sự thể hiện các module thấp hơn Fulladd fa0( sum[0],c1,a[0],b[0],c_in );

Fulladd fa1( sum[1],c2,a[1],b[1],c1 ); Fulladd fa2( sum[2],c3,a[2],b[2],c2 ); Fulladd fa3( sum[3],c_out,a[3],b[3],c3 ); endmodule

Mơ hình Mức Cổng

Cuối cùng ta kiểm tra thiết kế trên bằng code sau: Module stimulus;

reg [3:0] A,B; reg C_IN; wire [3:0] SUM; wire C_OUT;

Fulladd4 FAL_4( SUM,C_OUT,A,B,C_IN ); initial

Begin

$monitor( $time,” A = %b ”,B = %b,C_IN = %b,---C_OUT = %b,SUM = %b \n, A,B,C_IN,C_PUT,SUM ); end // mô phỏng input Initial begin A = 4’d0;B = 4’d0; C_IN = 1’b0; #5 A = 4’d3; B = 4’d4; #5 A = 4’d2; B = 4’d5; #5 A = 4’d9;B = 4’d9; #5 A = 4’d10; B = 4’d15; #5 A = 4’d10 ; B = 4’d5; C_IN = 1’b1; End endmodule

Mơ hình Mức Cổng

Kết quả sẽ là :

0 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 00005 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 0111 5 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 0111 10 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 0111 15 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 0010 20 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 1001 25 A = 0000, B = 0000,C_IN = 0, --- C_OUT = 0,SUM = 0000

Mơ hình Mức Cổng

Gate Delays – sự trì hỗn cổng

Lúc này,chúng ta mơ tả mạch với khơng có sự trì hỗn. Trong mạch thực, cổng logic đều có sự trì hỗn, Gate Delay cho phép nguời dùng định rõ sự trì hỗn thơng qua mạch logic. Có 3 kiểu trì hỗn:

+Trì hỗn tăng

+Trì hỗn giảm

Mơ hình Mức Cổng

+Trì hỗn tăng

trì hỗn tăng được hiểu là chuyển đổi giá trị đến một từ một số giá trị khác như là 0,x hoặc z.

t_rise 0, x, z

Mơ hình Mức Cổng

+Trì hỗn giảm

Mơ hình Mức Cổng

 + Trì hỗn tắt

 Thay đổi trạng thái đến giá trị z-tổng trở cao từ giá trị khác.

 Nếu giá trị thay đổi đến x thì giá trị nhỏ nhất của 3 trì hỗn trên được xem xét. Đặc tả trì hỗn cả 3 loại trên đều được phép. Nếu chỉ có một trì hỗn được chỉ ra, giá trị này được sử dụng cho mọi

chuyển trạng thái.Nếu cả hai, ta tham chiếu

t_rise v t_fall, trì hỗn tắt-turn_off lấy giá trị nhỏ nhất của 2 giá trị trên. Nếu trì hỗn khơng rõ

Mơ hình Mức Cổng

// trì hỗn của delay_time cho tất cả chuyển trạng thái

and #( delay_time ) a1( out,i1,i2 ); // đặc tả trì hỗn tăng và giảm

and #( rise_val,fall_val ) a2( out,i1,i2 );

// đặc tả trì hỗn tăng,giảm, và trì hỗn tắt

Mơ hình Mức Cổng

Ví dụ về sự trì hỗn :

and #(5) a1( out,i1,i2 ); // trì hỗn là 5 cho tất cả chuyển trạng thái

and #(4,6 ) a2( out,i1,i2 ); // trì hỗn tăng là 4 và trì hỗn giảm là 5

bufif0 #( 3,4,5 ) b1( out,in,control ); // trì hoan tang la 3, giam la 4 và tat la 5

Mơ hình Mức Cổng

Min/Typ/Max Values

Verilog cung cấp cho chúng ta một mức điểu khiển cho mỗi trì hỗn đề cập ở trên. Cho mỗi kiểu delay_rise,fall, và turn-off Mỗi loại đều có 3 giá trị được chỉ ra: min, max, typ( typical ). Một số giá trị có thể được chọn tại lúc bắt đầu mơ phỏng. Các giá trị min/max/typ được sử dụng để mô hình linh kiện trong đó sự trì hỗn của linh kiện này thay đổi trong tầm

min và max do sự thay đổi quá trình sản xuất vi mạch

Giá min,typ,max có thể được chọn tại thời điểm verilog chạy. Phương pháp của việc chọn 1 giá trị min,typ,max có thể thay đổi tuỳ vào sự mơ phỏng khác nhau và hệ điều hành. Trong version thưong mại của verilog, giá trị được chọn bởi sự chỉ rõ các tuỳ chọn +maxdelays,typdelays,

+mindelays tại thời điểm chạy. điều này cho phép ngừoi thiết kế dễ

dàng chuyển đổi 3 giá trị trì hỗn. Người thiết kế có thể thử nghiệm với giá trị trì hỗn với việc khơng có bổ sung chỉnh sữa việc thiết kế

Mơ hình Mức Cổng

// one delay

// nếu +mindelays ,delay = 4 // nếu +typdelays ,delay = 5 // nếu là +maxdelays ,delay là 6 and #( 4:5:6 ) a1(out,i1,i2); //two delays

// nếu +mindelays, rise = 3,fall = 5, turn-off = min(3,5); // nếu +typdelays ,rise = 4,fall = 6, turn_off = min(4,6); // nếu +maxdelays ,rise = 5,fall = 7,turn_off = min( 5,7 ); and #( 3:4:5,5:6:7 );

// 3 delay

// nếu +mindelays, rise = 2,fall = 3, turn-off = 4; // nếu +typdelays ,rise = 3,fall = 4, turn_off = 5; // nếu +maxdelays ,rise = 4,fall = 5,turn_off = 6; and #( 2:3:4, 3:4:5, 4:5:6 ) a3( out,i1,i2 );

Mơ hình Mức Cổng

 Một số ví dụ về việc gọi sự mơ phỏng với việc dịng lệnh dứơi đây. Giả sử module với sự delay được khai báo trong file test.v:

// gọi sự mô phỏng với +maxdelays >verilog test.v +maxdelays

// gọi sự mô phỏng với +mindelays >verilog test.v +mindelays

// goi sự mô phỏng với +typdelays >verilog test.v +typdelays

Mơ hình Mức Cổng

Ví dụ delay

Chúng ta xem xét một ví dụ đơn giản để minh hoạ việc sự trì hỗn cổng để mơ hình định thời trong mạch logic. Một module đơn giản thực hiện biểu thức logic:

Mơ hình Mức Cổng

 Mơ tả theo code: // định nghĩa module D

Module D( out,a,b,c ); // khai báo I/O port output out;

input a,b,c; //net

Wire e;

// sự thể hiện cổng để xây dựng mạch

And #(5) a1( e,a,b ); // trì hỗn 5 time unit của cổng a1 Or #(4) o1( out,e,c ); // trì hỗn 4 time unit của cổng o1

Mơ hình Mức Cổng

 Code kiểm tra:

// Stimulus – khối mức đỉnh Module stimulus;

// khai báo biến reg A,B,C;

wire OUT;

// sự thể hiện module D D d1( OUT,A,B,C );

// kích thích đầu ra. Hồn thành sự mơ phỏng trong 40 time unit Intital Begin A = 1’b0; B = 1’b0; C = 1’b0; #10 A = 1’b1,B = 1’b0; C = 1’b0; #20 $finish; End

Mơ hình Mức Cổng

 Và sau đây là dạng sóng ra cho sự mơ phỏng để minh hoạ tác động của delay trên cổng:

Mơ hình Mức Cổng

Nhận xét :biểu đồ này:

1.đầu ra E và OUT không biết trước

2. tại thời gian 20,B và C chuyển trạng thái đến 0. E thay đổi giá trị từ đến 0 sau mỗi 5 time units, và OUT thay đổi

Một phần của tài liệu Tổng quan về verilog (Trang 112 - 142)

Tải bản đầy đủ (PPT)

(173 trang)