Thông báo

Collapse
No announcement yet.

Xử lý KEYBOARD trên Spartan 3e vơi ngôn ngữ VHDL

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xử lý KEYBOARD trên Spartan 3e vơi ngôn ngữ VHDL

    Code:
       
    --Hang so quy dinh man hinh
        constant SCREEN_WIDTH: integer := 640;
        constant SCREEN_HEIGHT: integer := 480;
    ---Tin hieu quy dinh thanh truot o truc y(truc doc)
         signal bar_1_y, bar_1_y_next, bar_2_y, bar_2_y_next: std_logic_vector(9 downto 0);
    	 --Tin hieu xac dinh do rong va chieu cao cua thanh BAR
        constant BAR_WIDTH: integer := 20;
        constant BAR_HEIGHT: integer := 64;
    
    bar_control: process(
    			bar_1_y,bar_2_y,
    			p1_up,p1_down,
    			p2_up,p2_down
    		)
    		variable count: std_logic;
        begin
    	
            bar_1_y_next <= bar_1_y;
            bar_2_y_next <= bar_2_y;
    			if p1_up='1' then
    				if (bar_1_y>0) then
    					bar_1_y_next <= bar_1_y -8;
    				end if;
    		
    			elsif p1_down = '1' then
    				if bar_1_y < SCREEN_HEIGHT - BAR_HEIGHT - 1    then
    					bar_1_y_next <= bar_1_y +8;
    				end if;
    			end if;
    	
    
    				if p2_up = '1' then
    					if bar_2_y >0 then
    						bar_2_y_next <= bar_2_y - 1;
    					end if;
    				elsif p2_down ='1' then
    					if bar_2_y < SCREEN_HEIGHT - BAR_HEIGHT - 1  then
    					 bar_2_y_next <= bar_2_y + 1;
    					end if;
    				end if;
    Em đang làm game pingpong trên spartan 3e. Đoạn code này em xử lý phím trên keyboard để điều khiển thanh trượt.
    Em làm cho nó trượt rồi nhưng không hiểu vì sao nó trượt thằng lên góc trên màn hình và góc dưới màn hình mà nó không trườ từ từ để mình đỡ bóng.
    Ai biết code sai đoạn nào thì chỉ giúp em nhé!
    Em cảm ơn nhiều!

  • #2
    Nguyên văn bởi vinhtk73 Xem bài viết
    Code:
       
    --Hang so quy dinh man hinh
        constant SCREEN_WIDTH: integer := 640;
        constant SCREEN_HEIGHT: integer := 480;
    ---Tin hieu quy dinh thanh truot o truc y(truc doc)
         signal bar_1_y, bar_1_y_next, bar_2_y, bar_2_y_next: std_logic_vector(9 downto 0);
    	 --Tin hieu xac dinh do rong va chieu cao cua thanh BAR
        constant BAR_WIDTH: integer := 20;
        constant BAR_HEIGHT: integer := 64;
    
    bar_control: process(
    			bar_1_y,bar_2_y,
    			p1_up,p1_down,
    			p2_up,p2_down
    		)
    		variable count: std_logic;
        begin
    	
            bar_1_y_next <= bar_1_y;
            bar_2_y_next <= bar_2_y;
    			if p1_up='1' then
    				if (bar_1_y>0) then
    					bar_1_y_next <= bar_1_y -8;
    				end if;
    		
    			elsif p1_down = '1' then
    				if bar_1_y < SCREEN_HEIGHT - BAR_HEIGHT - 1    then
    					bar_1_y_next <= bar_1_y +8;
    				end if;
    			end if;
    	
    
    				if p2_up = '1' then
    					if bar_2_y >0 then
    						bar_2_y_next <= bar_2_y - 1;
    					end if;
    				elsif p2_down ='1' then
    					if bar_2_y < SCREEN_HEIGHT - BAR_HEIGHT - 1  then
    					 bar_2_y_next <= bar_2_y + 1;
    					end if;
    				end if;
    Em đang làm game pingpong trên spartan 3e. Đoạn code này em xử lý phím trên keyboard để điều khiển thanh trượt.
    Em làm cho nó trượt rồi nhưng không hiểu vì sao nó trượt thằng lên góc trên màn hình và góc dưới màn hình mà nó không trườ từ từ để mình đỡ bóng.
    Ai biết code sai đoạn nào thì chỉ giúp em nhé!
    Em cảm ơn nhiều!
    Vui nhỉ, ban thử mô phỏng xem sai cho nào

    Comment


    • #3
      Ai sửa giúp em với. Nhấn nút X̣ trên bàn phím (nút Pause trong game) mà nhấn thì bóng ko chạy nhả ra thì bóng lại chạy.
      Ai biết chỉ giùm em với
      Code:
      ---- Doan code xu ly ball
          ball_control: process(
              ball_control_counter,
              ball_x, ball_y,
              ball_x_next, ball_y_next,
              ball_h_dir, ball_v_dir,
              ball_enable
          )
          begin
              ball_x_next <= ball_x;
              ball_y_next <= ball_y;
      	 if(pause ='0')then
              if ball_enable = '1' then	  		
                  if ball_control_counter = 0 then	
      				--Doan code dieu khien bong di thang theo truc X
                      if ball_h_dir = '1' then
                          ball_x_next <= ball_x + 1;
                      else
                          ball_x_next <= ball_x - 1;
                      end if;
      				--Doan code dieu khien bong di thang theo truc Y (duong net dut o giua man hinh)
                      if ball_v_dir = '1' then
                          ball_y_next <= ball_y + 1;
                      else
                          ball_y_next <= ball_y - 1;
                      end if;
                  end if;				
              else
                  ball_x_next <= conv_std_logic_vector(SCREEN_WIDTH / 2 - BALL_SIZE / 2, 10);
                  ball_y_next <= conv_std_logic_vector(SCREEN_HEIGHT / 2 - BALL_SIZE / 2, 10);
              end if;
      		 end if;
          end process;

      Comment


      • #4
        Ôi bạn ơi, sao code của bạn không có clock.
        Code của bạn hơi lạ. Bạn mô phỏng nó đi. Đem một đống thảy lên mạch thật như vậy mất công debug lắm!

        Comment

        Về tác giả

        Collapse

        vinhtk73 Tìm hiểu thêm về vinhtk73

        Bài viết mới nhất

        Collapse

        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        • nick22
          Trả lời cho Máy điện châm ?
          bởi nick22
          Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
          01-12-2025, 13:23
        Đang tải...
        X