1. Trang chủ >
  2. Kỹ thuật >
  3. Điện - Điện tử - Viễn thông >

Các bước thiết kế bộ đếm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.22 MB, 36 trang )


2. Thiết kế khối logic cho bộ đếm mod 10 hiển thi 1 LED 7 thanh

a. Đồ hình trạng thái



Hình . Đồ hình trạng thái



b. Xác định số FF



- Vì số đếm hệ thập phân có Kđ = 10 nên ta phải sử dụng ít nhất 4FF vì

4FF mã hóa được 16 trạng thái.

- Sáu trạng thái thừa sẽ dùng cổng NAND để khóa và không đếm hết số

trạng thái.

- Chọn 4 JKFF

c. Lập bảng bảng mã hóa và bảng kích.

S D C B A D’ C’ B’ A’ JD KD JC KC JB KB JA KA

0 0 0 0 0 0



0



0



1



0 X 0 X 0 X 1 X



1 0 0 0 1 0



0



1



0



0 X 0 X 1 X X 1



2 0 0 1 0 0



0



1



1



0 X 0 X X 0 1 X



3 0 0 1 1 0



1



0



0



0 X 1 X X 1 X 1



4 0 1 0 0 0



1



0



1



0 X X 0 0 X 1 X



5 0 1 0 1 0



1



1



0



0 X X 0 1 X X 1



6 0 1 1 0 0



1



1



1



0 X X 0 X 0 1 X



7 0 1 1 1 1



0



0



0



1 X X 1 X 1 X 1



8 1 0 0 0 1



0



0



1



X 0



0 X 0 X 1 X



9 1 0 0 1 0



0



0



0



X 1



0 X 0 X X 1



Bảng



+ Tối thiểu các hàm kích - sử dụng bìa Cacno.

-Từ bảng kích nhận thấy:



JA = KA = 1(Vì tất cả các giá trị đều =1&X).

Trang | 20



Trang | 21



Ở bộ đếm không đồng bộ, sự thay đổi của FF này lại dẫn đến sự thay đổi

trạng thái của FF khác...,nên thường chỉ lấy xung đếm (Xđ) đưa vào Ck đầu tiên

FF-A còn các FF sau được điều khiển bởi các FF trước.

Từ các hàm J, K ở trên ta có phương trình Ck cho từng FF như sau:

CKA = Xđ

CKB = A

CKC = B

CKD = A



Trang | 22



d. Sơ đồ mạch thực hiện đếm và dạng sóng trên các đầu ra của FF.



- Sơ đồ nguyên lý bộ đếm 4bit:



Hình . Sơ đồ nguyên lý bộ ddeemss 4 bit



- Sơ đồ thực hiện đếm mod 10:



Hình . Sơ đồ thực hiện đếm mod 10



- Đồ hình dạng xung đếm :



Hình . Đồ hình dạng xung đếm



Trang | 23



III. CHƯƠNG TRÌNH LẬP TRÌNH VHDL

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.NUMERIC_STD.all;

entity thanhchu is

port(

stp : in STD_LOGIC;

stt : in STD_LOGIC;

rst : in STD_LOGIC;

sel : in STD_LOGIC;

clk : in STD_LOGIC;

seg1 : out STD_LOGIC_VECTOR(7

downto 0);

seg2 : out STD_LOGIC_VECTOR(7

downto 0)

);

end thanhchu;

architecture thanhchu of thanhchu is

begin

process(rst,clk,sel,stt,stp)

variable temp1:integer range 0 to 10;

variable temp2:integer range 0 to 10;

begin

if (rst='1') then

temp1:=0;

temp2:=0;

elsif (rising_edge(clk)) then

if (stt='1') then

if (stp='0') then

if (sel='1') then

if (temp1=0) then temp1:= 1

else temp1:=temp1+2;

end if;

if (temp1=1) then

if (temp2=9) then temp2:=0;

else temp2:=temp2+1;

end if;

end if;

end if;

end if;

if (sel='0') then

if (temp1=10) then temp1:=0;

