salut tout le monde j'ai besoin d'un programme VHDL qui fait la multiplication d'une matrice lue à partir d'une entrée avec une autre qui est deja enregistrée et apres avec la transposée de cette matrice .
aidez moi et merci
-----
salut tout le monde j'ai besoin d'un programme VHDL qui fait la multiplication d'une matrice lue à partir d'une entrée avec une autre qui est deja enregistrée et apres avec la transposée de cette matrice .
aidez moi et merci
Bonjour,
je crains que tu n’aies pas bien comprit ce qu'est le VHDL.
Ce n'est pas un langage de programmation mais un langage de description de circuit logiques, tu peux cependant l'utiliser comme du C, un programme écrit en C peut après quelques modifications simples tourner en VHDL comportemental mais cela ne sera en aucun cas shynthétisable.
JR
l'électronique c'est pas du vaudou!
Bonjour !
Au grand maximum le vhdl de permettra de créer un processeur intégrant un multiplicateur microprogrammable pour effectuer tous les calculs nécessaires à ces opérations matricielles...
Courage !
Vincent
Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...
Re
Non on peux faire bien mieux, (FFT,FIR, ALU vectorielle, GPU ...) mais c'est là qu'il faut avoir du métier.
JR
l'électronique c'est pas du vaudou!
merci bien pour vos importants et utiles remarques
c'est un peu ca car mon traivail est de descrire une entité qui permet de faire le produit matriciel j'ai deja fait le travail en declarant les entrée sortie et dans l'architecture j'ai trouver un proces qui fait ce produit mais l'outil que je dispose m'affiche des erreurs que je n'ai pas compris (j'utilise le ISE et le circuit est spartan 3E de xilinx) la description est la suivanteBonjour,
je crains que tu n’aies pas bien comprit ce qu'est le VHDL.
Ce n'est pas un langage de programmation mais un langage de description de circuit logiques, tu peux cependant l'utiliser comme du C, un programme écrit en C peut après quelques modifications simples tourner en VHDL comportemental mais cela ne sera en aucun cas shynthétisable.
JR
entity dct is
port (
Clk : in BIT;
Start : in BIT;
Din : in INTEGER;
Done : out BIT;
Dout : out INTEGER
);
end dct;
architecture behavioral of dct is
begin
process
type RF is array ( 0 to 7, 0 to 7 ) of INTEGER;
variable i, j, k : INTEGER;
variable InBlock : RF;
variable COSBlock : RF;
variable TempBlock : RF;
variable OutBlock : RF;
variable A, B, P, Sum : INTEGER;
begin
-------------------------------
-- Initialize parameter matrix
-------------------------------
COSBlock := (
( 125, 122, 115, 103, 88, 69, 47, 24 ),
( 125, 103, 47, -24, -88, -122, -115, -69 ),
( 125, 69, -47, -122, -88, 24, 115, 103 ),
( 125, 24, -115, -69, 88, 103, -47, -122 ),
( 125, -24, -115, 69, 88, -103, -47, 122 ),
( 125, -69, -47, 122, -88, -24, 115, -103 ),
( 125, -103, 47, 24, -88, 122, -115, 69 ),
( 125, -122, 115, -103, 88, -69, 47, -24 )
);
-------------------------------
-- Handshaking
-------------------------------
wait until Start = '1';
Done <= '0';
-------------------------------
-- Read Input Data
-------------------------------
for i in 0 to 7 loop
for j in 0 to 7 loop
wait until Clk = '1';
InBlock( i, j ) := Din;
end loop;
end loop;
--------------------------------
-- Matrix Multiplication 1
--------------------------------
for i in 0 to 7 loop
for j in 0 to 7 loop
for k in 0 to 7 loop
A := InBlock( i, k-1 );
B := COSBlock( k-1, j );
P := A * B;
if( k = 0 ) then
Sum := 0;
else
Sum := Sum + P;
end if;
if( k = 7 ) then
TempBlock( i, j ) := Sum;
end if;
end loop;
end loop;
end loop;
--------------------------------
-- Matrix Multiplication 2
--------------------------------
for i in 0 to 7 loop
for j in 0 to 7 loop
for k in 0 to 7 loop
A := TempBlock( k, j );
B := COSBlock( k, i );
P := A * B;
if( k = 1 ) then
Sum := 0;
else
Sum := P;
end if;
if( k = 7 ) then
OutBlock( i, j ) := Sum;
end if;
end loop;
end loop;
end loop;
--------------------------------
-- Handshaking
--------------------------------
wait until Clk = '1';
Done <= '1';
--------------------------------
-- Output Data
--------------------------------
for i in 0 to 7 loop
for j in 0 to 7 loop
wait until Clk = '1';
Done <= '0';
Dout <= OutBlock( i, j );
end loop;
end loop;
end process;
end behavioral;