S
shyamsundar
Guest
嗨大家即时试图写一个FIFO和得到这个示例从NET代码。现在我写了一个专为这项测试平台和功能仿真即时无法获取读写指针的更新。谁能帮助解决这个问题??
模块fifo2(时钟时,RST,神父,防火墙,数据,进行);
参数fifo_width = 8,fifo_depth = 16,ptr_width = 4;
输入时钟时,RST,神父,防火墙;
输入[fifo_width - 1:0]的数据;
输出[fifo_width - 1:0]进行;
丝充分,空;
整数j;
第[fifo_width - 1:0]进行;
第[ptr_width - 1:0]可湿性粉剂;
第[ptr_width - 1:0]反相;
第[fifo_width - 1:0]堆栈[fifo_depth - 1:0];
第[ptr_width - 1:0] fifo_count;
/***********************************************
如果这是一个写访问,放在数据
投入巴士的位置所指向的
FIFO的写指针
************************************************/
总是@(posedge时钟)
开始
如果(星期六)开始
堆栈[可湿性粉剂]“=数据;
末端
末端
/***********************************************
如果这是一读获得的数据
, 在
位置指向读指针
并把它的输出总线
************************************************/
总是@(posedge时钟)
开始
如果(FR)的开始
出“=堆栈[反相];
末端
末端
/************************************************
增量写在每个写指针
对每读读指针
************************************************/
总是@(posedge时钟)
如果(rst)
可湿性粉剂“= 0;
其他的
可湿性粉剂“=(星期六)?可湿性粉剂 1:可湿性粉剂;
总是@(posedge时钟)
如果(rst)
反相“= 0;
其他的
反相“=(FR)的?反相 1:快速成型;/*********************************************
对每次写入和FIFO计数器增加
每读递减
**********************************************/
总是@(posedge时钟)
开始
如果(rst)开始
fifo_count“= 0;
末端
否则开始
案((防火墙,神父))
2'b00:fifo_count“= fifo_count;
2'b01:fifo_count“=(fifo_count == 0)?fifo_depth:fifo_count - 1;
2'b10:fifo_count“=(fifo_count == fifo_depth)?0:fifo_count 1;
2'b11:fifo_count“= fifo_count;
endcase
末端
末端
/ /指定fifo_hf =(fifo_count“= 4);
/ /指定fifo_he =(fifo_count“= 4);
分配空=(fifo_count == 0);
分配充分=(fifo_count“= fifo_depth);
endmodule / /的FIFO//-----------------------------试验台----------------- ------------------------------
模块fifo_tb;
参数fifo_width = 8,fifo_depth = 16,ptr_width = 4;
第时钟时,RST,神父,防火墙;
第[fifo_width - 1:0]的数据;
丝[fifo_width - 1:0]进行;
丝充分,空;
整数H级;
第[ptr_width - 1:0] = 0可湿性粉剂,熔点= 0;
第[ptr_width - 1:0]反相= 0;
第[fifo_width - 1:0]夏威[fifo_depth - 1:0];
第[ptr_width - 1:0] fifo_count;
fifo2的F1(时钟时,RST,神父,防火墙,数据,进行);
初步
开始
时钟= 1'b1;
rst = 1'b1;
$ readmemb(“stimuli_fifo.txt”,MEM)上;
高= $树叶穿透(“result_fifo.txt”);
#20 rst = 1'b0;
末端
总是
#5时钟=〜时钟;
初步
开始
#30防火墙= 1'b1;
#30神父= 1'b1;
#120防火墙= 1'b0;
#10神父= 1'b0;
末端
总是@(posedge时钟)
开始
如果(星期六)
开始
数据=夏威[熔点];
熔点=熔点1; / /增量号负责指数
如果(全)
$显示(“先进先出溢出”);
否则
, 如果(空)
$显示(“先进先出溢”);
末端
末端
总是@(posedge时钟)
开始
$显示(“出=%d个,数据=%d个”,指出,数据);
$显示(“fifo_count =%d个”,fifo_count);
$ fdisplay(八,“出=%d个”,列);
末端
endmodule [/帖] [/代码]
模块fifo2(时钟时,RST,神父,防火墙,数据,进行);
参数fifo_width = 8,fifo_depth = 16,ptr_width = 4;
输入时钟时,RST,神父,防火墙;
输入[fifo_width - 1:0]的数据;
输出[fifo_width - 1:0]进行;
丝充分,空;
整数j;
第[fifo_width - 1:0]进行;
第[ptr_width - 1:0]可湿性粉剂;
第[ptr_width - 1:0]反相;
第[fifo_width - 1:0]堆栈[fifo_depth - 1:0];
第[ptr_width - 1:0] fifo_count;
/***********************************************
如果这是一个写访问,放在数据
投入巴士的位置所指向的
FIFO的写指针
************************************************/
总是@(posedge时钟)
开始
如果(星期六)开始
堆栈[可湿性粉剂]“=数据;
末端
末端
/***********************************************
如果这是一读获得的数据
, 在
位置指向读指针
并把它的输出总线
************************************************/
总是@(posedge时钟)
开始
如果(FR)的开始
出“=堆栈[反相];
末端
末端
/************************************************
增量写在每个写指针
对每读读指针
************************************************/
总是@(posedge时钟)
如果(rst)
可湿性粉剂“= 0;
其他的
可湿性粉剂“=(星期六)?可湿性粉剂 1:可湿性粉剂;
总是@(posedge时钟)
如果(rst)
反相“= 0;
其他的
反相“=(FR)的?反相 1:快速成型;/*********************************************
对每次写入和FIFO计数器增加
每读递减
**********************************************/
总是@(posedge时钟)
开始
如果(rst)开始
fifo_count“= 0;
末端
否则开始
案((防火墙,神父))
2'b00:fifo_count“= fifo_count;
2'b01:fifo_count“=(fifo_count == 0)?fifo_depth:fifo_count - 1;
2'b10:fifo_count“=(fifo_count == fifo_depth)?0:fifo_count 1;
2'b11:fifo_count“= fifo_count;
endcase
末端
末端
/ /指定fifo_hf =(fifo_count“= 4);
/ /指定fifo_he =(fifo_count“= 4);
分配空=(fifo_count == 0);
分配充分=(fifo_count“= fifo_depth);
endmodule / /的FIFO//-----------------------------试验台----------------- ------------------------------
模块fifo_tb;
参数fifo_width = 8,fifo_depth = 16,ptr_width = 4;
第时钟时,RST,神父,防火墙;
第[fifo_width - 1:0]的数据;
丝[fifo_width - 1:0]进行;
丝充分,空;
整数H级;
第[ptr_width - 1:0] = 0可湿性粉剂,熔点= 0;
第[ptr_width - 1:0]反相= 0;
第[fifo_width - 1:0]夏威[fifo_depth - 1:0];
第[ptr_width - 1:0] fifo_count;
fifo2的F1(时钟时,RST,神父,防火墙,数据,进行);
初步
开始
时钟= 1'b1;
rst = 1'b1;
$ readmemb(“stimuli_fifo.txt”,MEM)上;
高= $树叶穿透(“result_fifo.txt”);
#20 rst = 1'b0;
末端
总是
#5时钟=〜时钟;
初步
开始
#30防火墙= 1'b1;
#30神父= 1'b1;
#120防火墙= 1'b0;
#10神父= 1'b0;
末端
总是@(posedge时钟)
开始
如果(星期六)
开始
数据=夏威[熔点];
熔点=熔点1; / /增量号负责指数
如果(全)
$显示(“先进先出溢出”);
否则
, 如果(空)
$显示(“先进先出溢”);
末端
末端
总是@(posedge时钟)
开始
$显示(“出=%d个,数据=%d个”,指出,数据);
$显示(“fifo_count =%d个”,fifo_count);
$ fdisplay(八,“出=%d个”,列);
末端
endmodule [/帖] [/代码]