1056968 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

緑のボタンを押せ! Press the green button

緑のボタンを押せ! Press the green button

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Category

Keyword Search

▼キーワード検索

Archives

2024.04
2024.03
2024.02
2024.01
2023.12

Comments

 effelpist@ kilovermek.es effelpist &lt;a href=&quot; <small> <a href="http…
 Jun@ Re:「いっちゅう」さんのiEPG用ソフト入れてみた(09/15) TVdeIEPG Ver.1.2.1.0がリンク切れしてい…
 スター@ Re:hauppauge HD PVR 速報(08/25) スタービーチ <small> <a href="http://c…
 ASOBO@ Re:hauppauge HD PVR 速報 ASOBO攻略 <small> <a href="http:/…
 ハッピーメール@ Re:hauppauge HD PVR 速報 ハッピーメール <small> <a href="http:/…

Freepage List

Favorite Blog

まだ登録されていません
2007.11.03
XML
テーマ:電子工作(533)
カテゴリ:電子工作

では、前回の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






お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.11.03 08:46:35
コメント(0) | コメントを書く



© Rakuten Group, Inc.