Lecture 5 mô tả hành vi

28 45 0
Lecture 5 mô tả hành vi

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG 4: MÔ TẢ HÀNH VI 4.1. Khối always và initial a) Khối initial: • Chỉ thực thi một lần từ lúc bắt đầu (của quá trình mô phỏng) • Khối initial dùng cho thực hiện mã testbench • Một khối initial chứa nhiều hơn 1 câu lệnh phải kèm theo câu lệnh begin – end hoặc fork – join. Ví dụ: b) Khối always: • Được thực hiện lặp lại nhiều lần • Một khối always chứa nhiều hơn 1 câu lệnh phải kèm theo câu lệnh begin – end hoặc fork – join. Cú pháp: Trong đó: • Sensitivity_list: danh sách tín hiệu kích thích • Mạch tổ hợp: các ngõ vào • Mạch tuần tự: xung clk, các ngõ vào điều khiển… 4.2. Câu lệnh khối và lệnh gán thủ tục Câu lệnh khối nhóm 2 hay nhiều câu lệnh mà cú pháp tác động giống một câu lệnh đơn. Có 2 loại phát biểu khối trong Verilog:

Thiết kế logic số (Digital Logic design) Bộ môn Điện tử máy tính 08/2018 Chủ đề MƠ TẢ HÀNH VI Bộ mơn Điện tử máy tính 08/2018 Nội dung 5.1 Khối always khối initial 5.2 Câu lệnh khối lệnh gán thủ tục 5.3 Câu lệnh if case 5.4 Câu lệnh lặp 5.1 Khối always initial Khối initial: Chỉ thực thi lần từ lúc bắt đầu (của q trình mơ phỏng) Khối initial dùng cho thực mã testbench Một khối initial chứa nhiều câu lệnh phải kèm theo câu lệnh begin – end fork – join Cú pháp: initial initial begin end 5.1 Khối always initial Ví dụ: module TB;//testbench mạch giải mã 2-4 reg [1:0] I; wire [3:0] Y; decoder_2to4 uut ( I(I), Y(Y) ); initial begin I=2'b00; end always #100 I[0] = ~I[0];//đơn vị ns always #200 I[1] = ~I[1]; endmodule 5.1 Khối always initial Khối always: Được thực lặp lại nhiều lần Một khối always chứa nhiều câu lệnh phải kèm theo câu lệnh begin – end fork – join Cú pháp: Always Always @(sensitivity_list) Trong đó:  Sensitivity_list: danh sách tín hiệu kích thích  Mạch tổ hợp: ngõ vào  Mạch tuần tự: xung clk, ngõ vào điều khiển… 5.1 Khối always initial Khối always: Cú pháp Sensitivity_list: // Verilog-1995 tín hiệu ngăn cách từ khóa or @( [ edge ] signal [ or [ edge ] signal ] ) // Verilog-2001 dùng dấu “,” @( [ edge ] signal [ , [ edge ] signal ] ) //Verilog-2001 dùng “*” để liệt kê tất tín hiệu biến (mạch tổ hợp)được đọc câu lệnh khối always @* edge = posedge | negedge (xung cạnh lên/cạnh xuống) 5.1 Khối always initial Ví dụ: module decoder_2to4( input [1:0] I, output [3:0] Y ); reg [3:0] Y_TAM ; always @(*)//hoặc @(I) begin case (I) 2'b00: Y_TAM = 4'b0001; 2'b01: Y_TAM = 4'b0010; 2'b10: Y_TAM = 4'b0100; 2'b11: Y_TAM = 4'b1000; endcase end assign Y=Y_TAM; endmodule 5.1 Khối always initial Ví dụ: module demux1to4(D, S, Y); input[1:0] S; input D; output[3:0] Y; reg[3:0] Y; always @(D or S) // always @(D,S) begin case (S) 2'b00:Y= {3'b000,D}; 2'b01:Y= {2'b00,D,1'b0}; 2'b10:Y= {1'b0,D,2'b00}; 2'b11:Y= {D,3'b000}; endcase end endmodule 5.1 Khối always initial Ví dụ: module DFlipFlop(D,clk,sync_reset,Q); input D; // Data input input clk; // clock input input sync_reset; // synchronous reset output Q; reg Q; // output Q always @(posedge clk) begin if(sync_reset==1'b1) Q

Ngày đăng: 15/11/2020, 22:11

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan