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 ANDx4) 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/11b) Trong các danh hiệu sau hãy tìm ra các danh hiệu hợp lệ và khônghợ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áchviết đó không hợp lệ?reset_outand 74HC00_102Time_Coreset&CaRryOut?out132bit_addrCaRryOutAddr32bit_rstc) Đ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 17Library ieeeUSE ieee_std_logic_1164.allENTITY encoder42 ISPORT 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 ISBEGIN"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ảngchâ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/1110. 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 designentry.11. So sánh 2 số A (2 bit: A1A0), B (2 bit: B1B0); hệ có 3 ngõ ra f1=1 nếuA=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 Resetbấ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 đặtmạ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 độngkhô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ị 4bit ở 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 is2 port (in1 : in bit_vector (2 downto 0);3out1 : out bit_vector (3 downto 0));4 end test;5 architecture test_arch of test is6 begin7 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ểudữ liệu là std_logic. Có thể bỏ tín hiệu connect1 được không? Giảithích.1 entity nandgate is2 port (3in1: in bit;4in2: in bit;5out1: out bit;6 );VHDL-BTOT-trang 4/117 end nandgate;8 architecture nandgate_arch of nandgate is9 signal connect1 : bit;10 begin11 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 is2 port (in1, in2 : in std_logic;3out1 : out std_logic);04 end test9;Cài đặt cổng này bằng:a) Các phát biểu when-elseb) Các phát biểu with-select-whenc) Các phát biểu case-whend) Các phát biểu if-then-else24.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áclệ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áchsau: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 isbeginmapper: process (addr) beginshadow_ram_sel <= ‘0’;sram_sel <= ‘0’;if addr >= x”0100” and addr < x”4000” thenshadow_ram_sel <= ‘1’;elsif addr >= x”8000” and addr < x”C000” thensram_sel <= ‘1’;end if;promsel <= ‘0’;if eme_mapped = ‘0’ and bootup thenprom_sel <= ‘1’;end if;end process mapper;mem_mapped <= shadow_ram_sel or sram_sel;VHDL-BTOT-trang 5/11end 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_muxport( 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);endarchitecture of 4to1_muxbegin p1: process beginif select =’00’ thenx <= a;elsif select = ‘10’x <= b;elsif select = ‘11’x <= c;elsex <= dend 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ử logicb. Các toán tử quan hệc. Mô hình cấu trúcd. Lệnh when-elsee. Lệnh if-then-elseThiế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 2số 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 raZ=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: 010111100110011111Z: 000000100100010011Thiế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ạchnà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ếuchưa đạt thì hãy viết lại để cho kết quả tốt nhất.VHDL-BTOT-trang 6/11LIBRARY ieee;USE ieee.std_logic_1164.all;34.ENTITY problem ISPORT (Input: IN STD_LOGIC_VECTOR(3 DOWNTO 0);Output: OUT STD_LOGIC_VECTOR(3DOWNTO 0));END problem;ARCHITECTURE LogicFunc OF problem ISBEGINWITH Input SELECTOutput <=“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 isport (A, B, C : in std_logic;Q1, Q2 : out std_logic);end toto;architecture synth of toto issignal V, R : std_logic;beginprocess (V, C)beginif (V='1‘) thenQ2 <= C;end if;end process;R <= B xor C;process (A)beginif (A'event and A='1') thenQ1 <= 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/1135.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/1136.Hãy viết mã VHDL cho các FSM sau:a.b.VHDL-BTOT-trang 9/1137.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ânsong 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://mix166.vn
Category: Hỏi Đáp

Xổ số miền Bắc