1. Trang chủ
  2. » Giáo án - Bài giảng

Đề cương Ôn tập ngôn ngữ mô tả phần cứng - Đại học Công nghiệp Hà Nội

70 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Câu 1. Thiết kế bộ đếm tiến thập phân, kết quả hiển thị LED 7 thanh bằng phương pháp máy trạng thái. Câu 2. Thiết kế bộ đếm lùi thập phân, kết quả hiển thị LED 7 thanh bằng cách sử dụng nhiều process. Câu 3. Thiết kế bộ đếm cho phép chọn đếm tiến hoặc đếm lùi theo mã thập phân, hiển thị trên LED 7 thanh. Câu 4. Thiết kế bộ đếm tiến nhị phân Kđ = 255, kết quả hiển thị led đơn. Câu 5: Thiết kế bộ đếm lùi nhị phân Kđ = 255, kết quả hiển thị LED đơn Câu 6: Thiết kế bộ đếm cho phép chọn đếm tiến hoặc đếm lùi theo mã nhị phân Kđ=128, kết quả hiển thị LED đơn Câu 7: Thiết kế mạch đếm theo mã vòng 16 bit , kết quả hiển thị LED đơn Câu 8: Thiết kế mạch đếm theo mã Johnson 8 bit , kết quả hiển thị LED đơn Câu 9: Thiết kế bộ đếm tiến các số chẵn từ 0 → 100 theo mã nhị phân, kết quả hiển thị LED đơn Câu 10: Thiết kế bộ đếm lùi các số lẻ từ 99 → 1 theo mã nhị phân, kết quả hiển thị LED đơn Câu 11: Thiết kế bộ đếm tiến, thập phân cho phép chọn đếm chẵn hoặc đếm lẻ, kếtquả hiển thị LED 7 thanh Câu 12: Thiết kế mạch quét LED 7 thanh để hiển thị số 1234 trên kit Câu 13: Thiết kế mạch kiểm tra chuỗi dữ liệu vào nối tiếp. Đầu ra bằng 1 khi có 3 bit 1 vào liên tiếp. Đầu ra bằng 0 trong các trường hợp còn lại. Câu 14: Thiết kế mạch điều khiển 16 LED đơn sáng lan từ giữa sang 2 bên Câu 15: Thiết kế mạch điều khiển 16 LED đơn sáng lan từ 2 bên về giữa theo phương pháp máy trạng thái Câu 16: Thiết kế bộ đếm theo mã Gray 4 bit, kết quả hiển thị LED đơn Câu 17: Thiết kế mạch điều khiển đèn giao thông. Yêu cầu đèn đỏ sáng 10s, đèn xanh sáng 7s, đèn vàng sáng 3s, số giây được đếm ngược về 0 và hiển thị trên LED 7 thanh. Câu 18: Thiết kế thanh ghi dịch vào nối tiếp, ra song song 8 bít bằng phương pháp sử dụng proccess. Câu 19. Thiết kế mạch cộng 2 số nhị phân 2 bít, kết quả hiển thị LED 7 thanh Câu 20: Thiết kế mạch trừ 2 số nhị phân 3 bít, kết quả hiển thị LED 7 thanh Câu 21: Thiết kế và mô phỏng mạch cộng đầy đủ 3 bit sử dụng component là bộ cộng đầy đủ 1 bit. Kết quả hiển thị dạng nhị phân trên LED đơn. Câu 22: Cho hai số đầu vào A, B (3 bit). Thiết kế mạch điện thực hiện một trong các chức năng: A+B; A+1; B+1 tùy theo giá trị của đầu vào lựa chọn chức năng . Kết quả hiển thị trên LED đơn và LED 7 thanh. Câu 23: Thiết kế và mô phỏng mạch cộng đầy đủ 3 bit sử dụng nhiều Process (mỗi proces là bộ cộng đầy đủ 1 bit). Kết quả hiển thị dạng nhị phân trên LED đơn và trên LED 7 thanh. Câu 24: Hãy thiết kế bộ đếm tiến BCD và quả hiển thị dạng nhị phân trên LED đơn và dạng thập phân trên LED 7 thanh. Mạch thiết kế theo máy trạng thái và được thực thi trên KIT BASYS 3 Câu 26: Thiết kế bộ đếm tiến các số chẵn từ 0 --> 20 theo mã nhị phân bằng phương pháp máy trạng thái. Kết quả đếm hiển thị trên LED đơn Câu 27: Thiết kế DFF. Sử dụng DFF như component để thiết kế thanh ghi dịch vào nối tiếp, ra song song Câu 28: Thiết kế JKFF. Sử dụng JKFF như component để thiết kế bộ đếm tiến nhị phân 4 bít Câu 29: Thiết kế mạch điều khiển máy pha café tự động: chờ khởi động( 1đèn xanh sáng) → trộn café và sữa trong 2s ( 2 đèn xanh sáng) → hòa tan café+ sữa+ nước trong 5s (3 đèn xanh sáng) → kết thúc (đèn đỏ sáng 1s) Câu 30: Thiết kế mạch điều khiển máy giặt quần áo tự động : chờ khởi động → bơm nước trong 5 phút (1 đèn xanh sáng) → giặt trong 7 phút (2 đèn xanh sáng) → tháo nước trong 2 phút ( 1đèn vàng sáng) → bơm nước trong 5 phút (1 đèn xanh sáng) → xả trong 10 phút (3 đèn xanh sáng) → tháo nước trong 2 phút (1 vàng sáng) → vắt trong 5 phút (2 đèn vàng sáng) → kết thúc (1 đèn đỏ sáng trong 1 phút)

