![[IMG]](https://lh5.googleusercontent.com/-9b_0fJ6soEA/VXa5iLOBCsI/AAAAAAAACOk/DMtXQS_ZTbM/w584-h194-no/images.png)
- Gate level (mức cổng): mô hình này được thực hiện bằng các thuật ngữ của cổng logic và mối liên kết giữa các cổng. Để thiết kế được gate-level, chúng ta cần phải biết được sơ đồ ở mức cổng của thiết kế và quan trọng hơn là kiến thức về các cổng logic.
- Mô hình gate-level gần như ở cấp độ thấp nhất của sự trừu tượng, bởi vì khái niệm trừu tượng switch-level ít được sử dụng. Nhìn chung, mô hình cổng cấp được sử dụng để thực hiện các mô-đun mức thấp nhất trong một thiết kế như: bộ cộng, Multiplexers.. vv .
- Cổng nguyên thủy được định nghĩa sẵn trong Verilog, chúng ta có thể dễ dàng sử dung chúng thông qua các câu lệnh khởi tạo đơn giản. Chúng được khởi tạo như các module. Có hai loại cổng nguyên thủy: nhiều đầu vào và một đầu vào.
- Cổng nhiều đầu vào bao gồm: and, nand, or, nor, xor, và xnor. Các cổng này có nhiều đầu vào và một cổng đầu ra duy nhất, chúng được khởi tạo như sau:
Câu lệnh khởi tạo:
Cổng logic(and, nand, or, nor, xor, và xnor) tên (output, input1, input2,input3);
Chú ý: tên của cổng khai báo là không bắt buộc vi dụ: and1, and2..
Ví dụ:
Mã:
// Two input AND gate. and and_1 (out, in0, in1); // Three input NAND gate. nand nand_1 (out, in0, in1, in2); // Two input OR gate. or or_1 (out, in0, in1); // Four input NOR gate. nor nor_1 (out, in0, in1, in2, in3); // Five input XOR gate. xor xor_1 (out, in0, in1, in2, in3, in4); // Two input XNOR gate. xnor and_1 (out, in0, in1);
Câu lệnh khởi tạo:
Cổng logic(not, buf, notif1, bufif1, notif0, và bufif0) tên (output,output2, input);
Ví dụ:
Mã:
// Inverting gate. not not_1 (out, in); // Two output buffer gate. buf buf_1 (out0, out1, in); // Single output Inverting gate with active-high control signal. notif1 notif1_1 (out, in, ctrl); // Double output buffer gate with active-high control signal. bufif1 bufif1_1 (out0, out1, in, ctrl); // Single output Inverting gate with active-low control signal. notif0 notif0_1 (out, in, ctrl); // Single output buffer gate with active-low control signal. bufif0 bufif1_0 (out, in, ctrl);
- Trong Verilog, chúng ta cần xác định được sự chậm trễ của một cổng. Mỗi tín hiệu đí qua một cổng đều có một delay nhất định. Tùy các loại cổng mà có các delay khác nhau.Vì thế khi xác định được delaycuar các cổng chugs ta có thể tối ưu được mạch thiết kế về mặt thời gian và độ chính xác.
- Rise delay: Nó bằng với thời gian thực hiện bởi một quá trình chuyển đổi cổng output từ giá trị: 0, x, z đến 1.
- Fall delay: Nó bằng với thời gian thực hiện bởi một quá trình chuyển đổi cổng output từ giá trị: 1, x, hoặc z về 0.
- Turn-off delay: Nó bằng với thời gian thực hiện bởi một quá trình chuyển đổi cổng output từ giá trị 1, x, hoặc z đến trạng thái trở kháng cao.
Mã:
and #(5) and_1 (out, in0, in1);// All delay values are 5 time units. nand #(3,4,5) nand_1 (out, in0, in1); // rise delay = 3, fall delay = 4, and turn-off delay = 5. or #(3,4) or_1 (out, in0, in1); // rise delay = 3, fall delay = 4, and turn-off delay = min(3,4) = 3.
Half adder:
Mã:
module half_adder (sum, carry, a, b); output sum, carry; input a, b; // 2-input XOR gate. xor xor_1 (sum, a, b); // 2-input AND gate. and and_1 (carry, a, b); endmodule
Full adder:
Mã:
module full_adder (sum, c_out, a, b, c_in); output sum, c_out; input a, b, c_in; wire s0, c0, c1; // Half adder : port connecting by order. half_adder ha_0 (s0, c0, a, b); // Half adder : port connecting by name. half_adder ha_1 (.sum(sum), .a(s0), .b(c_in), .carry(c1)); // 2-input XOR gate, to get c_out. xor xor_1 (c_out, c0, c1); endmodule


Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn
đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON
HotLine: 0972 800 931 Ms Duyên