当前位置:网站首页>Notes sur les questions d'entrevue de la FPGA (IV) - - détecteur de séquence, Code gris dans le domaine de l'horloge croisée, opération de ping - pong, réduction de la perte statique et dynamique, err

Notes sur les questions d'entrevue de la FPGA (IV) - - détecteur de séquence, Code gris dans le domaine de l'horloge croisée, opération de ping - pong, réduction de la perte statique et dynamique, err

2022-06-11 06:05:00 Fixation Xh

1、Détecteur de séquence

Titre:

AvecMooreTypeSéquence d'implémentation de la machine d'état“1101”De droite à gaucheDétection sans chevauchement.

1、Veuillez dessiner le diagramme de transition de l'état,Dont StatutS1,S2,…Pour identifier.

2、 Pour ce design spécifique , Comment mesurer l'exhaustivité de la validation ?


MooreType: Le changement d'état de la machine d'état n'est lié qu'à l'état actuel .

1.1 Mise en œuvre du détecteur de séquence par la machine d'état

1.11Détection de non - chevauchement et détection de chevauchement

Regardez l'image ci - dessous.:
Insérer la description de l'image ici
Analyse du sujet:
Pas de détection de chevauchement de droite à gauche 1101, C'est - à - dire qu'il n'y a pas de détection de chevauchement de gauche à droite 1011, Donc nous pouvons dessiner un diagramme d'état :
Insérer la description de l'image ici

1.1.2 verilogRéalisation

//Détecteur de séquence1011,Détection sans chevauchement

module test(
    
	 input clk,
	 input rst_n,
	 input d,         //Entrée de séquence
	 output reg done  //Test terminé

);
parameter S1 = 3'd1,S2 = 3'd2,S3 = 3'd3,S4 = 3'd4,S5 = 3'd5;

reg [2:0] state,next_state;


//Machine à trois étages

//Premier paragraphe,Registre d'état
[email protected](posedge clk)
    if(!rst_n)
	     state <= S1;
	 else
	     state <= next_state;
		  
//Paragraphe 2, La logique combinatoire décrit le transfert d'état 
always @ (*)begin
    case(state)
		  S1: next_state = d ? S2:S1;
		  S2: next_state = d ? S2:S3;
		  S3: next_state = d ? S4:S1;
		  S4: next_state = d ? S5:S3;
		  S5: next_state = d ? S2:S1;
		  default: next_state = S1;
	
    endcase
end	  
//Paragraphe 3,Sortie de l'état
[email protected](*)
    done = (state == S5) ;

endmodule

1.1.3 tbDocumentation

`timescale 1ns/1ns

module test_tb;

	 reg clk;
	 reg rst_n;
	 reg d;        //Entrée de séquence
	 
	 wire done ; //Test terminé



 test u1 (
    
	 .clk(clk),
	 .rst_n(rst_n),
	 .d(d),         //Entrée de séquence
	 .done(done) //Test terminé

);
//
initial clk = 0;
    always #1 clk = ~clk;
//
initial begin
    rst_n = 0;
    #1;
    rst_n = 1;
end
//
initial begin
    d = 0;
    #2;
    d = 1;
    #2;
    d = 0;	 
    #2;
    d = 1;
	 #2;
    d = 1;
	 
    #2;
	 d = 0;
	 #2;
    d = 1;
	 #2;
    d = 1;
	 #3;
	 d= 0;
	 #20;
	 $stop;
	 	 
end

endmodule

Forme d'onde:
Vous pouvez voir quand 1011Quand,donePour passer à un niveau élevé.
Insérer la description de l'image ici
Parce qu'il n'y a pas de détection de séquence superposée , On peut donc voir ,Comme suit1011Heuredone Il n'est pas devenu haut , Donc la conception est correcte .
Insérer la description de l'image ici

1.1.4 Comment mesurer l'exhaustivité de l'équipement

La mesure de l'exhaustivité de l'équipement est utilisée pour vérifier , Pour la machine d'état , Diverses erreurs de saut d'état peuvent se produire, etc. , Nous devons donc nous assurer que le bon saut entre les états , En même temps, il n'y a pas de détection de chevauchement , Il faut donc être clair , Assurez - vous que lorsque des séquences se chevauchent , Pas de faux contrôles .

1.2 Mise en œuvre du générateur de séquences cycliques par déplacement

Exigences relatives au titre:
Le cycle produit la séquence suivante :0010_1101_11.


Résoudre le problème: Peut être réalisé en utilisant la machine d'état ,Mais pour simplifier les choses,, Ici, l'opération Shift est utilisée pour faire tourner la séquence

verilogComme suit:

module test(
    
    input clk,
    input rst_n,
	 input [9:0] in,
	 
    output reg out
);

    reg [9:0] out_r;
	 
//Shift
    [email protected](posedge clk or negedge rst_n) 
	     if(!rst_n)
		      out_r <= in;  //0010_1101_11

		  else 
		     
				out_r <= {
    out_r[8:0],out_r[9] };
 
// Sortie haut de gamme 		  
    [email protected](posedge clk or negedge rst_n) 
	     if(!rst_n)
		      out <= 0;
	
		  else 
		      out <= out_r[9];

endmodule

tbTests:

`timescale 1ns/1ns

