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

PLD

25 2K 66
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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 698 KB

Nội dung

Chương 4 CÁC FLIP FLOP, THANH GHI, BỘ ĐẾM TRONG VHDL GIỚI THIỆU THIẾT KẾ CÁC LOẠI FLIP FLOP THIẾT KẾ FLIP FLOP JK THIẾT KẾ FLIP FLOP D CÓ ENABLE THIẾT KẾ THANH GHI DỊCH THIẾT KẾ THANH G

Trang 1

Chương 4

CÁC FLIP FLOP, THANH GHI, BỘ ĐẾM

TRONG VHDL

GIỚI THIỆU

THIẾT KẾ CÁC LOẠI FLIP FLOP

THIẾT KẾ FLIP FLOP JK

THIẾT KẾ FLIP FLOP D CÓ ENABLE

THIẾT KẾ THANH GHI DỊCH

THIẾT KẾ THANH GHI DỊCH 4 BIT

THIẾT KẾ THANH GHI DỊCH 8 BIT

THIẾT KẾ MẠCH ĐẾM JOHNSON 8 BIT

THIẾT KẾ MẠCH ĐẾM VÒNG 8 BIT

THIẾT KẾ MẠCH ĐIỀU KHIỂN 8 LED SÁNG DẦN – TẮT DẦN

THIẾT KẾ MẠCH ĐẾM

THIẾT KẾ MẠCH ĐẾM NHỊ PHÂN 4 BIT – ĐẾM LÊN

THIẾT KẾ MẠCH BCD – ĐẾM LÊN

THIẾT KẾ MẠCH ĐẾM BCD VÀ GIẢI MÃ HIỂN THỊ LED 7 ĐOẠN

THIẾT KẾ MẠCH ĐẾM BCD TỪ 00 ĐẾN 59 – HIỂN THỊ TRÊN 2 LED 7 ĐOẠN

THIẾT KẾ MẠCH ĐẾM BCD TỪ 000 ĐẾN 999 – HIỂN THỊ TRÊN 3 LED 7 ĐOẠN

CÂU HỎI ÔN TẬP VÀ BÀI TẬP

Trang 2

Hình 4-1 Sơ đồ khối FLIP FLIP JK.

Hình 4-2 Sơ đồ khối FLIP FLIP D có enable

Hình 4-3 Sơ đồ khối thanh ghi 4 bit

Hình 4-4 Sơ đồ khối thanh ghi 4 bit, nạp song song

Hình 4-5 Sơ đồ khối thanh ghi 8 bit

Hình 4-6 Sơ đồ khối mạch đếm vòng Johnson 8 bit

Hình 4-7 Sơ đồ khối mạch đếm vòng 8 bit

Hình 4-8 Sơ đồ khối mạch điều khiển 8 led sáng tắt dần

Hình 4-9 Sơ đồ khối mạch đếm nhị phân 4 bit

Hình 4-10 Sơ đồ khối mạch đếm BCD

Hình 4-11 Sơ đồ khối mạch đếm BCD có giải mã 7 đoạn anode chung

Hình 4-12 Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị

Hình 4-13 Sơ đồ khối mạch đếm từ 000 đến 999

Bảng 4-1 BTT FLIP FLIP JK

Bảng 4-2 BTT FLIP FLIP D có enable

Bảng 4-3 BTT mạch thanh ghi dịch 4 bit

Bảng 4-4 BTT mạch thanh ghi dịch 4 bit, nạp song song

Bảng 4-5 BTT thanh ghi dịch 8 bit

Bảng 4-6 BTT mạch đếm JOHNSON 8 bit

Bảng 4-7 BTT mạch mạch đếm vòng 8bit

Bảng 4-8 BTT mạch điều khiển 8 led sáng tắt dần

Bảng 4-9 BTT mạch đếm nhị phân 4 bit

Bảng 4-10 BTT mạch đếm BCD

Bảng 4-11 BTT mạch đếm BCD có giải mã 7 đoạn

Trang 3

I CÂU HỎI ÔN TẬP VÀ BÀI TẬP

Bài tập 4-1: Thiết kế flip flop RS.

Bài tập 4-2: Thiết kế mạch chốt D.

Bài tập 4-3: Thiết kế flip flop D.

Bài tập 4-4: Thiết kế flip flop T.

Bài tập 4-5: Thiết kế 4 flip flop D gồm 4 ngõ vào D, 4 ngõ ra Q và 4 ngõ ra QD, dùng chung 1

CLK

Bài tập 4-6: Thiết kế 8 flip flop T gồm 8 ngõ vào T, 8 ngõ ra Q và 8 ngõ ra QD, dùng chung