Trang 1

Sơ đồ chân kit basys 3

Câu 1 Thiết kế bộ đếm tiến thập phân, kết quả hiển thị LED 7 thanh bằng phương pháp máy trạng thái

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; entity main is

Port ( clock : in STD_LOGIC; rst : in STD_LOGIC;

q : out STD_LOGIC_VECTOR (7 downto 0)); end main;

Trang 2

architecture Behavioral of main is

type state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9); signal s: state;

signal clk: std_logic; begin

chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:=not b; else

dem2:= dem2+1; end if;

end if; clk <= b; end process;

-dem - process(clk,rst)

begin

if rst='1' then

Trang 3

s<= s0;

elsif clk'event and clk='1' then case s is

when s0 => s <= s1; when s1 => s <= s2; when s2 => s <= s3; when s3 => s <= s4; when s4 => s <= s5; when s5 => s <= s6; when s6 => s <= s7; when s7 => s <= s8; when s8 => s <= s9; when others => s <= s0; end case;

end if; end process;

-giai ma - process(s)

begin case s is

when s0 => q <= x"c0"; when s1 => q <= x"f9"; when s2 => q <= x"a4"; when s3 => q <= x"b0"; when s4 => q <= x"99"; when s5 => q <= x"92";

Trang 4

when s6 => q <= x"82"; when s7 => q <= x"f8"; when s8 => q <= x"80"; when others => q <= x"90"; end case;

end process; end Behavioral;

Câu 2 Thiết kế bộ đếm lùi thập phân, kết quả hiển thị LED 7 thanh bằng cách sử dụng nhiều process

begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000;

Trang 5

variable b: std_logic; begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:=not b; else

dem2:=dem2+1; end if;

end if; clk<=b; end process;

-dem - process(clk,rst)

variable d_tam: integer range 0 to 9; begin

if rst='1' then d_tam:=0;

elsif clk'event and clk='1' then if d_tam=0 then

d_tam:=9; else

d_tam:=d_tam-1; end if;

end if;

Trang 6

d <= d_tam; end process;

-mahoa - process(d)

begin case d is

when 0 => q <= x"c0"; when 1 => q <= x"f9"; when 2 => q <= x"a4"; when 3 => q <= x"b0"; when 4 => q <= x"99"; when 5 => q <= x"92"; when 6 => q <= x"82"; when 7 => q <= x"f8"; when 8 => q <= x"80"; when others => q <= x"90"; end case;

