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

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

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

Thông tin tài liệu

Chương 25: Chöông trình lieân keát LIBRARY IEEE; USE IEEE.STD_LOGIC_1164 .ALL; USE IEEE.STD_LOGIC_ARITH .ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; LIBRARY lpm; USE lpm.lpm_components.ALL; PACKAGE up1core IS COMPONENT dec_7seg PORT(hex_digit: IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); segment_a, segment_b, segment_c, segment_d, segment_e, segment_f, segment_g : OUT STD_LOGIC); END COMPONENT; COMPONENT vga_sync PORT(clock_25Mhz, red, green, blue : IN STD_LOGIC; red_out, green_out, blue_out : OUT STD_LOGIC; horiz_sync_out, vert_sync_out : OUT STD_LOGIC; pixel_row, pixel_column :OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END COMPONENT; COMPONENT mouse PORT( clock_25Mhz, reset : IN STD_LOGIC; mouse_data : INOUT STD_LOGIC; mouse_clk : INOUT STD_LOGIC; left_button, right_button : OUT STD_LOGIC; mouse_cursor_row :OUT STD_LOGIC_VECTOR ( 9 DOWNTO 0); mouse_cursor_column : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)); END COMPONENT; END up1core; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; LIBRARY work; USE work.up1core.ALL; ENTITY vmouse IS Generic(ADDR_WIDTH: integer := 12; DATA_WIDTH: integer := 1); PORT(SIGNAL Clock,reset : IN STD_LOGIC; SIGNAL LSB_a, LSB_b, LSB_c, LSB_d : OUT STD_LOGIC; SIGNAL LSB_e, LSB_f, LSB_g, LSB_dp : OUT STD_LOGIC; SIGNAL MSB_a, MSB_b, MSB_c, MSB_d : OUT STD_LOGIC; SIGNAL MSB_e, MSB_f, MSB_g, MSB_dp: OUT STD_LOGIC; SIGNAL Red,Green,Blue : OUT STD_LOGIC; SIGNAL Horiz_sync,Vert_sync : OUT STD_LOGIC; signal mouse_data : INOUT STD_LOGIC; signal mouse_clk : INOUT STD_LOGIC); END vmouse; ARCHITECTURE behavior OF vmouse IS SIGNAL Red_Data, Green_Data, Blue_Data, vert_sync_int, color_on, Direction : STD_LOGIC; SIGNAL Size : STD_LOGIC_VECTOR (9 DOWNTO 0); SIGNAL mouse_cursor_row, mouse_cursor_column: STD_LOGIC_VECTOR (9 DOWNTO 0); SIGNAL pixel_row, pixel_column : STD_LOGIC_VECTOR (9 DOWNTO 0); SIGNAL LSB,MSB : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL LSB_7SEG,MSB_7SEG :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL left_button, right_button : STD_LOGIC; BEGIN SYNC: vga_sync PORT MAP(clock_25Mhz => clock, red => red_data, green => green_data, blue => blue_data, red_out => red, green_out => green, blue_out => blue, horiz_sync_out => horiz_sync, vert_sync_out => vert_sync, pixel_row => pixel_row, pixel_column => pixel_column); MSD: dec_7seg PORT MAP(hex_digit => MSB,segment_a => MSB_a, segment_b => MSB_b, segment_c => MSB_c, segment_d => MSB_d,segment_e => MSB_e, segment_f => MSB_f, segment_g => MSB_g ); LSD: dec_7seg PORT MAP(hex_digit => LSB,segment_a => LSB_a, segment_b => LSB_b, segment_c => LSB_c, segment_d => LSB_d,segment_e => LSB_e, segment_f => LSB_f, segment_g => LSB_g ); mous:mouse PORT MAP(clock_25Mhz=>clock, 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 ); Size <= CONV_STD_LOGIC_VECTOR(8,10); Red_Data <= '0'; Green_Data <= color_on; Blue_Data <= color_on; LSB_dp <= left_button; MSB_dp <= right_button; MSB <= mouse_cursor_row(7 DOWNTO 4); LSB <= mouse_cursor_column(7 DOWNTO 4); Chương trình chọn tín hiệu RGB hiển thò RGB_Display: Process (mouse_cursor_row, mouse_cursor_column, pixel_column, pixel_row,size) BEGIN IF ( '0'&mouse_cursor_column <= pixel_column +size) AND (mouse_cursor_column+size >= '0'&pixel_column) AND ( '0'&mouse_cursor_row <= pixel_row +size) AND (mouse_cursor_row +size >= '0'& pixel_row ) THEN color_on <= '1'; ELSE color_on <= '0'; END IF; END process RGB_Display; END behavior; Sau đó lưu lại và biên dòch. Rồi chọn linh kiện và gán chân như sau : MSB_a : 6 MSB_b : 7 MSB_c : 8 MSB_d : 9 MSB_e : 11 MSB_f : 12 MSB_g : 13 MSB_dp : 14 LSB_a : 17 LSB_b : 18 LSB_c : 19 LSB_d : 20 LSB_e : 21 LSB_f : 23 LSB_g : 24 LSB_dp : 25 mouse_clk : 30 mouse_data : 31 reset : 41 Clock : 91 Red : 236 Green : 237 Blue : 238 Vert_sync : 239 Horiz_sync : 240 Lưu và biên dòch lại chương trình rồi nạp lên KIT. Tuy nhiên kết quả chưa hoàn chỉnh, con trỏ vẫn chưa thể di chuyển hết toàn bộ màn hình. Do kich thước của ROM và của con trỏ chuột không phù hợp với kích thước của màn hình. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Qua quá trình tìm hiểu và thực hiện đề tài cùng với các kiến thức mà thầy cô truyền đạt, chúng em nhận thấy rằng FPGAs XC4005XL hãng Xilinx và các chip MAX7000S, chip FLEX10K hãng Altera có khả năng lập trình rất linh hoạt. Ta có thể lập trình để thực hiện các mô hình điều khiển từ đơn giản đến phức tạp như điều khiển tốc độ của động cơ, điều khiển nhiệt độ trong lò vi ba sóng, máy giặt, tủ lạnh,… Trong đề tài này, chúng em đã thực hiện được một số ứng dụng trên KIT UP2 hãng Altera như chương trình dòch led từ phải sang trái và ngược lại, chương trình đếm và hiển thò trên LED 7 đoạn, mạch hiển thò nhiệt độ điều khiển động cơ bên ngoài để giao tiếp với KIT UP2, các chương trình giao tiếp với VGA, Keyboard, mouse. Trong quá trình thực hiện đề tài, chúng em gặp khó khăn về phần mềm của XILINX. Vì khi biên dòch chương trình thì linh kiện sẽ được gán chân một cách ngẫu nhiên, không phù hợp với thiết kế nên ta phải gán chân lại cho linh kiện, nhưng phần mềm XILINX lại không hỗ trợ cho phần này nên chúng em phải chuyển sang tìm hiểu và thực hiện trên KIT UP2 của Altera. Tuy nhiên do thời gian và kiến thức có hạn nên chúng em chưa thể thực hiện được những chương trình phức tạp hơn. Kính mong sự đóng góp ý kiến của thầy cô và các bạn để đề tài được hoàn thiện hơn. Hướng phát triển: Nếu như áp dụng điều khiển này bằng logic mờ, ta có thể điều chỉnh tốc độ quay tùy ý theo tín hiệu số thông qua mạch điều biến xung. Ứng với nhiệt độ trong khoảng yêu cầu cùng với tốc độ quạt hồi tiếp về mà ta dùng các luật hợp thành của logic mờ để đưa ra một tín hiệu điều khiển. Từ tín hiệu đó, thông qua mạch chuyển đổi A/D để chuyển đổi tín hiệu analog đó thành số. Từ tín hiệu số ta qua mạch điều biến xung để điều khiển tốc độ quạt nhanh chậm theo tín hiệu. Mô hình điều khiển tốc độ quạt tự động theo nhiệt độ môi trường TÀI LIỆU THAM KHẢO 1. www.Xilinx.com 2. www.Altera.com 3. Rapid Prototyping Pf Digital Systems James O.Hamblen Michael D. Furman . chúng em đã thực hiện được một số ứng dụng trên KIT UP2 hãng Altera như chương trình dòch led từ phải sang trái và ngược lại, chương trình đếm và hiển thò trên LED 7 đoạn, mạch hiển thò nhiệt độ. thước của màn hình. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Qua quá trình tìm hiểu và thực hiện đề tài cùng với các kiến thức mà thầy cô truyền đạt, chúng em nhận thấy rằng FPGAs XC4005XL hãng. 24 LSB_dp : 25 mouse_clk : 30 mouse_data : 31 reset : 41 Clock : 91 Red : 236 Green : 237 Blue : 238 Vert_sync : 239 Horiz_sync : 240 Lưu và biên dòch lại chương trình rồi nạp lên KIT. Tuy nhiên kết

Ngày đăng: 05/07/2014, 16:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan