Topic de CACHETFOU :

Les kheys qui s'y connaissent en VGA, venez ici

  • 1

Je ne comprends pas. Regardez ma simulation :

https://image.noelshack.com/fichiers/2022/01/3/1641411297-erreur.jpg

Pourquoi mon programme ne fonctionne pas ? Pourquoi l'écran ne fonctionne pas alors que ma simulation indique que j'ai raison ?

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.numeric_std.all;
--use work.MY.all;

ENTITY VGA_controleur IS
PORT(
     CLK_25M : IN STD_LOGIC; -- Horloge principale
      RESET : IN STD_LOGIC; -- Reset. Permet de réintialiser le contrôleur VGA
      
     HS_SIGNAL, VS_SIGNAL : OUT STD_LOGIC;-- Signaux de synchronisation
     VGA_R,VGA_G,VGA_B : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--- Couleurs RGB du VGA 
     );
      
END VGA_controleur; 

ARCHITECTURE MAIN OF VGA_controleur IS 


--SIGNAL SQ_X1,SQ_Y1: INTEGER:=500;
--SIGNAL DRAW1:STD_LOGIC:='1';

SIGNAL CNT_H : INTEGER:= 0;
SIGNAL CNT_V: INTEGER:=0; -- Compteur horizontal et vertical. 
------------
--CONSTANT H_VISIBLE:INTEGER:=635;
--CONSTANT H_FP:INTEGER:=15;
--CONSTANT H_SYNC:INTEGER:=95;
--CONSTANT H_BP :INTEGER:=48;
------------
--CONSTANT V_VISIBLE:INTEGER:=480;
--CONSTANT V_FP:INTEGER:=10;
--CONSTANT V_SYNC:INTEGER:=2;
--CONSTANT V_BP:INTEGER:=33;
 
BEGIN 
--SQ(CNT_H,CNT_V,SQ_X1,SQ_Y1,RGB,DRAW1);
PROCESS(CLK_25M,RESET)
BEGIN
-- Si le reset est allumé, mettre le compteur et les les couleurs RGB à 0
 IF(RESET='1') THEN
     CNT_H <= 0;
      CNT_V <= 0;
      
       VS_SIGNAL<='0';
        HS_SIGNAL<='0';
      
      VGA_R <= (OTHERS => '0');
      VGA_G <= (OTHERS => '0');
      VGA_B <= (OTHERS => '0');
    
    ELSIF(CLK_25M'EVENT AND CLK_25M = '1') THEN 
         -- Creation du compteur cnt_h. Tant que le compteur horizontal n'est pas égal à 792, incrémenter le compteur de 1. 
        IF(CNT_H = 792) THEN 
             CNT_H <= 0;
           ELSE
             CNT_H <= CNT_H + 1;
            END IF; 
        -- Creation du compteur cnt_v. Tant que le compteur horizontal n'est pas égal à 792 et le compteur vertical ) 524, mettre à 0. 
        -- Autrement incrémenter le compteur vertical à 1 
         IF(CNT_H=792) THEN 
             ELSIF(CNT_V=524) THEN 
                 CNT_V <= 0;
             ELSE
                 CNT_V <= CNT_V + 1;
             END IF; 
      --Gestion du signal horizontal.
      -- Si le compteur horizontal est entre 650, et 745, enclencher le Blanking Time. Autrement, enclencher le Blanking Time. 
         IF((CNT_H>650) AND (CNT_H <745)) THEN
                    HS_SIGNAL <= '0';
           ELSE 
                     HS_SIGNAL <= '1'; 
           END IF; 
      --- Gestion du signal vertical. Même chose qu'en haut mais avec le compteur vertical. 
         IF((CNT_V>490) AND (CNT_V <492)) THEN
                 VS_SIGNAL<= '0';
           ELSE 
                  VS_SIGNAL<= '1'; 
           END IF; 
      -- Gestion des couleurs R/G/B 
            IF(CNT_H<635) THEN
              VGA_R<= "1111";
              VGA_G<= "0000";
              VGA_B<= "0000";
                
                ELSE
                
                VGA_R<= "0000";
              VGA_G<= "0000";
              VGA_B<= "0000";
                
                END IF; 
             
    END IF;
     
    
END PROCESS;
END MAIN;

là où j'ai mis -- ce sont des commentaires
Notez que le programme avant fonctionnait bien avant que je change quelque chose pour pouvoir faire bouger des motifs
Depuis 1 semaine je boucle sur la putain d'erreur dont je suis à l'origine
Les ghostfags pourquoi vous répondez pas ? C'est pas assez clair ce que je dis ou vous venez ici pour repartir aussitôt ? :(

Le 05 janvier 2022 à 21:13:20 :
Ça sert à quoi le VGA ?

A afficher des couleurs avec des signaux de synchronisations verticaux et horizontaux

Le 05 janvier 2022 à 21:13:32 :
C'est le HDMI mtn

C'est pour un projet scolaire

  • 1

Données du topic

Auteur
CACHETFOU
Date de création
5 janvier 2022 à 20:35:25
Nb. messages archivés
13
Nb. messages JVC
13
En ligne sur JvArchive 311