end process; end Behavioral;

Câu 3 Thiết kế bộ đếm cho phép chọn đếm tiến hoặc đếm lùi theo mã thập phân, hiển thị trên LED 7 thanh

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity main is

Trang 7

Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; A : in STD_LOGIC;

q : out STD_LOGIC_VECTOR (7 downto 0)); end main;

architecture Behavioral of main is signal d:integer range 0 to 9; begin

-dem - dem: process(clk,rst,A)

variable d_tam: integer range 0 to 9; begin

if rst='1' then d_tam:=0;

elsif clk'event and clk='1' then if A='1' then -dem tien if d_tam=9 then d_tam:=0; else d_tam:=d_tam+1; end if;

else -dem lui - if d_tam=0 then d_tam:=9; else d_tam:=d_tam - 1; end if;

end if; end if;

d <= d_tam;

Trang 8

end process;

-ma hoa - mahoa:process(d)

begin case d is

when 0 => q <= x"c0"; when 1 => q <= x"f9"; when 2 => q <= x"a4"; when 3 => q <= x"b0"; when 4 => q <= x"99"; when 5 => q <= x"92"; when 6 => q <= x"82"; when 7 => q <= x"f8"; when 8 => q <= x"80"; when others => q <= x"90"; end case;

end process; end Behavioral;

Câu 4 Thiết kế bộ đếm tiến nhị phân Kđ = 255, kết quả hiển thị led đơn

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_unsigned.ALL; entity main is