module test_tb;

	 reg clk;
	 reg rst_n;
	 reg [9:0] in;

	 wire out ; //Test terminé



 test u1 (
    
	 .clk(clk),
	 .rst_n(rst_n),
	 .in(in),
	 .out(out)


);

initial clk = 0;
    always #1 clk = ~clk;

initial begin
    rst_n= 0;
	 in = 10'b0010_1101_11;
    #10;
    rst_n= 1;
	 #5; 

	 #50;

	 $stop;
end

endmodule

Simuler la forme d'onde:
Insérer la description de l'image ici

2、Fréquence maximale de fonctionnement et période minimale de fonctionnement

Insérer la description de l'image ici

Trouver le chemin critique du circuit .
Formule du cycle de fonctionnement minimal simultané :Tmin = Tco + Tcmob + Tsu - Tskew.
Cycle de fonctionnement minimal pour les circuits logiques combinés :Tmin = Tco + Tcmob + Tsu.

Dans cette question,Tco Délai de sortie du déclencheur , Pour le retard logique ici 6ns, Le délai de la logique combinatoire est l'onduleur INV2Délai2ns,Tsu Pour établir le temps 2ns.Il n'y a pas de considération iciINV1Retard, Parce que le retard du chemin critique est déclenché à partir de la source TcoCommence à compter..
Donc le cycle de fonctionnement minimal Tmin = 6 + 2 +2 = 10ns.
Fréquence maximale de fonctionnement = 1 / 10ns = 0.1 GHZ = 100 MHZ

Supplément:1ns = 10^-9 s
Insérer la description de l'image ici


3、Traitement à travers les champs d'horloge——Code grey

Dans les notes précédentes , Nous avons détaillé les signaux de poignée de main, etc. , Voici une introduction au Code gris dans le traitement de domaine d'horloge croisée .

Code grey: Ça pourrait être plus bit Transmission du signal à travers le domaine de l'horloge .

Titre de référence
Titre:
Insérer la description de l'image ici
La quatrième méthode de ce sujet n'est pas commune ,Je ne sais pas trop, Voir les explications dans d'autres blogs , Je vais analyser le troisième Code gris .


Code grey: Un seul chiffre entre deux codes adjacents est différent .
Code thermique unique: Un seul chiffre par Code est 1.

Pourquoi le Code gris peut - il être utilisé dans le traitement trans - Horloge ?

Parce que le Code gris n'a qu'une seule donnée adjacente bitC'est différent.,Donc,, Lors d'une transmission inter - Horloge , Seulement celui qui a changé bit Peut - être métastable ,Et le restebitReste le même., Donc stable , Ainsi, la transmission du Code gris Multi - bits à travers le domaine de l'horloge est équivalente à la transmission du signal monobit à travers le domaine de l'horloge ,Dans ce cas, Nous pouvons utiliser la synchronisation en deux étapes .

Mais dans ce titre 0-6Nombre de, Le code binaire et le Code gris correspondants sont les suivants: , Vous pouvez voir que la conversion ne correspond pas au problème 0-6Exigences,Donc, Pas de code gris
Insérer la description de l'image ici


4、Opération ping - pong

Ping - pongbuffer Peut augmenter le débit de données du système , Améliorer le parallélisme de traitement du système .(Question de jugement)——Exact.

5、Cycles d'horloge et temps d'établissement et de maintien

RÉFÉRENCESAnalyse des séries chronologiques statiques
AdhésionTskewRÉFÉRENCES

 Inhérent à l'ajout d'un décalage d'horloge /Ça marche. Temps d'établissement et de maintien

Pour les temps d'établissement suivants :
Insérer la description de l'image ici

T - Tco - Tsu - Tcomb > 0;
EtTcmob < T - Tco - Tsu
AdhésionTskew ,Et Tcomb - Tco - Tsu  < T+ Tskew

Pour les temps d'attente suivants :
Insérer la description de l'image ici

