Danh mục tài liệu

Thiết kế hệ thống xử lý ảnh video trên FPGA (CycloneII), chương 23

Số trang: 16      Loại file: pdf      Dung lượng: 76.91 KB      Lượt xem: 13      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mouse chứa quả banh để cuộn 2 slotted wheels. Wheels được nối đến hai con mã hoá quang học. Hai đầu dò mã hóa x và y hoạt động do việc đếm xung khi wheels di chuyển. Mouse chứa 2 hay 3 nút nhấn có thể được đọc bởi hệ thống và chip điều khiển. Vi điều khiển sẽ gửi tín hiệu đến máy tính thông báo tình trạng nút nhấn và yêu cầu hoạt động. Dữ liệu của mouse truyền như bàn phím thông qua cổng PS/2. nhưng khi không truyền thì đường xung của mouse sẽ được kéo...
Nội dung trích xuất từ tài liệu:
Thiết kế hệ thống xử lý ảnh video trên FPGA (CycloneII), chương 23Chương 23: Chöông trình keát hôïpLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scancode IS PORT(keyboard_clk, keyboard_data, clock_25Mhz , reset, read : IN STD_LOGIC; dataL,dataM : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); scan_ready : OUT STD_LOGIC);END scancode;ARCHITECTURE a OF scancode ISSIGNAL scan_code : STD_LOGIC_VECTOR(7DOWNTO 0);COMPONENT keyboard PORT( keyboard_clk, keyboard_data, clock_25Mhz , reset, read : IN STD_LOGIC; scan_code : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); scan_ready : OUT STD_LOGIC);END COMPONENT;COMPONENT dec_7seg PORT(hex_digit : IN STD_LOGIC_VECTOR(3DOWNTO 0); data : OUT STD_LOGIC_VECTOR(6DOWNTO 0));END COMPONENT;BEGIN x1:keyboard PORT MAP (keyboard_clk=>keyboard_clk, keyboard_data=>keyboard_data, clock_25Mhz=>clock_25Mhz, reset=>reset,read=>read, scan_code=>scan_code, scan_ready=>scan_ready); x2: dec_7seg PORT MAP(hex_digit=>scan_code(3 downto0),data=>dataL); x3:dec_7seg PORT MAP(hex_digit=>scan_code(7 downto4),data=>dataM);END; Sau ñoù ta gaùn chaân theo caùc chaân ñaõ ñöôïc noái vôùi chip saünnhö sau : dataM6 :6 dataM5 :7 dataM4 :8 dataM3 :9 dataM2 : 11 dataM1 : 12 dataM0 : 13 dataL6 : 17 dataL5 : 18 dataL4 : 19 dataL3 : 20 dataL2 : 21 dataL1 : 23 dataL0 : 24 keyboard_clk : 30 keyboard_data : 31 read : 40 reset : 41 scan_ready : 45 clock_25Mhz : 91VI. Giao tieáp vôùi mouse a. Caùch hoaït ñoäng Mouse chöùa quaû banh ñeå cuoän 2 slotted wheels. Wheelsñöôïc noái ñeán hai con maõ hoaù quang hoïc. Hai ñaàu doø maõ hoùa xvaø y hoaït ñoäng do vieäc ñeám xung khi wheels di chuyeån. Mousechöùa 2 hay 3 nuùt nhaán coù theå ñöôïc ñoïc bôûi heä thoáng vaø chip ñieàukhieån. Vi ñieàu khieån seõ göûi tín hieäu ñeán maùy tính thoâng baùo tìnhtraïng nuùt nhaán vaø yeâu caàu hoaït ñoäng. Döõ lieäu cuûa mouse truyeànnhö baøn phím thoâng qua coång PS/2. nhöng khi khoâng truyeàn thìñöôøng xung cuûa mouse seõ ñöôïc keùo leân cao coøn ñöôøng döõ lieäu ôûtraïng thaùi naøo cuõng ñöôïc. Vaø quaù trình truyeàn phöùc taïp hôn vìmoät leänh cuûa mouse tröôùc khi truyeàn phaûi göûi maõ töï kieåm tratöông öùng vôùi maõ AA hay 00, roài göûi leänh Acknowledge töôngöùng vôùi maõ FA. Roài môùi baét ñaàu göûi 3 bit. b. Chöông trìnhLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MOUSE ISPORT ( clock_25Mhz, reset : INSTD_LOGIC; SIGNAL mouse_data : INOUTSTD_LOGIC; SIGNAL mouse_clk : INOUTSTD_LOGIC; SIGNAL left_button, right_button : OUTSTD_LOGIC; SIGNAL mouse_cursor_row: OUTSTD_LOGIC_VECTOR (9 DOWNTO 0); SIGNAL mouse_cursor_column: OUT STD_LOGIC_VECTOR (9 DOWNTO 0));END MOUSE;ARCHITECTURE behavior OF MOUSE IS TYPE STATE_TYPE IS (INHIBIT_TRANS,LOAD_COMMAND, LOAD_COMMAND2,WAIT_OUTPUT_READY, WAIT_CMD_ACK, INPUT_PACKETS);-- Tín hieäu cho mouse SIGNAL mouse_state : STATE_TYPE; SIGNAL inhibit_wait_count :STD_LOGIC_VECTOR(10 DOWNTO 0); SIGNAL CHARIN, CHAROUT : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL new_cursor_row, new_cursor_column: STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNAL cursor_row,cursor_column:STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNAL INCNT, OUTCNT, MSB_OUT:STD_LOGIC_VECTOR (3DOWNTO 0); SIGNAL PACKET_COUNT : STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL SHIFTIN : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL SHIFTOUT : STD_LOGIC_VECTOR (10DOWNTO 0); SIGNAL PACKET_CHAR1, PACKET_CHAR2, PACKET_CHAR3 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL MOUSE_CLK_BUF, DATA_READY,READ_CHAR: STD_LOGIC; SIGNAL i : INTEGER; SIGNAL cursor, iready_set, break, toggle_next, ...