1.3.2.2. 外部ホストを使用したEMRのアンロード
JTAGポートなどの外部ホストを使用してEMRの内容をアンロードするには、SHIFT_EDERROR_REG JTAG命令を使用します。このJTAG命令は、TDIピンとTDOピンの間のエラー検出ブロックのJTAGピンにEMRを接続します。CRC_ERRORがHighになればいつでもこの命令を実行することができます。
EMRの内容は、このレジスターが次のCRCエラー情報によって上書きされる前にアンロードする必要があります。
次の例は、EMRの内容をアンロードするSHIFT_EDERROR_REG JTAG命令の実行に使用される.jam™ STAPL (Standard Test and Programming Language) 形式ファイル (Jam) を示しています。
Arria® II、 Stratix® III、および Stratix® IVデバイスにおいてEMRの内容をアンロードする.jamファイルの例
ACTION UNLOAD_EMR = EXECUTE;
DATA EMR_DATA;
BOOLEAN out[46];
BOOLEAN in[46]=$3FFFFFFFFFFF;
ENDDATA;
PROCEDURE EXECUTE USES EMR_DATA;
DRSTOP IDLE;
IRSTOP IDLE;
STATE IDLE;
IRSCAN 10, $017;
WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
DRSCAN 46, in[45..0], CAPTURE out[45..0];
WAIT IDLE, 10 CYCLES, 25 USEC, IDLE;
PRINT " ";
PRINT "Data read out from the EMR Register: ", out[45], out[44], out[43], out[42], out[41], out[40], out[39], out[38], out[37], out[36], out[35], out[34], out[33], out[32], out[31], out[30]," ", out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], out[20], out[19], out[18], out[17], out[16]," ", out[15], out[14], out[13], out[12], out[11], out[10], out[9], out[8], out[7], out[6], out[5]," ", out[4], out[3], out[2]," ", out[1], out[0];
PRINT " ";
PRINT "Syndrome:", out[45], out[44], out[43], out[42], out[41], out[40], out[39], out[38], out[37], out[36], out[35], out[34], out[33], out[32], out[31], out[30];
PRINT "Frame Address:", out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], out[20], out[19], out[18], out[17], out[16];
PRINT "Byte Location:", out[15], out[14], out[13], out[12], out[11], out[10], out[9], out[8], out[7], out[6], out[5];
PRINT "Bit Location:", out[4], out[3], out[2];
PRINT "Error Type:", out[1], out[0];
STATE IDLE;
EXIT 0;
ENDPROC;
Arria® V、 Cyclone® V、および Stratix® VデバイスにおいてEMRの内容をアンロードする.jamファイルの例
ACTION UNLOAD_EMR = EXECUTE;
DATA EMR_DATA;
BOOLEAN out[67];
BOOLEAN in[67]=$7FFFFFFFFFFFFFFFF;
INTEGER i;
ENDDATA;
PROCEDURE EXECUTE USES EMR_DATA;
DRSTOP IDLE;
IRSTOP IDLE;
STATE IDLE;
IRSCAN 10, $017;
WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
DRSCAN 67, in[66..0], CAPTURE out[66..0];
WAIT IDLE, 10 CYCLES, 25 USEC, IDLE;
PRINT " ";
PRINT "Data read out from the ";
PRINT "EMR_Register ::", out[66], out[65], out[64], out[63], out[62], out[61], out[60], out[59], out[58], out[57], out[56], out[55], out[54], out[53], out[52], out[51], out[50], out[49], out[48], out[47], out[46], out[45], out[44], out[43], out[42], out[41], out[40], out[39], out[38], out[37], out[36], out[35]," ", out[34], out[33], out[32], out[31], out[30], out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], out[20], out[19]," ", out[18], out[17], out[16], out[15], out[14], out[13], out[12], out[11], out[10], out[9]," ", out[8], out[7]," ", out[6], out[5], out[4]," ", out[3], out[2], out[1], out[0];
'PRINT " ";
PRINT "Syndrome ::", out[66], out[65], out[64], out[63], out[62], out[61], out[60], out[59], out[58], out[57], out[56], out[55], out[54], out[53], out[52], out[51], out[50], out[49], out[48], out[47], out[46], out[45], out[44], out[43], out[42], out[41], out[40], out[39], out[38], out[37], out[36], out[35];
PRINT "Frame Address ::", out[34], out[33], out[32], out[31], out[30], out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], out[20], out[19];
PRINT "Double Word Location ::", out[18], out[17], out[16], out[15], out[14], out[13], out[12], out[11], out[10], out[9];
PRINT "Byte Offset ::", out[8], out[7];
PRINT "Bit Offset ::", out[6], out[5], out[4];
PRINT "Error Type ::", out[3], out[2], out[1], out[0];
STATE IDLE;
EXIT 0;
ENDPROC;