1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

40 232 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 0,92 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.Tron

Trang 1

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

Trang 2

MỤC LỤC

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

1.1.GIỚI THIỆU FPGA 2

1.2.K IT S PARTAN 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.T HIẾ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 G IẢ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

Trang 3

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ốilogic 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ủangườ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ựcchấ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ìncho đến 10 nghìn cổng Trong khi đó FPGA thông thường chứa từ 10 nghìn cho đến vàitriệu cổng

Trang 4

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 caonhư: 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úccủ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ã FPGAcũ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ãngnhư :Xilinx, Altera, Actel, Atmel Trong đó Xilinx và Altera là hai hãng hàng đầu

Hình 1.2 KIT Spartan 3AN

Trang 5

- 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

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êuchuẩ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ềunhà 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ềuloạ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

Trang 6

- 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ốngdù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ácnhau 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 chocá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ứccổ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ảnthiế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ạytrê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ântheo 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ủacá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êntrong 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

Trang 7

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 PS2khác vào máy tính Giao diện PS2 là một loại đầu nối 6-pin MINI DIN (DIN - DeutschesInstitut fur Normung - là một chuẩn giao diện được phát triển Viện khoa học về Địnhchuẩ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ộtchâ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 theochuỗ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à đượcnhậ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ítdù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ệnhbà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ànphí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

Trang 8

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ốivớ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à Datalê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

Trang 9

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.

Trang 10

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ủachuộ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

Trang 11

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)

Trang 12

 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

Trang 13

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:

Trang 14

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ínhiệ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

Trang 15

đượ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áichuyể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ộtqua 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

Trang 16

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:

Trang 17

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ềnbạ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ácmạ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ệntrê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 trongquá trình làm đồ án

Tài liệu tham khảo:

1 “FPGA Prototyping by VHDL Examples Xilinx Spartan-3 Version.Feb.2008” PongP.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ôngNghệ 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ưuChí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

Trang 18

PHỤ LỤC

1 Code mouse_led.

Company:

Trang 19

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;

Trang 20

instantiation

mouse_unit: entity work.mouse(Behavioral)

port map(clk=>clk, reset=>reset,

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

Trang 22

-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

Port ( clk : in STD_LOGIC;

reset : in STD_LOGIC;

ps2d : inout STD_LOGIC;

Trang 23

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,

Trang 24

ps2d=>ps2d, ps2c=>ps2c, rx_done_tick=>rx_done_tick,tx_done_tick=>tx_done_tick); state and data registers

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;

Trang 26

x_next(7 downto 0) <= rx_data;end if;

Trang 27

-use IEEE.STD_LOGIC_1164.ALL;

Uncomment the following library declaration if using

arithmetic functions with Signed or Unsigned values

Trang 28

Port ( clk : in STD_LOGIC;

reset : in STD_LOGIC;

wr_ps2 : in STD_LOGIC;

din : in STD_LOGIC_VECTOR(7 DOWNTO 0);

dout : out STD_LOGIC_VECTOR(7 DOWNTO 0);

rx_done_tick : out STD_LOGIC;

tx_done_tick : out STD_LOGIC;

ps2_tx_unit: entity work.ps2_tx(Behavioral)

port map (clk=>clk, reset=>reset, wr_ps2=>wr_ps2,

din=>din, ps2d=>ps2d, ps2c=>ps2c,tx_idle=>tx_idle, tx_done_tick=>tx_done_tick);ps2_rx_unit: entity work.ps2_rx(behavioral)

port map (clk=>clk, reset=>reset, rx_en=>tx_idle,

ps2d=>ps2d, ps2c=>ps2c, rx_done_tick=>rx_done_tick, dout=> dout);end Behavioral;

4 Code PS2_tx.

Trang 29

-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;

Trang 30

Uncomment the following library declaration if instantiating any Xilinx primitives in this code.

tx_idle : out STD_LOGIC;

tx_done_tick : out STD_LOGIC);

end ps2_tx;

architecture Behavioral of ps2_tx is

type statetype is (idle, rts, start, data, stop);

signal state_reg, state_next: statetype;

signal filter_reg, filter_next: std_logic_vector(7 downto 0);signal f_ps2c_reg, f_ps2c_next : std_logic;

signal fall_edge: std_logic;

signal b_reg ,b_next: std_logic_vector(8 downto 0) ; signal c_reg ,c_next : unsigned(12 downto 0);

signal n_reg ,n_next : unsigned(3 downto 0) ;

Trang 31

signal par: std_logic;

signal ps2c_out, ps2d_out: std_logic;

signal tri_c, tri_d: std_logic;

filter_next <= ps2c & filter_reg( 7 downto 1);

f_ps2c_next <= '1' when filter_reg="11111111" else

'0' when filter_reg="00000000" elsef_ps2c_reg;

fall_edge <= f_ps2c_reg and (not f_ps2c_next);

Ngày đăng: 04/05/2019, 20:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w