|
@@ -189,6 +189,10 @@ module vjtag_max80
|
|
|
// SDR state.
|
|
|
reg [4:0] sdr_ctr;
|
|
|
|
|
|
+ wire [31:0] jtag_shr_in =
|
|
|
+ ir_cmd[3] ? { tdi_s : jtag_shr[31:1] } :
|
|
|
+ { 30'bx, tdi_s, jtag_shr[1] };
|
|
|
+
|
|
|
always @(posedge sys_clk)
|
|
|
begin
|
|
|
if ( ~rst_n )
|
|
@@ -199,12 +203,7 @@ module vjtag_max80
|
|
|
if ( tck_stb )
|
|
|
begin
|
|
|
if ( st_sdr_s )
|
|
|
- begin
|
|
|
- if ( ir_cmd[3] )
|
|
|
- jtag_shr <= { tdi_s, jtag_shr[31:1] };
|
|
|
- else
|
|
|
- jtag_shr <= { 30'bx, tdi_s, jtag_shr[1] };
|
|
|
- end
|
|
|
+ jtag_shr <= jtag_shr_in;
|
|
|
|
|
|
if ( st_cdr_s )
|
|
|
case ( ir_cmd )
|
|
@@ -251,7 +250,7 @@ module vjtag_max80
|
|
|
sdr_ctr <= 5'b0;
|
|
|
end
|
|
|
|
|
|
- if ( st_sdr_s | st_udr_s )
|
|
|
+ if ( st_sdr_s )
|
|
|
begin
|
|
|
sdr_ctr <= sdr_ctr + 1'b1;
|
|
|
|
|
@@ -265,7 +264,7 @@ module vjtag_max80
|
|
|
else
|
|
|
begin
|
|
|
// Write
|
|
|
- if ( jtag_shr == VJTAG_WRITE_PREFIX )
|
|
|
+ if ( jtag_shr_in == VJTAG_WRITE_PREFIX )
|
|
|
mem_header_done <= 1'b1;
|
|
|
sdr_ctr <= 5'b0;
|
|
|
end
|
|
@@ -301,7 +300,7 @@ module vjtag_max80
|
|
|
// Write
|
|
|
if ( &sdr_ctr )
|
|
|
begin
|
|
|
- mem_wdata <= jtag_shr;
|
|
|
+ mem_wdata <= jtag_shr_in;
|
|
|
mem_valid <= 1'b1;
|
|
|
mem_done <= 1'b0;
|
|
|
advance_mem_addr <= 1'b1;
|