HDL et vérification

Comment la description ci-dessus est-elle généralement traitée lors de la synthèse logique pour FPGA ?

reg [7:0] mem [0:255];
always @(posedge clk) begin
    if (we) mem[addr] <= din;
    dout <= mem[addr];
end
  1. AElle n'est pas synthétisable et provoque une erreur
  2. BElle donne 256 additionneurs indépendants
  3. CElle est inférée comme une mémoire de 8 bits × 256 mots et affectée à la RAM bloc intégrée du FPGA
Afficher la réponse et l'explication

Réponse : C. Elle est inférée comme une mémoire de 8 bits × 256 mots et affectée à la RAM bloc intégrée du FPGA

Lorsqu'un tableau de reg est écrit sous la forme convenue, avec écriture et lecture synchronisées sur l'horloge, l'outil de synthèse logique le reconnaît (l'infère) comme une mémoire et l'affecte à la RAM bloc du FPGA ou aux composants mémoire d'un ASIC. Synchroniser aussi la lecture sur l'horloge est l'astuce pour correspondre à la RAM bloc ; une écriture à lecture asynchrone peut être réalisée avec de nombreuses bascules ou un autre type de mémoire.

S'entraîner sur ce thème Retour au thème

Autres questions sur HDL et vérification

  1. Pour un circuit combinatoire, quelle comparaison est correcte entre une longue chaîne de if/else if et une instruction case à conditions mutuellement exclusives ?
  2. Quelle est la différence entre les opérateurs d'égalité « == » et « === » en Verilog ?
  3. Quelle est la grande différence entre une description en HDL comme Verilog et un programme logiciel en C ou autre ?
  4. Quel est l'objectif de l'utilisation de module en Verilog ?
  5. Quelle est la différence entre les types wire et reg en Verilog ?

Comparatifs sur ce thème