Chương 8: Mỏy trạng thỏ
END IF; WHEN YY =>
WHEN YY => r1<='0';r2<='0';y1<='1'; y2<='1'; g1<='0'; g2<='0'; nx_state <= RY; END CASE; END PROCESS; END state_machine_be; ---
Như ta thấy, số lượng Flip-flop đó dựng để thực hiện mạch là 15 cỏi: 3 cỏi cho lưu trữ trạng thỏi hiện tại, 12 cỏi cũn lại cho bộ đếm.
Để cú thể dễ dàng thấy kết quả mụ phỏng, ở đõy ta thực hiện giảm thời gian thực tế đi 100 lần.
Kết quả mụ phỏng được chỉ ra trong hỡnh dưới đõy: + Ở chế độ hoạt động bỡnh thường (stby = 0, test = 0):
Hỡnh 8.11.a. Kết quả mụ phỏng TLC ở chế độ hd bỡnh thường
+ Ở chế độ kiểm tra:
Hỡnh 8.11.b. Kết quả mụ phỏng TLC ở chế độ kiểm tra
Vớ dụ 8.6: Bộ phỏt tớn hiệu:
Chỳng ta muốn thiết kế một mạch mà từ tớn hiệu clock clk đưa ra tớn hiệu như trong hỡnh dưới đõy:
Hỡnh 8.12.Dạng tớn hiệu cần tạo.
Mó chương trỡnh:
---
ENTITY Bo_phat_tin_hieu IS PORT ( clk: IN BIT;
outp: OUT BIT); END Bo_phat_tin_hieu;
---
ARCHITECTURE state_machine OF Bo_phat_tin_hieu IS TYPE state IS (one, two, three);
SIGNAL pr_state1, nx_state1: state; SIGNAL pr_state2, nx_state2: state; SIGNAL out1, out2: BIT;
BEGIN
--- Phan mach day cua may 1: --- PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN pr_state1 <= nx_state1;
END IF;END PROCESS; END PROCESS;
--- Phan mach day cua may 2: --- PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='0') THEN pr_state2 <= nx_state2; END IF;
END PROCESS;
---- Phan mach to hop cua may 1: --- PROCESS (pr_state1) BEGIN CASE pr_state1 IS WHEN one => out1 <= '0'; nx_state1 <= two; WHEN two => out1 <= '1'; nx_state1 <= three; WHEN three => out1 <= '1'; nx_state1 <= one; END CASE; END PROCESS;
---- Phan macôpt hop cua may 2: --- PROCESS (pr_state2) BEGIN CASE pr_state2 IS WHEN one => out2 <= '1'; nx_state2 <= two; WHEN two => out2 <= '0'; nx_state2 <= three; WHEN three => out2 <= '1'; nx_state2 <= one;
END CASE;END PROCESS; END PROCESS;
outp <= out1 AND out2; END state_machine;
---
Kết quả mụ phỏng:
Hỡnh 8.13.Kết quả mụ phỏng cho vớ dụ 8.6