Bài tập về PLD và VHDL môn Kỹ thuật số - Hồ Trung Mỹ

a) Hãy tìm biểu thức tối thiểu cho F(A,B,C,D) dạng SOP.

b) Viết chương trình VHDL cài đặt hàm trên.

c) Thêm một tín hiệu clk để chỉ cho ngõ ra F thay đổi khi có cạnh lên ở clk, còn khi clk ở

trạng thái khác thì ngõ ra F giữ trị cũ vừa trước đó.

pdf7 trang | Chuyên mục: Kỹ Thuật Số | Chia sẻ: tuando | Lượt xem: 454 | Lượt tải: 0download
Tóm tắt nội dung Bài tập về PLD và VHDL môn Kỹ thuật số - Hồ Trung Mỹ, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
BT về PLD và VHDL – trang 1/7 
ĐHBK Tp HCM–Khoa ĐĐT–BMĐT 
Môn học: Kỹ thuật số 
GVPT: Hồ Trung Mỹ 
Bài tập về PLD và VHDL 
1. Dùng PLA 3x4x2 ở hình 1 để cài đặt 2 hàm Boole: 
F1 = x’y’z + xy’ + x’yz’ 
F2 = x’yz’ + xy + x’z’ + x’y’ 
 Hình 1 Hình 2 
2. Cài đặt 3 hàm Boole sau với PLA có cấu trúc như hình 2 
F0(A,B,C,D) = Σm (2, 3, 4, 5, 6, 7, 13, 15) 
F1(A,B,C,D) = Σm (6, 7, 13, 14, 15) 
F2(A,B,C,D) = Σm (4, 5, 6, 13, 14) 
3. Với mạch sau: 
a) Hãy tìm biểu thức tối thiểu cho F(A,B,C,D) dạng SOP. 
b) Viết chương trình VHDL cài đặt hàm trên. 
c) Thêm một tín hiệu clk để chỉ cho ngõ ra F thay đổi khi có cạnh lên ở clk, còn khi clk ở 
trạng thái khác thì ngõ ra F giữ trị cũ vừa trước đó. 
4. Dưới đây là một chương trình VHDL mô tả bộ đếm lên 4 bit đơn giản 
BT về PLD và VHDL – trang 2/7 
 LIBRARY ieee ; 
 USE ieee.std_logic_1164.all ; 
 USE ieee.std_logic_unsigned.all ; 
ENTITY upcounter IS 
PORT ( Clock : IN STD_LOGIC ; 
 Q : BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) ) ; 
END upcounter ; 
ARCHITECTURE Behavior OF upcounter IS 
BEGIN 
PROCESS ( Clock ) 
BEGIN 
IF (Clock’EVENT AND Clock = ‘1’) THEN 
 Q <= Q + ‘1’ ; 
