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