Skip to content
Tiantan
Articles

Verilog-Code für Frequenzteiler

On Februar 17, 2021 by admin

Können Sie mir bitte helfen, wie Sie einen Verilog-Code für Frequenzteilerschaltungen erstellen, der 50 Hz Taktsignal aus 50 MHz Signal unter Verwendung von 16-Bit Synchronzähler. Ich habe versucht, es zu tun, aber es hat nicht funktioniert!

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]; 

Kommentare

  • Verwenden 16 Bit von was?
  • Und was haben Sie versucht? Könnten Sie Ihren Code posten?
  • 16-Bit-Synchronzähler
  • Können Sie zwei davon verwenden?
  • Gut. Dann zuerst durch 1000 teilen, dann durch weitere 1000 teilen.

Antwort

Leider reichen 16 Bit nicht aus, um ein 50-MHz-Signal in ein 50-Hz-Signal umzuwandeln. Dies liegt daran, dass Sie den Takt durch 1 Million teilen müssen. $$ 2 ^ {16} = 65536 $$ Daher reicht es bei weitem nicht aus. A. Ein Zähler mit mindestens 20 Bits würde ausreichen, weil: $$ 2 ^ {20} = 1048576 $$

Um das Signal umzuwandeln, zählen Sie einfach auf 1 Million Taktzyklen und ändern dann den Status des Ausgangssignals

Beispiel:

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

Bearbeiten: Es stellt sich heraus, dass ^^ zu einem 25-Hz-Signal führen würde, also müssen Sie nur zählen bis 500000, was 19 Bit benötigt. Die Frage ist dann, wo Das 20. Bit kommt von dem Sehen, dass Sie durch 1 Million teilen müssen. Nun, das clk_out-Bit dient als das 20. Bit.

Kommentare

  • Eine andere Lösung besteht darin, mehrere dieser 16-Bit-Zähler zu verwenden. Sie würden mindestens 16 davon benötigen (16 * 65536 = 2 ² ⁰ = 1048576)
  • Ich habe möglicherweise einen Fehler gemacht, ich denke, meine Lösung würde dazu führen in 25Hz?
  • Sie würden nur zwei benötigen, das würde Ihnen 32 Bit geben
  • @Makoto Ja, Sie müssen bis 500_000 zählen, und zweitens – höchstwahrscheinlich wird es eine Warnung geben Ich denke, Sie haben clk_out <= !clk_out gemeint.
  • yep wird es ändern

Written by admin

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Neueste Beiträge

  • Mit einem Balun mit einem resonanten Dipol
  • Was ist der Unterschied zwischen “ kann nicht ” und “ kann nicht ”? [duplizieren]
  • Können Sie bei JFK auf Inlandsflügen zwischen den Terminals auf der Luftseite wechseln?
  • “ Sehr geschätzt ” oder “ sehr geschätzt ”
  • Was bedeutet ' abstrakte Ideen '? [geschlossen]

Archive

  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 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