Tải bản đầy đủ

THIẾT kế IP CORE bộ điều KHIỂN CHUỘT máy TÍNH THÔNG QUA CHUẨN PS2

Đồ án thiết kế logic số

ĐỀ TÀI: THIẾT KẾ IP CORE BỘ ĐIỀU KHIỂN
CHUỘT MÁY TÍNH THÔNG QUA CHUẨN PS2


Đồ án thiết kế logic số

MỤC LỤC
CHƯƠNG I. TỔNG QUAN VỀ FPGA.....................................................................................................................2
1.1.GIỚI THIỆU FPGA................................................................................................................................................2
1.2.KIT SPARTAN 3AN.............................................................................................................................................3
1.3.GIỚI THIỆU VỀ VHDL........................................................................................................................................4
CHƯƠNG II: THIẾT KẾ IP CORE BỘ ĐIỀU KHIỂN CHUỘT MÁY TÍNH THÔNG QUA CHUẨN..........6
2.1.GIỚI THIỆU VỀ CHUẨN GIAO TIẾP PS2......................................................................................................6
2.2.GIỚI THIỆU CẤU TRÚC CHUỘT CHUẨN PS2............................................................................................7
2.3.THIẾT KẾ IP CORE BỘ ĐIỀU KHIỂN CHUỘT MÁY TÍNH THÔNG QUA CHUẨN PS2..........................................8
2.3.1. GIẢN ĐỒ XUNG CỦA CỔNG PS2........................................................................................................8
2.3.2. Ý TƯỞNG THIẾT KẾ...........................................................................................................................8
2.3.3. SƠ ĐỒ KHỐI TRUYỀN VÀ NHẬN DỮ LIỆU...............................................................................9
2.3.4.SƠ ĐỒ THUẬT TOÁN KHỐI TRUYỀN DỮ LIỆU.......................................................................11

2.3.5.SƠ ĐỒ THUẬT TOÁN KHỐI NHẬN DỮ LIỆU............................................................................12
2.3.6. MÔ HÌNH THỬ NGHIỆM THIẾT KẾ IP CORE BỘ ĐIỀU KHIỂN CHUỘT PS2...............14
TÀI LIỆU THAM KHẢO:..............................................................................................................................................16
PHỤ LỤC............................................................................................................................................................... 17


Đồ án thiết kế logic số

CHƯƠNG I. TỔNG QUAN VỀ FPGA

1.1. Giới thiệu FPGA
FPGA (Field Programable Gate Arrays) là một thiết bị bán dẫn bao gồm các khối
logic lập trình được gọi là "Logic Block", và các kết nối khả trình. Các khối logic có thể
được lập trình để thực hiện các chức năng của các khối logic cơ bản như AND, XOR,
hoặc các chức năng kết hợp phức tạp hơn như decoder hoặc các phép tính toán học.
Trong hầu hết các kiến trúc FPGA, các khối logic cũng bao gồm cả các phần tử nhớ. Đó
có thể là các Flip-Flop hoặc những bộ nhớ hoàn chỉnh hơn.
Các kết nối khả trình cho phép các khối logic có thể nối với nhau theo thiếtkế của
người xây dựng hệ thống, giống như một bảng mạch khả trình. Một kiến trúc khác tương
tự nhưng đơn giản hơn FPGA, là CPLD ( Complex Programable Logic Device ). Thực
chất đây là tiền thân của FPGA. Năm 1984, Ross Freeman, một đồng sáng lập của Xilinx
đã phát minh ra FPGA. FPGA và CPLC đều bao gồm một số lượng khá lớn các phần tử
logic khả trình. Mật độ cổng logic (Logic Gate) của CPLD nằm trong khoản từ vài nghìn
cho đến 10 nghìn cổng. Trong khi đó FPGA thông thường chứa từ 10 nghìn cho đến vài
triệu cổng.


Đồ án thiết kế logic số
Hình 1.1. Kiến trúc của FPGA

