2017-06-08 1 views
-1

Je suis en train de concaténer 0 « n » fois, mais « n « est inconnu pour moi au moment de la compilationsystemverilog: Concaténer 0 s Temps n lorsque n est inconnu au moment de la compilation

. « N » est calculé en utilisant un calcul qui dépend de l'entrée aléatoire (temp_i)

string s=temp_i; 
     int n,d_zero; 
    int i=0; 
    int l=s.len()*8;//l=24 
    int k=447-l; 
    int T=0; 
    if(k<0) 
     k=512+k; 

    do 
    begin 
     d[i]=l%2; 
     i++;    
    end while(l>0); 

    T=l+1+k+d.size(); 
    n=T/512; 

Ce "n" nombre de zéro doit être concaténé avec l'entrée Quelque chose comme:..

temp_out={temp_i,n'{1'b0}} 

Mais j'obtiens une erreur de syntaxe concaténant comme ceci.

Quelqu'un peut-il m'aider s'il vous plaît avec ceci? Y a-t-il un autre moyen de le faire?


+1

Quel est le type de temp_i et temp_out. Sont-ils des ficelles? –

+0

Comment utiliser l'opérateur de changement de vitesse? 'temp_out = temp_in << n'? – Greg

+0

@Greg Cette méthode est beaucoup plus simple et directe que celle que j'ai essayée. Merci de votre aide – Saurabh

Répondre

1

Cela fonctionne en déclarant simplement "n" comme localparam.

localparam n; 

et temp_out comme

temp_out={temp_i,{n{1'b0}}};