Bộ đếm là một mạch dãy tuần hoàn có 1 đầu vào đếm và 1 đầu ra kết quả; số trạng thái trong của mạch bằng hệ số đếm (Kđ). Dưới tác động của tín hiệu vào, bộ đếm sẽ chuyển từ trạng thái này đến trạng thái khác theo một chu trình nhất định. Cứ sau Kđ tín hiệu vào đếm, mạch sẽ quay lại trạng thái ban đầu.
Thiết kế mô ĐẾM THEO PHƯƠNG PHÁP MÔ TẢ HÀNH VI Khái niệm đếm ■Bộ đếm mạch dãy tuần hồn có đầu vào đếm đầu kết quả; số trạng thái mạch hệ số đếm (Kđ) Dưới tác động tín hiệu vào, đếm chuyển từ trạng thái đến trạng thái khác theo chu trình định Cứ sau Kđ tín hiệu vào đếm, mạch quay lại trạng thái ban đầu Phân loại đếm ■Phân loại theo cách làm việc: Bộ đếm đồng bộ, đếm dị (không đồng bộ) ■Phân loại theo hướng đếm: đếm tiến, đếm lùi Đồ hình trạng thái đếm Mã đếm ■ Các trạng thái đếm mã hóa mã cụ thể Cùng đếm có nhiều cách mã hóa ■ Một số mã thường dùng: – Mã nhị phân – Mã Gray – Mã BCD – Mã Johnson – Mã vòng Các bước thiết kế ■ Bước 1: xác định yêu cầu: Kđ? Cách thức đếm (tiến hay lùi)? Mã đếm? ■ Bước 2: Lập mã VHDL: gồm process ■ Process 1: – thực chức đếm dựa Kđ giới hạn biến đếm – Cách thức đếm: xác định biểu thức đếm chương trình: đếm tiến trạng thái sau = trạng thái trước +1; đếm lùi trạng thái sau = trạng thái trước -1 ■ Process 2: thực chức mã hóa dựa yêu cầu mã đếm Ví dụ thiết kế đếm tiến, nhị phân Kđ =4 ■Phân tích yêu cầu: ■Code entity: ■Kđ = ; Mã nhị phân có trạng ■ thái có bít đầu Entity dem4 is ■ port ( ckl : in std_logic; ■ reset: in std_logic; ■ ■ Qout: out std_logic_vector(1 downto 0) ); Ví dụ thiết kế đếm tiến, nhị phân Kđ =4 ■Phân tích yêu cầu: ■Kđ = giá trị lớn biến đếm = ■Đếm tiến trạng thái sau = trạng thái trước +1; ■Code process 1: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Signal d: integer range to 3; Dem: process( clk, reset) variable d_tam : integer range to 3; begin if reset = ‘1’ then d_tam := 0; else if clk’event and clk =‘1’ then if d_tam = then d_tam := 0; else d_tam := d_tam +1; end if; end if; end if; d Qout Qout Qout Qout