XADCをJTAGで制御する(4)
2024/05/27 | ||
[Prev] [Next] [Top] , Digital Design [Prev] [Next] [Digital Design Top] | ||
Analog入力(design.txt)の作成
TIME VAUXP[0] VAUXN[0] VAUXP[1] VAUXN[1] 0 0.5000 0.0000 1.0000 0.0000 8000 0.6243 0.0000 0.9961 0.0000 16000 0.7409 0.0000 0.9843 0.0000 ... テストベンチの作成と実行
initial begin // 信号入力初期設定 #(0) tb_RESET=1'bx; tb_DEN =1'bx; tb_DWE=1'bx; cycles=1; // RESET→DEN,DWE入力確定→RESET解除 #(CYC*1) cycles=cycles+1; tb_RESET=1'b1; #(CYC*1) cycles=cycles+1; tb_DEN=1'b0; tb_DWE=1'b0; #(CYC*1) cycles=cycles+1; tb_RESET=1'b0; // 観測対象チャンネル設定: VAUXP/N[1:0] #(CYC*1) cycles=cycles+1; DADDR=7'h49; DI=16'b0000_0000_0000_0011; #(CYC*1) cycles=cycles+1; tb_DEN=1'b1; tb_DWE=1'b1; #(CYC*1) cycles=cycles+1; tb_DEN=1'b0; tb_DWE=1'b0; // サンプリングモード設定:連続シーケンス:AD変換開始 #(CYC*1) cycles=cycles+1; DADDR=7'h41; DI=16'b0010_0000_0000_0000; #(CYC*1) cycles=cycles+1; tb_DEN=1'b1; tb_DWE=1'b1; #(CYC*1) cycles=cycles+1; tb_DEN=1'b0; tb_DWE=1'b0; // 最初のAD変換が終わるまで待ち(デフォルトだと7〜8[us]程度) for (i=0; i<8; i=i+1) begin #(CYC*1) cycles=cycles+1; end // AD変換結果観測 $display("#TIME[ps]\t#DADDR[0]\t#DO[dec]"); for (i=0; i<100; i=i+1) begin #(CYC*1) cycles=cycles+1; DADDR=7'h10; // VAUXP/N[0] #(CYC*1) cycles=cycles+1; tb_DEN=1'b1; #(CYC*1) cycles=cycles+1; #(CYC*1) cycles=cycles+1; tb_DEN=1'b0; $display("%0t\t%b\t%d",$stime, DADDR[0], DO); #(CYC*1) cycles=cycles+1; DADDR=7'h11; // VAUXP/N[1] #(CYC*1) cycles=cycles+1; tb_DEN=1'b1; #(CYC*1) cycles=cycles+1; #(CYC*1) cycles=cycles+1; tb_DEN=1'b0; $display("%0t\t%b\t%d",$stime, DADDR[0], DO); end // Simulation終了 #(CYC*1) cycles=cycles+1; $finish; end
Figure 2: 最初の変換シーケンスが終了するまで Figure 3: AD変換値の繰り返し読み込み 変換結果の取り込み
VCD info: dumpfile wave.vcd opened for output. #TIME[ps] #DADDR[0] #DO[dec] 21000000 0 40914 25000000 1 64507 29000000 0 48555 33000000 1 63235 ... | ||
Copyright(C) 2024 Altmo
本HPについて | ||
[Prev] [Next] [Top] , Digital Design [Prev] [Next] [Digital Design Top] |