BÀI TẬP ÔN VHDL.pdf (bài tập VHDL) | Tải miễn phí

BÀI TẬP ÔN VHDL

pdf

Số trang BÀI TẬP ÔN VHDL
11
Cỡ tệp BÀI TẬP ÔN VHDL
258 KB
Lượt tải BÀI TẬP ÔN VHDL
1
Lượt đọc BÀI TẬP ÔN VHDL
122
Đánh giá BÀI TẬP ÔN VHDL

4.1 (
14 lượt)

11258 KB

Nhấn vào bên dưới để tải tài liệu

Đang xem trước 10 trên tổng 11 trang, để tải xuống xem vừa đủ hãy nhấn vào bên trên

Chủ đề tương quan

Tài liệu tương tự

Nội dung

ĐHBK Tp HCM
Khoa Điện-ĐT
BMĐT
Bài tập ôn VHDL

1. Tìm dạng tối thiểu hóa theo SOP của
a. f(x1, x2, x3) = Σm (3, 4, 6, 7)
b. f(x1, x2, x3) = Σm (1, 3, 4, 6, 7)
Kiểm tra lại kết quả tính tay bằng cách nhập các hàm trên chưa rút gọn
thông qua biểu diễn bảng chân trị trong MAX+plus II bằng Waveform
Editor và compile nó. Ta đọc được kết quả rút gọn trong file .rpt .
2. Tìm dạng tối thiểu hóa theo POS của
c. f(x1, x2, x3) = Π M(0, 2, 5)
d. f(x1, x2, x3) = Π M(0, 1, 5, 7)
Kiểm tra lại kết quả tính tay bằng cách nhập các hàm trên chưa rút gọn
thông qua biểu diễn bảng chân trị trong MAX+plus II bằng Waveform
Editor và compile nó. Ta đọc được kết quả rút gọn trong file .rpt .
3. Cho các biến vào X=x1x0 và Y=y1y0, ra của hệ tổ hợp là hàm f được
định nghĩa f(X,Y) = 1 nếu X khác Y; f(X,Y)=0 nếu X=Y. Tìm dạng tối
thiểu của f theo SOP.
4. Dùng Graphic Editor để vẽ mạch thực hiện các hàm sau
a. f1 = x2x3x4 + x1x2x4 + x1x2x3 + x1x2x3
b. f2 = x2x4 + x1x2 + x2x3
Hãy sử dụng mô phỏng chức năng/hàm để chứng tỏ rằng f1 = f2.
5. Tương tự 4. với các hàm sau
a. f1 = (x1 + x2 + x4) ( x2 + x3 + x4) (x1 + x3 + x4) (x1 + x3 + x4)
b. f2 = (x2 + x4) (x3 + x4) (x1 + x4)
Hãy sử dụng mô phỏng chức năng/hàm để chứng tỏ rằng f1 = f2.
6. Dùng Text Editor viết bằng VHDL các hàm:
7. a) Xét các phát biểu gán sau
f1 <= ((x1 AND x3) OR (NOT x1 AND NOT x3)) AND ((x2 AND x4) OR (NOT x2 AND NOT x4)); f2 <=(x1 AND x2 AND x3 AND NOT x4) OR (NOT x1 AND NOT x2 AND x3 AND x4) OR (x1 AND NOT x2 AND NOT x3 AND x4) OR (NOT x1 AND x2 AND x3 AND NOT x4); a. Viết mã VHDL đầy đủ cho các hàm f1, f2 ở trên. b. Sử dụng mô phỏng để chứng tỏ rằng f1 = f2. VHDL-BTOT-trang 1/11 b) Trong các danh hiệu sau hãy tìm ra các danh hiệu hợp lệ và không hợp lệ. Với các danh hiệu không hợp lệ, hãy giải thích tại saovới cách viết đó không hợp lệ? reset_ out and 74HC00_102 Time_Co reset& CaRryOut? out1 32bit_addr CaRryOut Addr32bit _rst c) Đoạn mã sau có các lỗi. Hãy tìm ra và giải thích? -- line 1 -- line 2 -- line 3 -- line 4 -- line 5 -- line 6 -- line 7 -- line 8 -- line 9 -- line 10 -- line 11 -- line 12 -- line 13 -- line 14 -- line 15 -- line 16 -- line 17 Library ieee USE ieee_std_logic_1164.all ENTITY encoder42 IS PORT IS (w : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); z : OUT STD_LOGIC); END encoder; ARCHITECTURE Behavior OF encoder42 IS BEGIN "11" WHEN w(3) = '1' ELSE; y <= "10" WHEN w(2) = '1' ELSE; "01" WHEN w(1) = '1' ELSE; "00"; z <='0' WHEN w = "0000" ELSE '1'; END Behavior; d) Hãy cho biết những lệnh nào sau đây có cú pháp và ngữ nghĩa đúng để mô tả cho hàm f = x’y + xy’ a. b. c. d. e. f <= ( x AND NOT y ) OR ( NOT x AND y ) ; f <= ( NOT x AND NOT y ) OR x ; f <= NOT x AND y OR x AND NOT y ; f <= ( NOT x OR y ) AND NOT y ; f <= (NOT x AND y) OR (x AND NOT y) ; 8. Tìm tối thiểu hóa dạng SOP và POS cho các hàm sau: f(x1, x2, x3) = Σm (1, 2, 3, 5) f(x1, x2, x3) = Σm (1, 4, 7) + d(2,5) f(x1, x2, x3, x4) = Π M(0, 1, 2, 4, 5, 7, 8, 9, 10, 12, 14, 15) f(x1, x2, x3, x4) = Σm(0, 2, 8, 9, 10, 15) + d(1, 3, 6, 7) Hãy kiểm tra lại kết quả bằng cách sử dụng nhập thiết kế bằng bảng chân trị (qua Waveform Editor) 9. Một hàm logic 4 biến có giá trị ra là 1 nếu 3 trong 4 biến vào là 1. Thiết kế và cài đặt hàm này bằng: sơ đồ mạch; bảng chân trị; và VHDL. VHDL-BTOT-trang 2/11 10. Thiết kế mạch nhân 2 số nhị phân 2 bit: Z = A x B, với A=A1A0, B=B1B0 và Z=Z3Z2Z1Z0. Thiết kế và cài đặt bằng 1 trong 3 cách design entry. 11. So sánh 2 số A (2 bit: A1A0), B (2 bit: B1B0); hệ có 3 ngõ ra f1=1 nếu A=B, f2=1 nếu A < B và f3=1 nếu A>B.
12. Tương tự câu trên cho A và B đều là dữ liệu 4 bit.
13. Mạch tạo parity chẳn cho dữ liệu vào 4 bit.
14. Tương tự câu trên cho dữ liệu là 8 bit.
15. Thiết kế mạch thực hiện x2+x+1 với x=x2x1x0.
16. Thực hiện hàm f hoạt động theo bảng sau:
Mạch nhận một số X (4 bit: x3x2x1x0) có 4 ngõ ra như sau:
• f1 = 1 nếu X chia hết cho 2
• f2 = 1 nếu X chia hết cho 3
• f3 = 1 nếu X chia hết cho 4
• f4 = 1 nếu X chia hết cho 5
17.
Cho 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 đó.
18. Dưới đây là một chương trình VHDL mô tả bộ đếm lên 4 bit đơn giản
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
ENTITY
upcount
IS
PORT ( Clock : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) ) ;
END upcount ;
Behavior OF upcount IS ARCHITECTURE
BEGIN
PROCESS ( Clock )
BEGIN
IF (Clock’EVENT AND Clock = ‘1’) THEN

