| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -124,7 +124,6 @@ begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    -- We always move WB cyc and stb simultaneously (no pipelining yet...)
 | 
					 | 
					 | 
					 | 
					    -- We always move WB cyc and stb simultaneously (no pipelining yet...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    wb_out.cyc <= '1' when state = WB_CYCLE else '0';
 | 
					 | 
					 | 
					 | 
					    wb_out.cyc <= '1' when state = WB_CYCLE else '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    wb_out.stb <= '1' when state = WB_CYCLE else '0';
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 
 | 
					 | 
					 | 
					 | 
					
 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    -- Data latch. WB will take the read data away as soon as the cycle
 | 
					 | 
					 | 
					 | 
					    -- Data latch. WB will take the read data away as soon as the cycle
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    -- terminates but we must maintain it on DMI until req goes down, so
 | 
					 | 
					 | 
					 | 
					    -- terminates but we must maintain it on DMI until req goes down, so
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -145,14 +144,23 @@ begin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if rising_edge(clk) then
 | 
					 | 
					 | 
					 | 
						if rising_edge(clk) then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    if (rst) then
 | 
					 | 
					 | 
					 | 
						    if (rst) then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							state <= IDLE;
 | 
					 | 
					 | 
					 | 
							state <= IDLE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							wb_out.stb <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						    else
 | 
					 | 
					 | 
					 | 
						    else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							case state is
 | 
					 | 
					 | 
					 | 
							case state is
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							when IDLE =>
 | 
					 | 
					 | 
					 | 
							when IDLE =>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    if dmi_req = '1' and dmi_addr = DBG_WB_DATA then
 | 
					 | 
					 | 
					 | 
							    if dmi_req = '1' and dmi_addr = DBG_WB_DATA then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								state <= WB_CYCLE;
 | 
					 | 
					 | 
					 | 
								state <= WB_CYCLE;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								wb_out.stb <= '1';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    end if;
 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							when WB_CYCLE =>
 | 
					 | 
					 | 
					 | 
							when WB_CYCLE =>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							    if wb_in.stall = '0' then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								wb_out.stb <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    if wb_in.ack then
 | 
					 | 
					 | 
					 | 
							    if wb_in.ack then
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								-- We shouldn't get the ack if we hadn't already cleared
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								-- stb above but if this happen, don't leave it dangling.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								--
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								wb_out.stb <= '0';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								state <= DMI_WAIT;
 | 
					 | 
					 | 
					 | 
								state <= DMI_WAIT;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    end if;
 | 
					 | 
					 | 
					 | 
							    end if;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							when DMI_WAIT =>
 | 
					 | 
					 | 
					 | 
							when DMI_WAIT =>
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |