1. Trang chủ
  2. » Giáo án - Bài giảng

Lecture 5 mô tả hành vi

28 46 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 824,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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:

Trang 1

Thiết kế logic số

(Digital Logic design)

Bộ môn Điện tử máy tính

08/2018

Trang 2

Chủ đề 5

MÔ TẢ HÀNH VI

Bộ môn Điện tử máy tính

08/2018

Trang 4

1 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

Cú pháp:

5.1 Khối always và initial

initial <statements>

initial begin

<statement>

<statement>

<statement>

end

Trang 5

Ví dụ:

5.1 Khối always và initial

module TB;//testbench mạch giải mã 2-4

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];

Trang 6

2 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…

5.1 Khối always và initial

Always @(sensitivity_list)

<statement>

Always

<statement>

Trang 7

2 Khối always:

Cú pháp Sensitivity_list:

5.1 Khối always và initial

// Verilog-1995 các tín hiệu được ngăn cách bởi từ

khóa or

// Verilog-2001 có thể dùng dấu “,”

@( [ edge ] signal [ , [ edge ] signal ] )

//Verilog-2001 có thể dùng “*” để liệt kê tất cả các

tín hiệu và biến ( mạch tổ hợp )được đọc bởi các câu

lệnh trong khối always

@*

Trang 8

Ví dụ:

5.1 Khối always và initial

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

Trang 9

Ví dụ:

5.1 Khối always và initial

module demux1to4(D, S, Y);

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

Trang 10

Ví dụ:

5.1 Khối always và initial

module DFlipFlop(D,clk,sync_reset,Q);

input D; // Data input

input clk; // clock input

input sync_reset; // synchronous reset

Trang 11

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:

Khối tuần tự (begin…end): các câu lệnh được thực thi

tuần tự

Khối song song (fork…join): các câu lệnh được thực thi

cùng lúc

5.2 Câu lệnh khối và lệnh gán thủ tục

Trang 12

1 Khối tuần tự (begin…end):

Các câu lệnh được thực thi tuần tự

Khối lệnh kết thúc khi câu lệnh cuối cùng được thực thi

Một khối begin…end có thể được đặt nhãn một cách tùy

chọn, nếu có nhãn được đặt, các khai báo cục bộ phải là kiểu

Trang 13

2 Khối song song (fork…join):

Các câu lệnh được thực thi song song

#30 Data = 4'hF; // This is executed last

Reset = 0; // This is executed first

#10 Reset = 1;

5.2 Câu lệnh khối và lệnh gán thủ tục

Trang 14

3 Lệnh gán thủ tục: sử dụng để gán đến dữ liệu kiểu reg, chia là

2 kiểu gán:

 Kiểu gán blocking: (thường dùng cho mạch tổ hợp)

Các lệnh thực hiện tuần tự, thực hiện xong lệnh gán này mới

thực hiện lệnh gán kế tiếp

 Kiểu gán non-blocking: (thường dùng cho mạch tuần tự)

Các lệnh gán được thực hiện song song

[tên biến] = [biểu thức] ;

[tên biến] <= [biểu thức] ;

5.2 Câu lệnh khối và lệnh gán thủ tục

Trang 16

 Sự khác nhau giữa gán liên tục và gán thủ tục:

Lệnh gán thủ tục Lệnh gán liên tục

Xuất hiện bên trong khối lệnh

always hay initial Xuất hiện bên trong module

Điều khiển dữ liệu kiểu thanh

Trang 17

1 Câu lệnh điều kiện if:

end

Trang 18

5.3 Câu lệnh if và case

Trang 19

 Dạng 2: if – else module if_else(clk,din,reset,dff);

dff <= din;

end

5.3 Câu lệnh if và case

Trang 20

// nếu chân cho phép E và đếm lên được tác động

else if (E == 1'b1 && up_en == 1'b1)

begin

counter <= counter + 1'b1;

end

5.3 Câu lệnh if và case

Trang 21

 Dạng 3:

// nếu chân cho phép E và đếm xuống được tác động

else if (E == 1'b1 && down_en == 1'b1)

5.3 Câu lệnh if và case

Trang 22

2 Câu lệnh case: cho phép lựa chọn trường hợp

 Cú pháp:

 Câu lệnh case so sánh biểu thức với một loạt các trường hợp

và thực thi câu lệnh hoặc nhóm câu lệnh liên kết với trường

hợp trùng khớp

 Với các trạng thái tín hiệu Z → sử dụng casez

 Với các trạng thái tín hiệu X, Z → sử dụng casex

Trang 24

Câu lệnh lặp: xuất hiện trong các khối thủ tục gồm 4 lệnh lặp

 Lệnh lặp forever

 Lệnh lặp repeat

 Lệnh lặp while

 Lệnh lặp for

 Câu lệnh lặp phải được đặt trong khối begin – end nếu có

nhiều hơn 1 câu lệnh được thực thi

5.4 Câu lệnh lặp

Trang 26

2 Lệnh lặp repeat

 Thực thi một câu lệnh với một số lần cố định

 Các câu lệnh sẽ không được thực thi nếu biểu thức có giá trị:

Trang 27

3 Lệnh lặp while

 Thực thi một phát biểu cho đến khi một biểu thức trở thành

sai (false)

 Nếu biểu thức có giá trị bắt đầu đã là sai (false) thì phát biểu

sẽ không được thực thi lần nào

Trang 28

4 Lệnh lặp for

 Lặp lại sự thực thi các câu lệnh theo số lần nhất định

 Cú pháp:

 Giá trị đàu tiên của chỉ số lặp (initial_assignment)

 Xác định điều kiện ngừng vòng lặp (expression)

 Xác định sự thay đổi, tăng hoặc giảm số lần nhảy

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w