intTypePromotion=3

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

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

0
92
lượt xem
30
download

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

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

Chương trình liên kết hiển thị con trỏ của chuột lên màn hình, vì trong bộ nhớ của KIT không hỗ trợ kí hiệu con trỏ nên ta thay con trỏ như một dấu chấm. Đầu tiên tín hiệu xung và dữ liệu của mouse được đưa vào chương trình chuyển đổi(phần trước) nhận biết được nút trái hay phải được nhấp và cho biết toạ độ của mouse. Tín hiệu toạ độ của chuột sẽ làm tín hiệu để so sánh với hàng cột của điểm ảnh do chương trình Vga_sync( phần trước). Nếu thoả điều kiện thì tín hiệu...

Chủ đề:
Lưu

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

  1. Chương 24: Kieåm tra giôùi haïn treân cuûa maøn hình IF (cursor_column 256) OR (NEW_cursor_column < 2)) THEN cursor_column 640 THEN cursor_column
  2. NEW_cursor_row
  3. Y7-Y0= khoaûng caùch di chuyeån cuûa Y (0=di chuyeån traùi, 1=dichuyeån phaûi) Xo= bit döõ lieäu theå hieän X traøn (traøn=1) Yo= bit döõ lieäu theå hieän Y traøn (traøn=1) …. Töø caùc bit trong 3 byte cuûa mouse cho ta bit toa ñoä cuûa mouse vaø cho bieát nuùt naøo cuûa Mouse ñöôïc nhaán. Chöông trình keát hôïp vôùi giaûi maõ led theå hieän toïa ñoä cuûa mouse vaø nuùt naøo ñöôïc nhaán theå hieän qua dp cuûa led 7 ñoaïn. Do kit chæ coù 2 led 7ñoaïn neân ta chæ theå hieän haøng ñôn vò hay haøng chuïc cuûa toaï ñoä cuûa mouse. Chöông trình keát hôïp naøy theå hieän toïa ñoä haøng chuïc cuûa chuoät: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY kethop IS PORT ( clock_25Mhz, reset : IN STD_LOGIC; dataM,dataL :OUT STD_LOGIC_VECTOR (6 DOWNTO 0); mouse_data, mouse_clk : INOUT STD_LOGIC; left_button, right_button : OUT STD_LOGIC); END kethop; ARCHITECTURE bb OF kethop IS SIGNAL mouse_cursor_row :STD_LOGIC_VECTOR (9 DOWNTO 0);
  4. SIGNAL mouse_cursor_column: STD_LOGIC_VECTOR (9 DOWNTO 0); COMPONENT mouse 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(9DOWNTO 0)); END COMPONENT; COMPONENT dec_7seg1 PORT(hex_digit : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Data : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); END COMPONENT; BEGIN x1: mouse port map(clock_25Mhz=>clock_25Mhz,reset=>reset, mouse_data=>mouse_data,mouse_clk=>mouse_clk, left_button=>left_button,right_button=>right_button, mouse_cursor_row=>mouse_cursor_row, mouse_cursor_column =>mouse_cursor_column);
  5. x2: dec_7seg1 port map (hex_digit=> mouse_cursor_row(9 downto 6),data =>dataM); x3: dec_7seg1 port map (hex_digit =>mouse_cursor_column(9 downto 6),data =>dataL); END; Sau ñoù ta gaùn chaân nhö sau: Tín hieäu Chaân dataL6 6 dataL5 7 dataL4 8 dataL3 9 dataL2 11 dataL1 12 dataL0 13 right_button 14 dataM6 17 dataM5 18 dataM4 19 dataM3 20 dataM2 21 dataM1 23 dataM0 24 left_button 25 mouse_clk 30 mouse_data 31 reset 41 clock_25Mhz 91
  6. Löu vaø bieân dòch laïi, roài naïp file .sof leân Kit UP2 ñeå chaïy chöông trình. VII. Giao tieáp giöõa VGA vaø baøn phím 1. Moâ hình Data : töø baøn phím xuaát ra khi ta nhaán phím. Clk : töø baøn phím khi ta nhaán phím. Maõ scancode ñöôïc chöông trình chuyeån ñoåi (ôû phaàn tröôùc) töø tín hieäu data cuûa baøn phím. Tín hieäu data vaø clk ñöôïc truyeàn thoâng qua coång PS/2 ñeán KIT UP2. Sau ñoù maõ scancode ñöôïc giaûi maõ thaønh ñòa chæ cuûa kí töï coù maõ scancode ñoù. Ñòa chæ ñöôïc ñöa vaøo chöông trình xuaát kí töï( ôû phaàn tröôùc) ñöa kí töï leân maøn hình. Luùc naøy chöông trình seõ xuaát ra 5 tín hieäu red, green, blue vaø hai tín hieäu ñoàng boä ngang vaø doïc. 5 tín hieäu naøy ñöôïc truyeàn tôùi monitor thoâng qua coång Vga cuûa KIT UP2. 2. Chöông trình a. Chöông trình giaûi maõ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; USE IEEE.STD_LOGIC_ARITH.all; USE IEEE.STD_LOGIC_UNSIGNED.all; ENTITY giaima IS
  7. PORT( scan_in: IN STD_LOGIC_VECTOR (7 DOWNTO 0); scan_out: OUT STD_LOGIC_VECTOR (5 DOWNTO 0)); END giaima; ARCHITECTURE o OF giaima IS SIGNAL scan1 : STD_LOGIC_VECTOR (5 DOWNTO 0); BEGIN PROCESS(scan_in) BEGIN CASE scan_in IS WHEN "00011110" => scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1
  8. WHEN "00110011" => scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1
  9. WHEN "00011101" => scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1
  10. WHEN "01010010" => scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1 scan1
  11. WHEN "01101100" => scan1 scan1 scan1 scan1
  12. SIGNAL rom_mux_output, green, blue, scan_ready : STD_LOGIC; SIGNAL pixel_row, pixel_column: STD_LOGIC_VECTOR (9 DOWNTO 0); SIGNAL scan_out: STD_LOGIC_VECTOR (5 DOWNTO 0); SIGNAL scan_code: STD_LOGIC_VECTOR (7 DOWNTO 0); COMPONENT VGA_SYNC PORT( clock_25Mhz,green, blue,red : IN STD_LOGIC; red_out, green_out, blue_out, horiz_sync_out, vert_sync_out : OUT STD_LOGIC; pixel_row, pixel_column: OUT STD_LOGIC_VECTOR (9 DOWNTO 0)); END COMPONENT; COMPONENT Char_ROM PORT(character_address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); font_row, font_col : IN STD_LOGIC_VECTOR (2 DOWNTO 0); rom_mux_output : OUT STD_LOGIC); END COMPONENT; 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;
  13. COMPONENT giaima PORT (scan_in: IN STD_LOGIC_VECTOR (7 DOWNTO 0); scan_out: OUT STD_LOGIC_VECTOR (5 DOWNTO 0)); END COMPONENT; BEGIN x0: 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); x1: giaima PORT MAP (scan_in=>scan_code,scan_out=>scan_out); x2: vga_sync PORT MAP (clock_25Mhz=>clock_25Mhz, red=>scan_ready,green=>rom_mux_outpu t, blue=>rom_mux_output,red_out=>red_out , green_out=>green_out,blue_out=>blue_ou t, vert_sync_out=>vert_sync_out, horiz_sync_out=>horiz_sync_out, pixel_column=>pixel_column, pixel_row=>pixel_row); x3:char_rom PORT MAP (character_address=>scan_out, font_row=>pixel_row (3 downto 1), font_col=>pixel_column (3 downto 1), rom_mux_output=>rom_mux_output);
  14. END; Sau ñoù choïn linh kieän vaø gaùn chaân nhö sau: Keyboard_clk : 30 Keyboard_data : 31 Read : 40 Reset : 41 Clock_25Mhz : 91 Red_out : 236 Green_out : 237 Blue_out : 238 Vert_sync_out : 239 Horiz_sync_out : 240 Caùc chaân coøn laïi chöông trình töï gaùn. Löu vaø bieân dòch laïi roài naïp leân Kit. Tuy nhieân chöông trình vaãn coøn nhieàu thieáu xoùt trong vieäc hieån thò, thöù nhaát laø do ROM cuûa KIT nhoû khoâng theå hieän ñöôïc heát caùc phím treân baøn phím, thöù hai laø do coù moät soá phím coù maõ scancode truøng nhau neân ta khoâng theå hieån thò ñöôïc caùc kí töï ñoù nhö @=shift + 2 VIII. Giao tieáp vôùi VGA vaø mouse : 1. Moâ hình :
  15. Mouse_clk : xung cuûa mouse phaùt ra khi ta di chuyeån hoaëc nhaáp chuoät Mouse_data : döõ lieäu cuûa mouse phaùt ra khi ta di chuyeån hoaëc nhaáp chuoät Reset :tín hieäu reset chöông trình. Clk_25Mhz : xung caáp cho chöông trình VGA_sync. Horiz_sync : tín hieäu ñoàng boä ngang töø KIT truyeàn cho monitor. Vert_sync : tín hieäu ñoàng boä doïc töø KIT truyeàn cho monitor. Red_out : tín maøu ñoû töø KIT truyeàn cho monitor. Green_out : tín maøu xanh laù caây töø KIT truyeàn cho monitor. Blue_out : tín maøu xanh döông töø KIT truyeàn cho monitor. Chöông trình lieân keát hieån thò con troû cuûa chuoät leân maøn hình, vì trong boä nhôù cuûa KIT khoâng hoã trôï kí hieäu con troû neân ta thay con troû nhö moät daáu chaám. Ñaàu tieân tín hieäu xung vaø döõ lieäu cuûa mouse ñöôïc ñöa vaøo chöông trình chuyeån ñoåi(phaàn tröôùc) nhaän bieát ñöôïc nuùt traùi hay phaûi ñöôïc nhaáp vaø cho bieát toaï ñoä cuûa mouse. Tín hieäu toaï ñoä cuûa chuoät seõ laøm tín hieäu ñeå so saùnh vôùi haøng coät cuûa ñieåm aûnh do chöông trình Vga_sync( phaàn tröôùc). Neáu thoaû ñieàu kieän thì tín hieäu color_on ñöôïc ñaët leân ‘1’ vaø noù chính laø tín hieäu ñeå hieån thò con troû cuûa chuoät maøu xanh(RBG=’011’) vôùi maøn hình neàn maøu ñen(RGB=’000’). Maøn hình ñöôïc queùt lieân tuïc nhöng chæ coù tín hieäu con troû laïi ñöôïc queùt theo vò trí cuûa con troû.

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản