gioi thieu verilog 2
TRANSCRIPT
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 1/30
2009
dce
Thiết kế mạch số dùng HDL
Chương 5 Thiết kế luận lý bằng
mô hình hành vi
C o m p u t e r E n g i n e e r i n g 2 0 0 9
2Thiết kế Vi mạch số dùng HDL
Nội dung chính1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương trình
boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 2/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
3Thiết kế Vi mạch số dùng HDL
Nội dung chính
1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương trình
boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
C o m p u t e r E n g i n e e r i n g 2 0 0 9
4Thiết kế Vi mạch số dùng HDL
Mô hình hành vi• Khái quát mô hình hành vi
• Kiểu dữ liệu cho mô hình hành vi
• Các phép toán cho mô hình hành vi
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 3/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
5Thiết kế Vi mạch số dùng HDL
Mô hình hành vi – đặc điểm
• Thiết kế các vi mạch lớn
• Mô tả chức năng (what) và cách xây dựng
(how) phần cứng
• Không quan tâm đến tr ễ truyền lan (được
quan tâm trong giai đoạn tổng hợp)
• Các bước thiết kế Nhanh chóng đưa ra nguyên mẫu (prototype)
Kiểm tra chức năng
Dùng công cụ tổng hợp tối ưu và ánh xạ công
nghệ
C o m p u t e r E n g i n e e r i n g 2 0 0 9
6Thiết kế Vi mạch số dùng HDL
Kiểu dữ liệu cho mô hình hành vi• Biến trong Verilog biểu diễn một tín hiệu dạng
nhị phân của mạch
• Tất cả các biến trong Verilog được định ngh ĩ akiểu tr ước khi sử dụng net
register
• Net hoạt động như dây nối vật lý wire
• Register hoạt động giống như biến trong cácngôn ngữ lập trình cấp cao reg
integer
• Kích thước mặc định của kiểu dữ liệu reg vàwire là 1 bit
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 4/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
7Thiết kế Vi mạch số dùng HDL
Các toán tử trong VerilogToán tử Tên Nhóm
[ ] Chọn
() Ngoặc
!
~
Phủ định (đảo)
Phủ định (not)
Logical
Bit-wise
&
|
~&
~|
^
~^ or ^~
Thu giảm AND
Thu giảm OR
Thu giảm NAND
Thu giảm NOR
Thu giảm XOR
Thu giảm XNOR
Thu giảm
+
–
Dấu dương (một ngôi)
Dấu âm (một ngôi)Số học
{} Nối Nối
{{}} Nhân bản Nhân bản
*
/
%
+
–
nhân
chia
Chia lấy dư
Cộng (hai ngôi)
Tr ừ (hai ngôi)
Số học
Toán tử Tên Nhóm
<<
>>
Dịch trái
Dịch phảiDịch
>
>=
<
<=
Lớn hơn
Lớn hơn hay bằng
Nhỏ hơn
Nhỏ hơn hay bằng
Quan hệ
==
!=
Bằng (logic)
Không bằng (logic)So sánh
bằng===
!==
Bằng (case)
Không bằng (case)
& bit-wise AND
Bit-wise^
^~ or ~^
bit-wise XOR
bit-wise XNOR
| bit-wise OR
&& logical ANDLogic
|| logical OR
?: Điều kiện Điều kiện
C o m p u t e r E n g i n e e r i n g 2 0 0 9
8Thiết kế Vi mạch số dùng HDL
Toán tử số học (+, -, *, /, %)
• Bất kỳ bit nào trong toán hạng là x hoặc z thì kết quả là x
• Kích thước kết quả Phép nhân thì kích thước kết quả bằng tổng kích thước 2 toán hạng
Các phép toán khác bằng chiều dài lớn nhất của toán hạng
• Biểu diễn dấu
ƒ
A
B
C
–
B = 4’b0101 (5)
A = 4’b0010 (2)
C = 4’b1101 (13)integer intA, intB;
intA = -12;
intB = -’d12;
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 5/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
9Thiết kế Vi mạch số dùng HDL
Toán tử quan hệ (<, >, <=, >=)
ƒ
A
B
True/False (1/0)
ƒ
A = 52
B = 8’hx5
x <
A = 3’b001
B = 3’b011
True (1)
>
A = 3’b001
B = 5’b01011
False (0)
A = 5’b00001
C o m p u t e r E n g i n e e r i n g 2 0 0 9
10Thiết kế Vi mạch số dùng HDL
Toán tử bằng (==, ===, !=, !===)• Bằng luận lý (== và !=)
Giá tr ị x và z tương tự như toán tử quan hệ Kết quả có thể là x
• Case (=== và !==) So sánh từng bit
x === x, z === z, x !== z
Kết quả luôn xác định (0 hoặc 1)
• Nếu kích thước 2 toán hạng không bằng nhau thì các bit0 sẽ được thêm vào những bit tr ọng số cao của toán
hạng có kích thước nhỏData = 4’b11x0;
Addr = 4’b11x0;
Data == Addr //x
Data === Addr //1
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 6/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
11Thiết kế Vi mạch số dùng HDL
Toán tử luận lý (||, &&, !)
• Toán hạng là vector khác 0 được xem như 1
• Nếu bất kỳ bit nào của toán hạng có giá tr ị x hay z thìtoán hạng được xem như x
ABus = 4’b0110;
BBus = 4’b0100;
ABus || BBus // 1ABus && BBus // 1!ABus // giống như !BBus
// 0
C o m p u t e r E n g i n e e r i n g 2 0 0 9
12Thiết kế Vi mạch số dùng HDL
Toán tử Bit-wise (&, |, ~, ^, ^~)
^~ (xnor) 0 1 x z
0 1 0 x x
1 0 1 x x
x x x x x
z x x x x
^ (xor) 0 1 x z
0 0 1 x x
1 1 0 x x
x x x x x
z x x x x
| (or) 0 1 x z
0 0 1 x x
1 1 1 1 1
x x 1 x x
z x 1 x x
& (and) 0 1 x z
0 0 0 0 0
1 0 1 x x
x 0 x x x
z 0 x x x
~ (not) 0 1 x z
1 0 x x
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 7/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
13Thiết kế Vi mạch số dùng HDL
Toán tử thu giảm.. .... .. f 0/1/x
x .... .. f x z .... .. f x
~& (thu giảm nand): ~&bn-1bn-1…b0
0 .... .. & 0 1 11 1 & 1
& (thu giảm and): &bn-1bn-1…b0
.. .... .. & ~ 0/1
| (thu giảm or): |bn-1bn-1…b0
1 .... .. | 1 0 00 0 | 0
^ (thu giảm xor): ^bn-1bn-1…b0
If count(bi = 1) mod 2 == 0,kết quả 0 Ngược lại kết quả 1
~^/^~ (thu giảm xnor): ~^bn-1bn-1…b0
~| (thu giảm nor): ~|bn-1bn-1…b0 .. .... .. | ~ 0/1
C o m p u t e r E n g i n e e r i n g 2 0 0 9
14Thiết kế Vi mạch số dùng HDL
Toán tử dịch (<<, >>)A << B, A >> B
• Dịch toán hạng bên trái số lần biểu diễn bởi toán hạng
bên phải
Dịch trái
Dịch phải
reg [0:7] Qreg;
Qreg = 4’b0111;
Qreg >> 2 // is 8’b0000_0001
wire [0:3] DecoderOut = 4’d1 << Address[0:1];
b0...
0... 0
b1
b0b1
b2bn-1bn
bn-2bn-1
b0...
b1...
b1
b2b3
b2bn-1bn
bn00
x ....f z zz
..
z ....f z zz
..
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 8/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
15Thiết kế Vi mạch số dùng HDL
Toán tử điều kiện
• Nếu Cond_expr có chứabất kỳ bit nào là x hoặc zthì kết quả là phép toánbit-wise trên Expr1 vàExpr2 như sau 0 ♣ 0 => 0
1 ♣ 1 => 1
Tr ường hợp khác là x
• Toán tử điều kiện có thểđược lồng nhau vô tận
Cond_expr ? Expr1 : Expr2
wire[15:0]bus_a = drive_a ? data : 16’bz;/* drive_a = 1 thì data được gán vào bus_a
drive_a = 0 thì bus_a ở tổng trở caodrive_a = x thì bus_a là x */
Cond_expr?
Expr2
Expr1
yes
no
C o m p u t e r E n g i n e e r i n g 2 0 0 9
16Thiết kế Vi mạch số dùng HDL
Toán tử kết nối/nhân bản• Kết nối {expr1, expr2,… , exprN}
Những hằng số không biết kích thước không thể thực hiện kết
nối
• Nhân bản {rep_number {expr1, expr2,… , exprN}}
wire [7:0] Dbus;wire [11:0] Abus;
assign Dbus[7:4] = {Dbus[0], Dbus[1], Dbus[2], Dbus[3]};
assign Dbus = {Dbus[3:0], Dbus[7:4]};
{Dbus, 5} // not allowed
Abus = {3{4’b1011}}; // 12’b1011_1011_1011
{3{1’b1}} // 111
{3{Ack}} // {Ack, Ack, Ack}
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 9/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
17Thiết kế Vi mạch số dùng HDL
Nội dung chính
1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương
trình boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
C o m p u t e r E n g i n e e r i n g 2 0 0 9
18Thiết kế Vi mạch số dùng HDL
Mô hình hành vi dựa trên phương trình boole
• Phép gán liên tục
• Thời gian tr ễ truyền lan và phép gán liên
tục
• Latch và mạch tích cực mức trong
Verilog
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 10/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
19Thiết kế Vi mạch số dùng HDL
Phép gán liên tục• Phép gán liên tục
assign variable = boolean_expression
wire wire_name = boolean_expression
Boolean_expression được tính lại khi bất kỳ tín hiệu nào trong nó thayđổi
• Một module có thể có nhiều phát biểu gán liên tục được thực thiđồng thời
input x_in1, x_in2;
output y_out;
assign y_out = ~(x_in & x_in2);
input x_in1, x_in2;
output y_out;wire y_out = ~(x_in & x_in2);
circuitSchematic
Structuremodel
Truthtable
User-DefinePrimitive
BooleanExpressionl
ContinuousAssignments
Logic description Verilog Description
C o m p u t e r E n g i n e e r i n g 2 0 0 9
20Thiết kế Vi mạch số dùng HDL
Ví dụ - Mux_2_32
Mux_2_32
select
data0
data1
mux_out
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 12/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
23Thiết kế Vi mạch số dùng HDL
Ví dụ - Latch với tín hiệu reset
Mạch phức tạp khó hiện thực bằng hàm boolean
C o m p u t e r E n g i n e e r i n g 2 0 0 9
24Thiết kế Vi mạch số dùng HDL
Nội dung chính1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương trình
boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 13/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
25Thiết kế Vi mạch số dùng HDL
Mô hình hành vi vòng
• Khái quát mô hình hành vi vòng
• Mô hình hành vi vòng cho mạch phát hiện
cạnh
• So sánh các loại mô hình hành vi
Mô hình phép gán liên tục
Mô hình dòng dữ liệu
Mô hình dựa trên thuật toán
C o m p u t e r E n g i n e e r i n g 2 0 0 9
26Thiết kế Vi mạch số dùng HDL
Mô hình hành vi vòng – khái quát• Mô hình hành vi gán liên tục không hiện thực
được mạch kích mức (edge-sensitive)
• Thực thi những phát biểu thủ tục (procedure)
• Mô hình hành vi vòng Các phát biểu được thực thi tuần tự và quay lại khi
thực thi xong phát biểu cuối cùng
Thực thi không điều kiện dưới sự điều khiển của mộtbiểu thức
always @ (<event_expression>)
beginprocedural statements
end
• Sử dụng trong cả kích cạnh (đồng bộ) và kíchmức
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 14/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
27Thiết kế Vi mạch số dùng HDL
Ví dụ - D Flip-Flop
Non-blocking/concurrent assignment
Cạnh lên xung clock
C o m p u t e r E n g i n e e r i n g 2 0 0 9
28Thiết kế Vi mạch số dùng HDL
Phát hiện cạnh• Các phát biểu thủ tục trong hành vi vòng sẽ được thực
thi khi sự kiện điều khiển xảy ra
• postedge và negedge dùng phát hiện cạnh lên hayxuống của tín hiệu
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 15/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
29Thiết kế Vi mạch số dùng HDL
So sánh giữa các loại mô hình hành vi
• Mô hình gán liên tục (Continuous-
Assignment models)
• Dataflow/RTL models
• Mô hình dựa trên thuật toán (Algorithm-
Based models)
C o m p u t e r E n g i n e e r i n g 2 0 0 9
30Thiết kế Vi mạch số dùng HDL
Mô hình gán liên tục• Mô tả những hành vi nhạy mức (level-sensitive)
• Những biểu thức gán liên tục được thực hiệnđồng thời
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 16/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
31Thiết kế Vi mạch số dùng HDL
Mô hình Dataflow/RTL (1)
• Mô hình dòng dữ liệu của mạch tổ hợp mô tả
những hoạt động đồng thời trên các tín hiệu• Trong máy tr ạng thái đồng bộ các tính toán
được thực hiện khi có cạnh tích cực của xungclock và được lưu tr ữ vào thanh ghi ở chu kỳtiếp theo
• Mô hình dòng dữ liệu cho máy đồng bộ đượcgọi là mô hình RTL (register transfer level)
• Mô hình RTL chỉ ra kiến trúc các thanh ghiđường dữ liệu và các hoạt động của máy
• Mô hình hành vi của mạch tổ hợp có thể được
mô tả bằng tập hợp các phát biểu gán liên tụchoặc bằng một hành vi vòng
C o m p u t e r E n g i n e e r i n g 2 0 0 9
32Thiết kế Vi mạch số dùng HDL
Mô hình Dataflow/RTL (2)
Blocked assignment
t i m e
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 17/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
33Thiết kế Vi mạch số dùng HDL
Non-blocking vs. Blocking
• Non-blocking
Toán tử <=
Các phát biểu thực thi
đồng thời (song song)
Thứ tự các phát biểu
không ảnh hưởng đến
kết quả cuối cùng
Khi thực hiện hành vi
vòng bộ mô phỏng
tính giá tr ị biểu thức
bên vế phải tr ước khi
gán cho vế trái
• Blocking
Toán tử =
Các phát biểu thực thi
tuần tự
Thứ tự các phát biểu
có thể ảnh hưởng đến
kết quả cuối cùng
Khi thực hiện hành vi
vòng bộ mô phỏng chỉ tính giá tr ị biểu thức
bên phải ngay sau khi
phát biểu tr ước đó
hoán tất
C o m p u t e r E n g i n e e r i n g 2 0 0 9
34Thiết kế Vi mạch số dùng HDL
Mô hình dựa trên thuật toán• Mức tr ừu tượng cao
hơn mô hình dòngdữ liệu
• Dễ hiểu dễ đọc
• Các lệnh trong mộthành vi vòng đượcthực thi tuần tự
• Không phải tất cảcác giải thuật đềucó thể hiện thựcbằng phần cứng
Synopsys’s Design Compiler
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 18/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
35Thiết kế Vi mạch số dùng HDL
Mô phỏng trong mô hình hành vi
• Sự kiện xảy ra ở những tín hiệu nhập hay trong
vế phải kích hoạt bộ mô phỏng tính toán giá tr ịngõ xuất
• Khi hành vi vòng được kích hoạt, bộ mô phỏng
thực thi những phát biểu cho đến
Toán tử điều khiển tr ễ (#)
Toán tử điều khiển sự kiện (@)
Cấu trúc đợi (wait)
Phát biểu cuối cùng của hành vi vòng
• Nếu có nhiều hành vi vòng được kích hoạt cùnglúc thì thứ tự thực thi không xác định được
C o m p u t e r E n g i n e e r i n g 2 0 0 9
36Thiết kế Vi mạch số dùng HDL
Nội dung chính1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương trình
boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 19/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
37Thiết kế Vi mạch số dùng HDL
Mô hình hành vi cho các khối cơ bản
• Phân kênh (multiplexer)
• Mã hóa (encoder)
• Giải mã (decoder)
• Thanh ghi dịch hồi tiếp tuyến tính
C o m p u t e r E n g i n e e r i n g 2 0 0 9
38Thiết kế Vi mạch số dùng HDL
Bộ phân kênh (1)• Cấu trúc case tương tự như switch trong C
• Giá tr ị default nên có trong tất cả các cấu trúc case
Mux_4_32
data_0
data_1
data_2
data_3
select
enable
mux_out
2
32 32
32
32
32
32
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 20/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
©2008, Pham Quoc Cuong 39Thiết kế Vi mạch số dùng HDL
Bộ phân kênh (2)
C o m p u t e r E n g i n e e r i n g 2 0 0 9
40Thiết kế Vi mạch số dùng HDL
Bộ mã hóa – encoder
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 21/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
41Thiết kế Vi mạch số dùng HDL
Mã hóa ưu tiên – priority encoder
• Cấu trúc casex cho phép tín hiệu trong phép so
sánh
C o m p u t e r E n g i n e e r i n g 2 0 0 9
42Thiết kế Vi mạch số dùng HDL
Bộ giải mã - decoder
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 22/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
43Thiết kế Vi mạch số dùng HDL
Mô hình dòng dữ liệu của thanh ghi dịch hồi
tiếp tuyến tính (1)
• Thanh ghi dịch hồi tiếp tuyến tính (linear-feedback shift
register – LFSR) Hoạt động chuyển dữ liệu dưới sự điều khiển của tín hiệu clock
Sử dụng trong hiện thực mạch nén dữ liệu có CRC
• Các hệ số C1, C2,…, CN quyết định hoạt động của mạch
CN = 1 Nếu CN-j+1 = 1 ngõ nhập tầng thứ j là Y[j-1]⊕Y[N] (j ≥ 2)
Nếu CN-j+1 = 0 ngõ nhập tần thứ j là Y[j-1]
D QR
clk
D QR
clk
D QR
clk
D QR
clk
+ + +
Cn-1 C2 C1
Clock
Reset
Y[1] Y[N-2] Y[N-1] Y[N]
C o m p u t e r E n g i n e e r i n g 2 0 0 9
44Thiết kế Vi mạch số dùng HDL
Mô hình dòng dữ liệu của thanh ghi dịch hồi
tiếp tuyến tính (2)
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 23/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
45Thiết kế Vi mạch số dùng HDL
Nội dung chính
1. Mô hình hành vi
2. Mô hình hành vi dựa trên phương trình
boole
3. Mô hình hành vi vòng
4. Mô hình hành vi cho các khối cơ bản
5. Giải thuật lặp và lưu đồ máy tr ạng thái
cho mô hình hành vi
C o m p u t e r E n g i n e e r i n g 2 0 0 9
46Thiết kế Vi mạch số dùng HDL
Giải thuật lặp và lưu đồ máy tr ạng cho mô
hình hành vi
• Mô hình hóa máy số bằng các giải thuậtlặp
• Máy với các tác vụ đa chu kỳ• Lập tài liệu thiết kế cho Function và Task
• Lưu đồ giải thuật máy tr ạng thái cho môhình hành vi
• Lưu đồ ASMD• Mô hình hành vi cho bộ đếm, thanh ghidịch và tập thanh ghi
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 24/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
47Thiết kế Vi mạch số dùng HDL
Mô hình hóa máy số bằng các giải thuật lặp
• Cấu trúc lặp for (có thể tổng hợp)for (initial_statement; control_expression; index_statement)
statement_for_expression;
• Cấu trúc lặp repeatrepeat (num_of_loop)
statement_repeat_expression;
• Cấu trúc lặp whilewhile (condition_expression)
statement_while_expression;
• Cấu trúc lặp forever forever statement_forever_expression;
C o m p u t e r E n g i n e e r i n g 2 0 0 9
48Thiết kế Vi mạch số dùng HDL
Sở hữu trí tuệ, tái sử dụng và tham số hóa
mô hình• Mô hình có giá tr ị hơn nếu có thể mở r ộng cho
nhiều hơn một ứng dụng Sử dụng tham số cho độ r ộng bus, chiều dài word…
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 25/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
49Thiết kế Vi mạch số dùng HDL
Sinh xung clock• Xung clock được sử dụng trong các testbench của các
mạch đồng bộ• Sử dụng cấu trúc forever và disable để tạo xung clock
C o m p u t e r E n g i n e e r i n g 2 0 0 9
50Thiết kế Vi mạch số dùng HDL
Khác nhau giữa forever và always• always
Xây dựng một hành vi
đồng thời
Không thể lồng nhau
Thực thi ngay khi bắt
đầu mô phỏng
• forever
Là hoạt động tính toán
và được sử dụng
trong một hành vi,
không cần thực hiện
đồng thời với những
hành vi khác
Có thể lồng nhau
Chỉ thực thi khi dònglệnh đạt đến
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 26/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
51Thiết kế Vi mạch số dùng HDL
Lập tài liệu cho thiết kế task và function
• Một module chỉ hữu dụng cho những
người khác khi nó đúng đắn và được mô
tả rõ ràng
• Task và function là những dạng chương
trình con giúp tăng tính rõ ràng của mã
nguồn
Task tạo ra một cấu trúc phân cấp trong phát
biểu thủ tục trong một hành vi
Function thay thế cho một biểu thức
• Tính trong suốt của chi tiết hiện thực
C o m p u t e r E n g i n e e r i n g 2 0 0 9
52Thiết kế Vi mạch số dùng HDL
Tasks• Được phát biểu trong
một module
• Chỉ có thể được thamkhảo từ bên trong mộthành vi vòng hay hành vimột lượt (single pass)
• Có thể tham khảo đếnbiến môi tr ường bênngoài
• Có thể gọi đệ quy
• Có thể chứa các phátbiểu: parameter, input,
output, inout, reg,integer, real, time,realtime và event
• Khi gọi một task cáctham số thực đượctruyền cho task theo thứtự khai báo của các ngõvào ra
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 27/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
53Thiết kế Vi mạch số dùng HDL
Functions• Được phát biểu bên trong module
• Có thể được tham khảo trong bất kỳ biểu thức có ngh ĩ a – ví dụ trong vếphải của biểu thức gán liên tục
• Được hiện thực bằng các biểu thức và tr ả ra giá tr ị thông qua tên function
• Không có phát biểu output hay inout
• Không được chứa các phát biểu điều khiển sự kiện (@), điều khiển thờigian (#) hay phát biểu wait
• Phải có ít nhất một input và các input được truyền vào theo thứ tự lúc khaibáo
C o m p u t e r E n g i n e e r i n g 2 0 0 9
54Thiết kế Vi mạch số dùng HDL
Lưu đồ giải thuật máy tr ạng thái cho mô
hình hành vi• Lưu đồ giải thuật máy
tr ạng thái (Algorithmicstate machine – ASM –charts) là sự tr ừu tượnghóa hành vi của máy tuầntự
• Tương tự như dòng dữliệu (flowcharts)
• Tập trung vào hoạt độngcủa máy hơn là nội dungcủa các thành phần lưutr ữ
• ASM block State box
Conditional output box
Decision box
State box Conditional output Desicion
ASM block
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 28/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
55Thiết kế Vi mạch số dùng HDL
Lưu đồ ASMD
• Kết hợp lưu đồ ASM với đường dữ liệu
P1[7:0] P1[7:0]
P1[7:0] P1[7:0]
Data
8 8
8
S_idle
S_idle
rst
en
S_full
ldS_waitl
ld en
1 11
1
1
{ P 1 ,
P 0 } < = { 0 , 0
}
{ P 1 ,
P 0 } < = { 0 , 0
}
P 1 < = D a t a
P 0 < = P 1
P1 <= DataP0 <= P1
P1 <= DataP0 <= P1
R0 <= {P1, P0}
C o m p u t e r E n g i n e e r i n g 2 0 0 9
56Thiết kế Vi mạch số dùng HDL
Mô hình hành vi cho bộ đếm (1)S_idle
up_downS_decr S_incr up_down up_down
reset
1
2
0,3
12
1
2
0,3
0,3
Moore style
S_idle
up_downS_decr S_incr up_down up_down
reset
1
2
0,3
12
1
2
0,3
0,3
count <= count - 1 count <= count + 1
count <= count + 1
count <= count + 1
count <= count - 1
count <= count - 1
Mealy style
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 29/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
57Thiết kế Vi mạch số dùng HDL
Mô hình hành vi cho bộ đếm (2)
S_running
up_down
reset
count <= 0count <= count + 1
count <= count - 11
2
0,3
Asynchronous reset
S_running
up_down
count <= 0count <= count + 1
count <= count - 1
1
2
0,3
reset
1
Synchronous rest
C o m p u t e r E n g i n e e r i n g 2 0 0 9
58Thiết kế Vi mạch số dùng HDL
Thanh ghi dịch - shift register
D QR
clk
D QR
clk
D QR
clk
D QR
clk
Data_in
Reset
Clock
Data_out
8/4/2019 gioi thieu verilog 2
http://slidepdf.com/reader/full/gioi-thieu-verilog-2 30/30
C o m p u t e r E n g i n e e r i n g
2 0 0 9
59Thiết kế Vi mạch số dùng HDL
Thanh ghi chuyển dữ liệu song song –
parallel load
D QR
clk
D QR
clk
D QR
clk
D QR
clk
Data_in[3]
Reset
Clock
Data_out[3]
Mux Mux Mux Mux
Load
Data_in[2] Data_in[1] Data_in[0]
D at a_o ut [2 ] D at a_ ou t[ 1] Data_out[0]
C o m p u t e r E n g i n e e r i n g 2 0 0 9
60Thiết kế Vi mạch số dùng HDL
Tập thanh ghi• Tập thanh ghi bao gồm
một số lượng nhỏ các
thanh ghi hỗ tr ợ đọc ghi
thường được hiện thực
bằng D Flip-Flop
Register file
/
//
/
/
/
clock
write_enable
data_in
write_addr
read_add1
read_add2
5
5
5
32
data_out1
data_out2
32
32
data_out
32
ALU_zero
opcode