Skip to content
Tiantan
Articles

Code Verilog pour le diviseur de fréquence

On février 17, 2021 by admin

Pouvez-vous maider sil vous plaît sur la façon de créer un code Verilog pour le circuit diviseur de fréquence qui peut générer 50Hz signal dhorloge sur 50MHz signal utilisant 16 bits compteur synchrone. Jai essayé de le faire, mais cela na pas fonctionné!

module divier_16 (clk_in, clk_out); input clk_in; wire w; wire [0:15]temp; output clk_out; count_16 c1 (clk_in, w); count_16 c2 (w, temp); assign clk_out= temp[6]; 

Commentaires

  • Utilisation 16 bits de quoi?
  • Et quavez-vous essayé? Pourriez-vous publier votre code?
  • Compteur synchrone 16 bits
  • Pouvez-vous en utiliser deux?
  • Bien. Ensuite, divisez dabord par 1 000, puis par 1 000 supplémentaires.

Réponse

Malheureusement, 16 bits ne suffisent pas pour convertir un signal de 50 MHz en un signal de 50 Hz. Cest parce que vous devez diviser lhorloge par 1 million. $$ 2 ^ {16} = 65536 $$ Par conséquent, ce nest pas assez. A un compteur dau moins 20 bits serait suffisant car: $$ 2 ^ {20} = 1048576 $$

Pour convertir le signal, il suffit de compter 1 million de cycles dhorloge, puis de changer létat du signal de sortie .

exemple:

always @(posedge clk_in) begin count_20 <= count_20 + 1; if(count_20 == 1000000) begin count<=0; clk_out <= !clk_out; end end 

Edit: Il savère que ^^ résulterait en un signal à 25 Hz, il vous suffit donc de compter jusquà 500 000, ce qui nécessite 19 bits. La question est alors de savoir où ce 20e bit vient du fait que vous devez diviser par 1 million. Eh bien, le bit clk_out sert de ce 20e bit.

Commentaires

  • une autre solution est dutiliser plusieurs de ces compteurs 16 bits. vous auriez besoin dau moins 16 dentre eux (16 * 65536 = 2 ² ⁰ = 1048576)
  • Jai peut-être fait une erreur, je pense que ma solution en résulterait en 25Hz?
  • vous nen auriez besoin que de deux, cela vous donnerait 32 bits
  • @Makoto oui, vous devez compter jusquà 500_000, et deuxièmement – il y aura probablement un avertissement concernant en utilisant un type daffectation différent pour toujours construire, je pense que vous vouliez dire clk_out <= !clk_out;
  • oui le changera

Written by admin

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents

  • En utilisant un balun avec un dipôle résonnant
  • Quelle est la différence entre “ ne peut pas ” et “ ne peut pas ”? [dupliquer]
  • “ Profondément apprécié ” ou “ très apprécié ”
  • Que signifie ' idées abstraites '? [fermé]
  • Pourquoi ' t je ne devrais pas utiliser le cryptage ECB?

Archives

  • février 2021
  • janvier 2021
  • décembre 2020
  • novembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top