| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -49,6 +49,7 @@ architecture behaviour of wishbone_debug_master is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					    
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    type state_t is (IDLE, WB_CYCLE, DMI_WAIT);
 | 
					 | 
					 | 
					 | 
					    type state_t is (IDLE, WB_CYCLE, DMI_WAIT);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    signal state : state_t;
 | 
					 | 
					 | 
					 | 
					    signal state : state_t;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    signal do_inc : std_ulogic;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					begin
 | 
					 | 
					 | 
					 | 
					begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -84,16 +85,16 @@ begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							reg_addr <= (others => '0');
 | 
					 | 
					 | 
					 | 
							reg_addr <= (others => '0');
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							reg_ctrl <= (others => '0');
 | 
					 | 
					 | 
					 | 
							reg_ctrl <= (others => '0');
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    else 	    -- Standard register writes
 | 
					 | 
					 | 
					 | 
						    else 	    -- Standard register writes
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if dmi_req and dmi_wr then
 | 
					 | 
					 | 
					 | 
					                if do_inc = '1' then
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							    -- Address register auto-increment
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							    reg_addr <= std_ulogic_vector(unsigned(reg_addr) +
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											  decode_autoinc(reg_ctrl(10 downto 9)));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                elsif dmi_req and dmi_wr then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    if dmi_addr = DBG_WB_ADDR then
 | 
					 | 
					 | 
					 | 
							    if dmi_addr = DBG_WB_ADDR then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								reg_addr <= dmi_din;
 | 
					 | 
					 | 
					 | 
								reg_addr <= dmi_din;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    elsif dmi_addr = DBG_WB_CTRL then
 | 
					 | 
					 | 
					 | 
							    elsif dmi_addr = DBG_WB_CTRL then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								reg_ctrl <= dmi_din(10 downto 0);
 | 
					 | 
					 | 
					 | 
								reg_ctrl <= dmi_din(10 downto 0);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    end if;
 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                elsif state = WB_CYCLE and (wb_in.ack and reg_ctrl(8))= '1'  then
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    -- Address register auto-increment
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    reg_addr <= std_ulogic_vector(unsigned(reg_addr) +
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											  decode_autoinc(reg_ctrl(10 downto 9)));
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end if;
 | 
					 | 
					 | 
					 | 
							end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    end if;
 | 
					 | 
					 | 
					 | 
						    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end if;
 | 
					 | 
					 | 
					 | 
						end if;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -145,6 +146,7 @@ begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    if (rst) then
 | 
					 | 
					 | 
					 | 
						    if (rst) then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							state <= IDLE;
 | 
					 | 
					 | 
					 | 
							state <= IDLE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							wb_out.stb <= '0';
 | 
					 | 
					 | 
					 | 
							wb_out.stb <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                do_inc <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    else
 | 
					 | 
					 | 
					 | 
						    else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							case state is
 | 
					 | 
					 | 
					 | 
							case state is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							when IDLE =>
 | 
					 | 
					 | 
					 | 
							when IDLE =>
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -162,11 +164,13 @@ begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								--
 | 
					 | 
					 | 
					 | 
								--
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								wb_out.stb <= '0';
 | 
					 | 
					 | 
					 | 
								wb_out.stb <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								state <= DMI_WAIT;
 | 
					 | 
					 | 
					 | 
								state <= DMI_WAIT;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        do_inc <= reg_ctrl(8);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    end if;
 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							when DMI_WAIT =>
 | 
					 | 
					 | 
					 | 
							when DMI_WAIT =>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    if dmi_req = '0' then
 | 
					 | 
					 | 
					 | 
							    if dmi_req = '0' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								state <= IDLE;
 | 
					 | 
					 | 
					 | 
								state <= IDLE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    end if;
 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    do_inc <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							end case;
 | 
					 | 
					 | 
					 | 
							end case;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    end if;
 | 
					 | 
					 | 
					 | 
						    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						end if;
 | 
					 | 
					 | 
					 | 
						end if;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |