参考IEEE.Std.1149.6-2003.pdf
左侧是开了ac_control选项,右侧没有开,生成出来bscan interface模块的区别:
tessent tap | SNPS PHY信号 | 说明 |
---|---|---|
to_bscan_ac_mode_en | bs_acmode | 表示EXTEST_PULSE or EXTEST_TRAIN有效,处于BSCAN AC测试模式 |
to_bscan_ac_signal | bs_actest | 在JTAG IDLE状态,测试信号拉高(EXTEST_PULSE模式),测试信号按TCK周期翻转(EXTEST_TRAIN) |
to_bscan_ac_init_clock0 | bs_rx_init | |
to_bscan_ac_init_clock1 | ~to_bscan_ac_init_clock0 |
initclk
ac test signal, 只在RTI模式下数据才有效, pulse or train
ACMODE = EXTEST_TRAIN | EXTEST_PULSE; ac_signal = RTI & ACMODE; bscan_select = EXTEST_decoded | INTEST_decoded | EXTEST_PULSE_decoded | EXTEST_TRAIN_decoded | EXTEST_PRELOAD_decoded; ac_init_clk0 = ac_init_clk_EXTEST | ac_init_clk_EXTEST_TRAIN_OR_PULSE; ac_init_clk1 = ~ ac_init_clk0; ac_init_clk_EXTEST = SDR & bscan_select; ac_init_clk_EXTEST_TRAIN_OR_PULSE = (E1DR | E2DR) & ACMODE;
接收器在接收的时候分为DC Coupled和AC Coupled。
EXTEST测试时,在capture-DR状态,TCK下降沿,接收器给一个初始值
AC EXTEST测试时,在TCK上升沿,updata DR状态时前,接收器给一个初始值
接收器示范电路如下:
output driver不会太特殊
clockir = ((pstate == capture_IR) || (pstate == shift_IR)) ? tck : 1'b1; clockdr = ((pstate == capture_DR) || (pstate == shift_DR)) ? tck : 1'b1;
在capture状态capture数据,在shift状态,shift数据。
ref: bsda_ref.pdf
ref: bsda_ref.pdf
mode
个人觉得BC_3不会使用
mode
bc_2 control + bc_8
mode 1 | mode 2 | mode 3 | mode 4 | mode 5 | |
---|---|---|---|---|---|
EXTEST | 1 | 0 | 1 | 1 | 1 |
PRELOAD | 0 | 0 | 1 | X | 0 |
SAMPLE | 0 | 0 | 1 | 0 | 0 |
INTEST | 0 | 1 | 0 | 0 | 1 |
RUNBIST | X | X | 0 | X | 1 |
CLAMP | 1 | X | 1 | X | 1 |
HIGHZ | X | X | 0 | X | X |
NOTES: 1. EXTEST inluce EXTEST, EXTEST_PLUSE, EXTEST_TRAIN |
只sample采样 capture pin input & output值,而不能影响其input pin到内部逻辑值和output pin到PAD的状态。
主要用来更新update DR的值,这个值在后面的测试指令作用下,将会直接被驱动到output PAD脚;如果值没有初始化,将不确定输出的是什么值。
一般后面会再跟一个EXTEST指令,将PRELOAD初始化的值驱动到output PAD上。