reg n_ufm_enabled;
wire ufm_repeated_read;
wire ufm_repeated_write;
+
+
reg [7:0] wb_dat_i ;
reg wb_stb_i ;
reg [4:0] n_count;
reg n_ufm_addr_MSB;
+ wire [7:0] cmd_read;
+ wire [7:0] cmd_erase;
+ wire [7:0] cmd_program;
+ wire [12:0] real_address;
+
+
PUR PUR_INST (.PUR(1'b1));
GSR GSR_INST (.GSR(1'b1));
`define CMD_CFG_ERASE 8'h0E
`define CMD_CFG_PROGRAM 8'h70
-
+ assign cmd_read = ((ufm_page >= 13'b1110000000000)? CMD_UFM_READ : CMD_CFG_READ ;
+ assign cmd_erase = ((ufm_page >= 13'b1110000000000)? CMD_UFM_ERASE : CMD_CFG_ERASE ;
+ assign cmd_program = ((ufm_page >= 13'b1110000000000)? CMD_UFM_PROGRAM : CMD_CFG_PROGRAM ;
+ assign real_address= ((ufm_page >= 13'b1110000000000)? (ufm_page xor 13'b1110000000000) : ufm_page ;
always @ (posedge clk_i or negedge rst_n) // generate clk enable and write enable signals for port A of the DPRAM
n_wb_we_i = `WRITE;
n_efb_flag = 1'b1 ;
n_wb_adr_i = `CFGTXDR;
- n_wb_dat_i = CMD_UFM_ERASE;
+ n_wb_dat_i = cmd_erase;
n_wb_stb_i = `HIGH ;
end
end
n_efb_flag = `HIGH ;
n_wb_we_i = `WRITE;
n_wb_adr_i = `CFGTXDR;
- n_wb_dat_i = {5'b000,ufm_page[12:8]};
+ n_wb_dat_i = {5'b000,real_address[12:8]};
n_wb_stb_i = `HIGH ;
end
end
n_efb_flag = `HIGH ;
n_wb_we_i = `WRITE;
n_wb_adr_i = `CFGTXDR;
- n_wb_dat_i = ufm_page[7:0];
+ n_wb_dat_i = real_address[7:0];
n_wb_stb_i = `HIGH ;
end
end
n_efb_flag = `HIGH ;
n_wb_we_i = `WRITE;
n_wb_adr_i = `CFGTXDR;
- n_wb_dat_i = CMD_UFM_READ;
+ n_wb_dat_i = cmd_read;
n_wb_stb_i = `HIGH ;
end
end
n_efb_flag = `HIGH ;
n_wb_we_i = `WRITE;
n_wb_adr_i = `CFGTXDR;
- n_wb_dat_i = CMD_UFM_PROGRAM;
+ n_wb_dat_i = cmd_program;
n_wb_stb_i = `HIGH ;
end
end
entity panda_dirc_wasa is
generic(
- PADIWA_FLAVOUR : integer := 3
+ PADIWA_FLAVOUR : integer := 2
);
port(
CON : out std_logic_vector(16 downto 1);
---------------------------------------------------------------------------
-- RAM Interface
---------------------------------------------------------------------------
-
+--CFG-Flash: 0 - 5758
+--UFM-Flash: 7167 - 7936
PROC_CTRL_FLASH : process begin
wait until rising_edge(clk_i);