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

Lecture 4 cau truc module

18 19 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 18
Dung lượng 802,84 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 3: CẤU TRÚC CỦA 1 MODULE 3.1. Cách gọi module con: Khi một môđun được khởi tạo, phải xác định kết nối đến các cổng của các module. Có hai cách gọi để kết nối cổng các module là: • Kết nối theo thứ tự cổng: thứ tự các cổng trong module chính phải phù hợp với thứ tự xuất hiện các cổng trong module con. • Kết nối theo tên cổng: tên cổng phải phù hợp với module con, thứ tự không quan trọng. a) Kết nối theo thứ tự: Tên_module_con Nhãn(signal_1, signal_2,…, signal_N); b) Kết nối theo tên: Tên_module_con Nhãn (.port_name_1(signal_1, .port_name_2(signal_2,…,.port_name_n(signal_n); Trong đó: • Signal: tên các cổng của module top • Port_name: tên các cổng của module con Ví dụ: module adder_order(S,cout,A,B,cin); Input Port Declarations input 3:0 A ; input 3:0 B ; input cin ; Output Port Declarations output 3:0 S ; output cout ; Port Wires wire 3:0 A ; wire 3:0 B ; wire cin ; wire 3:0 S ; wire cout ; Internal variables wire c1 ; wire c2 ; wire c3 ; Code Starts Here addbit u0 (A0,B0,cin,S0,c1); addbit u1 (A1,B1,c1,S1,c2); addbit u2 (A2,B2,c2,S2,c3); addbit u3 (A3,B3,c3,S3,cout); endmodule Kết nối theo tên(by port name) : module adder_name(S,cout,A,B,cin); Input Port Declarations input 3:0 A ; input 3:0 B ; input cin ; Output Port Declarations output 3:0 S ; output cout ; Port Wires wire 3:0 A ; wire 3:0 B ; wire cin ; wire 3:0 S ; wire cout ; Internal variables wire c1 ; wire c2 ; wire c3 ; Code Starts Here addbit u0 (.a(A0),.b(B0),.ci(cin),.sum(S0),.co(c1)); addbit u1 (.a(A1),.b(B1),.ci(c1),.sum(S1),.co(c2)); addbit u2 (.a(A2),.b(B2),.ci(c2),.sum(S2),.co(c3)); addbit u3 (.a(A3),.b(B3),.ci(c3),.sum(S3),.co(cout)); endmodule 3.2. Quy định kết nối port: • Input: Kết nối bên trong luôn luôn là kiểu net; bên ngoài có thể khai báo kiểu net hoặc reg. • Output: Bên ngoài luôn là kiểu net, bên trong có thể là kiểu net hoặc reg. • Cổng không kết nối được cho phép sử dụng dấu “ , ” Ví dụ:

Trang 1

(Digital Logic design)

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

08/2018

1

Trang 2

Chủ đề 4

CẤU TRÚC MODULE

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

08/2018

Trang 3

3

4.1 Phương pháp thiết kế

4.2 Module

4.3 Quy định về kết nối port

4.4 Bài tập

Trang 4

1 Phương pháp thiết kế:

Top-down design:

Bottom-up design:

4.1 Phương pháp thiết kế

Top-Level

Sub-Block1 Sub-Block2

Leaf-cell Leaf-cell

Top-Level

Macro-cell1 Macro-cell2

Leaf-cell Leaf-cell

Trang 5

2 Module: là các khối xây dựng của thiết kế Verilog

Có 3 cách để mô tả chức năng:

 Mức cổng (gate level)

 Mức luồng dữ liệu (Dataflow level)

 Mức hành vi (Behavioral or algorithmic level)

5

Trang 6

Ví dụ: mô tả luồng dữ liệu mạch cộng 1 bit

module addbit (a,b,ci,sum,co);

//Input declaration

input a,b,ci;

//Ouput declaration

output sum;

output co;

//Port Data types

wire a,b,ci;

wire sum;

wire co;

//Code starts here

assign {co,sum} = a + b + ci;

endmodule // End of Module addbit

a b

ci

co sum

addbit

4.2 Module

Trang 7

 Cách gọi module con:

Khi một mô-đun được khởi tạo, phải xác định kết nối đến

các cổng của các module

Có hai cách gọi để kết nối cổng các module là:

 Kết nối theo thứ tự cổng: thứ tự các cổng trong

module chính phải phù hợp với thứ tự xuất hiện các cổng trong module con

 Kết nối theo tên cổng: tên cổng phải phù hợp với

module con, thứ tự không quan trọng

7

Trang 8

Kết nối theo thứ tự :

Kết nối theo tên :

Trong đó:

 Signal: tên các cổng của module top

 Port_name : tên các cổng của module con

4.2 Module

Trang 9

Ví dụ: thực hiện mạch cộng 4 bit sử dụng mạch cộng 1 bit đã

thiết kế ở ví dụ trên

9

a b

ci

co

sum

a b

ci

co sum

a b

ci

co sum

c1 c2

ci

co sum

A0 B0 A1 B1

A2 B2 A3 B3

S0 S1

S2 S3

cin cout

Trang 10

 Kết nối theo thứ tự (by port order) :

module adder_order(S,cout,A,B,cin);

// Input Port Declarations

input [3:0] A ;

input [3:0] B ;

input cin ;

// Output Port Declarations

output [3:0] S ;

output cout ;

// Port Wires

wire [3:0] A ;

wire [3:0] B ;

wire cin ;

wire [3:0] S ;

wire cout ;

4.2 Module

Trang 11

 Kết nối theo thứ tự (by port order) :

11

// Internal variables

wire c1 ;

wire c2 ;

wire c3 ;

// Code Starts Here

addbit u0 (A[0],B[0],cin,S[0],c1);

addbit u1 (A[1],B[1],c1,S[1],c2);

addbit u2 (A[2],B[2],c2,S[2],c3);

addbit u3 (A[3],B[3],c3,S[3],cout);

endmodule // End Of Module adder

Trang 12

 Kết nối theo tên (by port name) :

module adder_name(S,cout,A,B,cin);

// Input Port Declarations

input [3:0] A ;

input [3:0] B ;

input cin ;

// Output Port Declarations

output [3:0] S ;

output cout ;

// Port Wires

wire [3:0] A ;

wire [3:0] B ;

wire cin ;

wire [3:0] S ;

wire cout ;

4.2 Module

Trang 13

 Kết nối theo tên (by port name) :

13

// Internal variables

wire c1 ;

wire c2 ;

wire c3 ;

// Code Starts Here

addbit u0 ( a (A[0]), b (B[0]), ci (cin), sum (S[0]), co (c1));

addbit u1 ( a (A[1]), b (B[1]), ci (c1), sum (S[1]), co (c2));

addbit u2 ( a (A[2]), b (B[2]), ci (c2), sum (S[2]), co (c3));

addbit u3 ( a (A[3]), b (B[3]), ci (c3), sum (S[3]), co (cout));

endmodule // End Of Module adder

Trang 14

3 Quy định kết nối port:

Input: Kết nối bên trong luôn luôn là kiểu net ; bên ngoài có

thể khai báo kiểu net hoặc reg

Output: Bên ngoài luôn là kiểu net , bên trong có thể là kiểu

net hoặc reg

Cổng không kết nối được cho phép sử dụng dấu “ ,

4.3 Quy định kết nối port

Output

Input

Inout

Net or reg Net Net

Net or reg

Trang 15

Ví dụ:

15

// D flip-flop

if (rst == 1'b1) begin

q <= 0;

q <= 1;

end else begin

q <= d;

end endmodule

q_not

pre

rst clk

Trang 16

 Kết nối theo thứ tự (by port order) :

module by_order();

reg clk,d,rst,pre;

wire q;

// ở đây cổng thứ 2 (q_not) không được kết nối

dff u0 (q,,clk,d,rst,pre);

endmodule

4.3 Quy định kết nối port

Trang 17

 Kết nối theo tên (by port name) :

17

module explicit();

reg clk,d,rst,pre;

wire q;

// Ở đây, q_not không được kết nối

// có thể kết nối các port không theo thứ tự

dff u0 ( q (q), d (d), clk(clk), q_not (),.rst(rst), pre (pre));

endmodule

Trang 18

4.4 Bài tập

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

TỪ KHÓA LIÊN QUAN

w