- if (bitstorage_count == 0) begin
- `onread(in_r, in_a)
- bitstorage <= in_d;
- bitstorage_count <= 37;
- out_d <= (in_d[0] ? 37'b1111111111111111111111111111111111111 : 0);
+ if (!in_r && in_a) in_a <= 0;
+ if (!inOp_r && inOp_a) inOp_a <= 0;
+ if (!outOp_r && outOp_a) outOp_a <= 0;
+
+ if (out_r && out_a) out_r <= 0;
+
+ if (dequeue_remaining > 0) begin
+ if (dequeue_remaining <= outOp_d[`OP_COUNT])
+ begin
+ if (outOp_d[`OP_LSBFIRST]) begin
+ out_d[`DATAWIDTH-1-(dequeue_remaining-1)] <= bitstorage[0];
+ end else begin
+ out_d[ dequeue_remaining-1 ] <= bitstorage[0];
+ end
+ end
+ bitstorage[(`BITSTORAGE_SIZE-2):0] <= bitstorage[(`BITSTORAGE_SIZE-1):1];
+ bitstorage_count <= bitstorage_count - 1;
+ dequeue_remaining <= dequeue_remaining - 1;
+ if (dequeue_remaining == 1) begin
+ out_r <= 1;
+ outOp_a <= 1;