n° 219
Novembre 2017
Gennaio 17, 2018, 02:46:20 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Algoritmo di Bombelli e vhdl  (Letto 2340 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Larens
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo
« inserita:: Settembre 27, 2012, 07:11:56 »

Salve a tutti, devo tradurre l'algoritmo di Bombelli in vhdl con Quartus, ho provato in questa maniera e vorrei un vostro parere sulla sua correttezza, se in alternativa conoscete un sistema migliore mi tornerebbe molto utile.

Grazie per l'attenzione. Sorriso

Codice:
variable  a_int : unsigned(7 downto 0); --è il mio ingresso
       variable  rot : unsigned(7 downto 0);
        variable  h : unsigned(7 downto 0);
         variable  el : unsigned(7 downto 0);     
         variable  risult : unsigned(7 downto 0); 
          variable  risult1 : unsigned(7 downto 0);
         variable  c : unsigned(7 downto 0);   
         variable  b : unsigned(7 downto 0);
         variable  calc : unsigned(7 downto 0);   
        variable COUNT : INTEGER := 0;
        variable z: INTEGER := 2;
  begin
           
      ax <= a;
  a_int:= unsigned(ax);
  if (a_int = 0) then
        uscita_unck <= (others => '0');
        end if;
       
       c := (others => '0');
        for j in 1 to 3 loop   
        rot:= ROTATE_LEFT(a_int, z);
        h:=shift_left(a_int,z);
        el:= rot-h;
       
         for i in 1 to 10 loop    
         calc:=resize(COUNT*(20*risult+COUNT),8);     
         if (calc <= c) then
        COUNT := COUNT + 1;
         else
        exit;
        end if;
        end loop;
        c:=el-calc;
        z:=z+2;
        risult1:= to_unsigned(COUNT,8);
        risult:= shift_left(risult,2)+risult1;
        var <= resize(risult,32);     
        uscita_unck <=var;
        end loop;

Pensavo di usare la libreria USE IEEE.numeric_std.all.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines