|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
module stack (dout,clr,push,pop,clk,din);
output[7:0] dout; //数据输出端
input clr,push,pop,clk; //清零端、压栈信号、出栈信号、时钟信号
input[7:0] din; //数据输入端
reg[7:0] dout;
reg[7:0] stack_MEM[0:8]; //储存空问
reg[2:0] SP_cnt; //堆栈指针(计数器)
always @(posedge clk) begin
if(clr) begin
dout<=0; SP_cnt<=0;
end
else if (push&&( !pop) ) begin //压栈
SP_cnt = SP_cnt+1; //阻塞赋值,加完再写
stack_MEM[SP_cnt] = din;
end
else if( pop&&( !push)) begin //出栈
dout<=stack_MEM[SP_cnt];//非阻塞赋值,读完再减
SP_cnt<=SP_cnt-1 ;
end
end
endmodule |
|