if (temp2=9) then temp2:=0;

else temp2:=temp2+1;

end if;



-- Khai báo thư viện—



--Khai báo thực thể---Khai báo chân đầu vào—

--Chân stop kiểu logic 0/1—

--Chân start kiểu logic 0/1—

--Chân reset kiểu logic 0/1—

--Chân selec kiểu logic 0/1—

--Chân clock kiểu logic 0/1—

--biến hàng đơn vị---biến hàng chục—



--khai báo kiến trúc thực thể thanhchu—

-- Bắt đầu chương trình—

--Thông báo quá trình chạy với các chân đã

khai báo—

--khai báo biến temp1 số nguyên từ 0-10---khai báo biến temp2 số nguyên từ 0-10---Nếu biến rst=1 thì—

--Còn không clk ở mức cao thì—

--Nếu stt=1 thì—

--Xét nếu stp=0 thì—

--Xét nếu sel=1 thì –

--Xét nếu temp1=0 thì gán temp1=1—

--Còn không thì tem1 tăng thêm 2 đơn vị--- Xét nếu temp1=1 thì—

--Xét nếu temp2=9 thì gán temp2=0 –

-- Còn không thì temp2 tăng lên 1 đơn vị--



-- Xét nếu sel=0 thì

--Xét nếu temp1=10 thì gán team1=0—

--Xét nếu temp2=9 thì gán temp2=0—

--Còn không thì temp2 tăng lên 1 đơn vị---Còn không thì temp1 tăng lên 2 đơn vị-Trang | 24



else temp1:=temp1+2;

end if;

end if;

else temp1:=temp1;

temp2:=temp2;

end if;

end if;

case temp1 is

when 0 => seg1<= x"C0";

when 1 => seg1<= x"F9";

when 2 => seg1<= x"A4";

when 3 => seg1<= x"B0";

when 4 => seg1<= x"99";

when 5 => seg1<= x"92";

when 6 => seg1<= x"82";

when 7 => seg1<= x"F8";

when 8 => seg1<= x"80";

when 9 => seg1<= x"90";

when others =>NULL;

end case;

case temp2 is

when 0 => seg2<= x"C0";

when 1 => seg2<= x"F9";

when 2 => seg2<= x"A4";

when 3 => seg2<= x"B0";

when 4 => seg2<= x"99";

when 5 => seg2<= x"92";

when 6 => seg2<= x"82";

when 7 => seg2<= x"F8";

when 8 => seg2<= x"80";

when 9 => seg2<= x"90";

when others =>NULL;

end case;

end process;

end thanhchu;



--Khi stp #0 thì gán temp1=temp1vaf

temp2=temp2—

--biến hàng đơn vị và hàng chục để hiện thị ra

LED---khai báo giá trị thập lục phân cho các trường

hợp xảy ra ở



--Nếu trường hợp khác thì không làm gì –

--Kết thúc các trường hợp xảy ra—

--Kết thúc quá trình thực hiện—

--Kết thúc thực thể thanhchu--



IV. THIẾT KẾ MẠCH.



1. Các file thiết kế.

Nhấn New, chọn tab Device Design Files, chọn Verilog HDL (hay

VHDL hay AHDL). Với cách này, mạch điện được mô tả bởi các đoạn mã thể

hiện các đầu vào đầu ra của các khối mạch cũng như cách xử sự của chúng.

Trong luận án này, lấy ví dụ về thiết kế mạch đếm 4 bit dùng Verilog HDL file.

Tạo file mới.

Từ giao diện của Altera Quartus chọn File/New Project Wizard. Hiện:

Trang | 25



Hình vẽ. Giao diện Dự án mới

Nhấn Next/Next để hiện ra bảng Thiết lập linh kiện (Family & Device

Settings), chọn linh kiện FPGA mà ta dùng, rồi nhấn Finish.

Lúc này, ta sẽ có được Project đầu tiên.



Thêm file Thiết kế vào Project

Nhấn File/New .



Trang | 26



Xem Thêm
Tải bản đầy đủ (.docx) (36 trang)

×