FIFO存储器的Verilog代码
此项目是FIFO存储器的Verilog代码。在该项目中,提供了用于FIFO存储器的Verilog代码。 在Verilog中实现了具有以下规范的先进(FIFO)存储器:16个阶段、8位数据宽度、状态信号。Verilog测试平台用于调试和验证FIFO是否正确运行。 此外,有必要查看仿真波形和存储器以了解数据如何流动。想了解更多请下载附件。
应用介绍
此项目是FIFO存储器的Verilog代码。
在该项目中,提供了用于FIFO存储器的Verilog代码。 在Verilog中实现了具有以下规范的先进(FIFO)存储器:
16个阶段
8位数据宽度
状态信号:
已满:当FIFO已满时为高,否则为低。
空:FIFO为空时为高,否则为低。
溢出:当FIFO已满并且仍将数据写入FIFO时为高,否则为低。
下溢:当FIFO为空且仍从FIFO读取数据时为高,否则为低。
阈值:当FIFO中的数据数量小于特定阈值时为高,否则为低。
附件文件包括:FIFO存储器的Verilog代码、FIFO存储器的Verilog测试代码。
本人在下面展示了FIFO存储器的Verilog测试代码;如想了解更多请下载附件。
// 1. The timescale directive
`timescale 10 ps/ 10 ps
// fpga4student.com: FPga projects, Verilog projects, VHDL projects
// Verilog project: Verilog code for FIFO memory
// Verilog Testbench code for FIFO memory
// 2. Preprocessor Directives
`define DELAY 10
// 3. Include Statements
//`include "counter_define.h"
module tb_fifo_32;
// 4. Parameter definitions
parameter ENDTIME = 40000;
// 5. DUT Input regs
reg clk;
reg rst_n;
reg wr;
reg rd;
reg [7:0] data_in;
// 6. DUT Output wires
wire [7:0] data_out;
wire fifo_empty;
wire fifo_full;
wire fifo_threshold;
wire fifo_overflow;
wire fifo_underflow;
integer i;
// 7. DUT Instantiation
// fpga4student.com: FPga projects, Verilog projects, VHDL projects
fifo_mem tb (/*AUTOARG*/
// Outputs
data_out, fifo_full, fifo_empty, fifo_threshold, fifo_overflow,
fifo_underflow,
// Inputs
clk, rst_n, wr, rd, data_in
);
// 8. Initial Conditions
initial
begin
clk = 1'b0;
rst_n = 1'b0;
wr = 1'b0;
rd = 1'b0;
data_in = 8'd0;
end
// 9. Generating Test Vectors
initial
begin
main;
end
task main;
fork
clock_generator;
reset_generator;
operation_process;
debug_fifo;
endsimulation;
join
endtask
task clock_generator;
begin
forever #`DELAY clk = !clk;
end
endtask
task reset_generator;
begin
#(`DELAY*2)
rst_n = 1'b1;
# 7.9
rst_n = 1'b0;
# 7.09
rst_n = 1'b1;
end
endtask
task operation_process;
begin
for (i = 0; i < 17; i = i + 1) begin: WRE
#(`DELAY*5)
wr = 1'b1;
data_in = data_in + 8'd1;
#(`DELAY*2)
wr = 1'b0;
end
#(`DELAY)
for (i = 0; i < 17; i = i + 1) begin: RDE
#(`DELAY*2)
rd = 1'b1;
#(`DELAY*2)
rd = 1'b0;
end
end
endtask
// 10. Debug fifo
task debug_fifo;
begin
$display("----------------------------------------------");
$display("------------------ -----------------------");
$display("----------- SIMULATION RESULT ----------------");
$display("-------------- -------------------");
$display("---------------- ---------------------");
$display("----------------------------------------------");
$monitor("TIME = %d, wr = %b, rd = %b, data_in = %h",$time, wr, rd, data_in);
end
endtask
// 11. Self-Checking
reg [5:0] waddr, raddr;
reg [7:0] mem[64:0];
always @ (posedge clk) begin
if (~rst_n) begin
waddr <= 6'd0;
end
else if (wr) begin
mem[waddr] <= data_in;
waddr <= waddr + 1;
end
$display("TIME = %d, data_out = %d, mem = %d",$time, data_out,mem[raddr]);
if (~rst_n) raddr <= 6'd0;
else if (rd & (~fifo_empty)) raddr <= raddr + 1;
if (rd & (~fifo_empty)) begin
if (mem[raddr]
== data_out) begin
$display("=== PASS ===== PASS ==== PASS ==== PASS ===");
if (raddr == 16) $finish;
end
else begin
$display ("=== FAIL ==== FAIL ==== FAIL ==== FAIL ===");
$display("-------------- THE SIMUALTION FINISHED ------------");
$finish;
end
end
end
//12. Determines the simulation limit
task endsimulation;
begin
#ENDTIME
$display("-------------- THE SIMUALTION FINISHED ------------");
$finish;
end
endtask
endmodule
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » FIFO存储器的Verilog代码
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
FIFO存储器的Verilog代码-附件.txt | 1.91 KB | 2020-04-01 |
发表评论 取消回复