FPGA được ứng dụng điển hình trong các lĩnh vực yêu cầu tốc độ đáp ứng cao
như: xử lý tín hiệu số,xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô
phỏng(emulation)...FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc
của nó yêu cầu một lượng rất lớn xử lý song song, đặc biết là mã hóa và giải mã. FPGA
cũng được sử dụng trong những ứng dụng cần thực thi các thuật toán như FFT, nhân chập
(convolution), thay thế cho vi xử lý, hay có mặt trong rất nhiều các hệ thống nhúng, các
hệ thống viễn thông.

Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các hãng
như :Xilinx, Altera, Actel, Atmel... Trong đó Xilinx và Altera là hai hãng hàng đầu.

1.2. Kit Spartan 3AN

Hình 1.2. KIT Spartan 3AN


Đồ án thiết kế logic số

- Kít SPARTAN 3AN sử dụng chíp FPGA XC3S700AN tích hợp 700k cổng logic.
-Một số hỗ trợ trên kit như:
+ Các cổng I/O
+ Màn hình LCD
+ Cổng giao tiếp RS232,PS2,VGA
+ Tích hợp sẵn biến đổi ADC/DA trên kit
+ 2flash nối tiếp 16Mb
+ DDR2 SD RAM
+ Clock 50MHZ

1.3. Giới thiệu về VHDL
VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi
và lập tài liệu cho các hệ thống số. VHDL là một ngôn ngữ độc lập không gắn với bất kỳ
một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế có
thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ
duy nhất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác ta thấy VHDL
có một số ưu điểm hơn hẳn là:
-

Thứ nhất là tính công cộng:

VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu
chuẩn của IEEE. VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều
nhà cung cấp công cụ thiết kế mô phỏng hệ thống.

-

Thứ hai là khả năng được hỗ trợ bởi nhiều công nghệ và nhiều phương pháp thiết
kế:
VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ
trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều
loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử
dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên.


Đồ án thiết kế logic số

-

Thứ ba là tính độc lập với công nghệ:
VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng. Một mô tả hệ thống
dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác
nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho
các hệ thống đã thiết kế.

-

Thứ tư là khả năng mô tả mở rộng:
VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức
cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử
dụng một cú pháp chặt chẽ thống nhất cho mọi mức. Như thế ta có thể mô phỏng một bản
thiết kế bao gồm cả các hệ con được mô tả chi tiết.

-

Thứ năm là khả năng trao đổi kết quả:
Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy
trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL. Các kết quả mô tả hệ thống có thể
được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân
theo tiêu chuẩn VHDL. Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của
các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập).

-

Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế:
VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được
sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên
trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết
kế. Và nó cũng cho phép dùng lại các phần đã có sẵn.


Đồ án thiết kế logic số

CHƯƠNG II: THIẾT KẾ IP CORE BỘ ĐIỀU KHIỂN
CHUỘT MÁY TÍNH THÔNG QUA CHUẨN

2.1.

Giới thiệu về chuẩn giao tiếp PS2

Chuẩn PS2 là một giao diện phần cứng dùng để kết nối bàn phím sử dụng cổng PS2
khác vào máy tính. Giao diện PS2 là một loại đầu nối 6-pin MINI DIN (DIN - Deutsches
Institut fur Normung - là một chuẩn giao diện được phát triển Viện khoa học về Định
chuẩn của Đức).
Cổng ps2 có 1 kết nối nguồn làm việc tốt ở 5V, hoặc 3,3V ở các thiết bị cũ. Một
chân kết nối với đất. Hai đường dùng cho kết nối, 1 dây cho phép truyền dữ liệu theo
chuỗi nối tiếp, dây con lại chứa thông tin clock được xác định khi dữ liệu hợp lệ và được
nhận. Thông tin được truyền đi theo gói 11 bít, bao gồm 1 bit start , 8 bit dữ liệu, 1 bít
dùng cho phép kiểm tra chẵn lẻ, 1 bit stop.
Các thông tin liên lạc của các cổng PS2 là hai chiều và máy chủ có thể gửi một lệnh
bàn phím hoặc chuột để thiết lập các thông số nhất định.
Kết nối của cổng ps2 là kết nối song công. Host có thể gửi lệnh xuống chuột hoặc bàn
phím cài đặt các tham số.
Giao diện vật lý cho cổng PS2