Port ( clk : in STD_LOGIC;

Trang 9

variable dem2:integer range 0 to 50000000; variable b:std_logic;

begin

if rst='1' then dem2:=0;

elsif clk'event and clk='1' then if dem2=25000000 then dem2:=0;

b:= not b; else

dem2:=dem2+1; end if;

end if; clock <= b;

end process;

-dem - process(clock,rst)

Trang 10

variable d_tam :integer range 0 to 254:=0; begin

if rst='1' then d_tam:=0; else

if clock'event and clock='1' then if d_tam=254 then

d_tam:=0; else

d_tam:=d_tam+1; end if;

end if; end if;

leddon <= conv_std_logic_vector(d_tam,8); end process;

end Behavioral;

Câu 5: Thiết kế bộ đếm lùi nhị phân Kđ = 255, kết quả hiển thị LED đơn

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_unsigned.ALL; entity main is

Port ( clock : in STD_LOGIC; rst : in STD_LOGIC;

Trang 11

q : out STD_LOGIC_VECTOR (7 downto 0)); end main;

architecture Behavioral of main is signal clk: std_logic;

begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:= dem2+1; end if;

end if; clk <= b; end process;

-dem - process(clk,rst)

variable dem: integer range 0 to 154:=0;

Trang 12

begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if dem=0 then

dem:=254; else

dem:=dem-1; end if;

end if;

q <= conv_std_logic_vector(dem,8); end process;

Port ( clock : in STD_LOGIC; rst : in STD_LOGIC; A : in STD_LOGIC;

q : out STD_LOGIC_VECTOR (6 downto 0)); end main;

Trang 13

architecture Behavioral of main is signal clk: std_logic;

begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:=not b; else

dem2:=dem2+1; end if;

end if; clk<=b; end process;

-dem - process(clk,rst,A)

variable dem:integer range 0 to 128:=0; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then

Trang 14

if A='1' then if dem=128 then dem:=0; else

dem:=dem+1; end if;

else

if dem=0 then dem:=128; else

dem:=dem-1; end if;

end if; end if;

q <= conv_std_logic_vector(dem,7); end process;

end Behavioral;

Câu 7: Thiết kế mạch đếm theo mã vòng 16 bit , kết quả hiển thị LED đơn

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_unsigned.ALL;

entity main is

Port ( clock : in STD_LOGIC;

Trang 15

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-dem - process(clk,rst)

Trang 16

variable dem:integer range 0 to 15; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if dem=15 then

dem:=0; else

dem:=dem+1; end if;

end if; d<= dem; end process;

-ma hoa - process(d)

begin case d is

when 0 => q <= "0000000000000001"; when 1 => q <= "0000000000000010"; when 2 => q <= "0000000000000010"; when 3 => q <= "0000000000000100"; when 4 => q <= "0000000000001000"; when 5 => q <= "0000000000010000"; when 6 => q <= "0000000000100000"; when 7 => q <= "0000000001000000"; when 8 => q <= "0000000010000000"; when 9 => q <= "0000000100000000";

Trang 17

when 10 => q <= "0000010000000000"; when 11 => q <= "0000100000000000"; when 12 => q <= "0001000000000000"; when 13 => q <= "0010000000000000"; when 14 => q <= "0100000000000000";

when others => q <= "1000000000000000"; end case;

end process; end Behavioral;

Câu 8: Thiết kế mạch đếm theo mã Johnson 8 bit , kết quả hiển thị LED đơn

Trang 18

variable dem2: integer range 0 to 500000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-dem - process(clk,rst)

variable dem: integer range 0 to 15; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if dem=15 then

dem:=0; else

dem:=dem+1; end if;

Trang 19

end if; d<= dem; end process;

-ma hoa - process(d)

begin case d is

when 0 => q <= "00000000"; when 1 => q <= "00000001"; when 2 => q <= "00000011"; when 3 => q <= "00000111"; when 4 => q <= "00001111"; when 5 => q <= "00011111"; when 6 => q <= "00111111"; when 7 => q <= "01111111"; when 8 => q <= "11111111"; when 9 => q <= "11111110"; when 10 => q <= "11111100"; when 11 => q <= "11111000"; when 12 => q <= "11110000"; when 13 => q <= "11100000"; when 14 => q <= "11000000"; when others => q <= "10000000"; end case;

end process; end Behavioral;

Trang 20

Câu 9: Thiết kế bộ đếm tiến các số chẵn từ 0 → 100 theo mã nhị phân, kết quả hiển thị LED đơn

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_unsigned.ALL; entity main is

Port ( clock : in STD_LOGIC; rst : in STD_LOGIC;

q : out STD_LOGIC_VECTOR (6 downto 0)); end main;

architecture Behavioral of main is signal clk:std_logic;

begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock ='1' then if dem2=25000000 then

dem2:=0; b:=not b; else

Trang 21

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-dem - process(clk,rst)

variable dem:integer range 0 to 100; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if dem=100 then

dem:=0; else

dem:= dem+2; end if;

end if;

q <= conv_std_logic_vector(dem,7); end process;

Trang 22

use IEEE.STD_LOGIC_arith.ALL; use IEEE.STD_LOGIC_unsigned.ALL;

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:= dem2+1; end if;

end if;

Trang 23

clk <= b; end process;

-dem - process(clk,rst)

variable dem: integer range 1 to 99; begin

if rst='1' then dem:=99;

elsif clk'event and clk='1' then if dem=0 then

dem:=99; else

dem:= dem-2; end if;

end if;

q <= conv_std_logic_vector(dem,7); end process;

entity main is

Trang 24

Port ( clock : in STD_LOGIC; rst : in STD_LOGIC; A : in STD_LOGIC;

q : out STD_LOGIC_VECTOR (7 downto 0)); end main;

architecture Behavioral of main is signal clk: std_logic;

signal d: integer range 0 to 9; begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:=not b; else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

Trang 25

-dem - process(clk,rst,A)

variable dem: integer range 0 to 9; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if A='1' then

if dem rem 2=0 then if dem=8 then dem:=0; else

dem:=dem+2; end if;

else

dem:=dem+1; end if;

else

if dem rem 2 /=0 then if dem=9 then dem:=1; else

dem:=dem+2; end if;

else

dem:=dem+1; end if;

Trang 26

end if; end if; d <= dem; end process;

-ma hoa - process(d)

begin case d is

when 0 => q <= x"c0"; when 1 => q <= x"f9"; when 2 => q <= x"a4"; when 3 => q <= x"b0"; when 4 => q <= x"99"; when 5 => q <= x"92"; when 6 => q <= x"82"; when 7 => q <= x"f8"; when 8 => q <= x"80"; when others => q <= x"90"; end case;

end process; end Behavioral;

Câu 12: Thiết kế mạch quét LED 7 thanh để hiển thị số 1234 trên kit

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

Trang 27

architecture machine_state of main is type state is (s0,s1,s2,s3);

signal s: state; signal clk: std_logic; begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:=dem2+1; end if;

end if;

Trang 28

clk <= b; end process;

-hien thi - process(clk,s)

begin

if clk'event and clk='1' then case s is

when s0 => s <= s1; led7 <= x"a4"; q <= "1011"; when s1 => s <= s2; led7 <= x"b0"; q <= "1101"; when s2 => s <= s3; led7 <= x"99"; q <= "1110"; when s3 => s <= s0; led7 <= x"f9"; q <= "0111"; end case;

end if; end process;

end machine_state;

Trang 29

Câu 13: Thiết kế mạch kiểm tra chuỗi dữ liệu vào nối tiếp Đầu ra bằng 1 khi có 3 bit 1 vào liên tiếp Đầu ra bằng 0 trong các trường hợp còn lại

architecture Behavioral of main is type state is (zero,one,two,three); signal pr_state, nx_state: state; signal clk: std_logic;

begin

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000;

Trang 30

variable b: std_logic; begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-lower section - process(clk,rst)

begin

if rst='1' then pr_state <= zero; else

pr_state <= nx_state; end if;

end process;

-upper section - process(d,pr_state)

begin

case pr_state is

Trang 31

when zero => q <= '0'; if d='1' then nx_state <= one; else

nx_state <= zero; end if;

when one => q <= '0'; if d='1' then nx_state <= two; else

nx_state <= zero; end if;

when two => q <= '0'; if d='1' then nx_state <= three; else

nx_state <= zero; end if;

when three => q <= '1'; if d='1' then

nx_state <= three; else

nx_state <= zero; end if;

end case; end process; end Behavioral;

Trang 32

Câu 14: Thiết kế mạch điều khiển 16 LED đơn sáng lan từ giữa sang 2 bên

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b;

Trang 33

else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-dem xung clock - process(clk,rst)

variable dem:integer range 0 to 8; begin

if rst='1' then dem:=0;

elsif clk'event and clk='1' then if dem=8 then

dem:=0; else

dem:= dem+1; end if;

end if; d <= dem; end process;

-sang lan - process(d)

begin case d is

when 0 => q <= "0000000000000000"; when 1 => q <= "0000000110000000";

Trang 34

when 2 => q <= "0000001111000000"; when 3 => q <= "0000011111100000"; when 4 => q <= "0000111111110000"; when 5 => q <= "0001111111111000"; when 6 => q <= "0011111111111100"; when 7 => q <= "0111111111111110"; when 8 => q <= "1111111111111111"; end case;

end process; end Behavioral;

Câu 15: Thiết kế mạch điều khiển 16 LED đơn sáng lan từ 2 bên về giữa theo phương pháp máy trạng thái

signal clk: std_logic; begin

Trang 35

-chia tan - process(clock,rst)

variable dem2: integer range 0 to 50000000; variable b: std_logic;

begin

if rst='1' then dem2:=0;

elsif clock'event and clock='1' then if dem2=25000000 then

dem2:=0; b:= not b; else

dem2:=dem2+1; end if;

end if; clk <= b; end process;

-doi trang thai - process(clk,rst)

begin

if rst='1' then s <= s0;

elsif clk'event and clk='1' then case s is

when s0 => s <= s1; when s1 => s <= s2; when s2 => s <= s3;

Ngày đăng: 27/07/2024, 16:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w