Professional Documents
Culture Documents
Thiet-Ke-Mach-So-Voi-Hdl - Tran-Ngoc-Thinh - Chapter5 - Thiet-Ke-Luan-Ly-Bang-Mo-Hinh-Hanh-Vi - (Cuuduongthancong - Com)
Thiet-Ke-Mach-So-Voi-Hdl - Tran-Ngoc-Thinh - Chapter5 - Thiet-Ke-Luan-Ly-Bang-Mo-Hinh-Hanh-Vi - (Cuuduongthancong - Com)
2009
* nhân | bit-wise OR
/ chia && logical AND
% Chia lấy dư Số học Logic
|| logical OR
+ Cộng (hai ngôi)
– Trừ (hai ngôi) ?: Điều kiện Điều kiện
B
• 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: MSB
A = 4’b0010 (2)
C = 4’b1101 (13)
– integer intA, intB;
intA = -12;
B = 4’b0101 (5) intB = -’d12;
B
A = 52 A = 3’b001
x < True (1)
B = 8’hx5 B = 3’b011
A = 3’b001
A = 5’b00001
> False (0)
B = 5’b01011
ABus = 4’b0110;
BBus = 4’b0100;
ABus || BBus // 1
ABus && BBus // 1
!ABus // giống như !BBus
// 0
^ (xor) 0 1 x z ^~ (xnor) 0 1 x z
0 0 1 x x 0 1 0 x x
1 1 0 x x 1 0 1 x x
x x x x x x x x x x
z x x x x z x x x x
~ (not) 0 1 x z
1 0 x x
Thiết kế Vi mạch số dùng HDL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
©2012, Tran Ngoc Thinh 13
Computer Engineering 2009 Toán tử thu giảm
.. .. .. .. f 0/1/x
.. x .. .. f x .. z .. .. x
f
& (thu giảm and): &bn-1bn-1…b0
.. 0 .. .. & 0 1 1 1 1 & 1
0 0 bn ... b3 b2 b1
{3{1’b1}} // 111
{3{Ack}} // {Ack, Ack, Ack}
^ ^~ ~^
| ~|
&&
||
Lowest ?:
s e le c t
d a ta 0
M ux_2_32 m ux_out
d a ta 1
Non-blocking/concurrent assignment
endmodule
a f1
nsel g1
g4
g3 f
b
g2
sel f2
34
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Multiplexer Built With Always Introduction
endmodule
f
b
sel
35
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Mux with Continuous Assignment Introduction
assign f = sel ? a : b;
endmodule
f
b
sel
36
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Mux with User-Defined Primitive Introduction
table
1?0 : 1;
0?0 : 0; This is a less pessimistic than others:
when a & b match, sel is ignored
?11 : 1;
(others produce X)
?01 : 0;
11? : 1;
00? : 0;
endtable
endprimitive
f
b
sel
37
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 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
• Fundamental problem:
In a synchronous system, all flip-flops sample simultaneously
In Verilog, always @(posedge clk) blocks run in some undefined
sequence
reg d1, d2, d3, d4; reg d1, d2, d3, d4;
41
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Blocking and Nonblocking Assignments Timing Control
42
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Blocking assign
module example7_3 (D, Clock, Q1, Q2);
input D, Clock;
output Q1, Q2;
reg Q1, Q2;
end
Clock Q
endmodule
D Q Q 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Two cascaded flip-flops
Non-blocking assignments
endmodule Clock Q Q
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Computer Engineering 2009 Mô hình Dataflow/RTL (2)
time
Blocked assignment
Thiết kế Vi mạch số dùng HDL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
©2012, Tran Ngoc Thinh 45
Computer Engineering 2009 Non-blocking vs. Blocking
• Non-blocking • Blocking
Toán tử <= Toán tử =
Các phát biểu thực thi Các phát biểu thực thi
đồng thời (song song) tuần tự
Thứ tự các phát biểu Thứ tự các phát biểu
không ảnh hưởng đến có thể ảnh hưởng đến
kết quả cuối cùng kết quả cuối cùng
Khi thực hiện hành vi Khi thực hiện hành vi
vòng bộ mô phỏng vòng bộ mô phỏng chỉ
tính giá trị biểu thức tính giá trị biểu thức
bên vế phải trước khi bên phải ngay sau khi
gán cho vế trái phát biểu trước đó
hoán tất
Thiết kế Vi mạch số dùng HDL
CuuDuongThanCong.com https://fb.com/tailieudientucntt
©2012, Tran Ngoc Thinh 46
Computer Engineering 2009 Mô hình dựa trên thuật toán
• Mức trừu tượng cao
hơn mô hình dòng
dữ liệu
• Dễ hiểu dễ đọc
• Các lệnh trong một
hành vi vòng được
thực thi tuần tự
• Không phải tất cả
các giải thuật đều
có thể hiện thực
bằng phần cứng
s e le c t
d a ta _ 0 e n a b le
32
d a ta _ 1
32
d a ta _ 2 M ux_4_32
32 32
32
m ux_out
d a ta _ 3
32
C n -1 C2 C1
R R R R
D Q + D Q + D Q + D Q
Y [1 ] Y [N -2 ] Y [N -1 ] Y [N ]
c lk c lk c lk c lk
C lo c k
S_idle
P1 <= Data
P0 <= P1
P1 <= Data
S_full P0 <= P1
S_waitl ld
1 1 1
ld en
R0 <= {P1, P0}
S _ id le
1 1
2 1
State
up_down S _decr up_down S _ in c r up_down
0 ,3 0 ,3 Transitions
0 ,3 2
2
only
re s e t
S _ id le
1 1
2 1
up_down S _decr count <= count - 1 up_down count <= count + 1 S _ in c r up_down
0 ,3 0 ,3
2 0 ,3 2
count <= count + 1
0 ,3
1
2 up_down
Synchronous rest
Asynchronous reset 2
R eset
D a t a _ in D a ta _ o u t
R R R R
D Q D Q D Q D Q
c lk c lk c lk c lk
C lo c k
D a t a _ in [ 3 ] D a t a _ in [ 2 ] D a t a _ in [ 1 ] D a t a _ in [ 0 ]
M ux M ux M ux M ux
Load
R eset R R R R
D Q D Q D Q D Q
c lk c lk c lk c lk
C lo c k
bằng D Flip-Flop c lo c k
d a ta _ o u t2 /
w r ite _ e n a b le
32