Hình 2.1. Giao diện vật lý cổng PS2


Đồ án thiết kế logic số

Cổng giao tiếp PS2 có tất cả 6 chân đánh số từ 1 đến 6. Chân số 3 và 4 tương ứng là
GND và nguồn. Nguồn sử dụng là 5V nhưng thực tế với thiết kế trên FPGA có thể sử
dụng mức điện áp 3.3V. Nguồn +5V được tạo bởi PC và mass GND cũng kết nối
với mass của PC. Cả bàn phím và máy tính đều có điện trở kéo lên cho Clock và Data
lên nguồn 5V. Chân 5 là chân tín hiệu đồng bộ CLK. Còn chân 1 là chân dữ
liệu DATA (PS2D) cho phép truyền dữ liệu theo chuỗi nối tiếp.Chân 2,6 là hai chân dự
trữ.

2.2. Giới thiệu cấu trúc chuột chuẩn PS2

Hình 2.2. Định dạng gói dữ liệu chuột PS2.

X8……,X0 : Các điểm trong trục tọa độ X.
Xv : Điểm tràn trục tọa độ X.
Y8…….,Y0 : Các điểm trong trục tọa độ Y.
Yv : Điểm tràn trục tạo độ Y.
L : Trạng thái phím bấm trái. Trạng thái ‘1’ khi chuột trái được bấm
R : Trạng thái phím bấm phải. Trạng thái ‘1’ khi chuột phải được bấm.


Đồ án thiết kế logic số
M : Trạng thái phím lăn , lật trang. Trạng thái ‘1’ khi phím bấm phải được bấm.

2.3. Thiết kế IP core bộ điều khiển chuột máy tính thông qua chuẩn
PS2
2.3.1.

Giản đồ xung của cổng PS2.

Hình 2.3. Giản đồ xung cổng PS2

2.3.2. Ý tưởng thiết kế.
Sơ đồ khối của hệ thống bao gồm :


Đồ án thiết kế logic số

Hình 2.4.Sơ đồ khối hệ thống.

 Khối MOUSE_LED: có chức năng hiện thị trạng thái các phím bấm và vị trí của
chuột lên 8 LED đơn.
 Khối PS2_MOUSE: khối xác định các phím bấm và vị trí chuột.
 Khối PS2_RXTX: Khối có chức năng liên kết 2 khối truyền dữ liệu (ps2_tx) và
khối nhận dữ liệu (ps2_rx).
 Khối PS2_TX: Khối truyền đữ liệu.
 Khối PS2_RX: Khối nhận dữ liệu .

2.3.3. Sơ đồ khối truyền và nhận dữ liệu.


Đồ án thiết kế logic số

Hình 2.5. Sơ đồ khối truyền và nhận dữ liệu

 Ps2c: tín hiệu clock ps2.
 Ps2d: tín hiệu data ps2.
 Wr_ps2: tín hiệu máy chủ gửi tới bắt đầu quá trình truyền dữ liệu.
 din: đường dữ liệu vào.
 dout: đường dữ liệu ra
 clk: tín hiệu clock
 rx_en: tín hiệu cho phép nhận lấy từ tx_idle ( khi khối truyền chuyển sang
trạng thấy dỗi).


Đồ án thiết kế logic số
 tx_done_tick: quá trình truyền dữ liệu hoàn thành.
 rx_done_tick: quá trình nhận dữ liệu hoàn thành.

2.3.4. Sơ đồ thuật toán khối truyền dữ liệu


Đồ án thiết kế logic số

Hình 2.6. Khối truyền dữ liệu

2.3.5. Sơ đồ thuật toán khối nhận dữ liệu.
 Khối nhận PS2_rx được xây dựng dưới dạng máy trạng thái hữu hạn (Finite
State Machine), ở đây ta chỉ sử dụng 3 trạng thái là IDLE,DPS,LOAD.Sơ đồ
chuyển trạng thái như sau:


Đồ án thiết kế logic số

Hình 2.7. Khối nhận dữ liệu

 Ban đầu ở trạng thái IDLE là trạng thái dỗi ,khi xuất hiện sườn âm đầu tiên của tín
