Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

VerlogでA/Dコンバータ、その2

では、前回のA/Dコンバータを動かしてみることにします。デシメーションフィルタですが、マジにつくるのはメンドウなので、簡易的に一定期間内にHのパルスの数を数えることでいいことにしました。入力の信号は、とりあえず正弦波ですかね。Verilogはこの辺はまったく弱いので本来は自分で作らなければなりません。CORDICアルゴリズムとかでやるのでしょうが、せっかくVeritakには独自の拡張で、超越関数が使えるのでこれを使ってみることにします。

シミュレーションには、さすがに時間がかかります。我が家の最速マシン(Core2Duo E6600)でも、5分近くかかります。一般的にVerilogシミュレータはマルチCPUの恩恵を受けることができません(Veritakも例外ではありません)ので、デュアルコアのCPUでいいのは、WindowsのGUIが固まらないこと位でしょうか(笑)。
脱線しました。結果は何気にさりげにいい感じですね。信号digital_oをみると粗密波となっているのがわかります。
SIN

---
本日の御託
そりゃ、「大連立」はないだろ・・・いくらなんでも。

     1  `include "analog.h"
     2  `timescale 1ns/1ns
     3  `define PAI (3.141592)
     4  module top ;
     5 
     6      reg clk;
     7      wire `ANALOG analog ;
     8      wire digital ;
     9      real a, sin_ ,phase = 0;
    10 
    11      always@ *
    12          sin_ = $sin(phase) ;
    13      assign analog = $realtobits( sin_ ) ;
    14 
    15      sigma_delta_adc U_sigma_delta_adc(
    16          .clk_i( clk) ,
    17          .analog_i( analog) ,
    18          .digital_o( digital)
    19      ) ;
    20 
    21      initial begin
    22          clk = 0 ;
    23          forever begin
    24              # 1000 clk = ~ clk ;
    25          end
    26      end
    27 
    28      integer i, c , dd ;
    29 
    30      initial begin
    31          dd = 0 ;
    32          forever begin
    33              c = 0 ;
    34              for( i = 0 ; i <= 255 ; i = i+1 ) begin
    35                  @(posedge clk)
    36                      if( digital == 1'b1 ) begin
    37                          c = c + 1 ;
    38                      end
    39              end
    40              dd = c ;
    41          end
    42      end // initial
    43 
    44      always@( posedge clk) begin
    45          if( i == 255 ) begin
    46              phase = phase + 0.0005 * 256 ;
    47          end
    48      end
    49 
    50      initial begin
    51          #30_000_000 $finish ;
    52      end
    53  endmodule



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/406-77dd8e40
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。