Imported Upstream version 3.0
[debian/gnuradio] / usrp / fpga / sdr_lib / setting_reg_masked.v
1
2
3 module setting_reg_masked
4   ( input clock, input reset, input strobe, input wire [6:0] addr,
5     input wire [31:0] in, output reg [31:0] out, output reg changed);
6 /* upper 16 bits are mask, lower 16 bits are value 
7  * Note that you get a 16 bit register, not a 32 bit one */
8
9    parameter my_addr = 0;
10    
11    always @(posedge clock)
12      if(reset)
13        begin
14           out <= #1 32'd0;
15           changed <= #1 1'b0;
16        end
17      else
18        if(strobe & (my_addr==addr))
19          begin
20             out <= #1 (out & ~in[31:16]) | (in[15:0] & in[31:16] );
21             changed <= #1 1'b1;
22          end
23        else
24          changed <= #1 1'b0;
25    
26 endmodule // setting_reg_masked