CLK

Bài tập 4-7: Thiết kế thanh ghi dịch giống như IC 74164.

Bài tập 4-8: Thiết kế thanh ghi dịch giống như IC 74194.

Bài tập 4-9: Thiết kế mạch điều khiển đèn giao thông với xanh_1, vàng_1, Đỏ_1, xanh_2,

vàng_2, đỏ_2 Cho xanh sáng 15 giây, vàng sáng 5 giây và đỏ sáng 20 giây

Bài tập 4-10: Thiết kế mạch điều khiển đèn 8 led đơn với yêu cầu như sau: điểm sáng chạy từ

phải sang trái và từ trái sang phải theo xung clock và có 1 chân cho phép E tích cực mức 0

Bài tập 4-11: Thiết kế mạch có chức năng giống như IC 4017.

Bài tập 4-12: Thiết kế mạch có chức năng giống như IC 4017 nhưng gồm có 20 ngõ ra.

Bài tập 4-13: Thiết kế mạch có chức năng giống như IC 4017 nhưng gồm 2 con: một con đếm

hàng đơn vị và một con đếm hàng chục

Bài tập 4-14: Thiết kế mạch đếm nhị phân 4 bit – đếm xuống.

Bài tập 4-15: Thiết kế mạch đếm nhị phân 4 bit – đếm lên, đếm xuống được điều khiển bằng

tín hiệu UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR

Bài tập 4-16: Thiết kế mạch đếm nhị phân 4 bit – đếm lên, đếm xuống được điều khiển bằng

tín hiệu UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR Có thêm chức năng đặt trước số đếm như IC 74193

Bài tập 4-17: Thiết kế mạch đếm nhị phân 4 bit – đếm lên, đếm xuống được điều khiển bằng

tín hiệu UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR, có giải mã hiển thị ra 1 led 7 đoạn từ 0 đến F tương ứng với số thập lục phân

Bài tập 4-18: Thiết kế mạch đếm BCD – đếm lên, đếm xuống được điều khiển bằng tín hiệu

UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR, có giải mã hiển thị ra 1 led 7 đoạn

Bài tập 4-19: Thiết kế mạch đếm BCD từ 00 đến 99 – đếm lên, đếm xuống được điều khiển

bằng tín hiệu UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR, có giải mã hiển thị ra 2 led 7 đoạn – không dùng quét

Trang 4

Bài tập 4-20: Thiết kế mạch đếm BCD từ 000 đến 999 – đếm lên, đếm xuống được điều khiển

bằng tín hiệu UD (UD = 0 thì đếm lên, UD = 1 thì đếm xuống), có một tín hiệu CLK, một tín hiệu CLR, có giải mã hiển thị ra 3 led 7 đoạn – dùng quét

Bài tập 4-21: Thiết kế mạch gồm có 3 led 7 đoạn, bàn phím gồm 10 phím số từ “0” đến “9”

Ban đầu thì 3 led hiển thị số “000”, khi nhấn phím nào thì phím đó được dịch vào từ bên phải (giống như máy tính calculator)

Bài tập 4-22: Thiết kế mạch định thời: gồm có 2 led 7 đoạn để hiển thị số giây từ 00 đến 99,

bàn phím gồm 10 phím số từ “0” đến “0” và phím chức năng như “clear”, “enter”, “test”, một ngõ

ra điều khiển relay Ban đầu thì 2 led hiển thị số “00”, khi nhấn phím nào thì phím đó được dịch vào từ bên phải Sau khi nhấn xong thì nhấn “enter” quá trình đếm xuống sẽ bắt đầu cho đến khi giá trị đếm bằng 00 thì relay sẽ tác động Hệ thống ngừng

Bài tập 4-23: Dùng PLD kết nối với IC đếm BCD 74LS90, hãy viết chương trình điều khiển IC

74LS90 đếm với trình tự như sau:

Đếm từ 0 đến 9, sau đó đếm từ 0 đến 8, tương tự đếm từ 0 đến 7 rồi lặp lại

Bài tập 4-24: Mô tả mạch đếm nhị phân 4 bit có thể đếm với 4 cấp tần số f , 2f , 4f , 8f , các cấp tần số có thể chọn bằng 2 switch S0 và S1, cho tần số cung cấp cho mạch là f

Bài tập 4-25: Mô tả mạch có thể tạo ra dạng sóng với yêu cầu như sau:

Mạch tạo ra 5 xung có tần số 1Hz rồi ngừng 5 xung có tần số 1 hz, cho xung vào có tần số 10hz Có 1 ngõ vào reset

Bài tập 4-26: Mô tả mạch có 3 nút nhấn A, B và C: khi nhấn nút A thì mạch tạo ra 5 xung rồi

ngừng, khi nhấn nút B thì mạch tạo ra 10 xung rồi ngừng, khi nhấn nút C thì mạch tạo ra 15 xung rồi ngừng Cho xung clock ngõ vào có tần số bằng 1Hz

Bài tập 4-27: Thiết kế mạch so sánh 2 số nhị phân 3 bit A và B và 1 mạch đếm nhị 4 bit: nếu

số nhị phân A lớn hơn B thì mạch đếm lên, nếu A bằng B thì mạch đếm xuống, nếu A nhỏ hơn B thì mạch đếm

Bài tập 4-28: Thiết kế 1 mạch đếm nhị phân 4 bit và 1 mạch đếm Johnson 4 bit có cùng clr và

enable nhưng xung clock khác nhau

Bài tập 4-29: Thiết kế 1 mạch đếm nhị phân 4 bit có clr, clk có thể lựa chọn đếm nhị phân

chẵn hoặc lẻ

Bài tập 4-30: Thiết kế 1 mạch đếm nhị phân 5 bit có clr, clk, enable, với trình tự đếm: đếm lên

từ cực tiểu lên cực đại theo số theo số thập phân chẵn rồi quay lại theo số thập phân lẻ, cứ thế lặp lại

Trang 5

Bài tập 4-31: Thiết kế 1 mạch có 8 ngõ ra và các ngõ vào gồm: 1 clk, 1 clr, 1 ngõ vào S: S=0

thì mạch đếm Johnson, S=1 thì mạch đếm vòng, 1 ngõ vào pause bình thường ở mức 1: khi nút pause thì mạch đang đếm sẽ ngừng đếm và sau 5 xung thì mạch sẽ đếm tiếp

BÀI LÀM:

Sơ đồ khối

PAUSE =1 NHAN THI PAUSE = 0 BUONG TAY VE 1

Trang 6

ELSE QT:="00000001";

END IF;

ELSIF CLK='1' AND CLK'EVENT THEN

IF ((PAUSE = '1') AND (DEM = 0)) THEN

