2 4 đ Viết mã Verilog mô tả mạch này dùng mô hình luồng dữ liệu.. Chú ý: Không cần viết lại các khai báo cổng cho các mô hình chỉ thêm khai báo reg cho câu 3... 4 3 đ mô hình hành vi với
Trang 1ĐHQG – ĐHBK Tp HCM – Khoa ĐĐT – BMĐT
Môn học: XLTHS với FPGA –HK182
GVPT: Hồ Trung Mỹ
Đáp án của Kiểm tra 15’ tại lớp #01 (Tuần 04 – 18/02/2019)
Cho trước mạch tổ hợp sau:
1) (2 đ) Hãy tìm biểu thức Boole của F (không rút gọn hàm Boole)
2) (4 đ) Viết mã Verilog mô tả mạch này dùng mô hình luồng dữ liệu
3) (4 đ) Hãy biểu diễn F theo dạng F = A’F0 + AF1 với F0 và F1 là các hàm Boole theo B và C, từ đó viết mã
Verilog mô tả mạch này dùng mô hình hành vi với phát biểu if else
Chú ý: Không cần viết lại các khai báo cổng cho các mô hình (chỉ thêm khai báo reg cho câu 3).
BG.
1) F(A, B, C) = (A’ B) + (B’ + C)’ + A ÅC’
2) Mô hình luồng dữ liệu:
module KT1_D(A, B, C, F);
input A, B, C;
output F;
assign F(A, B, C) = (~A & B) | ~(~B | C) | (A ^ ~C);
endmodule
3) Mô hình hành vi:
Ta có:
F0 = F(0, B, C) = (0’ B) + (B’ + C)’ + 0 ÅC’ = B + BC’ + C’ = B + C’
F1 = F(1, B, C) = (1’ B) + (B’ + C)’ + 1 ÅC’ = BC’ + C = B + C
Suy ra:
F(A, B, C) = A’(B + C’) + A(B + C)
Mã verilog:
module KT1_H(A, B, C, F);
input A, B, C;
output F; reg F;
always@(A or B or C)
if (A == 1) //hoặc dùng: if (A)
F = B | C;
else
F = B | ~C;
if (A == 0) //hoặc dùng: if (!A)
F = B | ~C;
else
F = B | C;
endmodule
Trang 2ĐHQG – ĐHBK Tp HCM – Khoa ĐĐT – BMĐT
Môn học: XLTHS với FPGA – HK182
GVPT: Hồ Trung Mỹ
Đáp án của Kiểm tra 15’ tại lớp #02 (Tuần 05 – 25/02/2019)
Một mạch tổ hợp có hàm Boole:
( , , , ) = ( + )( + )( + )( + + + ) Viết mã Verilog mô tả mạch dùng
1) (2 đ) mô hình cấu trúc
2) (2 đ) mô hình luồng dữ liệu
3) (3 đ) mô hình hành vi với phát biểu if else
4) (3 đ) mô hình hành vi với phát biểu case cài đặt cho hàm F dưới dạng tổng các minterm.
Chú ý: Không cần viết lại các khai báo cổng cho các mô hình
BG.
module KT02(A, B, C, D, F);
input A, B, C, D;
output F;
a) Mô hình cấu trúc
wire An, Bn, Cn, Dn, T1, T2, T3;
// xn = x’, T1 = A + B, T2 = A + C, T3 = A + D, T4= A’ + B’ + C’ + D’
not
g0(An, A),
g1(Bn, B),
g2(Cn, C),
g3(Dn, D);
or
g4(T1, A, B),
g5(T2, A, C),
g6(T3, A, D),
g7(T4, An, Bn, Cn, Dn);
and
g7(F, T1, T2, T3, T4);
b) Mô hình luồng dữ liệu
assign F = (A | B) & (A | C) & (A | D) & (~A | ~B | ~C | ~D);
c) Mô hình hành vi với if … else …
Ta có: F = A’BCD + A(B’ + C’ + D’) = A Å BCD
reg F;
always@(A or B or C or D)
if (A == 1) // hoặc dùng: if (A)
F = ~(B & C & D);
else
F = B & C & D;
d) Mô hình hành vi với case
F(A,B, C,D) = A Å BCD = Sm(7,8,9,10,11,12,13,14) =PM(0,1,2,3,4,5,6,15)
reg F;
always@(A or B or C or D)
case({A, B, C, D})
7,8,9,10,11,12,13,14: F = 0;
default: F = 1;
endcase;
CD
00 01 11 10
endmodule
Trang 3ĐHQG – ĐHBK Tp HCM – Khoa ĐĐT – BMĐT
Môn học: XLTHS với FPGA – HK182
GVPT: Hồ Trung Mỹ
Đáp án của Kiểm tra 15’ tại lớp #03 (Tuần 06 – 04/03/2019)
Hình 1 Hình 2
1) (5 đ) Dùng Verilog mô tả FSM có giản đồ trạng thái ở hình 1 Giả sử hệ có xung nhịp kích cạnh lên clk, ngõ vào X, ngõ ra Y, và ngõ điều khiển đồng bộ Resetn tích cực thấp Khi hệ bị Reset sẽ về trạng thái S1.
BG.
module KT4(clk, Resetn, X, Y);
input clk, Reset, X;
output Y; reg Y;
reg [1:0] state, nstate; // nstate = next state
parameter S1 = 2'b00, S2 = 2'b01, S3 = 2'b10, S4 = 2'b11;
// State register
always@(posedge clk)
if (!Resetn)
state <= S1;
else
state <= nstate;
// Next state Logic
always@(state or x)
case(state)
S1: nstate = X? S1 : S2;
S2: nstate = X? S3 : S4;
S3: nstate = X? S2 : S1;
S4: nstate = X? S4 : S3;
default: nstate = S1;
endcase
// Output Logic
assign Y = X? (state == S1) || (state == S4) : (state == S2) || (state == S3) ;
endmodule
2) (5 đ) Cho trước bộ lọc IIR ở hình 2: (biết TM = 2 ut và TA = 1 ut)
a) Hãy vẽ DFG của bộ lọc này
b) Tìm đường tới hạn (CP = Critical Path) của hệ này? Như vậy chu kỳ lấy mẫu là bao nhiêu?
c) Tìm giới hạn lặp?
BG.
a) DFG của mạch trên: (Đặt tên các nút nhân bắt đầu bằng chữ A theo thứ tự từ trái và phải và
từ trên xuống dưới Tương tự với các nút nhân nhưng bắt đầu bằng M.)
Trang 4b) Đường [dẫn] tới hạn T critical và giới hạn lặp bằng quan sát:
Đường [dẫn] tới hạn đi qua A4–M2–A2–A1 (hoặc nút cuối là A3)
T critical = T A + T M + T A + T A = 3T A + T M = 3 x 1 + 2 = 5 ns
Như vậy có thể chọn chu kỳ mẫu Tsample = Tclock ³ T critical = 5 ns
c) Tìm giới hạn lặp bằng quan sát:
Tính các giới hạn vòng trong DFG
Vòng thứ Các nút trong vòng Giới hạn vòng (u.t.)
Suy ra giới hạn lặp T¥ = max{các giới hạn vòng} = max{4, 2.5} = 4 ns