hiệu clock (fall_edge =1) và chân cho phép nhận rx_en ở mức tích cực (rx_en
=1),bít START sẽ được đọc vào.

 Tín hiệu START được đọc và chuyển sang trạng thái DPS ,nhận dữ liệu,chờ đến
khi xuất hiện sườn âm tiếp theo của tín hiệu ps2c (fall_edge =1) thì bít tiếp theo


Đồ án thiết kế logic số
được đọc vào thanh ghi b,ban đầu n=9 ,cứ tiếp tục chờ đến sườn âm tiếp theo của
tín hiệu ps2c thì các bit thông tin được đẩy dần vào thanh ghi này cho tới đầy.
 Khi n=0 tức là đã nhận đủ 10 bít (8 bit data,1 bit parity,1 bít stop), máy trạng thái
chuyển về trạng thái IDLE và chờ để nhận dữ liệu tiếp theo.
 Kết thúc chuỗi bít tín hiệu rx_done_tick được đặt lên mức tích cực (rx_done_tick
=1).

2.3.6. Mô hình thử nghiệm thiết kế IP core bộ điều khiển chuột PS2.
 Mô hình trên KIT: Đề tài thực hiện thiết kế mạch điều khiển giao tiếp với chuột
qua cổng PS2 cấu hình cho FPGA và thử nghiệm trên KIT FPGA spartan3AN

Hình 2.7. Sơ đồ mô phỏng hệ thống

 Sơ đồ kết nối chân PS 2 trên kit


Đồ án thiết kế logic số

Hình 2.8. Sơ đồ kết nối chân PS2

 Yêu cầu về mặt thời gian cho các tín hiệu này thể hiện ở bảng sau:


Đồ án thiết kế logic số
Kết luận
Ngày này việc ứng dụng VHDL trong việc thiết kế mạch và chip ngày càng nhiều.
Công nghệ này đang là xu hướng của thời đại, đơn giản vì nó không chỉ tiêu tốn ít về tiền
bạc mà nó còn giúp cho chúng ta đơn giản trong việc thiết kế phần cứng.
Trên đây, chúng ta đã trình bày một cách khái quát về phương pháp thiết kế các
mạch. Những mạch cơ bản nhất đã được chúng ta thiết kế một cách chi tiêt, hoàn thiện
trên Xilinx ISE. Đây là cơ sở cho những thiết kế lơn hơn về phần cứng, để thiết kế các
ứng dụng cho các FPGA. Chúng em xin cám ơn sự giúp đỡ cúa thầy, cô trong khoa trong
quá trình làm đồ án.

Tài liệu tham khảo:
1. “FPGA Prototyping by VHDL Examples Xilinx Spartan-3 Version.Feb.2008”. Pong
P.Chu. Cleveland State University.
2. Circuit design with VHDL , Voilnei A.Pedroni
3. Slide bài giảng “Thiết kế logic số”. Đỗ Mạnh Hà,Đặng Hoài Bắc. Học viện Công
Nghệ Bưu Chính Viễn Thông
4. Spartan-3A/3AN FPGA Starter Kit Board User Guidem, Xilinx.
5. “Giáo trình Điện tử số”. Đỗ Mạnh Hà, Trần Thị Thúy Hà. Học viện Công Nghệ Bưu
Chính Viễn Thông.
- Các website tham khảo:
http://dientuvietnam.net
http://www.xilinx.com
http://academic.csuohio.edu/chu_p/index.html
http://embdev.net/forum/fpga-vhdl-verilog


Đồ án thiết kế logic số

PHỤ LỤC
1. Code mouse_led.
----------------------------------------------------------------------------------- Company:
-- Engineer:
--- Create Date:

21:40:59 04/21/2013

-- Design Name:
-- Module Name: mouse_led - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--- Dependencies:
--- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
----------------------------------------------------------------------------------library IEEE;


Đồ án thiết kế logic số
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity mouse_led is
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
ps2c : inout STD_LOGIC;
ps2d : inout STD_LOGIC;
led : out STD_LOGIC_vector(7 downto 0));
end mouse_led;

architecture Behavioral of mouse_led is
signal p_reg, p_next: unsigned(9 downto 0);
signal xm: std_logic_vector(8 downto 0);
signal btnm: std_logic_vector(2 downto 0);
signal m_done_tick: std_logic;