IF SW = '0' THEN QT:=QT(6 DOWNTO 0) & NOT QT(7

Bài 4-8: Thiết kế mạch điều khiển 8 led: chương trình 1: sáng tắt dần từ trái sang phải, chương

trình 2: sáng tắt dần từ phải sang trái, chương trình 3: 1 led dịch chuyển từ phải sang trái, chương trình 4: 1 led dịch chuyển từ trái sang phải Tất cả đều thực hiện theo xung clock.

Bước 1: Vẽ sơ đồ khối của mạch:

Hình 4-8 Sơ đồ khối mạch điều khiển 8 led sáng tắt dần

Bước 2: Lập bảng trạng thái:

NGÕ VÀO NGÕ RA

Trang 8

0 0 0 0 0 0 0 0 48

Bảng 4-8 BTT mạch điều khiển 8 led sáng tắt dần

Các trạng thái sáng dần tắt dần từ phải sang trái cần 16 xung clock và trạng thái ngược lại cũng cần 16 xung clock

entity STD_8LED is

Port ( CLK,CLR : in STD_LOGIC;

Q : out STD_LOGIC_VECTOR (7 downto 0));

end STD_8LED;

architecture Behavioral of STD_8LED is

SIGNAL QT: STD_LOGIC_VECTOR (7 downto 0);

ELSIF CLK='1' AND CLK'EVENT THEN

IF DEM <16 THEN QT <= QT(6 DOWNTO 0) & NOT QT(7);

ELSIF DEM <32 THEN QT <= NOT QT(0) & QT(7 DOWNTO 1);

ELSIF DEM =32 THEN QT <= "00000001";

ELSIF DEM <40 THEN QT <= QT(6 DOWNTO 0) & QT(7);

ELSIF DEM <48 THEN QT <= QT(0) & QT(7 DOWNTO 1);

Trang 9

Bài 4-12: Thiết kế mạch đếm BCD từ 00 đến 59 hiển thị trên 2 led 7 đoạn kết nối theo phương

pháp quét Sử dụng nguồn xung clock có tần số 2MHz trên bộ thí nghiệm dùng để quét và làm xung tăng giá trị đếm

THỜI GIAN TĂNG LÀ 1S, THỜI GIAN SÁNG HIỂN THỊ CHO MỖI LED LÀ 1MS

Bước 1: Vẽ sơ đồ khối của mạch:

Hình 4-12 Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị

Bước 2: Viết chương trình:

entity DEM0059 is

Port ( CLR, CLK : in std_logic ;

anod : out std_logic_vector (3 downto 0);

ma7d : out std_logic_vector ( 7 downto 0));

end DEM0059;

architecture Behavioral of DEM0059 is

signal FTANG: std_logic_vector (19 downto 0);

signal FHTHI: std_logic_vector (9 downto 0);

signal mabl: std_logic_vector (7 downto 0);

signal mabh: std_logic_vector (7 downto 0);

function giai_ma ( x1: in std_logic_vector (3 downto 0)) return std_logic_vector is variable z1: std_logic_vector (7 downto 0);

begin

case x1 is when "0000" => z1 := "11000000"; so 0

when "0001" => z1 := "11111001"; so 1

Trang 10

variable BCD1,BCD2: std_logic_vector (3 downto 0);

VARIABLE AN: std_logic;

Trang 11

END IF;

END IF;

mabh <= giai_ma(bcd2);

mabl <= giai_ma(bcd1);

IF FHTHI = X"7D0" THEN FHTHI <= (others => ‘0’);

AN:= NOT AN;

Thời gian tăng giá trị là 524288 * 0,5425 µs = 284426,24 µs=0,3s

Bài 4-12: Thiết kế mạch đếm BCD từ 0000 đến 9999 hiển thị trên 4 led 7 đoạn kết nối theo

phương pháp quét Sử dụng nguồn xung clock có tần số 2MHz trên bộ thí nghiệm dùng để quét và làm xung tăng giá trị đếm

Trang 12

THỜI GIAN TĂNG LÀ 1S, THỜI GIAN SÁNG HIỂN THỊ CHO MỖI LED LÀ 1MS

Bước 1: Vẽ sơ đồ khối của mạch:

Hình 4-12 Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị

Bước 2: Viết chương trình:

entity DEM0059 is

Port ( CLR, CLK : in std_logic ;

anod : out std_logic_vector (3 downto 0);

ma7d : out std_logic_vector ( 7 downto 0));

end DEM0059;

architecture Behavioral of DEM0059 is

signal FTANG: std_logic_vector (19 downto 0);

signal FHTHI: std_logic_vector (9 downto 0);

signal mab1, mab2, mab3, mab4: std_logic_vector (7 downto 0);

function giai_ma ( x1: in std_logic_vector (3 downto 0)) return std_logic_vector is variable z1: std_logic_vector (7 downto 0);

begin

case x1 is when "0000" => z1 := "11000000"; so 0

when "0001" => z1 := "11111001"; so 1

when "0010" => z1 := "10100100"; so 2

when "0011" => z1 := "10110000"; so 3

Trang 13

variable BCD1,BCD2, BCD3,BCD4: std_logic_vector (3 downto 0);

VARIABLE AN: std_logic_vector (1 downto 0);

IF BCD1 = "1010" THEN BCD1:="0000"; BCD2:= BCD2+1; END IF;

IF BCD2 = "1010" THEN BCD2:="0000"; BCD3:= BCD3+1; END IF;

IF BCD3 = "1010" THEN BCD3:="0000"; BCD4:= BCD4+1; END IF;

IF BCD4 = "1010" THEN BCD4:="0000"; END IF;

END IF;

Trang 14

when "00" => ma7d <= mab1; anod <="0001";

when "01" => ma7d <= mab2; anod <="0010";

when "10" => ma7d <= mab3; anod <="0100";

when "11" => ma7d <= mab4; anod <="1000";

when others => null;

end case;

END PROCESS;

end Behavioral;

Bài 4-12: Thiết kế mạch đếm sản phẩm hiển thị trên 4 led quét Sử dụng nguồn xung clock có

tần số 2MHz dùng để quét và xung ngoài làm tăng giá trị đếm

THỜI GIAN SÁNG HIỂN THỊ CHO MỖI LED LÀ 1MS

Bước 1: Vẽ sơ đồ khối của mạch:

Hình 4-12 Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị

entity DEM0059 is

Trang 15

Port ( CLR, CLK,CLKXN : in std_logic ;

anod : out std_logic_vector (3 downto 0);

ma7d : out std_logic_vector ( 7 downto 0));

end DEM0059;

architecture Behavioral of DEM0059 is

signal FHTHI: std_logic_vector (9 downto 0);

signal mab1, mab2, mab3, mab4: std_logic_vector (7 downto 0);

function giai_ma ( x1: in std_logic_vector (3 downto 0)) return std_logic_vector is variable z1: std_logic_vector (7 downto 0);

variable BCD1,BCD2, BCD3,BCD4: std_logic_vector (3 downto 0);

VARIABLE AN: std_logic_vector (1 downto 0):= “00”;

IF BCD1 = "1010" THEN BCD1:="0000"; BCD2:= BCD2+1; END IF;

IF BCD2 = "1010" THEN BCD2:="0000"; BCD3:= BCD3+1; END IF;

IF BCD3 = "1010" THEN BCD3:="0000"; BCD4:= BCD4+1; END IF;

IF BCD4 = "1010" THEN BCD4:="0000"; END IF;

Mab1 <= giai_ma(bcd1);

Mab2 <= giai_ma(bcd2);

Mab3 <= giai_ma(bcd3);

Mab4 <= giai_ma(bcd4);

Trang 16

IF FHTHI = X"7D0" THEN FHTHI <= (others => ‘0’);

AN:= AN + 1;

END IF;

case AN is

when "00" => ma7d <= mab1; anod <="0001";

when "01" => ma7d <= mab2; anod <="0010";

when "10" => ma7d <= mab3; anod <="0100";

when "11" => ma7d <= mab4; anod <="1000";

when others => null;

end case;

END PROCESS;

end Behavioral;

Bài 4-12: Thiết kế mạch đếm sản phẩm 2 kênh hiển thị trên 4 led quét, mỗi kênh 2 led Sử

dụng nguồn xung clock có tần số 2MHz dùng để quét và xung ngoài clkxn1 làm tăng giá trị đếm kênh 1, clkxn2 làm tăng giá trị đếm kênh 2

THỜI GIAN SÁNG HIỂN THỊ CHO MỖI LED LÀ 1MS

Bước 1: Vẽ sơ đồ khối của mạch:

Hình 4-12 Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị

entity DEM0059 is

Port ( CLR, CLK,CLKXN1, CLKXN2 : in std_logic ;

anod : out std_logic_vector (3 downto 0);

ma7d : out std_logic_vector ( 7 downto 0));

end DEM0059;

Trang 17

architecture Behavioral of DEM0059 is

signal FHTHI: std_logic_vector (9 downto 0);

signal mab1, mab2, mab3, mab4: std_logic_vector (7 downto 0);

function giai_ma ( x1: in std_logic_vector (3 downto 0)) return std_logic_vector is variable z1: std_logic_vector (7 downto 0);

variable BCD11,BCD12, BCD21,BCD22: std_logic_vector (3 downto 0);

VARIABLE AN: std_logic_vector (1 downto 0):= “00”;

IF BCD11 = "1010" THEN BCD11:="0000"; BCD12:= BCD12+1; END IF;

IF BCD12 = "1010" THEN BCD12:="0000"; END IF;

IF CLR = '0' THEN BCD21:="0000"; BCD22:="0000";

ELSIF RISING_EDGE (CLKXN2) THEN BCD21:= BCD21+1;

END IF;

IF BCD21 = "1010" THEN BCD21:="0000"; BCD22:= BCD22+1; END IF;

IF BCD22 = "1010" THEN BCD22:="0000"; END IF;

Trang 18

END IF;

case AN is

when "00" => ma7d <= mab1; anod <="0001";

when "01" => ma7d <= mab2; anod <="0010";

when "10" => ma7d <= mab3; anod <="0100";

when "11" => ma7d <= mab4; anod <="1000";

when others => null;

Trang 19

entity DEM_PHUT_GIAY is

Port ( CLR,CK : in STD_LOGIC;

QSEG : out STD_LOGIC_VECTOR (7 downto 0);

ANODE : out STD_LOGIC_VECTOR (3 downto 0));

end DEM_PHUT_GIAY;

architecture Behavioral of DEM_PHUT_GIAY is

FUNCTION GIAI_MA(BCDT: STD_LOGIC_VECTOR (3 DOWNTO 0)) RETURN STD_LOGIC_VECTOR IS

VARIABLE MA7D: STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

IF CLR = '0' THEN CHIA := 0; CHIAHT := (OTHERS=>'0');

MANODE:="00";

Ngày đăng: 30/09/2013, 08:10

Xem thêm

HÌNH ẢNH LIÊN QUAN

Hình 4-8. Sơ đồ khối mạch điều khiển 8 led sáng tắt dần. Bước 2: Lập bảng trạng thái: - PLD
Hình 4 8. Sơ đồ khối mạch điều khiển 8 led sáng tắt dần. Bước 2: Lập bảng trạng thái: (Trang 6)
Hình 4-12. Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị. - PLD
Hình 4 12. Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị (Trang 14)
Hình 4-12. Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị. - PLD
Hình 4 12. Sơ đồ khối mạch đếm từ 00 đến 59 có hiển thị (Trang 16)

TỪ KHÓA LIÊN QUAN

w