END IF ; 
END PROCESS; 
END Behavior ; 
a) Dựa vào chương trình trên hãy phát triển bộ đếm lên BCD (có 2 số mã [digit] BCD là B1B0 
(nghĩa là đếm từ 00 đến 99, B1 và B0 là 2 số 4 bit). Giả sử bộ đếm BCD làm việc theo cạnh lên 
Clk và có thêm ngõ vào Reset bất đồng bộ với Clk (nghĩa là bất cứ khi nào Reset=1 thì các 
ngõ ra là 0) 
b) Giả sử B1 và B0 được đưa vào một mạch khác mà sẽ cho ngõ ra G trị là 1 khi B1B0 trong 
tầm từ 00 đến 90 và có trị số là bội số của 9. Hãy cài đặt mạch trên. 
5. Mã VHDL của 1 thiết bị là 
1 entity test is 
2 port (in1 : in bit_vector (2 downto 0); 
3 out1 : out bit_vector (3 downto 0)); 
4 end test; 
5 architecture test_arch of test is 
6 begin 
7 out1(0)<=in1(1); 
8 out1(1)<=in1(2); 
9 out1(2)<=in1(0) and in1(1); 
10 out1(3)<=’1’; 
11 end test_arch ; 
Tên của entity và thân architecture là gì? Vẽ sơ đồ mạch. 
6. Cài đặt cổng XNOR bằng 
a) Các phát biểu when-else 
b) Các phát biểu with-select-when 
c) Các phát biểu case-when 
d) Các phát biểu if-then-else 
7. Ta muốn thiết kế mạch phát hiện có 3 ngõ vào là 1 trong 4 ngõ vào (D3,D2,D1 và D0) của 
hệ, khi đó ngõ ra Y =1. Viết phương trình của Y. Cài đặt mạch bằng các lệnh có thể sử dụng 
được? Có bao nhiêu cách? 
8. Xây dựng mạch so sánh độ lớn của 2 số 4 bit A và B với 3 ngõ ra (bằng nhau: AEQB, nhỏ 
hơn: ALTB, và lớn hơn: AGTB) dùng: 
a) Các toán tử logic 
b) Các toán tử quan hệ 
BT về PLD và VHDL – trang 3/7 
c) Mô hình cấu trúc 
d) Lệnh when-else 
e) Lệnh if-then-else 
9. Thiết kế mạch cộng BCD và hiển thị LED bảy đoạn: 
a) Thiết kế mạch chuyển đổi nhị phân 4 bit sang BCD (2 digit, nhưng chỉ cần 5 bit). 
b) Thiết kế mạch chuyển đổi nhị phân 8 bit sang BCD (2 digit). 
c) Thiết kế mạch cộng song song 2 số BCD (1 digit). 
d) Sử dụng các thiết kế ở a. và b. để làm các component cho mạch cộng 2 số BCD 2 
digit, kết quả ra là 2 digit 1/2 (2 digit rưỡi). 
e) Thiết kế mạch hiển thị BCD ra bảy đoạn. 
f) Ráp lại các phần c) và d) thành 1 mạch hoàn chỉnh để cộng 2 số nhị phân vào và cho 
ra kết quả BCD. 
10. Thiết kế bộ đếm Johnson 4 bit: 
a) Viết mã VHDL cho JK flifpflop kích cạnh lên. 
b) Dùng a. để thiết kế mạch đếm Johnson 4 bit. 
c) Viết trực tiếp không sử dụng a) 
11. Xét mã VHDL sau, quan hệ giữa Input và Output cho ta biết chức năng của mạch này là 
gì? Với chức năng đó thì cách viết này có chỗ nào chưa đạt không? Nếu chưa đạt thì hãy viết 
lại để cho kết quả tốt nhất. 
LIBRARY ieee; 
USE ieee.std_logic_1164.all; 
ENTITY problem IS 
PORT (Input: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 
Output: OUT STD_LOGIC_VECTOR(3DOWNTO 0)); 
END problem; 
ARCHITECTURE LogicFunc OF problem IS 
BEGIN 
WITH Input SELECT 
Output <= “0001” WHEN “0101”, 
“0010” WHEN “0110”, 
“0011” WHEN “0111”, 
“0010” WHEN “1001”, 
“0100” WHEN “1010”, 
“0110” WHEN “1011”, 
“0011” WHEN “1101”, 
“0110” WHEN “1110”, 
“1001” WHEN “1111”, 
“0000” WHEN OTHERS; 
END LogicFunc; 
12. Cho trước mã VHDL sau: 
library IEEE; 
use IEEE.std_logic_1164.all; 
entity toto is 
BT về PLD và VHDL – trang 4/7 
port (A, B, C : in std_logic; 
Q1, Q2 : out std_logic); 
end toto; 
architecture synth of toto is 
signal V, R : std_logic; 
begin 
process (V, C) 
begin 
if (V='1‘) then 
Q2 <= C; 
end if; 
end process; 
R <= B xor C; 
process (A) 
begin 
if (A'event and A='1') then 
Q1 <= C; 
V <= R; 
end if; 
end process; 
end synth; 
Hãy hoàn tất giản độ định thì của mạch được mô tả bởi mã VHDL ở trên: 
13. Cho trước mạch đếm 4 bit sau: 
a) Hãy tìm chuỗi đếm của mạch đếm này. 
b) Viết mã VHDL cho mạch trên. 
c) Dùng b. để thiết kế mạch đếm 16 bit có chức năng tương tự như mạch đếm 4 bit. 
BT về PLD và VHDL – trang 5/7 
d) Có thể viết tổng quát thành mạch đếm N bit theo chức năng tương tự của a? Nếu 
được hãy viết mã VHDL cho nó. 
14. Thiết kế mạch nhân song song 2 số 2 bit bằng VHDL. Từ đó xây dựng mạch nhân song 
song 2 số 4 bit. 
15. Hãy vẽ mạch logic tương ứng của các đoạn chương trình VHDL sau: 
LIBRARY ieee; 
use ieee.std_logic_1164.all; 
ENTITY ex01 IS 
 PORT( A, B : IN STD_LOGIC; 
 X, Y : IN STD_LOGIC; 
 Z : OUT STD_LOGIC); 
