Bộ phát tín hiệu 14 1-

Một phần của tài liệu Ngôn ngữ mô tả phần cứng với VHDL (Trang 142 - 144)

Từ một tín hiệu clock, chúng ta mong muốn thu được một tín hiệu có dang sóng như trong hình 9.20. Với bài toán loại này, chúng ta có thể sử dụng phương pháp FSM hoặc phương pháp truyền thống. Cả 2 phương pháp đều

được chúng ta trình bày dưới đây:

Phương pháp FSM:

Hình 9.20 Hình dng sóng cn phát

Tín hiệu của hình 9.20 có thể được mô hình như một FSM 8 trạng thái. Sử dụng bộ đếm từ 0 đến 7. Chúng ta có thể thiết lập một sóng bằng ‘0’ khi biến đếm = ‘0’ (ở xung thứ nhất) và bằng 1 khi biến đếm = ‘1’ (xung thứ

hai),…vv…như trong hình 9.20. Để thực thi được bộ tạo sóng này thì yêu cầu 4 flip-flop: trong đó có 3 cái để lưu trữ số đếm (3 bit), một cái để lưu trữ sóng (1 bit ). Để thiết kế bộ tạo sóng này, chúng ta thiết kế theo kiểu 2, cụ thể sẽ như

sau: --- LIBRARY ieee; USE ieee.std_logic_1164.all; --- ENTITY Bo_phat_tin_hieu IS PORT (clk: IN STD_LOGIC; wave: OUT STD_LOGIC); END Bo_phat_tin_hieu;

--- ARCHITECTURE arc OF Bo_phat_tin_hieu IS

TYPE states IS (zero, one, two, three, four, five, six, seven);

SIGNAL present_state, next_state: STATES; SIGNAL temp: STD_LOGIC;

BEGIN

--- Phan mach day: --- PROCESS (clk)

BEGIN

IF (clk'EVENT AND clk='1') THEN present_state <= next_state; wave <= temp;

END PROCESS;

--- Phan mach to hop: --- PROCESS (present_state) BEGIN

CASE present_state IS

WHEN zero => temp<='0'; next_state <= one; WHEN one => temp<='1'; next_state <= two; WHEN two => temp<='0'; next_state <= three; WHEN three => temp<='1'; next_state <= four; WHEN four => temp<='1'; next_state <= five; WHEN five => temp<='1'; next_state <= six; WHEN six => temp<='0'; next_state <= seven; WHEN seven => temp<='0'; next_state <= zero; END CASE; END PROCESS; END arc; --- Kết quả mô phỏng: Hình 9.2.1. Kết qu mô phng to sóng Phương pháp truyền thống:

Chúng ta thiết kế bộ phát tín hiệu theo phương pháp truyền thống với câu lệnh IF như sau: --- LIBRARY ieee; USE ieee.std_logic_1164.all; --- ENTITY Bo_phat_tin_hieu2 IS PORT (clk: IN BIT; wave: OUT BIT); END Bo_phat_tin_hieu2;

--- ARCHITECTURE arc OF Bo_phat_tin_hieu2 IS BEGIN

PROCESS

VARIABLE count: INTEGER RANGE 0 TO 7; BEGIN

WAIT UNTIL (clk'EVENT AND clk='1'); CASE count IS

WHEN 0 => wave <= '0'; WHEN 1 => wave <= '1'; WHEN 2 => wave <= '0'; WHEN 3 => wave <= '1';

WHEN 4 => wave <= '1'; WHEN 5 => wave <= '1'; WHEN 6 => wave <= '0'; WHEN 7 => wave <= '0'; END CASE; if count = 7 then count := 0; else count := count + 1; end if ; END PROCESS; END arc; --- Kết quả mô phỏng:

Hình 9.22. Kết qu mô phng to sóng theo phương pháp truyn thng

Một phần của tài liệu Ngôn ngữ mô tả phần cứng với VHDL (Trang 142 - 144)

Tải bản đầy đủ (PDF)

(150 trang)