Salut,
j'ai entrain de programmer un projet en VHDL en utilisant Xilinx ISE 7.1i.
A l'étape de synthèse , j'ai rencontré quelque problèmes.
Voila un bout de code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| architecture Behavioral of top is
constant COLS: integer:=80;
type tabram is array (0 to 4095 ) of std_logic_vector(0 to 7);
signal ram : tabram; ----RAM text buffer
signal rdata:bit_vector(7 downto 0) := "00000000";
signal vcount:bit_vector(9 downto 0):= "0000000000";
signal hcount:bit_vector(10 downto 0) := "00000000000";
begin
process (clk)
variable raddr:bit_vector(11 downto 0) := "000000000000";
begin
..
..
..
raddr := (vcount sll 4) * COLS +(hcount sll 3);--l'erreur 1
rdata <= ram(raddr);-- l'erreur 2
...
...
...
end process; |
A la première erreur:le synthétiseur me dit " Line 170. * can not have such operands in this context." , même si j'ai essayé de modifier le type integer de "COLS" au bit_vector
(constant COLS: bit_vector(6 downto 0):="1010000" ; )
, j'ai obtenu la meme erreur
Au deuxiéme erreur :"Line 171. Wrong index type for ram."
J'ai voulu convertir le type de variable "raddr" en un entier
raddr := (vcount sll 4) * std_logic_vector(UNSIGNED(COLS)) +(hcount sll 3);
mais j'ai obtenu l'erreur
"The expression can not be converted to type UNSIGNED"
et je ne sais pas si cette méthode de convertion est fausse ou pas ?????
Svp aidez moi car depuis deux jours j'arrive plus à avancer.
merci d'avance .
Partager