VHDL-BTOT-trang 3/11

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. 19. Thiết kế một bộ đếm lên/xuống 4 bit có 5 ngõ vào điều khiển là Up, Down, Clear, Load và Enable (trong đó chỉ có Clear và Enable hoạt động không đồng bộ với Clk) có tác dụng như sau: • Enable =1 thì ngõ ra Data_out=giá trị 4 bit chứa trong bộ đếm; còn ngược lại khi Enable =0 thì ngõ ra Data_out=”ZZZZ”; . • Load = 1 thì bộ đếm thực hiện tác vụ nạp song song từ giá trị 4 bit ở Data_in vào bộ đếm ở cạnh lên của xung nhịp Clk. • Clear = 1 thì xóa bộ đếm về 0. • Up = 1 khi có cạnh lên ở Clk thì làm bộ đếm tăng thêm 1. • Down = 1 khi có cạnh lên ở Clk thì làm bộ đếm giảm đi 1. Như vậy bộ đếm hoạt động bình thường khi Load=0 và Clear=0. 20. 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. 21. Vẽ mạch của mã VHDL cho ở phía sau. Sửa mã để cho out1 có kiểu dữ liệu là std_logic. Có thể bỏ tín hiệu connect1 được không? Giải thích. 1 entity nandgate is 2 port ( 3 in1: in bit; 4 in2: in bit; 5 out1: out bit; 6 ); VHDL-BTOT-trang 4/11 7 end nandgate; 8 architecture nandgate_arch of nandgate is 9 signal connect1 : bit; 10 begin 11 connect1 <= in1 and in2; 12 out1 <= not connect1; 13 end nandgate_arch; 22. Các tín hiệu a, b, c được gán như sau: a<= “01”; b<= “11”; c<= “10”; Tìm d1 khi nó được gán: d1<= (a nand b) nand c; Tìm d2 khi nó được gán: d2<= a nand (b nand c); 23. Cho trước bảng chân trị của cổng xnor: 1 entity test9 is 2 port (in1, in2 : in std_logic; 3 out1 : out std_logic);0 4 end test9; Cài đặt cổng này 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 24. 25. 26. 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? Thiết kế mạch chuyển đổi mã BCD8421 sang mã quá 3 (excess-3) với các cách sau: a. Viết trực tiếp entity cho mạch này dùng các lệnh đồng thời. b. Viết trực tiếp entity cho mạch này dùng các lệnh tuần tự. c. Dùng hàm (function). d. Dùng thủ tục (procedure). Viết khai báo cho cấu trúc sau, giả sử các tín hiệu trong mã là port: architecture write_entity of exercise2 is begin mapper: process (addr) begin shadow_ram_sel <= ‘0’; sram_sel <= ‘0’; if addr >= x”0100” and addr < x”4000” then shadow_ram_sel <= ‘1’; elsif addr >= x”8000” and addr < x”C000” then sram_sel <= ‘1’; end if; promsel <= ‘0’; if eme_mapped = ‘0’ and bootup then prom_sel <= ‘1’; end if; end process mapper; mem_mapped <= shadow_ram_sel or sram_sel; VHDL-BTOT-trang 5/11 end write_entity; 27. 28. 29. 30. 31. 32. 33. Tìm các lỗi trong đoạn mã sau và hãy sửa lại cho đúng: entity 4to1_mux port( signal a, b, c, d: std_logic_vectors(3 downto 0); select: in std_logic-vector(1 downto 0); x: out bit_vector(3 downto 0); end architecture of 4to1_mux begin p1: process begin if select =’00’ then x <= a; elsif select = ‘10’ x <= b; elsif select = ‘11’ x <= c; else x <= d end if; end process; end 4to1_mux; 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ệ c. Mô hình cấu trúc d. Lệnh when-else e. Lệnh if-then-else 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 8 bit sang BCD (2 digit). b. Thiết kế mạch cộng song song 2 số BCD (1 digit). c. 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). d. Thiết kế mạch hiển thị BCD ra bảy đoạn. e. 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. 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. Suy ra giản đồ trạng thái của FSM có 1 ngõ vào X và 1 ngõ ra Z. FSM sẽ tạo ra Z=1 khi nhận được chuỗi vào 1001 hoặc 1111; ngược lại Z=0. Các mẫu vào phủ lắp được cho phép. Thí dụ: X: 010111100110011111 Z: 000000100100010011 Thiết kế mạch đếm lên 3 bit có ngõ điều khiển CNTRL: a. Khi CNTRL=0 theo số nhị phân thông thường: 000, 001, 010, … b. Khi CNTRL=1 theo mã Gray : 000, 001, 011, … 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. VHDL-BTOT-trang 6/11 LIBRARY ieee; USE ieee.std_logic_1164.all; 34. 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; Cho trước mã VHDL sau: library IEEE; use IEEE.std_logic_1164.all; entity toto is 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: VHDL-BTOT-trang 7/11 35. Xét mã VHDL ở hình sau: a. Vẽ mạch logic tương ứng với nó. b. Cho biết danh sách dò sự thay đổi của tín hiệu trong process this và that? Danh sách tối thiểu cho các process đó là gì? VHDL-BTOT-trang 8/11 36. Hãy viết mã VHDL cho các FSM sau: a. b. VHDL-BTOT-trang 9/11 37. 39. 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. Thiết kế mạch nhân nối tiếp 2 số 4 bit bằng VHDL (hệ có 1 ngõ vào X và 1 ngõ Z, cùng với xung nhịp CLK kích cạnh lên). Cho trước mạch đếm 4 bit sau: 40. 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. 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ó. Viết mã VHDL cho phần cứng sau (FA=Full Adder). 38. VHDL-BTOT-trang 10/11

Source: https://ta-ogilvy.vn
Category: Hỏi Đáp