intTypePromotion=1

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

Chia sẻ: Tran Van Duong | Ngày: | Loại File: PDF | Số trang:16

0
119
lượt xem
36
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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

Chủ đề:
Lưu

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

  1. Chương 23: Chöông trình keát hôïp LIBRARY 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 IS SIGNAL scan_code : STD_LOGIC_VECTOR(7 DOWNTO 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(3 DOWNTO 0);
  2. data : OUT STD_LOGIC_VECTOR(6 DOWNTO 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 downto 0),data=>dataL); x3:dec_7seg PORT MAP(hex_digit=>scan_code(7 downto 4),data=>dataM); END; Sau ñoù ta gaùn chaân theo caùc chaân ñaõ ñöôïc noái vôùi chip saün nhö 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
  3. dataL1 : 23 dataL0 : 24 keyboard_clk : 30 keyboard_data : 31 read : 40 reset : 41 scan_ready : 45 clock_25Mhz : 91 VI. 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 x vaø y hoaït ñoäng do vieäc ñeám xung khi wheels di chuyeån. Mouse chöùa 2 hay 3 nuùt nhaán coù theå ñöôïc ñoïc bôûi heä thoáng vaø chip ñieàu khieån. Vi ñieàu khieån seõ göûi tín hieäu ñeán maùy tính thoâng baùo tình traïng nuùt nhaán vaø yeâu caàu hoaït ñoäng. Döõ lieäu cuûa mouse truyeàn nhö 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 tra töô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ình
  4. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MOUSE IS PORT ( clock_25Mhz, reset : IN STD_LOGIC; SIGNAL mouse_data : INOUT STD_LOGIC; SIGNAL mouse_clk : INOUT STD_LOGIC; SIGNAL left_button, right_button : OUT STD_LOGIC; SIGNAL mouse_cursor_row: OUT STD_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;
  5. 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 (3 DOWNTO 0); SIGNAL PACKET_COUNT : STD_LOGIC_VECTOR (1 DOWNTO 0); SIGNAL SHIFTIN : STD_LOGIC_VECTOR (8 DOWNTO 0); SIGNAL SHIFTOUT : STD_LOGIC_VECTOR (10 DOWNTO 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, output_ready, send_char, send_data : STD_LOGIC; SIGNAL MOUSE_DATA_DIR, MOUSE_DATA_OUT, MOUSE_DATA_BUF, MOUSE_CLK_DIR : STD_LOGIC;
  6. SIGNAL MOUSE_CLK_FILTER : STD_LOGIC; SIGNAL filter : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN mouse_cursor_row
  7. -- Mouse ñöôïc baät vaø göûi maõ töï kieåm tra, AA vaø 00 tröôùc khi maïch downloaded --Ñöôøng xung keùo leân cao caám baát kyø tín hieäu truyeàn töø mouse. -- Caàn ít nhaát 60us ñeå döøng vieäc truyeàn trong khi tieán haønh. -- Luùc naøy caûm bieán quang cuûa mouse seõ khoâng truyeàn. WHEN INHIBIT_TRANS => inhibit_wait_count
  8. mouse_state SEND_DATA
  9. -- Toác ñoä xaùc ñònh laø 100 packets per second WHEN INPUT_PACKETS => mouse_state
  10. '1' WHEN LOAD_COMMAND, '1' WHEN LOAD_COMMAND2, '0' WHEN WAIT_OUTPUT_READY, '0' WHEN WAIT_CMD_ACK, '0' WHEN INPUT_PACKETS; WITH mouse_state SELECT -- Ngoõ vaøo tri-state töø FLEX chip ñeäm ñöôøng clock_25Mhz mouse. MOUSE_CLK_BUF
  11. BEGIN WAIT UNTIL clock_25Mhz ‘EVENT AND clock_25Mhz = '1'; filter(7 DOWNTO 1)
  12. Charout (4) xor Charout (3) xor charout (2) xor charout(1) xor charout (0)); -- STOP BIT SHIFTOUT (10)
  13. OUTPUT_READY
  14. READ_CHAR
  15. cursor_column
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2