Tco+Tcomb - Th > 0
Tco+Tcomb > Th
AdhésionTskew ,Et Tco + Tcomb  > Th +  Tskew

Insérer la description de l'image ici Le dernier vrai .

1、 Décalage d'horloge non pris en compte :

(T-Tco-Tsu) >   Tcomb > (Th-Tco) , C'est - à - dire l'exigence d'un délai logique combiné .

Tcmob Retard logique combiné , Ce numéro comprend également les retards de routage .

2、 Considérez le décalage de l'horloge :

Selon la formule ci - dessus, nous pouvons obtenir la dérivation suivante: :
Insérer la description de l'image ici

5.1 Temps de récupération et de retrait

(1) Pour les horloges et les signaux de données ,AnalyseTsuEtTh

setupDate d'établissement: Avant l'arrivée d'un bord d'horloge valide , Les données doivent être stables pendant une période minimale ,En bref Tsu;

holdTemps de rétention: Après l'arrivée d'un bord d'horloge valide , Les données doivent être stables pendant une période minimale ,En bref Th;

(2) Pour l'horloge et le signal de Réinitialisation asynchrone ,Analyserecovery Temps de récupération et removal Supprimer le temps

recoveryTemps de récupération: Avant l'arrivée d'un bord d'horloge valide , Temps minimal pendant lequel le signal de Réinitialisation asynchrone reste stable ;

removal Supprimer le temps : Après l'arrivée d'un bord d'horloge valide , Temps minimal pendant lequel le signal de Réinitialisation asynchrone reste stable ;

6、Réduire les pertes de pointe etSRAMPerte dynamique

La consommation d'énergie de crête est la consommation d'énergie de court - circuit qui appartient à la consommation d'énergie dynamique ,C'est - à - dire:NMOSEtPMOS Courant de crête causé par la conduction simultanée , La consommation finale d'énergie . Cette consommation d'énergie et cette tension d'alimentation , Taux de rotation de l'horloge , Et le courant de crête . La perte de crête se produit généralement au moment où l'horloge tourne .
CMOS Consommation d'énergie du tube = Consommation dynamique d'énergie + Consommation d'énergie statique
Consommation d'énergie statique: Est la consommation d'énergie requise lorsque l'horloge ne fonctionne pas
Perte dynamique: Augmentation de la consommation d'énergie pendant le fonctionnement de l'appareil , Il est causé par le signal de commutation et la charge et la décharge de la charge Capacitive
Consommation dynamique d'énergie = Consommation d'énergie de la charge + Consommation d'énergie interne
Consommation d'énergie de la charge :Ça veut direCMOS Consommation d'énergie consommée par le tube pour charger et décharger le condensateur de charge pendant le retournement .
Consommation d'énergie interne:Ça veut direCMOS Pendant le retournement du tube , Consommation d'énergie pour charger et décharger les condensateurs de noeuds internes et consommation d'énergie pour le courant de court - circuit .


Titre1: Laquelle des mesures de consommation d'énergie suivantes peut réduire la consommation d'énergie de pointe ? ——A

A Niveau du module statique Clock Gating
B Memory Shut Down
C Power Gating
D Une augmentation substantielleHVTÉchelle

A: Comme la perte de crête se produit généralement au moment du retournement de l'horloge ,EtA L'option est d'ajouter la porte d'horloge , Éteignez l'horloge quand vous n'avez pas besoin de la tourner. .
B: Stockage fermé , Quand ils ne sont pas visités , Éteignez la mémoire , Appartient à la réduction de la consommation d'énergie statique .
C: Power Gate , C'est - à - dire lorsque le module ne fonctionne pas ,Éteignez le courant, Module sommeil , Redémarrer l'alimentation électrique pendant le fonctionnement , Il s'agit également de réduire la consommation d'énergie statique .
D: Transistors à haute tension de seuil , L'effet de l'augmentation de la tension seuil est de réduire le courant de fuite sous - seuil , Appartient à la réduction de la consommation d'énergie statique .
La question est controversée , La réponse est différente de deux points de vue ,Je pense queAExact., Sélectionnez ici temporairement A.

Titre2: Lequel des moyens suivants peut être abaissé SRAMConsommation dynamique d'énergie( ).(Grand JiangFPGA Poste logique BVol.)(Choix multiple)
A Pas de visiteSRAMHeure,Éteignez l'horloge
B Pas de visiteSRAMHeure, La ligne d'adresse ne tourne pas
C Pas de visiteSRAMHeure, Écrire des lignes de données sans basculer
D Pas de visiteSRAMHeure,Mets - le.Power down

