Changeset 9779

Show
Ignore:
Timestamp:
10/11/08 17:04:06
Author:
matt
Message:

New serdes status interrupt, clk_status interrupt. New capability to flush the ICache.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gnuradio/trunk/usrp2/firmware/lib/memory_map.h

    r9634 r9779  
    355355  volatile uint32_t     debug_mux_ctrl; 
    356356  volatile uint32_t     ram_page;       // FIXME should go somewhere else... 
     357  volatile uint32_t     flush_icache;   // Flush the icache 
    357358} output_regs_t; 
    358359 
     
    483484#define IRQ_UART_RX     8 
    484485#define IRQ_UART_TX     9 
     486#define IRQ_SERDES      10 
     487#define IRQ_CLKSTATUS   11 
    485488 
    486489#define IRQ_TO_MASK(x) (1 << (x)) 
     
    496499#define PIC_UART_RX_INT   IRQ_TO_MASK(IRQ_UART_RX) 
    497500#define PIC_UART_TX_INT   IRQ_TO_MASK(IRQ_UART_TX) 
    498  
     501#define PIC_SERDES        IRQ_TO_MASK(IRQ_SERDES) 
     502#define PIC_CLKSTATUS     IRQ_TO_MASK(IRQ_CLKSTATUS) 
    499503 
    500504typedef struct { 
  • gnuradio/trunk/usrp2/fpga/control_lib/icache.v

    r9528 r9779  
    1212     input [31:0] iram_dat_i, 
    1313     output [AWIDTH-1:0] iram_adr_o, 
    14      output iram_en_o ); 
     14     output iram_en_o, 
     15     input flush); 
    1516 
    1617   localparam TAGWIDTH = AWIDTH-CWIDTH-2; 
     
    2930   integer            i; 
    3031   always @(posedge wb_clk_i) 
    31      if(wb_rst_i
     32     if(wb_rst_i | flush
    3233       for(i=0;i<(1<<CWIDTH);i=i+1) 
    3334         ivalid[i] <= 0; 
  • gnuradio/trunk/usrp2/fpga/control_lib/ram_harv_cache.v

    r9528 r9779  
    2626     output dwb_ack_o, 
    2727     input dwb_stb_i, 
    28      input [3:0] dwb_sel_i ); 
     28     input [3:0] dwb_sel_i, 
     29 
     30     input flush_icache ); 
    2931 
    3032   wire [31:0]   iram_dat, dram_dat_i, dram_dat_o; 
     
    6163            .iwb_adr_i(iwb_adr_i),.iwb_stb_i(iwb_stb_i), 
    6264            .iwb_dat_o(iwb_dat_o),.iwb_ack_o(iwb_ack_o), 
    63             .iram_dat_i(iram_dat),.iram_adr_o(iram_adr),.iram_en_o(iram_en) ); 
     65            .iram_dat_i(iram_dat),.iram_adr_o(iram_adr),.iram_en_o(iram_en), 
     66            .flush(flush_icache)); 
    6467 
    6568   // RAM loader 
  • gnuradio/trunk/usrp2/fpga/top/u2_core/u2_core.v

    r9746 r9779  
    284284   // I-port connects directly to processor and ram loader 
    285285 
     286   wire          flush_icache; 
    286287   ram_harv_cache #(.AWIDTH(15),.RAM_SIZE(RAM_SIZE),.ICWIDTH(7),.DCWIDTH(6)) 
    287288     sys_ram(.wb_clk_i(wb_clk),.wb_rst_i(wb_rst), 
     
    296297              
    297298             .dwb_adr_i(s0_adr[14:0]), .dwb_dat_i(s0_dat_o), .dwb_dat_o(s0_dat_i), 
    298              .dwb_we_i(s0_we), .dwb_ack_o(s0_ack), .dwb_stb_i(s0_stb), .dwb_sel_i(s0_sel)); 
     299             .dwb_we_i(s0_we), .dwb_ack_o(s0_ack), .dwb_stb_i(s0_stb), .dwb_sel_i(s0_sel), 
     300             .flush_icache(flush_icache)); 
    299301    
    300302   assign        s0_err = 1'b0; 
    301303   assign        s0_rty = 1'b0; 
     304 
     305   setting_reg #(.my_addr(7)) sr_icache (.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr), 
     306                                         .in(set_data),.out(),.changed(flush_icache)); 
    302307 
    303308   // Buffer Pool, slave #1 
     
    389394      .word00(status_b0),.word01(status_b1),.word02(status_b2),.word03(status_b3), 
    390395      .word04(status_b4),.word05(status_b5),.word06(status_b6),.word07(status_b7), 
    391       .word08(status),.word09({sim_mode,27'b0,clock_divider[3:0]}),.word10({30'b0,clk_func,clk_status}), 
     396      .word08(status),.word09({sim_mode,27'b0,clock_divider[3:0]}),.word10(32'b0), 
    392397      .word11(32'b0),.word12(32'b0),.word13(32'b0),.word14(32'b0),.word15(32'b0) 
    393398      ); 
     
    480485   // Interrupt Controller, Slave #8 
    481486 
    482    wire [15:0]   irq={{5'b0, serdes_link_up, uart_tx_int, uart_rx_int}, 
     487   wire [15:0]   irq={{4'b0, clk_status, serdes_link_up, uart_tx_int, uart_rx_int}, 
    483488                      {pps_int,overrun,underrun,PHY_INTn,i2c_int,spi_int,timer_int,buffer_int}}; 
    484489    
  • gnuradio/trunk/usrp2/fpga/top/u2_rev3/Makefile

    r9746 r9779  
    6363control_lib/decoder_3_8.v \ 
    6464control_lib/dpram32.v \ 
    65 control_lib/extram_interface.v \ 
    6665control_lib/fifo_2clock.v \ 
    6766control_lib/fifo_2clock_casc.v \