- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This module is a large green rectangle with two smaller rectangles inside called right product and left product. What I want to do is click on the small rectangles and have them change to another color. The clicking will be done with another module that calls a PS/2 mouse. I can just link the color change to a button on the DE2 board and then call in the mouse code later. Here is what I want to say: if there is no button push, stay red. If there is a button click turn blue. A push in the right direction would be appreciated. Thank you.
module vga(CLOCK_50, VGA_HS, VGA_VS, VGA_R, VGA_G, VGA_B, VGA_CLK, VGA_BLANK, VGA_SYNC, KEY); // module vga input and output signals // Cyclone II system clock is 50 MHz input CLOCK_50; // VGA signals output[9:0] VGA_R, VGA_G, VGA_B; output VGA_HS, VGA_VS, VGA_CLK, VGA_BLANK, VGA_SYNC; input[3:0] KEY; // Define signals necessary to instantiate the vga_controller module wire clock_25; //A derived 25MHz clock wire displaying; wire[9:0] v_pos; wire[9:0] h_pos; wire v_blank, h_blank; wire[7:0] v_early, h_early; reg[3:0] r, g, b; // Create one hardware instance of a vga controller vga_controller vga_i(CLOCK_50, VGA_HS, VGA_VS, VGA_R, VGA_G, VGA_B, VGA_CLK, VGA_BLANK, VGA_SYNC, clock_25, r, g, b, displaying, v_pos, h_pos, v_blank, h_blank, v_early, h_early); /* This always block controls the colors of each individual pixel on the vga. * v_pos is the vertical position pixel coordinate being drawn (a row) * h_pos is the horizontal position pixel coordinate being drawn (a column) * The always block is activated whenever the v_pos or h_pos signal is changed by the * vga_controller. */ always @(v_pos, h_pos) begin {r, g, b} = 0;//set screen to black if(h_pos >= 325 && h_pos <= 525 && v_pos >= 200 && v_pos <= 400)//bottom 2/3 of the venting machine {r,g,b} = {4'b0000,4'b1111,4'b0000}; if( h_pos >= 325 && h_pos <=345 && v_pos >= 100 && v_pos <= 199)//upper 1/3 of the vending machine, left side {r, g, b} = {4'b0000, 4'b1111, 4'b0000}; if( h_pos >= 505 && h_pos <=525 && v_pos >= 100 && v_pos <= 199)//uppper 1/3 of the vending machine, right side {r, g, b} = {4'b0000, 4'b1111, 4'b0000}; if( h_pos >= 325 && h_pos <=525 && v_pos >= 85 && v_pos <= 99)//top of vending machine {r, g, b} = {4'b0000, 4'b1111, 4'b0000}; if( h_pos >= 405 && h_pos <=445 && v_pos >= 100 && v_pos <= 199) //center line dividing the rt and lf products {r, g, b} = {4'b0000, 4'b1111, 4'b0000}; if( h_pos >= 346 && h_pos <=404 && v_pos >= 100 && v_pos <= 199)//left product {r, g, b} = {4'b1110, 4'b0000, 4'b0000}; if( h_pos >= 446 && h_pos <=504 && v_pos >= 100 && v_pos <= 199)//right product {r, g, b} = {4'b1010, 4'b1010, 4'b0100}; end endmoduleLink Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page