D:Tout d'abord,SRAMDis, Il appartient à la mémoire statique à accès aléatoire , Statique signifie aussi longtemps que l'électricité est allumée , Les données peuvent être conservées , Quand l'électricité est coupée ,Perte de données.Donc,D L'option ne peut pas être utilisée comme moyen de réduire les pertes .

A: La principale variable qui affecte la consommation d'énergie dynamique est la charge du condensateur. 、 Tension de fonctionnement et fréquence de l'horloge .Donc, dansSRAM Quand ça ne marche pas , Éteignez les commandes SRAML'horloge de,SDRAM Les données ne sont pas perdues , Et peut réduire les pertes dynamiques .
BC:Pas de visiteSRAMHeure, Les lignes d'adresse et d'écriture ne sont pas retournées ,C'est l'équivalent d'une réduction deCMOS Retournement du tube , Cela réduit la perte dynamique .


7、Blocage et non - blocage

Détails sur le blocage et le non - blocage

La réponse0 2
Insérer la description de l'image ici
Les circuits correspondants peuvent être tracés directement ici pour une meilleure compréhension :
À gauche.:
Insérer la description de l'image ici

A droite:
Insérer la description de l'image ici

8、Écrire pour répondre à des exigences spécifiquestbDocuments d'essai

(1)Fréquence:100MHzL'horloge de
(2) Sensible à l'horloge 4Signal de largeur de bit, Limiter ce signal à 8À15 Randomisation dans la gamme de 16Une fois.

`timescale 1ns/1ps
module random1();
reg clk;
reg [3:0] out_rand; //Défini commeregType
 
initial begin
    clk  = 0;
always #5 clk = ~clk;

integer i;
 
initial begin
    for(i = 0;i < 16; i = i + 1) begin
        @(posedge clk) begin
            out_rand = 4'b1000+ {
    $random}%8;
        end
    end
end

endmodule

Pourquoiout_randDéfinitionregType?
Parce que le signal est généré par une fonction aléatoire , Mais c'est un signal d'entrée en soi ,IntbDans le dossier d'essai, Signal d'entrée personnalisé regType, Signal de sortie défini wireType.—— Ce problème vise simplement à générer des signaux d'entrée randomisés par des fonctions aléatoires , Donc C'est toujours regType.

Fonction aléatoire

Un petit supplément à la fonction aléatoire de ce problème :

{$random}%8 :Représentation 0 ~ 8 Nombre dans la plage
$random %8 :Représentation -8 ~ 8 Nombre dans la plage

9、Ligne d'adresse et bus de données pour la mémoire de calcul

À propos de la mémoire

(Grand Jiang2020 Chip Engineer AVol.,Choix unique)1- Oui.16K x 8Mémoire de bits, La somme de ses lignes d'adresse et de données est

A、46

B、17

C、48

D、22

Analyse:

Ligne d'adresse:16K = 1K * 16 = 1024* 16 = (2 ^10 )*(2^4) = 2^14,C'est - à - dire 14 Ligne d'adresse;

Ligne de données:8 Les données binaires nécessitent 8 Câble de données racine;Total des ressources nécessaires 22 Fil.——D


10、Circuit octadécimal

Le circuit suivant est donné ,Dessinez la forme d'onde, Et analyser la fonction du circuit .
Insérer la description de l'image ici

Le circuit est visible par quatre dichotomies DDéclencheur,Et unD Composition du déclencheur .A La connexion finale est réinitialisée , Sortie de Réinitialisation par défaut du déclencheur 0, Sinon, haut niveau 1.
La forme d'onde est la suivante:
Insérer la description de l'image ici

La sortie visible est une sortie octave .
PourYDis,C'est l'équivalent.ADétection, Le dernier déclencheur clkPourQ4Produits, Donc quand l'horloge a remonté , Peut être détecté AValeur de,Tant queA Assez longtemps pour un niveau élevé ,Y Peut produire des niveaux élevés ,Vous pouvez le voir sur la photo.,A Le temps de haut niveau doit être supérieur ou égal à 7Cycles d'horloge, Sinon, aucun niveau élevé n'est détecté , Et donc filtré comme un Burr , La fonction de ce circuit est donc un circuit de filtrage .

Les codes sont les suivants::

module test(
    
    input clk,
    input A,
    output reg Y
);


    reg Q1_n, Q2_n ,Q3_n, Q4;

// Quatre dichotomies DDéclencheur	 
    [email protected](posedge clk or negedge A) begin
        if(~A) begin 
            Q1_n <= 1'b1; end else begin Q1_n <= ~Q1_n; end end [email protected](posedge Q1_n or negedge A) begin if(~A) Q2_n <= 1'b1; 
        else 
		      Q2_n <= ~Q2_n;
    end
    [email protected](posedge Q2_n or negedge A) begin
        if(~A) 
		      Q3_n <= 1'b1; else Q3_n <= ~Q3_n; end [email protected](posedge Q3_n or negedge A) begin if(~A) Q4 <= 1'b0; 
        else 
		      Q4 <= ~Q4;
    end
//DDéclencheur	 
    [email protected](posedge Q4 or negedge A) begin
        if(~A) 
		      Y <= 1'b0;
        else 
		      Y <= A;
    end
    
endmodule

RTLComme suit:
Insérer la description de l'image ici
Simulation:

`timescale 1ns/1ns