Đồ án thiết kế logic số

begin
-- instantiation
mouse_unit: entity work.mouse(Behavioral)
port map(clk=>clk, reset=>reset,
ps2d=>ps2d, ps2c=>ps2c,
xm=>xm, ym=>open, btnm=>btnm,
m_done_tick=>m_done_tick);
-- register
process (clk, reset)
begin
if reset='1' then
p_reg <= (others=>'0');
elsif (clk'event and clk='1') then
p_reg <= p_next;
end if;
end process;
-- counter
p_next <= p_reg when m_done_tick='0' else
"0000000000" when btnm(0)='1' else --left button
"1111111111" when btnm(1)='1' else --right button
p_reg + unsigned(xm(8) & xm);

with p_reg(9 downto 7) select


Đồ án thiết kế logic số
led <= "10000000" when "000",
"01000000" when "001",
"00100000" when "010",
"00010000" when "011",
"00001000" when "100",
"00000100" when "101",
"00000010" when "110",
"00000001" when others;

end Behavioral;

2. Code PS2_mouse

----------------------------------------------------------------------------------- Company:
-- Engineer:
--- Create Date:

13:14:46 04/14/2013

-- Design Name:
-- Module Name: mouse - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:


Đồ án thiết kế logic số
--- Dependencies:
--- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
----------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_std.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
----------------------------------------------------------------------------------entity mouse is
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
ps2d : inout STD_LOGIC;


Đồ án thiết kế logic số
ps2c : inout STD_LOGIC;
xm : out STD_LOGIC_vector(8 downto 0);
ym : out STD_LOGIC_vector(8 downto 0);
btnm : out STD_LOGIC_vector(2 downto 0);
m_done_tick : out STD_LOGIC);
end mouse;

architecture Behavioral of mouse is
CONSTANT STRM: std_logic_vector(7 downto 0):="11110100";
--stream command f4
type state_type is (init1, init2, init3,
pack1, pack2, pack3, done);
signal state_reg, state_next: state_type;
signal rx_data: std_logic_vector(7 downto 0);
signal rx_done_tick, tx_done_tick: std_logic;
signal wr_ps2: std_logic;
signal x_reg, y_reg: std_logic_vector(8 downto 0);
signal x_next, y_next: std_logic_vector(8 downto 0);
signal btn_reg, btn_next: std_logic_vector(2 downto 0);

begin
-- instantiantion
ps2_rxtx_unit: entity work.ps2_rxtx(Behavioral)
port map(clk=>clk, reset=>reset, wr_ps2=>wr_ps2,
din=>STRM, dout=>rx_data,


Đồ án thiết kế logic số
ps2d=>ps2d, ps2c=>ps2c,
rx_done_tick=>rx_done_tick,
tx_done_tick=>tx_done_tick);
--state and data registers
process(clk, reset)
begin
if reset='1' then
state_reg <= init1;
x_reg <= (others=>'0');
y_reg <= (others=>'0');
btn_reg <= (others=>'0');
elsif (clk'event and clk='1') then
state_reg <= state_next;
x_reg <= x_next;
y_reg <= y_next;
btn_reg <= btn_next;
end if;
end process;
-- next- state logic
process(state_reg, rx_done_tick, tx_done_tick,
x_reg, y_reg, btn_reg, rx_data)
begin
wr_ps2 <= '0';
m_done_tick <= '0';
x_next <= x_reg;


Đồ án thiết kế logic số
y_next <= y_reg;
btn_next <= btn_reg;
state_next <= state_reg;
case state_reg is
when init1=>
wr_ps2 <= '1';
state_next <= init2;
when init2=>
if tx_done_tick='1' then
state_next <= init3;
end if;
when init3=>
if rx_done_tick='1' then
state_next <= pack1;
end if;
when pack1=>
if rx_done_tick='1' then
state_next <= pack2;
y_next(8) <= rx_data(5);
x_next(8) <= rx_data(4);
btn_next <= rx_data( 2 downto 0);
end if;
when pack2=>
if rx_done_tick='1' then
state_next <= pack3;


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×