mirror of
https://github.com/olofk/serv.git
synced 2025-04-22 04:47:16 -04:00
support for W=4
This commit is contained in:
parent
a8fbf688c5
commit
f9d6b23543
1 changed files with 10 additions and 6 deletions
|
@ -1,6 +1,10 @@
|
|||
`default_nettype none
|
||||
module serv_mem_if
|
||||
#(parameter [0:0] WITH_CSR = 1)
|
||||
#(
|
||||
parameter [0:0] WITH_CSR = 1,
|
||||
parameter W = 1,
|
||||
parameter B = W-1
|
||||
)
|
||||
(
|
||||
input wire i_clk,
|
||||
//State
|
||||
|
@ -15,12 +19,12 @@ module serv_mem_if
|
|||
//MDU
|
||||
input wire i_mdu_op,
|
||||
//Data
|
||||
input wire i_bufreg2_q,
|
||||
output wire o_rd,
|
||||
input wire [B:0] i_bufreg2_q,
|
||||
output wire [B:0] o_rd,
|
||||
//External interface
|
||||
output wire [3:0] o_wb_sel);
|
||||
|
||||
reg signbit;
|
||||
reg signbit;
|
||||
|
||||
/*
|
||||
Before a store operation, the data to be written needs to be shifted into
|
||||
|
@ -43,7 +47,7 @@ module serv_mem_if
|
|||
(i_bytecnt == 2'b00) |
|
||||
(i_half & !i_bytecnt[1]);
|
||||
|
||||
assign o_rd = dat_valid ? i_bufreg2_q : signbit & i_signed;
|
||||
assign o_rd = dat_valid ? i_bufreg2_q : {W{i_signed & signbit}};
|
||||
|
||||
assign o_wb_sel[3] = (i_lsb == 2'b11) | i_word | (i_half & i_lsb[1]);
|
||||
assign o_wb_sel[2] = (i_lsb == 2'b10) | i_word;
|
||||
|
@ -52,7 +56,7 @@ module serv_mem_if
|
|||
|
||||
always @(posedge i_clk) begin
|
||||
if (dat_valid)
|
||||
signbit <= i_bufreg2_q;
|
||||
signbit <= i_bufreg2_q[B];
|
||||
end
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue