blob: b5640c365cad202f1741eecc1cfb8220bb7def48 [file] [log] [blame] [edit]
module top(input clk, cen, rst, ina, inb,
output reg outa, outb, outc, outd,
output [DEPTH-1:0] vec0,
output [DEPTH-1:0] vec1);
localparam DEPTH = 5;
reg [DEPTH-1:0] r_vec0 = 1'b0;
reg [DEPTH-1:0] r_vec1 = 1'b0;
initial outa = 1'b0;
initial outb = 1'b0;
initial outc = 1'b0;
initial outd = 1'b0;
// posedge, clock_enable, reset (sr)
always @(posedge clk)
if (cen)
if(rst)
r_vec0 <= 1'b0;
else
r_vec0 <= {r_vec0[DEPTH-2:0], ina};
// negedge, clock_enable, reset (ss)
always @(negedge clk)
if (ina)
if(rst)
r_vec1 <= 1'b1;
else
r_vec1 <= {r_vec1[DEPTH-2:0], inb};
// posedge, async reset (sr)
always @(posedge clk or posedge rst)
if(rst)
outa <= 1'b0;
else
outa <= r_vec0[DEPTH-1];
// posedge
always @(posedge clk)
outb <= r_vec1[DEPTH-1];
// negedge
always @(negedge clk)
outc <= r_vec0[DEPTH-1];
// negedge, async reset (ss)
always @(negedge clk or posedge rst)
if (rst)
outd <= 1'b1;
else
outd <= r_vec1[DEPTH-1];
assign vec0 = r_vec0;
assign vec1 = r_vec1;
endmodule