module test_tb;

	 reg clk;
	 reg A;

	 wire Y ; //Test terminé



 test u1 (
    
	 .clk(clk),
	 .A(A),
	 .Y(Y)


);

initial clk = 0;
    always #1 clk = ~clk;

initial begin
    A= 0;
    #1;
    A= 1;
	 #14; 
	 A=0;
	 #2;
	 A=1;
	 #16;
	 $stop;
end


endmodule

Insérer la description de l'image ici
L'entrée de la forme d'onde est visible A, Haut niveau deux fois , Mais le premier niveau élevé n'a pas été détecté , Parce qu'il n'a pas de retard haut niveau supérieur ou égal à 7- Oui.clk, Et donc filtré ,Et la deuxième foisAPour les niveaux élevés, Le délai est égal à 7, C'est pour ça qu'on a détecté .

11、Ça marche. / Temps d'établissement inhérent et temps d'attente

Supposons que le temps de rétention effectif soit Tsetup_valid.
PourDDéclencheur, Quand elle a été créée Tsu = 2ns, C'est - à - dire que les données sont conservées jusqu'au bord effectif de l'horloge 2nsStabilité, Cela garantit que les entrées datatin Les données de DFin.
Parce que l'horloge vient de clock, Il y a aussi des retards d'horloge ,Etclk Plus tôt que le déclencheur Toffest=1nsArrivée.

Donc,, Compte tenu du retard de l'horloge , Obtenir un temps de rétention valide :Tsetup_valid = Tsu - Toffest = 1ns
.
Tenir compte de la latence du chemin des données ,Je l'ai. Tsetup_valid = Tsu - Toffest +Tcmob

Temps de rétention effectif Thold_valid C'est la même analyse .

Tenir compte de l'effet du retard de l'horloge :

Compte tenu du fait que l'horloge du circuit est antérieure à l'horloge de déclenchement Toffest = 1ns, Donc le temps de rétention effectif du circuit Thold_valid = Thold + Toffest ;
.
Tenir compte de l'effet de retard du chemin :

Les données doivent passer par une logique combinatoire pour rester stables , Le temps de rétention effectif du circuit est donc :

Thold_valid = Thold + Toffest - Tcmob


Titre:
T_offest Décalage de l'horloge , Calculer le temps d'établissement inhérent et le temps d'attente du circuit ci - dessous , Fréquence maximale du système .

Insérer la description de l'image ici
Temps d'établissement inhérent : Tsu - Toffest + Tcmob = 2ns - 1.2ns + 0.9ns + 1.2 ns = 2.9ns
Temps de rétention inhérent : Thold + Toffest - Tcmob = 1.5 + 1.2 - 0.9- 1.2 = 0.6ns
Cycle de fonctionnement minimal :Tmin = Tsu + Tcmob + Tco = 2ns + Tpd + 1.8ns = 5ns( Trouver un chemin critique entre les deux déclencheurs )
Fréquence maximale:1 / Tmin = 1/ 5ns = 200 Mhz

12、Calcul de l'erreur de localisation sans perte

Apprentissage détaillé et ciblé


Titre:(Grand Jiang2020 Ingénieur en développement de puces AVol.)
Insérer la description de l'image ici
Ce qui est important dans ce sujet, c'est la nécessité d'une localisation sans perte , Deux types de largeur de bit minimale sont donnés ,12Et13Bits, On peut commencer par 12 Vérification du calcul de l'erreur non destructive par bit , En cas d'erreur non destructive , Donc la largeur minimale du BIT est 12Bits. Selon les étapes que nous avons données ci - dessus, la largeur du BIT est 11 Calcul de l'erreur de quantification .

Résoudre le problèmeComme suit
Insérer la description de l'image ici

原网站

版权声明
本文为[Fixation Xh]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206110553469158.html