END ex01; 
ARCHITECTURE a OF ex01 IS 
BEGIN 
process (A) 
if (A = ‘1’) then 
 Z <= X 
elseif (B= ‘1’) then 
 Z <= not X; 
 else 
 Z <= Y; 
end if; 
end process; 
END a; 
16. Tìm bảng chân trị và vẽ sơ đồ logic (sử dụng các cổng và các mạch MSI nếu có) cho mạch 
được mô tả bằng VHDL như sau: 
entity BLACK_BOX is 
port (A, B, C, D: in BIT; 
X, Y: out BIT); 
end BLACK_BOX; 
architecture DATA_FLOW of BLACK_BOX is 
signal P, R, S: BIT_VECTOR(2 downto 0); 
begin 
P <= A & B & C; 
R <= B"011"; 
S <= P xor R; 
with S select 
X <= not D when O"7" | O"0", 
D when O"2" to O"5", 
'0' when others; 
Y <= A xor B when C='0' else 
A and B when D='1' else 
BT về PLD và VHDL – trang 6/7 
not B; 
end DATA_FLOW; 
17. Hãy vẽ mạch logic tương ứng của các đoạn chương trình VHDL sau: 
library IEEE; 
use IEEE.std_logic_1164.all; 
entity test is 
port ( din, clk: in std_logic; 
dout: out std_logic); 
end test; 
architecture a of test is 
component dff is 
port ( d,clk: in std_logic; 
q: out std_logic ); 
end component; 
component xor2 is 
port ( a,b: in std_logic; 
y : out std_logic ); 
end component; 
signal toggle: std_logic; 
begin 
u1: xor2 
port map (a => dout, b => din, y => toggle); 
u2: dff 
port map (d => toggle, clk => clk, q => dout ); 
end a; 
18. Cài đặt hàm Boole sau: F(A,B,C,D) = A’BC + AD + AC 
Với: a) Lệnh gán tín hiệu thông thường (dùng các toán tử) 
b) with–select–when 
c) when–else 
d) if–then–else 
e) case–when 
Chú ý: Cho phép dùng chung khai báo entity. 
19. Thiết kế mạch nhân 2 số nhị phân 2 bit A (A1A0) và B (B1B0) với kết quả là số nhị phân 4 
bit P(P3P2P1P0): 
a) Tìm biểu diễn mỗi ngõ ra theo các ngõ vào bằng các cổng logic và mạch cộng bán phần 
HA nếu cần. 
b) Viết mô tả VHDL cho mạch này (giả sử có sẵn component HA). 
20. Với mạch sau hãy viết mô tả với VHDL dùng mô hình cấu trúc (giả sử có sẵn component 
của MUX và register 8 bit). 
BT về PLD và VHDL – trang 7/7 
21. Cho trước mã VHDL sau: 
library IEEE; 
use IEEE.std_logic_1164.all; 
entity test_ckt is 
port( x : in std_logic_vector(1 downto 0); 
enb, a, b, c, d : in std_logic; 
y : out std_logic); 
end; 
architecture logic of test_ckt is 
begin 
combin: process(x, enb, a, b, c, d) 
begin 
 y <= '0'; 
 if (enb = '1') then 
 case x is 
 when "00" => y <= a; 
 when "01" => y <= b; 
 when "10" => y <= c; 
 when "11" => y <= d; 
 when others => y <= '0'; 
 end case; 
end if; 
end process; 
end logic; 
a) Hãy vẽ sơ đồ hộp đen với các ngõ vào và ngõ ra của chương trình trên? 
b) Viết phương trình Boolean của ngõ ra y. 
c) Mạch này có chức năng gì? (Tên gọi là gì) 

File đính kèm:

  • pdfbai_tap_ve_pld_va_vhdl_mon_ky_thuat_so_ho_trung_my.pdf